ttrss: Update to use ConfigurationView

This commit is contained in:
James Valleroy 2016-03-09 21:23:14 -05:00 committed by Sunil Mohan Adapa
parent 80bab090bf
commit 15591b79ca
No known key found for this signature in database
GPG Key ID: 36C361440C9BC971
6 changed files with 74 additions and 137 deletions

View File

@ -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()

View File

@ -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 <a href="/tt-rss">'
'/tt-rss</a> 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 = []

View File

@ -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 <http://www.gnu.org/licenses/>.
#
"""
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)

View File

@ -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 %}
<h2>News Feed Reader (Tiny Tiny RSS)</h2>
{% block configuration %}
<p>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.</p>
{% include "diagnostics_button.html" with module="ttrss" %}
{% include "diagnostics_button.html" with module="ttrss" %}
<h3>Configuration</h3>
<h3>{% trans "Configuration" %}</h3>
<form class="form" method="post">
{% csrf_token %}
<form class="form" method="post">
{% csrf_token %}
{{ form|bootstrap }}
{{ form|bootstrap }}
<input type="submit" class="btn btn-primary" value="Update setup"/>
</form>
<input type="submit" class="btn btn-primary"
value="{% trans "Update setup" %}"/>
</form>
{% endblock %}

View File

@ -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'),
]

View File

@ -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 <http://www.gnu.org/licenses/>.
#
"""
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'))