owncloud: Use new setup mechanism

- Also reorganize views.
This commit is contained in:
Sunil Mohan Adapa 2016-02-12 16:27:12 +05:30
parent b916d95a0b
commit 166ff9b5bf
No known key found for this signature in database
GPG Key ID: 36C361440C9BC971
5 changed files with 87 additions and 67 deletions

View File

@ -19,15 +19,60 @@
Plinth module to configure ownCloud Plinth module to configure ownCloud
""" """
from . import owncloud from django.utils.translation import ugettext_lazy as _
from .owncloud import init
from plinth import actions
from plinth import action_utils from plinth import action_utils
from plinth import cfg
from plinth import service as service_module
__all__ = ['owncloud', 'init'] version = 1
depends = ['apps'] depends = ['apps']
title = _('File Hosting (ownCloud)')
description = [
_('ownCloud gives you universal access to your files through a web '
'interface or WebDAV. It also provides a platform to easily view '
'& sync your contacts, calendars and bookmarks across all your '
'devices and enables basic editing right on the web. Installation '
'has minimal server requirements, doesn\'t need special '
'permissions and is quick. ownCloud is extendable via a simple '
'but powerful API for applications and plugins.'),
_('When enabled, the ownCloud installation will be available '
'from <a href="/owncloud">/owncloud</a> path on the web server. '
'Visit this URL to set up the initial administration account for '
'ownCloud.')
]
service = None
def init():
"""Initialize the ownCloud module"""
menu = cfg.main_menu.get('apps:index')
menu.add_urlname(title, 'glyphicon-picture', 'owncloud:index', 700)
global service
service = service_module.Service(
'owncloud', title, ['http', 'https'], is_external=True,
enabled=is_enabled())
def setup(helper, old_version=None):
"""Install and configure the module."""
helper.install(['postgresql', 'php5-pgsql', 'owncloud'])
helper.call('post', actions.superuser_run, 'owncloud-setup', ['enable'])
helper.call('post', service.notify_enabled, None, True)
def is_enabled():
"""Return whether the module is enabled."""
output = actions.run('owncloud-setup', ['status'])
return 'enable' in output.split()
def diagnose(): def diagnose():
"""Run diagnostics and return the results.""" """Run diagnostics and return the results."""

View File

@ -0,0 +1,30 @@
#
# This file is part of Plinth.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""
Forms for configuring ownCloud.
"""
from django import forms
from django.utils.translation import ugettext_lazy as _
class OwnCloudForm(forms.Form): # pylint: disable-msg=W0232
"""ownCloud configuration form"""
enabled = forms.BooleanField(
label=_('Enable ownCloud'),
required=False)

View File

@ -1,4 +1,4 @@
{% extends "base.html" %} {% extends "app.html" %}
{% comment %} {% comment %}
# #
# This file is part of Plinth. # This file is part of Plinth.
@ -21,30 +21,7 @@
{% load bootstrap %} {% load bootstrap %}
{% load i18n %} {% load i18n %}
{% block content %} {% block configuration %}
<h2>{% trans "File Hosting (ownCloud)" %}</h2>
<p>
{% blocktrans trimmed %}
ownCloud gives you universal access to your files through a web
interface or WebDAV. It also provides a platform to easily view
& sync your contacts, calendars and bookmarks across all your
devices and enables basic editing right on the web. Installation
has minimal server requirements, doesn't need special
permissions and is quick. ownCloud is extendable via a simple
but powerful API for applications and plugins.
{% endblocktrans %}
</p>
<p>
{% blocktrans trimmed %}
When enabled, the ownCloud installation will be available
from <a href="/owncloud">/owncloud</a> path on the web server.
Visit this URL to set up the initial administration account for
ownCloud.
{% endblocktrans %}
</p>
{% include "diagnostics_button.html" with module="owncloud" %} {% include "diagnostics_button.html" with module="owncloud" %}

View File

@ -21,7 +21,7 @@ URLs for the ownCloud module
from django.conf.urls import url from django.conf.urls import url
from . import owncloud as views from . import views
urlpatterns = [ urlpatterns = [

View File

@ -19,47 +19,15 @@
Plinth module for configuring ownCloud. Plinth module for configuring ownCloud.
""" """
from django import forms
from django.contrib import messages from django.contrib import messages
from django.template.response import TemplateResponse from django.template.response import TemplateResponse
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from .forms import OwnCloudForm
from plinth import actions from plinth import actions
from plinth import cfg from plinth.modules import owncloud
from plinth import package
from plinth import service as service_module
service = None
class OwnCloudForm(forms.Form): # pylint: disable-msg=W0232
"""ownCloud configuration form"""
enabled = forms.BooleanField(label=_('Enable ownCloud'), required=False)
def init():
"""Initialize the ownCloud module"""
menu = cfg.main_menu.get('apps:index')
menu.add_urlname(_('File Hosting (ownCloud)'), 'glyphicon-picture',
'owncloud:index', 700)
status = get_status()
global service # pylint: disable-msg=W0603
service = service_module.Service(
'owncloud', _('ownCloud'), ['http', 'https'], is_external=True,
enabled=status['enabled'])
def on_install():
"""Tasks to run after package install."""
actions.superuser_run('owncloud-setup', ['enable'])
service.notify_enabled(None, True)
@package.required(['postgresql', 'php5-pgsql', 'owncloud'],
on_install=on_install)
def index(request): def index(request):
"""Serve the ownCloud configuration page""" """Serve the ownCloud configuration page"""
status = get_status() status = get_status()
@ -77,14 +45,14 @@ def index(request):
form = OwnCloudForm(initial=status, prefix='owncloud') form = OwnCloudForm(initial=status, prefix='owncloud')
return TemplateResponse(request, 'owncloud.html', return TemplateResponse(request, 'owncloud.html',
{'title': _('ownCloud'), {'title': owncloud.title,
'description': owncloud.description,
'form': form}) 'form': form})
def get_status(): def get_status():
"""Return the current status""" """Return the current status"""
output = actions.run('owncloud-setup', ['status']) return {'enabled': owncloud.is_enabled()}
return {'enabled': 'enable' in output.split()}
def _apply_changes(request, old_status, new_status): def _apply_changes(request, old_status, new_status):
@ -104,4 +72,4 @@ def _apply_changes(request, old_status, new_status):
# Send a signal to other modules that the service is # Send a signal to other modules that the service is
# enabled/disabled # enabled/disabled
service.notify_enabled(None, new_status['enabled']) owncloud.service.notify_enabled(None, new_status['enabled'])