diff --git a/actions/ttrss b/actions/ttrss index 070b9cdcc..43daa2d15 100755 --- a/actions/ttrss +++ b/actions/ttrss @@ -18,8 +18,9 @@ # """ -Configuration helper for News Feed Reader (Tiny Tiny RSS) +Configuration helper for Tiny Tiny RSS. """ + import argparse from plinth import action_utils @@ -30,8 +31,8 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') - subparsers.add_parser('enable', help='Enable Tiny Tiny RSS') - subparsers.add_parser('disable', help='Disable Tiny Tiny RSS') + subparsers.add_parser('enable', help='Enable Tiny Tiny RSS site') + subparsers.add_parser('disable', help='Disable Tiny Tiny RSS site') return parser.parse_args() diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index b9b8f289e..920975705 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -16,26 +16,69 @@ # """ -Plinth module to configure Tiny Tiny RSS +Plinth module to configure Tiny Tiny RSS. """ -from gettext import gettext as _ +from django.utils.translation import ugettext_lazy as _ -from plinth import cfg +from plinth import actions from plinth import action_utils +from plinth import cfg +from plinth import service as service_module + + +version = 1 + +depends = ['apps'] + +title = _('News Feed Reader (Tiny Tiny RSS)') + +description = [ + _('Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, ' + 'designed to allow reading news from any location, while feeling as ' + 'close to a real desktop application as possible.'), + + _('When enabled, Tiny Tiny RSS will be available from ' + '/tt-rss path on the web server.'), +] + +service = None + def init(): - """Intialize Tiny Tiny RSS module.""" + """Intialize the module.""" menu = cfg.main_menu.get('apps:index') - menu.add_urlname(_('News Feed Reader (Tiny Tiny RSS)'), 'glyphicon-envelope', - 'ttrss:index', 600) + menu.add_urlname(title, 'glyphicon-envelope', 'ttrss:index', 780) + + global service + service = service_module.Service( + 'tt-rss', title, ['http', 'https'], is_external=True, + enabled=is_enabled()) + + +def setup(helper, old_version=None): + """Install and configure the module.""" + helper.install(['tt-rss']) + helper.call('post', service.notify_enabled, None, True) + + +def get_status(): + """Get the current settings.""" + return {'enabled': is_enabled()} -depends = ['plinth.modules.apps'] def is_enabled(): """Return whether the module is enabled.""" return action_utils.webserver_is_enabled('50-tt-rss') + +def enable(should_enable): + """Enable/disable the module.""" + sub_command = 'enable' if should_enable else 'disable' + actions.superuser_run('ttrss', [sub_command]) + service.notify_enabled(None, should_enable) + + def diagnose(): """Run diagnostics and return the results.""" results = [] diff --git a/plinth/modules/ttrss/forms.py b/plinth/modules/ttrss/forms.py deleted file mode 100644 index 07439c429..000000000 --- a/plinth/modules/ttrss/forms.py +++ /dev/null @@ -1,28 +0,0 @@ -# -# 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 . -# - -""" -Forms for configuring Tiny Tiny RSS -""" - -from django import forms - -class TtrssForm(forms.Form): - """Tiny Tiny RSS configuration form.""" - enabled = forms.BooleanField( - label='Enable Tiny Tiny RSS', - required=False) diff --git a/plinth/modules/ttrss/templates/ttrss.html b/plinth/modules/ttrss/templates/ttrss.html index b036e9eb9..0144ad4dd 100644 --- a/plinth/modules/ttrss/templates/ttrss.html +++ b/plinth/modules/ttrss/templates/ttrss.html @@ -1,7 +1,4 @@ -{% extends "base.html" %} - -{% load bootstrap %} - +{% extends "app.html" %} {% comment %} # # This file is part of Plinth. @@ -21,24 +18,23 @@ # {% endcomment %} -{% block content %} +{% load bootstrap %} +{% load i18n %} -

News Feed Reader (Tiny Tiny RSS)

+{% block configuration %} -

Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, - designed to allow you to read news from any location, while feeling - as close to a real desktop application as possible.

+ {% include "diagnostics_button.html" with module="ttrss" %} -{% include "diagnostics_button.html" with module="ttrss" %} -

Configuration

+

{% trans "Configuration" %}

-
- {% csrf_token %} + + {% csrf_token %} - {{ form|bootstrap }} + {{ form|bootstrap }} - -
+ + {% endblock %} diff --git a/plinth/modules/ttrss/urls.py b/plinth/modules/ttrss/urls.py index aca8b1b9d..271321841 100644 --- a/plinth/modules/ttrss/urls.py +++ b/plinth/modules/ttrss/urls.py @@ -16,13 +16,15 @@ # """ -URLs for the ttrss module +URLs for the ttrss module. """ -from django.conf.urls import patterns, url +from django.conf.urls import url + +from plinth.views import ConfigurationView -urlpatterns = patterns( - 'plinth.modules.ttrss.views', - url(r'^apps/ttrss/$', 'index', name='index'), - ) +urlpatterns = [ + url(r'^apps/ttrss/$', ConfigurationView.as_view(module_name='ttrss'), + name='index'), +] diff --git a/plinth/modules/ttrss/views.py b/plinth/modules/ttrss/views.py deleted file mode 100644 index 696a7fc51..000000000 --- a/plinth/modules/ttrss/views.py +++ /dev/null @@ -1,77 +0,0 @@ -# -# 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 . -# - -""" -Plinth module for configuring News Feed Reader (Tiny Tiny RSS) -""" - -from django.contrib import messages -from django.template.response import TemplateResponse -from gettext import gettext as _ -import logging - -from plinth import actions -from plinth import package -from plinth.modules import ttrss -from .forms import TtrssForm - -logger = logging.getLogger(__name__) - - -@package.required(['tt-rss']) -def index(request): - """Serve configuration page.""" - status = get_status() - - form = None - - if request.method == 'POST': - form = TtrssForm(request.POST, prefix='ttrss') - if form.is_valid(): - _apply_changes(request, status, form.cleaned_data) - status = get_status() - form = TtrssForm(initial=status, prefix='ttrss') - else: - form = TtrssForm(initial=status, prefix='ttrss') - - return TemplateResponse(request, 'ttrss.html', - {'title': _('News Feed Reader (Tiny Tiny RSS)'), - 'status': status, - 'form': form}) - -def get_status(): - """Get the current status.""" - return {'enabled': ttrss.is_enabled()} - - -def _apply_changes(request, old_status, new_status): - """Apply the changes.""" - modified = False - - if old_status['enabled'] != new_status['enabled']: - sub_command = 'enable' if new_status['enabled'] else 'disable' - actions.superuser_run('ttrss', [sub_command]) - modified = True - - if modified: - messages.success(request, _('Configuration updated')) - else: - messages.info(request, _('Setting unchanged')) - - - -