mirror of
https://github.com/pretix/pretix.git
synced 2026-08-29 13:44:40 +00:00
Add global banner message
This commit is contained in:
@@ -486,7 +486,15 @@ Your {event} team"""))
|
|||||||
'update_check_id': {
|
'update_check_id': {
|
||||||
'default': None,
|
'default': None,
|
||||||
'type': str
|
'type': str
|
||||||
}
|
},
|
||||||
|
'banner_message': {
|
||||||
|
'default': '',
|
||||||
|
'type': LazyI18nString
|
||||||
|
},
|
||||||
|
'banner_message_detail': {
|
||||||
|
'default': '',
|
||||||
|
'type': LazyI18nString
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
settings_hierarkey = Hierarkey(attribute_name='settings')
|
settings_hierarkey = Hierarkey(attribute_name='settings')
|
||||||
|
|||||||
@@ -91,8 +91,9 @@ def contextprocessor(request):
|
|||||||
|
|
||||||
ctx['warning_update_available'] = False
|
ctx['warning_update_available'] = False
|
||||||
ctx['warning_update_check_active'] = False
|
ctx['warning_update_check_active'] = False
|
||||||
|
gs = GlobalSettingsObject()
|
||||||
|
ctx['global_settings'] = gs.settings
|
||||||
if request.user.is_superuser:
|
if request.user.is_superuser:
|
||||||
gs = GlobalSettingsObject()
|
|
||||||
if gs.settings.update_check_result_warning:
|
if gs.settings.update_check_result_warning:
|
||||||
ctx['warning_update_available'] = True
|
ctx['warning_update_available'] = True
|
||||||
if not gs.settings.update_check_ack and 'runserver' not in sys.argv:
|
if not gs.settings.update_check_ack and 'runserver' not in sys.argv:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from collections import OrderedDict
|
|||||||
|
|
||||||
from django import forms
|
from django import forms
|
||||||
from django.utils.translation import ugettext_lazy as _
|
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.forms import SettingsForm
|
||||||
from pretix.base.settings import GlobalSettingsObject
|
from pretix.base.settings import GlobalSettingsObject
|
||||||
@@ -26,7 +26,17 @@ class GlobalSettingsForm(SettingsForm):
|
|||||||
required=False,
|
required=False,
|
||||||
label=_("Additional footer link"),
|
label=_("Additional footer link"),
|
||||||
help_text=_("Will be included as the link in the additional footer text.")
|
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)
|
responses = register_global_settings.send(self)
|
||||||
for r, response in sorted(responses, key=lambda r: str(r[0])):
|
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
|
# We need to be this explicit, since OrderedDict.update does not retain ordering
|
||||||
self.fields[key] = value
|
self.fields[key] = value
|
||||||
|
|
||||||
|
self.fields['banner_message'].widget.attrs['rows'] = '2'
|
||||||
|
self.fields['banner_message_detail'].widget.attrs['rows'] = '3'
|
||||||
|
|
||||||
|
|
||||||
class UpdateSettingsForm(SettingsForm):
|
class UpdateSettingsForm(SettingsForm):
|
||||||
update_check_perform = forms.BooleanField(
|
update_check_perform = forms.BooleanField(
|
||||||
|
|||||||
@@ -272,6 +272,17 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% 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 id="page-wrapper">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
{% if messages %}
|
{% if messages %}
|
||||||
|
|||||||
@@ -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 %}
|
||||||
@@ -17,6 +17,7 @@ urlpatterns = [
|
|||||||
url(r'^$', dashboards.user_index, name='index'),
|
url(r'^$', dashboards.user_index, name='index'),
|
||||||
url(r'^global/settings/$', global_settings.GlobalSettingsView.as_view(), name='global.settings'),
|
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/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'^reauth/$', user.ReauthView.as_view(), name='user.reauth'),
|
||||||
url(r'^users/$', users.UserListView.as_view(), name='users'),
|
url(r'^users/$', users.UserListView.as_view(), name='users'),
|
||||||
url(r'^users/select2$', typeahead.users_select2, name='users.select2'),
|
url(r'^users/select2$', typeahead.users_select2, name='users.select2'),
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.shortcuts import redirect, reverse
|
from django.shortcuts import redirect, reverse
|
||||||
from django.utils.translation import ugettext_lazy as _
|
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.services.update_check import check_result_table, update_check
|
||||||
from pretix.base.settings import GlobalSettingsObject
|
from pretix.base.settings import GlobalSettingsObject
|
||||||
@@ -56,3 +56,7 @@ class UpdateCheckView(AdministratorPermissionRequiredMixin, FormView):
|
|||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
return reverse('control:global.update')
|
return reverse('control:global.update')
|
||||||
|
|
||||||
|
|
||||||
|
class MessageView(TemplateView):
|
||||||
|
template_name = 'pretixcontrol/global_message.html'
|
||||||
|
|||||||
Reference in New Issue
Block a user