From 2bd1ad45334ddce1ae14ea83085d35405788d4ca Mon Sep 17 00:00:00 2001 From: fliu <10025-fliu@users.noreply.salsa.debian.org> Date: Sat, 17 Jul 2021 06:21:30 +0000 Subject: [PATCH] email: aliases: Use bootstrap styles Other changes: - Added license identifiers - Fixed linter warnings - Deleted excessive parameters in rendering code --- .../modules/email_server/aliases/__init__.py | 1 - plinth/modules/email_server/forms.py | 1 + .../modules/email_server/templates/alias.html | 1 + .../email_server/templates/email_server.html | 1 + plinth/modules/email_server/views.py | 55 ++++++++++++------- 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/plinth/modules/email_server/aliases/__init__.py b/plinth/modules/email_server/aliases/__init__.py index e510dd3c3..82de702b5 100644 --- a/plinth/modules/email_server/aliases/__init__.py +++ b/plinth/modules/email_server/aliases/__init__.py @@ -148,4 +148,3 @@ def _create_db_schema_if_not_exists(): # Create schema if not exists with db_cursor() as cur: cur.executescript(map_db_schema_script) - diff --git a/plinth/modules/email_server/forms.py b/plinth/modules/email_server/forms.py index a38123a8a..9567d1be1 100644 --- a/plinth/modules/email_server/forms.py +++ b/plinth/modules/email_server/forms.py @@ -2,6 +2,7 @@ from django import forms from django.utils.translation import ugettext_lazy as _ + class EmailServerForm(forms.Form): domain = forms.CharField(label=_('domain'), max_length=256) diff --git a/plinth/modules/email_server/templates/alias.html b/plinth/modules/email_server/templates/alias.html index e8b072d49..cab40ab5c 100644 --- a/plinth/modules/email_server/templates/alias.html +++ b/plinth/modules/email_server/templates/alias.html @@ -1,3 +1,4 @@ +{# SPDX-License-Identifier: AGPL-3.0-or-later #} {% extends "app.html" %} {% load bootstrap %} diff --git a/plinth/modules/email_server/templates/email_server.html b/plinth/modules/email_server/templates/email_server.html index cbf662eb1..89557bdb5 100644 --- a/plinth/modules/email_server/templates/email_server.html +++ b/plinth/modules/email_server/templates/email_server.html @@ -1,3 +1,4 @@ +{# SPDX-License-Identifier: AGPL-3.0-or-later #} {% extends "app.html" %} {% load i18n %} diff --git a/plinth/modules/email_server/views.py b/plinth/modules/email_server/views.py index ec8663a7b..f940a3e21 100644 --- a/plinth/modules/email_server/views.py +++ b/plinth/modules/email_server/views.py @@ -45,36 +45,49 @@ class AliasView(TemplateView): self.models = initial self.post = post self.cleaned_data = {} + # HTML rendering + self.sb = io.StringIO() + self.counter = 0 def render(self): if self.models is None: raise RuntimeError('Uninitialized form') - sb = io.StringIO() + if self.sb.tell() > 0: + raise RuntimeError('render has been called') + enabled = [a.email_name for a in self.models if a.enabled] disabled = [a.email_name for a in self.models if not a.enabled] - if len(enabled) > 0: - sb.write('
') - sb.write('%s' % escape(_('Enabled'))) - self._render_boxes(enabled, 'enabled', sb) - sb.write('
') - if len(disabled) > 0: - sb.write('
') - sb.write('%s' % escape(_('Disabled'))) - self._render_boxes(disabled, 'disabled', sb) - sb.write('
') - return sb.getvalue() + self._render_fieldset(enabled, _('Enabled aliases')) + self._render_fieldset(disabled, _('Disabled aliases')) - @staticmethod - def _render_boxes(email_names, suffix, sb): - for i, email_name in enumerate(email_names): - input_id = 'cb_alias_%s_%d' % (suffix, i) + return self.sb.getvalue() + + def _render_fieldset(self, email_names, legend): + if len(email_names) > 0: + self.sb.write('
') + self.sb.write('%s' % escape(legend)) + self._render_boxes(email_names) + self.sb.write('
') + + def _render_boxes(self, email_names): + for email_name in email_names: + input_id = 'cb_alias_%d' % self._count() value = escape(email_name) - sb.write('
') - sb.write('' % (input_id, value)) - sb.write('' % (input_id, value)) - sb.write('
') + self.sb.write('
') + + self.sb.write('' % (input_id, value)) + + self.sb.write('' % (input_id, value)) + + self.sb.write('
') + + def _count(self): + self.counter += 1 + return self.counter def is_valid(self): lst = list(filter(None, self.post.getlist('alias')))