email: views: Implement tab rendering

This commit is contained in:
fliu 2021-07-08 08:34:51 +00:00 committed by Sunil Mohan Adapa
parent 8c740e08da
commit a9ac51eb7b
No known key found for this signature in database
GPG Key ID: 43EA1CFF0AA7C5F2
2 changed files with 55 additions and 1 deletions

View File

@ -0,0 +1,13 @@
{% extends "app.html" %}
{% load i18n %}
{% block configuration %}
{{ tabs|safe }}
<p>
<a href="/rspamd/">
{% trans "Visit Rspamd administration interface" %}
</a>
</p>
{{ block.super }}
{% endblock %}

View File

@ -1,15 +1,56 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
import plinth
import io
import plinth.views
from django.shortcuts import render
from django.utils.html import escape
from django.utils.translation import ugettext_lazy as _
from . import forms
tabs = [
('', 'Home'),
('alias', 'Alias'),
('relay', 'Relay'),
('security', 'Security')
]
class EmailServerView(plinth.views.AppView):
"""Server configuration page"""
app_id = 'email_server'
form_class = forms.EmailServerForm
template_name = 'email_server.html'
def form_valid(self, form):
# old_settings = form.initial
# new_status = form.cleaned_data
# plinth.actions.superuser_run('email_server', ['--help'])
return super().form_valid(form)
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['tabs'] = render_tabs(self.request)
return context
def render_tabs(request):
sb = io.StringIO()
sb.write('<ul class="nav nav-tabs">')
for page_name, link_text in tabs:
if request.path.endswith('/' + page_name):
cls = 'active'
else:
cls = ''
if cls == 'active':
href = '#'
else:
href = escape('./' + page_name)
sb.write('<li class="nav-item">')
sb.write('<a class="nav-link {cls}" href="{href}">{text}</a>'.format(
cls=cls, href=href, text=escape(_(link_text))
))
sb.write('</li>')
sb.write('</ul>')
return sb.getvalue()