Add global banner message

This commit is contained in:
Raphael Michel
2018-03-07 15:28:03 +01:00
parent d058721243
commit ae861f080b
7 changed files with 52 additions and 5 deletions

View File

@@ -486,7 +486,15 @@ Your {event} team"""))
'update_check_id': {
'default': None,
'type': str
}
},
'banner_message': {
'default': '',
'type': LazyI18nString
},
'banner_message_detail': {
'default': '',
'type': LazyI18nString
},
}
settings_hierarkey = Hierarkey(attribute_name='settings')

View File

@@ -91,8 +91,9 @@ def contextprocessor(request):
ctx['warning_update_available'] = False
ctx['warning_update_check_active'] = False
gs = GlobalSettingsObject()
ctx['global_settings'] = gs.settings
if request.user.is_superuser:
gs = GlobalSettingsObject()
if gs.settings.update_check_result_warning:
ctx['warning_update_available'] = True
if not gs.settings.update_check_ack and 'runserver' not in sys.argv:

View File

@@ -2,7 +2,7 @@ from collections import OrderedDict
from django import forms
from django.utils.translation import ugettext_lazy as _
from i18nfield.forms import I18nFormField, I18nTextInput
from i18nfield.forms import I18nFormField, I18nTextarea, I18nTextInput
from pretix.base.forms import SettingsForm
from pretix.base.settings import GlobalSettingsObject
@@ -26,7 +26,17 @@ class GlobalSettingsForm(SettingsForm):
required=False,
label=_("Additional footer link"),
help_text=_("Will be included as the link in the additional footer text.")
))
)),
('banner_message', I18nFormField(
widget=I18nTextarea,
required=False,
label=_("Global message banner"),
)),
('banner_message_detail', I18nFormField(
widget=I18nTextarea,
required=False,
label=_("Global message banner detail text"),
)),
])
responses = register_global_settings.send(self)
for r, response in sorted(responses, key=lambda r: str(r[0])):
@@ -34,6 +44,9 @@ class GlobalSettingsForm(SettingsForm):
# We need to be this explicit, since OrderedDict.update does not retain ordering
self.fields[key] = value
self.fields['banner_message'].widget.attrs['rows'] = '2'
self.fields['banner_message_detail'].widget.attrs['rows'] = '3'
class UpdateSettingsForm(SettingsForm):
update_check_perform = forms.BooleanField(

View File

@@ -272,6 +272,17 @@
</form>
</div>
{% endif %}
{% if global_settings.banner_message %}
<div class="impersonate-warning">
<span class="fa fa-bell"></span>
{{ global_settings.banner_message }}
{% if global_settings.banner_message %}
<a href="{% url 'control:global.message' %}">
{% trans "Read more" %}
</a>
{% endif %}
</div>
{% endif %}
<div id="page-wrapper">
<div class="container-fluid">
{% if messages %}

View File

@@ -0,0 +1,9 @@
{% extends "pretixcontrol/base.html" %}
{% load i18n %}
{% load rich_text %}
{% block title %}{% trans "System message" %}{% endblock %}
{% block content %}
<h1>{% trans "System message" %}</h1>
{{ global_settings.banner_message_detail|rich_text }}
{% endblock %}

View File

@@ -17,6 +17,7 @@ urlpatterns = [
url(r'^$', dashboards.user_index, name='index'),
url(r'^global/settings/$', global_settings.GlobalSettingsView.as_view(), name='global.settings'),
url(r'^global/update/$', global_settings.UpdateCheckView.as_view(), name='global.update'),
url(r'^global/message/$', global_settings.MessageView.as_view(), name='global.message'),
url(r'^reauth/$', user.ReauthView.as_view(), name='user.reauth'),
url(r'^users/$', users.UserListView.as_view(), name='users'),
url(r'^users/select2$', typeahead.users_select2, name='users.select2'),

View File

@@ -1,7 +1,7 @@
from django.contrib import messages
from django.shortcuts import redirect, reverse
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView
from django.views.generic import FormView, TemplateView
from pretix.base.services.update_check import check_result_table, update_check
from pretix.base.settings import GlobalSettingsObject
@@ -56,3 +56,7 @@ class UpdateCheckView(AdministratorPermissionRequiredMixin, FormView):
def get_success_url(self):
return reverse('control:global.update')
class MessageView(TemplateView):
template_name = 'pretixcontrol/global_message.html'