From dfd4d40ed18d3b762f09f72028714e040f992693 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Thu, 30 Jan 2020 14:07:31 -0800 Subject: [PATCH] firewall: Show Run Diagnostics button in app - Use AppView for firewall view so that diagnostics button shows up automatically. Consistency with the rest of the apps. Allow new features to AppView become useful. - A status section is automatically added but can be removed when all the other apps loose their status section. - Does not change anything else. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- plinth/modules/firewall/urls.py | 2 +- plinth/modules/firewall/views.py | 46 +++++++++++++++++--------------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/plinth/modules/firewall/urls.py b/plinth/modules/firewall/urls.py index d6e2ddc4f..ba467d9fe 100644 --- a/plinth/modules/firewall/urls.py +++ b/plinth/modules/firewall/urls.py @@ -23,5 +23,5 @@ from django.conf.urls import url from . import views urlpatterns = [ - url(r'^sys/firewall/$', views.index, name='index'), + url(r'^sys/firewall/$', views.FirewallAppView.as_view(), name='index'), ] diff --git a/plinth/modules/firewall/views.py b/plinth/modules/firewall/views.py index fa17fd99e..ded469986 100644 --- a/plinth/modules/firewall/views.py +++ b/plinth/modules/firewall/views.py @@ -18,32 +18,34 @@ FreedomBox app to configure a firewall. """ -from django.template.response import TemplateResponse - +from plinth import views from plinth.modules import firewall from . import components -def index(request): - """Serve introduction page""" - if not firewall.get_enabled_status(): - return TemplateResponse( - request, 'firewall.html', { - 'name': firewall.name, - 'description': firewall.description, - 'firewall_status': 'not_running' - }) +class FirewallAppView(views.AppView): + """Serve firewall index page.""" + name = firewall.name + description = firewall.description + app_id = 'firewall' + manual_page = firewall.manual_page + template_name = 'firewall.html' - internal_enabled_ports = firewall.get_enabled_services(zone='internal') - external_enabled_ports = firewall.get_enabled_services(zone='external') + def get_context_data(self, *args, **kwargs): + """Add additional context data for the template.""" + context = super().get_context_data(*args, **kwargs) - return TemplateResponse( - request, 'firewall.html', { - 'name': firewall.name, - 'description': firewall.description, - 'components': components.Firewall.list(), - 'manual_page': firewall.manual_page, - 'internal_enabled_ports': internal_enabled_ports, - 'external_enabled_ports': external_enabled_ports - }) + status = 'running' if firewall.get_enabled_status() else 'not_running' + context['firewall_status'] = status + + if status == 'running': + context['components'] = components.Firewall.list() + internal_enabled_ports = firewall.get_enabled_services( + zone='internal') + external_enabled_ports = firewall.get_enabled_services( + zone='external') + context['internal_enabled_ports'] = internal_enabled_ports + context['external_enabled_ports'] = external_enabled_ports + + return context