From 203ed986f06607b6de3e8984470c60305b270c68 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 3 Dec 2020 15:43:41 +0100 Subject: [PATCH] add support for service messages --- panikdb/service_messages/__init__.py | 0 .../migrations/0001_initial.py | 25 +++++++++++++++++++ .../service_messages/migrations/__init__.py | 0 panikdb/service_messages/models.py | 16 ++++++++++++ panikdb/service_messages/urls.py | 8 ++++++ panikdb/service_messages/views.py | 14 +++++++++++ panikdb/settings.py | 1 + panikdb/templates/home.html | 12 +++++++++ panikdb/templates/service_message_form.html | 17 +++++++++++++ panikdb/urls.py | 2 ++ panikdb/views.py | 7 ++++++ 11 files changed, 102 insertions(+) create mode 100644 panikdb/service_messages/__init__.py create mode 100644 panikdb/service_messages/migrations/0001_initial.py create mode 100644 panikdb/service_messages/migrations/__init__.py create mode 100644 panikdb/service_messages/models.py create mode 100644 panikdb/service_messages/urls.py create mode 100644 panikdb/service_messages/views.py create mode 100644 panikdb/templates/service_message_form.html diff --git a/panikdb/service_messages/__init__.py b/panikdb/service_messages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/panikdb/service_messages/migrations/0001_initial.py b/panikdb/service_messages/migrations/0001_initial.py new file mode 100644 index 0000000..e4db52d --- /dev/null +++ b/panikdb/service_messages/migrations/0001_initial.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-12-03 15:41 +from __future__ import unicode_literals + +import ckeditor.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Message', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('style', models.CharField(choices=[('info', 'Info'), ('alert', 'Alert')], default='info', max_length=20, verbose_name='Style')), + ('text', ckeditor.fields.RichTextField(blank=True, default='', verbose_name='Description')), + ], + ), + ] diff --git a/panikdb/service_messages/migrations/__init__.py b/panikdb/service_messages/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/panikdb/service_messages/models.py b/panikdb/service_messages/models.py new file mode 100644 index 0000000..8519906 --- /dev/null +++ b/panikdb/service_messages/models.py @@ -0,0 +1,16 @@ +from django.db import models +from django.utils.translation import ugettext_lazy as _ + +from ckeditor.fields import RichTextField + + +MESSAGE_STYLES = ( + ('info', _('Info')), + ('alert', _('Alert')), +) + + +class Message(models.Model): + style = models.CharField(_('Style'), + max_length=20, default='info', choices=MESSAGE_STYLES) + text = RichTextField(_('Description'), blank=True, default='') diff --git a/panikdb/service_messages/urls.py b/panikdb/service_messages/urls.py new file mode 100644 index 0000000..3cec700 --- /dev/null +++ b/panikdb/service_messages/urls.py @@ -0,0 +1,8 @@ +from django.conf.urls import url + +from . import views + + +urlpatterns = [ + url(r'^edit/(?P\d+)/$', views.message_edit, name='message-edit-view'), +] diff --git a/panikdb/service_messages/views.py b/panikdb/service_messages/views.py new file mode 100644 index 0000000..e35d19e --- /dev/null +++ b/panikdb/service_messages/views.py @@ -0,0 +1,14 @@ +from django.contrib.admin.views.decorators import staff_member_required +from django.views.generic.edit import UpdateView + +from .models import Message + + +class MessageEditView(UpdateView): + model = Message + fields = ['style', 'text'] + success_url = '/' + template_name = 'service_message_form.html' + + +message_edit = staff_member_required(MessageEditView.as_view()) diff --git a/panikdb/settings.py b/panikdb/settings.py index f35d0b8..477a0ec 100644 --- a/panikdb/settings.py +++ b/panikdb/settings.py @@ -155,6 +155,7 @@ INSTALLED_APPS = ( 'nonstop', 'panikdb.aa', 'panikdb.customtags', + 'panikdb.service_messages', 'panikdb.oauth', 'panikdb.regie', 'panikdb.stats', diff --git a/panikdb/templates/home.html b/panikdb/templates/home.html index 30ca5f7..8242dd7 100644 --- a/panikdb/templates/home.html +++ b/panikdb/templates/home.html @@ -6,6 +6,9 @@

Émissions

{% if perms.emissions.change_emission %} + {% if request.user.is_staff and not service_message.text %} + Définir un message de service + {% endif %} Toutes les émissions Toutes les actus {% if perms.emissions.add_emission %} @@ -42,6 +45,15 @@ --> {% endif %} +{% if service_message.text %} +
+ {% if request.user.is_staff %} + Modifier le message de service + {% endif %} + {{service_message.text|default:""|safe}} +
+{% endif %} + {% for emission in emissions %}

{{ emission.title }}

diff --git a/panikdb/templates/service_message_form.html b/panikdb/templates/service_message_form.html new file mode 100644 index 0000000..7e7ab75 --- /dev/null +++ b/panikdb/templates/service_message_form.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} +{% load static %} + +{% block content %} +
+{% csrf_token %} +{{ form.as_p }} + +
+ +Annuler +
+
+ + + +{% endblock %} diff --git a/panikdb/urls.py b/panikdb/urls.py index d1a1dd1..5eb8bf8 100644 --- a/panikdb/urls.py +++ b/panikdb/urls.py @@ -23,6 +23,7 @@ from nonstop.urls import public_urlpatterns as nonstop_public_urlpatterns from .regie.urls import urlpatterns as regie_urlpatterns from .oauth.urls import urlpatterns as oauth_urlpatterns from .aa.urls import urlpatterns as aa_urlpatterns +from .service_messages.urls import urlpatterns as service_messages_urlpatterns from wiki.urls import urlpatterns as wiki_urlpatterns from panikombo.urls import urlpatterns as panikombo_urlpatterns @@ -87,6 +88,7 @@ urlpatterns = [ url(r'^wiki/', include(wiki_urlpatterns)), url(r'^regie/', include(regie_urlpatterns)), url(r'^oauth/', include(oauth_urlpatterns)), + url(r'^messages/', include(service_messages_urlpatterns)), url(r'^admin/', include(admin.site.urls)), ] diff --git a/panikdb/views.py b/panikdb/views.py index 2a0a00a..dc322a4 100644 --- a/panikdb/views.py +++ b/panikdb/views.py @@ -17,6 +17,8 @@ import emissions.views import newsletter.views from .poll.models import Vote +from .service_messages.models import Message + class Home(TemplateView): template_name = 'home.html' @@ -29,6 +31,11 @@ class Home(TemplateView): context['display_poll_button'] = True context['emissions'] = self.request.user.emissions.all().order_by('title') context['news_categories'] = self.request.user.news_categories.all().order_by('title') + context['service_message'] = Message.objects.all().first() + if not context['service_message']: + context['service_message'] = Message.objects.create(style='info') + if not context['service_message'].text and not self.request.user.is_staff: + context['service_message'] = None if self.request.user.has_perm('emissions.add_focus'): context['focused_items'] = Focus.objects.select_related().filter(current=True) context['recent_episodes'] = Episode.objects.select_related( -- 2.39.2