From 515be71e5e8f9ef12eb3c3c8477358e496e7021f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Dziurzy=C5=84ski?= Date: Mon, 21 Oct 2024 19:12:10 +0200 Subject: [PATCH 1/2] Dismissible GlobalMessage --- oioioi/globalmessage/processors.py | 6 ++-- .../templates/global-message-admin.html | 4 +-- .../templates/global-message-user.html | 4 +-- .../templates/global-message.html | 33 ++++++++++++++++++- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/oioioi/globalmessage/processors.py b/oioioi/globalmessage/processors.py index 813cfd9b4..f2c2421cb 100644 --- a/oioioi/globalmessage/processors.py +++ b/oioioi/globalmessage/processors.py @@ -16,10 +16,12 @@ def global_message_processor(request): if message.visible(time): return { 'extra_body_global_message': render_to_string( - 'global-message-user.html', {'global_message': message} + 'global-message-user.html', + {'global_message': message, 'start': message.start.strftime('%s')}, ), 'extra_admin_global_message': render_to_string( - 'global-message-admin.html', {'global_message': message} + 'global-message-admin.html', + {'global_message': message, 'start': message.start.strftime('%s')}, ), } diff --git a/oioioi/globalmessage/templates/global-message-admin.html b/oioioi/globalmessage/templates/global-message-admin.html index c266a5d5b..6c5ad386d 100644 --- a/oioioi/globalmessage/templates/global-message-admin.html +++ b/oioioi/globalmessage/templates/global-message-admin.html @@ -1,3 +1,3 @@ -
+
{% include "global-message.html" %} -
\ No newline at end of file +
diff --git a/oioioi/globalmessage/templates/global-message-user.html b/oioioi/globalmessage/templates/global-message-user.html index b73dfd05b..39a64c1a9 100644 --- a/oioioi/globalmessage/templates/global-message-user.html +++ b/oioioi/globalmessage/templates/global-message-user.html @@ -1,3 +1,3 @@ -
+
{% include "global-message.html" %} -
\ No newline at end of file +
diff --git a/oioioi/globalmessage/templates/global-message.html b/oioioi/globalmessage/templates/global-message.html index d056b0d73..153909461 100644 --- a/oioioi/globalmessage/templates/global-message.html +++ b/oioioi/globalmessage/templates/global-message.html @@ -1 +1,32 @@ -
{{ global_message }}
\ No newline at end of file +
+ + {{ global_message|safe }} +
+ From cfd9e00de32744783ce68da1a94da63c3d6c7fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Dziurzy=C5=84ski?= Date: Mon, 21 Oct 2024 23:15:03 +0200 Subject: [PATCH 2/2] GlobalMessage model updated field for dismiss reference --- oioioi/globalmessage/admin.py | 7 ++++++- .../migrations/0002_globalmessage_updated.py | 20 +++++++++++++++++++ oioioi/globalmessage/models.py | 1 + oioioi/globalmessage/processors.py | 4 ++-- .../templates/global-message-admin.html | 2 +- .../templates/global-message-user.html | 2 +- .../templates/global-message.html | 4 ++-- 7 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 oioioi/globalmessage/migrations/0002_globalmessage_updated.py diff --git a/oioioi/globalmessage/admin.py b/oioioi/globalmessage/admin.py index 4234ca94a..40c6f258f 100644 --- a/oioioi/globalmessage/admin.py +++ b/oioioi/globalmessage/admin.py @@ -1,3 +1,5 @@ +from django.forms import ModelForm +from django.http import HttpRequest from django.urls import re_path, reverse from django.utils.translation import gettext_lazy as _ @@ -5,7 +7,6 @@ from oioioi.base.permissions import is_superuser from oioioi.globalmessage.models import GlobalMessage - class GlobalMessageAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields': ['enabled', 'message']}), @@ -33,6 +34,10 @@ def get_urls(self): return custom_urls + urls + def save_model(self, request: HttpRequest, obj: GlobalMessage, form: ModelForm, change: bool) -> None: + obj.updated = request.timestamp + return super().save_model(request, obj, form, change) + admin.site.register(GlobalMessage, GlobalMessageAdmin) diff --git a/oioioi/globalmessage/migrations/0002_globalmessage_updated.py b/oioioi/globalmessage/migrations/0002_globalmessage_updated.py new file mode 100644 index 000000000..ebbc35c91 --- /dev/null +++ b/oioioi/globalmessage/migrations/0002_globalmessage_updated.py @@ -0,0 +1,20 @@ +# Generated by Django 4.2.11 on 2024-10-21 20:48 + +import django +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('globalmessage', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='globalmessage', + name='updated', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='updated'), + preserve_default=False, + ), + ] diff --git a/oioioi/globalmessage/models.py b/oioioi/globalmessage/models.py index 8a3523f46..ff3ec5909 100644 --- a/oioioi/globalmessage/models.py +++ b/oioioi/globalmessage/models.py @@ -9,6 +9,7 @@ class GlobalMessage(models.Model): enabled = models.BooleanField(default=False, verbose_name=_("enabled")) start = models.DateTimeField(null=True, blank=True, verbose_name=_("start")) end = models.DateTimeField(null=True, blank=True, verbose_name=_("end")) + updated = models.DateTimeField(null=False, blank=False, verbose_name=_("updated")) def visible(self, timestamp): return ( diff --git a/oioioi/globalmessage/processors.py b/oioioi/globalmessage/processors.py index f2c2421cb..a36b605e5 100644 --- a/oioioi/globalmessage/processors.py +++ b/oioioi/globalmessage/processors.py @@ -17,11 +17,11 @@ def global_message_processor(request): return { 'extra_body_global_message': render_to_string( 'global-message-user.html', - {'global_message': message, 'start': message.start.strftime('%s')}, + {'global_message': message, 'updated': message.updated.strftime('%s')}, ), 'extra_admin_global_message': render_to_string( 'global-message-admin.html', - {'global_message': message, 'start': message.start.strftime('%s')}, + {'global_message': message, 'updated': message.updated.strftime('%s')}, ), } diff --git a/oioioi/globalmessage/templates/global-message-admin.html b/oioioi/globalmessage/templates/global-message-admin.html index 6c5ad386d..7bbe8c581 100644 --- a/oioioi/globalmessage/templates/global-message-admin.html +++ b/oioioi/globalmessage/templates/global-message-admin.html @@ -1,3 +1,3 @@ -
+
{% include "global-message.html" %}
diff --git a/oioioi/globalmessage/templates/global-message-user.html b/oioioi/globalmessage/templates/global-message-user.html index 39a64c1a9..5ff6c1ff3 100644 --- a/oioioi/globalmessage/templates/global-message-user.html +++ b/oioioi/globalmessage/templates/global-message-user.html @@ -1,3 +1,3 @@ -
+
{% include "global-message.html" %}
diff --git a/oioioi/globalmessage/templates/global-message.html b/oioioi/globalmessage/templates/global-message.html index 153909461..46f6d95ae 100644 --- a/oioioi/globalmessage/templates/global-message.html +++ b/oioioi/globalmessage/templates/global-message.html @@ -18,14 +18,14 @@ } $globalMsgClose.style.display = ""; const globalMsgData = localStorage.getItem("globalmessage_dismissed"); - if (globalMsgData === $globalMsgRoot.dataset.start) { + if (globalMsgData === $globalMsgRoot.dataset.updated) { $globalMsgRoot.style.display = "none"; } $globalMsgClose.addEventListener("click", (e) => { $globalMsgRoot.style.display = "none"; localStorage.setItem( "globalmessage_dismissed", - $globalMsgRoot.dataset.start, + $globalMsgRoot.dataset.updated, ); }); })();