merge alert message and info message edition views

This commit is contained in:
imperosol committed 2026-11-06 17:39:06 +01:00
1 parent 9b38d4bff0
commit d1649ddb49
5 files changed
+45 -119

No files matched your search

+15 -49
View File
@@ -31,8 +31,9 @@ from pytest_django.asserts import assertNumQueries, assertRedirects
from club.models import Club, ClubRole, Membership from club.models import Club, ClubRole, Membership
from com.models import News, NewsDate, Poster, Sith, Weekmail, WeekmailArticle from com.models import News, NewsDate, Poster, Sith, Weekmail, WeekmailArticle
from core.baker_recipes import subscriber_user from core.baker_recipes import old_subscriber_user, subscriber_user
from core.models import AnonymousUser, Group, User from core.models import AnonymousUser, Group, User
from core.templatetags.renderer import markdown
from core.utils import RED_PIXEL_PNG from core.utils import RED_PIXEL_PNG
@@ -42,68 +43,32 @@ def user_community():
@pytest.mark.django_db @pytest.mark.django_db
@pytest.mark.parametrize( def test_com_page_is_working(client, user_community):
"url",
[
reverse("com:alert_edit"),
reverse("com:info_edit"),
],
)
def test_com_page_is_working(client, url, user_community):
client.force_login(user_community) client.force_login(user_community)
response = client.get(url) response = client.get(reverse("com:banner_edit"))
assert response.status_code == 200 assert response.status_code == 200
class TestCom(TestCase): class TestCom(TestCase):
@classmethod @classmethod
def setUpTestData(cls): def setUpTestData(cls):
cls.skia = User.objects.get(username="skia")
cls.com_group = Group.objects.get(id=settings.SITH_GROUP_COM_ADMIN_ID) cls.com_group = Group.objects.get(id=settings.SITH_GROUP_COM_ADMIN_ID)
cls.skia.groups.set([cls.com_group]) cls.com_admin = subscriber_user.make(groups=[cls.com_group])
def setUp(self): def test_banner_messages(self):
self.client.force_login(self.skia) self.client.force_login(self.com_admin)
alert_msg = "### ALERTE!\n\n**Caaaataaaapuuuulte!!!!**\n"
def test_alert_msg(self): info_msg = "### INFO:\n\n**Caaaataaaapuuuulte!!!!**\n"
self.client.post( self.client.post(
reverse("com:alert_edit"), reverse("com:banner_edit"), {"alert_msg": alert_msg, "info_msg": info_msg}
{
"alert_msg": """
### ALERTE!
**Caaaataaaapuuuulte!!!!**
"""
},
) )
r = self.client.get(reverse("core:index")) r = self.client.get(reverse("core:index"))
assert r.status_code == 200 assert r.status_code == 200
self.assertInHTML( self.assertInHTML(f'<div id="alert_box">{markdown(alert_msg)}</div>', r.text)
"""<div id="alert_box"><div class="markdown"><h3>ALERTE!</h3> self.assertInHTML(f'<div id="info_box">{markdown(info_msg)}</div>', r.text)
<p><strong>Caaaataaaapuuuulte!!!!</strong></p>""",
r.content.decode(),
)
def test_info_msg(self):
self.client.post(
reverse("com:info_edit"),
{
"info_msg": """
### INFO: **Caaaataaaapuuuulte!!!!**
"""
},
)
r = self.client.get(reverse("core:index"))
assert r.status_code == 200
self.assertInHTML(
"""<div id="info_box"><div class="markdown">
<h3>INFO: <strong>Caaaataaaapuuuulte!!!!</strong></h3>""",
r.content.decode(),
)
def test_birthday_non_subscribed_user(self): def test_birthday_non_subscribed_user(self):
self.client.force_login(User.objects.get(username="guy")) self.client.force_login(baker.make(User))
response = self.client.get(reverse("core:index")) response = self.client.get(reverse("core:index"))
self.assertContains( self.assertContains(
response, response,
@@ -111,6 +76,7 @@ class TestCom(TestCase):
) )
def test_birthday_subscibed_user(self): def test_birthday_subscibed_user(self):
self.client.force_login(subscriber_user.make())
response = self.client.get(reverse("core:index")) response = self.client.get(reverse("core:index"))
self.assertNotContains( self.assertNotContains(
@@ -119,7 +85,7 @@ class TestCom(TestCase):
) )
def test_birthday_old_subscibed_user(self): def test_birthday_old_subscibed_user(self):
self.client.force_login(User.objects.get(username="old_subscriber")) self.client.force_login(old_subscriber_user.make())
response = self.client.get(reverse("core:index")) response = self.client.get(reverse("core:index"))
self.assertNotContains( self.assertNotContains(
+2 -4
View File
@@ -16,8 +16,7 @@
from django.urls import path from django.urls import path
from com.views import ( from com.views import (
AlertMsgEditView, BannerMessagesEditView,
InfoMsgEditView,
NewsAdminListView, NewsAdminListView,
NewsCreateView, NewsCreateView,
NewsDeleteView, NewsDeleteView,
@@ -45,8 +44,7 @@ from com.views import (
) )
urlpatterns = [ urlpatterns = [
path("sith/edit/alert/", AlertMsgEditView.as_view(), name="alert_edit"), path("sith/edit/banner/", BannerMessagesEditView.as_view(), name="banner_edit"),
path("sith/edit/info/", InfoMsgEditView.as_view(), name="info_edit"),
path( path(
"sith/edit/weekmail_destinations/", "sith/edit/weekmail_destinations/",
WeekmailDestinationEditView.as_view(), WeekmailDestinationEditView.as_view(),
+9 -20
View File
@@ -75,14 +75,9 @@ class ComTabsMixin(TabedViewMixin):
"name": _("Weekmail destinations"), "name": _("Weekmail destinations"),
}, },
{ {
"url": reverse("com:info_edit"), "url": reverse("com:banner_edit"),
"slug": "info", "slug": "banner",
"name": _("Info message"), "name": _("Banner messages"),
},
{
"url": reverse("com:alert_edit"),
"slug": "alert",
"name": _("Alert message"),
}, },
{ {
"url": reverse("com:poster_list"), "url": reverse("com:poster_list"),
@@ -105,20 +100,14 @@ class ComEditView(ComTabsMixin, CanEditPropMixin, UpdateView):
return Sith.objects.first() return Sith.objects.first()
class AlertMsgEditView(ComEditView): class BannerMessagesEditView(ComEditView):
form_class = modelform_factory( form_class = modelform_factory(
Sith, fields=["alert_msg"], widgets={"alert_msg": MarkdownInput} Sith,
fields=["alert_msg", "info_msg"],
widgets={"alert_msg": MarkdownInput, "info_msg": MarkdownInput},
) )
current_tab = "alert" current_tab = "banner"
success_url = reverse_lazy("com:alert_edit") success_url = reverse_lazy("com:banner_edit")
class InfoMsgEditView(ComEditView):
form_class = modelform_factory(
Sith, fields=["info_msg"], widgets={"info_msg": MarkdownInput}
)
current_tab = "info"
success_url = reverse_lazy("com:info_edit")
class WeekmailDestinationEditView(ComEditView): class WeekmailDestinationEditView(ComEditView):
+1 -3
View File
@@ -130,9 +130,7 @@
<li><a href="{{ url('com:weekmail_destinations') }}">{% trans %}Weekmail destinations{% endtrans %}</a></li> <li><a href="{{ url('com:weekmail_destinations') }}">{% trans %}Weekmail destinations{% endtrans %}</a></li>
<li><a href="{{ url('com:news_new') }}">{% trans %}Create news{% endtrans %}</a></li> <li><a href="{{ url('com:news_new') }}">{% trans %}Create news{% endtrans %}</a></li>
<li><a href="{{ url('com:news_admin_list') }}">{% trans %}Moderate news{% endtrans %}</a></li> <li><a href="{{ url('com:news_admin_list') }}">{% trans %}Moderate news{% endtrans %}</a></li>
<li><a href="{{ url('com:alert_edit') }}">{% trans %}Edit alert message{% endtrans %}</a></li> <li><a href="{{ url('com:banner_edit') }}">{% trans %}Edit banner messages{% endtrans %}</a></li>
<li><a href="{{ url('com:info_edit') }}">{% trans %}Edit information message{% endtrans %}</a></li>
<li><a href="{{ url('core:file_moderation') }}">{% trans %}Moderate files{% endtrans %}</a></li>
<li><a href="{{ url('com:poster_list') }}">{% trans %}Posters{% endtrans %}</a></li> <li><a href="{{ url('com:poster_list') }}">{% trans %}Posters{% endtrans %}</a></li>
<li><a href="{{ url('com:screen_list') }}">{% trans %}Screens{% endtrans %}</a></li> <li><a href="{{ url('com:screen_list') }}">{% trans %}Screens{% endtrans %}</a></li>
{% endif %} {% endif %}
+18 -43
View File
@@ -6,7 +6,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-10-27 23:26+0100\n" "POT-Creation-Date: 2026-11-06 17:22+0100\n"
"PO-Revision-Date: 2016-07-18\n" "PO-Revision-Date: 2016-07-18\n"
"Last-Translator: Maréchal <thomas.girod@utbm.fr\n" "Last-Translator: Maréchal <thomas.girod@utbm.fr\n"
"Language-Team: AE info <ae.info@utbm.fr>\n" "Language-Team: AE info <ae.info@utbm.fr>\n"
@@ -20,15 +20,15 @@ msgstr ""
msgid "Email domain is not allowed." msgid "Email domain is not allowed."
msgstr "Le domaine de l'addresse e-mail n'est pas autorisé." msgstr "Le domaine de l'addresse e-mail n'est pas autorisé."
#: antispam/models.py #: antispam/models/models.py
msgid "domain" msgid "domain"
msgstr "domaine" msgstr "domaine"
#: antispam/models.py #: antispam/models/models.py
msgid "is externally managed" msgid "is externally managed"
msgstr "est géré de manière externe" msgstr "est géré de manière externe"
#: antispam/models.py #: antispam/models/models.py
msgid "" msgid ""
"True if kept up-to-date using external toxic domain providers, else False" "True if kept up-to-date using external toxic domain providers, else False"
msgstr "" msgstr ""
@@ -1503,17 +1503,13 @@ msgstr "Le mot de la fin"
msgid "Communication administration" msgid "Communication administration"
msgstr "Administration de la communication" msgstr "Administration de la communication"
#: com/views.py core/templates/core/user_tools.jinja #: com/views.py
msgid "Weekmail destinations" msgid "Weekmail destinations"
msgstr "Destinataires du Weekmail" msgstr "Destinataires du Weekmail"
#: com/views.py #: com/views.py
msgid "Info message" msgid "Banner messages"
msgstr "Message d'info" msgstr "Messages de bannière"
#: com/views.py
msgid "Alert message"
msgstr "Message d'alerte"
#: com/views.py #: com/views.py
msgid "Posters list" msgid "Posters list"
@@ -2984,24 +2980,6 @@ msgstr "Gestion générale des comptoirs"
msgid "Products management" msgid "Products management"
msgstr "Gestion des produits" msgstr "Gestion des produits"
#: core/templates/core/user_tools.jinja
msgid "Product types management"
msgstr "Gestion des types de produit"
#: core/templates/core/user_tools.jinja
msgid "Returnable products management"
msgstr "Gestion des consignes"
#: core/templates/core/user_tools.jinja
#: counter/templates/counter/cash_summary_list.jinja counter/views/mixins.py
msgid "Cash register summaries"
msgstr "Relevés de caisse"
#: core/templates/core/user_tools.jinja
#: counter/templates/counter/invoices_call.jinja counter/views/mixins.py
msgid "Invoices call"
msgstr "Appels à facture"
#: core/templates/core/user_tools.jinja core/views/user.py #: core/templates/core/user_tools.jinja core/views/user.py
#: counter/templates/counter/counter_list.jinja #: counter/templates/counter/counter_list.jinja
msgid "Stats" msgid "Stats"
@@ -3011,6 +2989,11 @@ msgstr "Stats"
msgid "Accounting" msgid "Accounting"
msgstr "Comptabilité" msgstr "Comptabilité"
#: core/templates/core/user_tools.jinja
#: counter/templates/counter/invoices_call.jinja counter/views/mixins.py
msgid "Invoices call"
msgstr "Appels à facture"
#: core/templates/core/user_tools.jinja #: core/templates/core/user_tools.jinja
msgid "Refound Account" msgid "Refound Account"
msgstr "Rembourser un compte" msgstr "Rembourser un compte"
@@ -3019,25 +3002,13 @@ msgstr "Rembourser un compte"
msgid "Communication" msgid "Communication"
msgstr "Communication" msgstr "Communication"
#: core/templates/core/user_tools.jinja
msgid "Create weekmail article"
msgstr "Rédiger un nouvel article dans le Weekmail"
#: core/templates/core/user_tools.jinja #: core/templates/core/user_tools.jinja
msgid "Moderate news" msgid "Moderate news"
msgstr "Modérer les nouvelles" msgstr "Modérer les nouvelles"
#: core/templates/core/user_tools.jinja #: core/templates/core/user_tools.jinja
msgid "Edit alert message" msgid "Edit banner messages"
msgstr "Éditer le message d'alerte" msgstr "Éditer les messages de bannière"
#: core/templates/core/user_tools.jinja
msgid "Edit information message"
msgstr "Éditer le message d'informations"
#: core/templates/core/user_tools.jinja
msgid "Moderate files"
msgstr "Modérer les fichiers"
#: core/templates/core/user_tools.jinja #: core/templates/core/user_tools.jinja
msgid "Moderate pictures" msgid "Moderate pictures"
@@ -3787,6 +3758,10 @@ msgstr "Liste des relevés de caisse"
msgid "Theoric sums" msgid "Theoric sums"
msgstr "Sommes théoriques" msgstr "Sommes théoriques"
#: counter/templates/counter/cash_summary_list.jinja counter/views/mixins.py
msgid "Cash register summaries"
msgstr "Relevés de caisse"
#: counter/templates/counter/cash_summary_list.jinja counter/views/cash.py #: counter/templates/counter/cash_summary_list.jinja counter/views/cash.py
msgid "Emptied" msgid "Emptied"
msgstr "Coffre vidé" msgstr "Coffre vidé"