email: aliases: Use bootstrap styles

Other changes:

- Added license identifiers
- Fixed linter warnings
- Deleted excessive parameters in rendering code
This commit is contained in:
fliu 2021-07-17 06:21:30 +00:00 committed by Sunil Mohan Adapa
parent 4375828703
commit 2bd1ad4533
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2
5 changed files with 37 additions and 22 deletions

View File

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

View File

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

View File

@ -1,3 +1,4 @@
{# SPDX-License-Identifier: AGPL-3.0-or-later #}
{% extends "app.html" %}
{% load bootstrap %}

View File

@ -1,3 +1,4 @@
{# SPDX-License-Identifier: AGPL-3.0-or-later #}
{% extends "app.html" %}
{% load i18n %}

View File

@ -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('<fieldset>')
sb.write('<legend>%s</legend>' % escape(_('Enabled')))
self._render_boxes(enabled, 'enabled', sb)
sb.write('</fieldset>')
if len(disabled) > 0:
sb.write('<fieldset>')
sb.write('<legend>%s</legend>' % escape(_('Disabled')))
self._render_boxes(disabled, 'disabled', sb)
sb.write('</fieldset>')
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('<fieldset class="form-group">')
self.sb.write('<legend>%s</legend>' % escape(legend))
self._render_boxes(email_names)
self.sb.write('</fieldset>')
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('<div>')
sb.write('<input type="checkbox" name="alias" ')
sb.write('id="%s" value="%s">' % (input_id, value))
sb.write('<label for="%s">%s</label>' % (input_id, value))
sb.write('</div>')
self.sb.write('<div class="form-check">')
self.sb.write('<input type="checkbox" name="alias" ')
self.sb.write('class="form-check-input" ')
self.sb.write('id="%s" value="%s">' % (input_id, value))
self.sb.write('<label class="form-check-label" ')
self.sb.write('for="%s">%s</label>' % (input_id, value))
self.sb.write('</div>')
def _count(self):
self.counter += 1
return self.counter
def is_valid(self):
lst = list(filter(None, self.post.getlist('alias')))