diff --git a/messages.pot b/messages.pot index 8e2f664..213d042 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-09-06 17:11+0200\n" +"POT-Creation-Date: 2023-09-07 22:40+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -232,34 +232,38 @@ msgstr "" msgid "Start page" msgstr "" -#: project/forms/admin.py:17 project/forms/oauth2_client.py:24 +#: project/forms/admin.py:16 +msgid "Announcement" +msgstr "" + +#: project/forms/admin.py:18 project/forms/oauth2_client.py:24 #: project/forms/user.py:13 msgid "Save" msgstr "" -#: project/forms/admin.py:22 +#: project/forms/admin.py:23 msgid "Reset for all users" msgstr "" -#: project/forms/admin.py:24 +#: project/forms/admin.py:25 msgid "Reset" msgstr "" -#: project/forms/admin.py:28 project/forms/admin_unit_member.py:14 +#: project/forms/admin.py:29 project/forms/admin_unit_member.py:14 #: project/forms/admin_unit_member.py:34 msgid "Roles" msgstr "" -#: project/forms/admin.py:29 project/templates/admin/update_user.html:4 +#: project/forms/admin.py:30 project/templates/admin/update_user.html:4 #: project/templates/admin/update_user.html:8 msgid "Update user" msgstr "" -#: project/forms/admin.py:33 project/templates/admin/delete_user.html:6 +#: project/forms/admin.py:34 project/templates/admin/delete_user.html:6 msgid "Delete user" msgstr "" -#: project/forms/admin.py:34 project/forms/admin_unit.py:58 +#: project/forms/admin.py:35 project/forms/admin_unit.py:58 #: project/forms/admin_unit_member.py:12 project/forms/admin_unit_member.py:25 #: project/forms/admin_unit_member.py:30 project/forms/event.py:112 #: project/forms/event_suggestion.py:38 project/forms/organizer.py:33 @@ -271,60 +275,60 @@ msgstr "" msgid "Email" msgstr "" -#: project/forms/admin.py:39 +#: project/forms/admin.py:40 msgid "Incoming reference requests allowed" msgstr "" -#: project/forms/admin.py:40 +#: project/forms/admin.py:41 msgid "" "If set, other organizations can ask this organization to reference their " "event." msgstr "" -#: project/forms/admin.py:46 +#: project/forms/admin.py:47 msgid "Suggestions enabled" msgstr "" -#: project/forms/admin.py:47 +#: project/forms/admin.py:48 msgid "If set, the organization can work with suggestions." msgstr "" -#: project/forms/admin.py:51 +#: project/forms/admin.py:52 msgid "Create other organizations" msgstr "" -#: project/forms/admin.py:52 +#: project/forms/admin.py:53 msgid "If set, members of the organization can create other organizations." msgstr "" -#: project/forms/admin.py:58 +#: project/forms/admin.py:59 msgid "Invite other organizations" msgstr "" -#: project/forms/admin.py:59 +#: project/forms/admin.py:60 msgid "If set, members of the organization can invite other organizations." msgstr "" -#: project/forms/admin.py:65 +#: project/forms/admin.py:66 msgid "Verify other organizations" msgstr "" -#: project/forms/admin.py:66 +#: project/forms/admin.py:67 msgid "If set, members of the organization can verify other organizations." msgstr "" -#: project/forms/admin.py:71 project/templates/admin/update_admin_unit.html:4 +#: project/forms/admin.py:72 project/templates/admin/update_admin_unit.html:4 #: project/templates/admin/update_admin_unit.html:8 msgid "Update organization" msgstr "" -#: project/forms/admin.py:75 project/templates/admin/delete_admin_unit.html:6 +#: project/forms/admin.py:76 project/templates/admin/delete_admin_unit.html:6 #: project/templates/admin_unit/request_deletion.html:6 #: project/templates/admin_unit/update.html:94 msgid "Delete organization" msgstr "" -#: project/forms/admin.py:76 project/forms/admin_unit.py:147 +#: project/forms/admin.py:77 project/forms/admin_unit.py:147 #: project/forms/admin_unit.py:152 project/forms/admin_unit.py:157 #: project/forms/event.py:90 project/forms/event.py:119 #: project/forms/event_place.py:30 project/forms/event_place.py:56 @@ -340,27 +344,27 @@ msgstr "" msgid "Name" msgstr "" -#: project/forms/admin.py:80 project/forms/admin.py:87 +#: project/forms/admin.py:81 project/forms/admin.py:88 msgid "Recipient" msgstr "" -#: project/forms/admin.py:82 +#: project/forms/admin.py:83 msgid "Send test mail synchronously" msgstr "" -#: project/forms/admin.py:89 project/forms/admin.py:95 +#: project/forms/admin.py:90 project/forms/admin.py:96 msgid "Test recipient" msgstr "" -#: project/forms/admin.py:90 +#: project/forms/admin.py:91 msgid "All users with enabled newsletter setting" msgstr "" -#: project/forms/admin.py:96 +#: project/forms/admin.py:97 msgid "Message" msgstr "" -#: project/forms/admin.py:97 +#: project/forms/admin.py:98 msgid "Send newsletter" msgstr "" @@ -1918,7 +1922,7 @@ msgstr "" #: project/templates/admin/reset_tos_accepted.html:4 #: project/templates/admin/reset_tos_accepted.html:8 -#: project/templates/admin/settings.html:28 +#: project/templates/admin/settings.html:29 #: project/templates/admin/users.html:48 msgid "Reset acceptance of terms of service and privacy" msgstr "" diff --git a/migrations/versions/d2c04be821a7_.py b/migrations/versions/d2c04be821a7_.py new file mode 100644 index 0000000..2ec358b --- /dev/null +++ b/migrations/versions/d2c04be821a7_.py @@ -0,0 +1,28 @@ +"""empty message + +Revision ID: d2c04be821a7 +Revises: 6634c8f0b7fc +Create Date: 2023-09-07 22:20:57.918736 + +""" +import sqlalchemy as sa +import sqlalchemy_utils +from alembic import op + +from project import dbtypes + +# revision identifiers, used by Alembic. +revision = "d2c04be821a7" +down_revision = "6634c8f0b7fc" +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + "settings", sa.Column("announcement", sa.UnicodeText(), nullable=True) + ) + + +def downgrade(): + op.drop_column("settings", "announcement") diff --git a/project/forms/admin.py b/project/forms/admin.py index 93b7cb1..60504c8 100644 --- a/project/forms/admin.py +++ b/project/forms/admin.py @@ -13,6 +13,7 @@ class AdminSettingsForm(FlaskForm): contact = TextAreaField(lazy_gettext("Contact"), validators=[Optional()]) privacy = TextAreaField(lazy_gettext("Privacy"), validators=[Optional()]) start_page = TextAreaField(lazy_gettext("Start page"), validators=[Optional()]) + announcement = TextAreaField(lazy_gettext("Announcement"), validators=[Optional()]) submit = SubmitField(lazy_gettext("Save")) diff --git a/project/jinja_filters.py b/project/jinja_filters.py index e069846..7fcf71d 100644 --- a/project/jinja_filters.py +++ b/project/jinja_filters.py @@ -2,6 +2,7 @@ import os from urllib.parse import quote_plus from flask import url_for +from markupsafe import Markup from project import app from project.utils import ( @@ -114,6 +115,15 @@ def get_context_processors(): return has_tos() + def get_announcement(): + from project.services.admin import has_announcement, upsert_settings + + if not has_announcement(): + return None + + settings = upsert_settings() + return Markup(settings.announcement) if settings.announcement else None + def get_current_user_roles(): from flask_security import current_user @@ -167,6 +177,7 @@ def get_context_processors(): get_manage_menu_options=get_manage_menu_options, has_access=has_access, has_tos=has_tos, + get_announcement=get_announcement, get_current_user_roles=get_current_user_roles, get_current_user_permissions=get_current_user_permissions, ) diff --git a/project/models/settings.py b/project/models/settings.py index 8a28ce1..e2f7c43 100644 --- a/project/models/settings.py +++ b/project/models/settings.py @@ -1,4 +1,5 @@ from sqlalchemy import Column, Integer, UnicodeText +from sqlalchemy.orm import deferred from project import db from project.models.trackable_mixin import TrackableMixin @@ -7,8 +8,9 @@ from project.models.trackable_mixin import TrackableMixin class Settings(db.Model, TrackableMixin): __tablename__ = "settings" id = Column(Integer(), primary_key=True) - tos = Column(UnicodeText()) - legal_notice = Column(UnicodeText()) - contact = Column(UnicodeText()) - privacy = Column(UnicodeText()) - start_page = Column(UnicodeText()) + tos = deferred(Column(UnicodeText())) + legal_notice = deferred(Column(UnicodeText())) + contact = deferred(Column(UnicodeText())) + privacy = deferred(Column(UnicodeText())) + start_page = deferred(Column(UnicodeText())) + announcement = deferred(Column(UnicodeText())) diff --git a/project/services/admin.py b/project/services/admin.py index 37eb4c5..dc2ad77 100644 --- a/project/services/admin.py +++ b/project/services/admin.py @@ -4,7 +4,7 @@ from project import db from project.models import Settings, User -def upsert_settings(): +def upsert_settings() -> Settings: result = Settings.query.first() if result is None: result = Settings() @@ -13,12 +13,18 @@ def upsert_settings(): return result -def has_tos(): +def has_tos() -> bool: return db.session.scalar( exists().where(func.coalesce(Settings.tos, "") != "").select() ) +def has_announcement() -> bool: + return db.session.scalar( + exists().where(func.coalesce(Settings.announcement, "") != "").select() + ) + + def reset_tos_accepted_for_users(): db.session.execute(update(User).values(tos_accepted_at=None)) db.session.commit() diff --git a/project/templates/_messages.html b/project/templates/_messages.html index 6238aea..fae6738 100644 --- a/project/templates/_messages.html +++ b/project/templates/_messages.html @@ -1,3 +1,8 @@ +{% set announcement = get_announcement() %} +{% if announcement %} + +{% endif %} + {%- with messages = get_flashed_messages(with_categories=true) -%} {% if messages %} {% for category, message in messages %} diff --git a/project/templates/admin/settings.html b/project/templates/admin/settings.html index 286681c..fe154b4 100644 --- a/project/templates/admin/settings.html +++ b/project/templates/admin/settings.html @@ -20,6 +20,7 @@ {{ render_field_with_errors(form.legal_notice) }} {{ render_field_with_errors(form.contact) }} {{ render_field_with_errors(form.privacy) }} + {{ render_field_with_errors(form.announcement) }} {{ render_field(form.submit) }} diff --git a/project/templates/home.html b/project/templates/home.html index d8559b1..6e7aed8 100644 --- a/project/templates/home.html +++ b/project/templates/home.html @@ -7,6 +7,7 @@ {% endblock %} {% block body_content__attribs %} style="padding:0;"{% endblock %} {% block content_container_attribs %}{% endblock %} +{% block messages_container_attribs %}class="pt-3 px-3"{% endblock messages_container_attribs %} {% block content %} {% if content %} {{ content }} diff --git a/project/templates/layout.html b/project/templates/layout.html index 5709cc5..019e994 100644 --- a/project/templates/layout.html +++ b/project/templates/layout.html @@ -323,7 +323,9 @@ {% block content_container -%}
- {% include "_messages.html" %} +
+ {% include "_messages.html" %} +
{% block content -%} {%- endblock content %} diff --git a/project/translations/de/LC_MESSAGES/messages.mo b/project/translations/de/LC_MESSAGES/messages.mo index ccc953e..eae1d07 100644 Binary files a/project/translations/de/LC_MESSAGES/messages.mo and b/project/translations/de/LC_MESSAGES/messages.mo differ diff --git a/project/translations/de/LC_MESSAGES/messages.po b/project/translations/de/LC_MESSAGES/messages.po index 215afe5..8b6ffea 100644 --- a/project/translations/de/LC_MESSAGES/messages.po +++ b/project/translations/de/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-09-06 17:11+0200\n" +"POT-Creation-Date: 2023-09-07 22:40+0200\n" "PO-Revision-Date: 2020-06-07 18:51+0200\n" "Last-Translator: FULL NAME \n" "Language: de\n" @@ -233,34 +233,38 @@ msgstr "Datenschutz" msgid "Start page" msgstr "Startseite" -#: project/forms/admin.py:17 project/forms/oauth2_client.py:24 +#: project/forms/admin.py:16 +msgid "Announcement" +msgstr "Ankündigung" + +#: project/forms/admin.py:18 project/forms/oauth2_client.py:24 #: project/forms/user.py:13 msgid "Save" msgstr "Speichern" -#: project/forms/admin.py:22 +#: project/forms/admin.py:23 msgid "Reset for all users" msgstr "Für alle Nutzer zurücksetzen" -#: project/forms/admin.py:24 +#: project/forms/admin.py:25 msgid "Reset" msgstr "Zurücksetzen" -#: project/forms/admin.py:28 project/forms/admin_unit_member.py:14 +#: project/forms/admin.py:29 project/forms/admin_unit_member.py:14 #: project/forms/admin_unit_member.py:34 msgid "Roles" msgstr "Rollen" -#: project/forms/admin.py:29 project/templates/admin/update_user.html:4 +#: project/forms/admin.py:30 project/templates/admin/update_user.html:4 #: project/templates/admin/update_user.html:8 msgid "Update user" msgstr "Nutzer aktualisieren" -#: project/forms/admin.py:33 project/templates/admin/delete_user.html:6 +#: project/forms/admin.py:34 project/templates/admin/delete_user.html:6 msgid "Delete user" msgstr "Nutzer löschen" -#: project/forms/admin.py:34 project/forms/admin_unit.py:58 +#: project/forms/admin.py:35 project/forms/admin_unit.py:58 #: project/forms/admin_unit_member.py:12 project/forms/admin_unit_member.py:25 #: project/forms/admin_unit_member.py:30 project/forms/event.py:112 #: project/forms/event_suggestion.py:38 project/forms/organizer.py:33 @@ -272,11 +276,11 @@ msgstr "Nutzer löschen" msgid "Email" msgstr "Email" -#: project/forms/admin.py:39 +#: project/forms/admin.py:40 msgid "Incoming reference requests allowed" msgstr "Eingehende Empfehlungsanfragen erlauben" -#: project/forms/admin.py:40 +#: project/forms/admin.py:41 msgid "" "If set, other organizations can ask this organization to reference their " "event." @@ -284,56 +288,56 @@ msgstr "" "Wenn gesetzt, können andere Organisationen diese Organisation bitten, " "deren Veranstaltungen zu empfehlen." -#: project/forms/admin.py:46 +#: project/forms/admin.py:47 msgid "Suggestions enabled" msgstr "Vorschläge aktiv" -#: project/forms/admin.py:47 +#: project/forms/admin.py:48 msgid "If set, the organization can work with suggestions." msgstr "Wenn gesetzt, kann die Organisation mit Vorschlägen arbeiten." -#: project/forms/admin.py:51 +#: project/forms/admin.py:52 msgid "Create other organizations" msgstr "Andere Organisationen erstellen" -#: project/forms/admin.py:52 +#: project/forms/admin.py:53 msgid "If set, members of the organization can create other organizations." msgstr "" "Wenn gesetzt, können Mitglieder der Organisation andere Organisationen " "erstellen." -#: project/forms/admin.py:58 +#: project/forms/admin.py:59 msgid "Invite other organizations" msgstr "Andere Organisationen einladen" -#: project/forms/admin.py:59 +#: project/forms/admin.py:60 msgid "If set, members of the organization can invite other organizations." msgstr "" "Wenn gesetzt, können Mitglieder der Organisation andere Organisationen " "einladen." -#: project/forms/admin.py:65 +#: project/forms/admin.py:66 msgid "Verify other organizations" msgstr "Andere Organisationen verifizieren" -#: project/forms/admin.py:66 +#: project/forms/admin.py:67 msgid "If set, members of the organization can verify other organizations." msgstr "" "Wenn gesetzt, können Mitglieder der Organisation andere Organisationen " "verifizieren." -#: project/forms/admin.py:71 project/templates/admin/update_admin_unit.html:4 +#: project/forms/admin.py:72 project/templates/admin/update_admin_unit.html:4 #: project/templates/admin/update_admin_unit.html:8 msgid "Update organization" msgstr "Organisation aktualisieren" -#: project/forms/admin.py:75 project/templates/admin/delete_admin_unit.html:6 +#: project/forms/admin.py:76 project/templates/admin/delete_admin_unit.html:6 #: project/templates/admin_unit/request_deletion.html:6 #: project/templates/admin_unit/update.html:94 msgid "Delete organization" msgstr "Organisation löschen" -#: project/forms/admin.py:76 project/forms/admin_unit.py:147 +#: project/forms/admin.py:77 project/forms/admin_unit.py:147 #: project/forms/admin_unit.py:152 project/forms/admin_unit.py:157 #: project/forms/event.py:90 project/forms/event.py:119 #: project/forms/event_place.py:30 project/forms/event_place.py:56 @@ -349,27 +353,27 @@ msgstr "Organisation löschen" msgid "Name" msgstr "Name" -#: project/forms/admin.py:80 project/forms/admin.py:87 +#: project/forms/admin.py:81 project/forms/admin.py:88 msgid "Recipient" msgstr "Empfänger" -#: project/forms/admin.py:82 +#: project/forms/admin.py:83 msgid "Send test mail synchronously" msgstr "Test-Mail synchron senden" -#: project/forms/admin.py:89 project/forms/admin.py:95 +#: project/forms/admin.py:90 project/forms/admin.py:96 msgid "Test recipient" msgstr "Test-Empfänger" -#: project/forms/admin.py:90 +#: project/forms/admin.py:91 msgid "All users with enabled newsletter setting" msgstr "Alle Nutzer mit aktiviertem Newsletter" -#: project/forms/admin.py:96 +#: project/forms/admin.py:97 msgid "Message" msgstr "Nachricht" -#: project/forms/admin.py:97 +#: project/forms/admin.py:98 msgid "Send newsletter" msgstr "Newsletter senden" @@ -1979,7 +1983,7 @@ msgstr "Mails erfolgreich gesendet" #: project/templates/admin/reset_tos_accepted.html:4 #: project/templates/admin/reset_tos_accepted.html:8 -#: project/templates/admin/settings.html:28 +#: project/templates/admin/settings.html:29 #: project/templates/admin/users.html:48 msgid "Reset acceptance of terms of service and privacy" msgstr "Akzeptanz der Nutzungsbedingungen und des Datenschutzes zurücksetzen" diff --git a/project/translations/en/LC_MESSAGES/messages.mo b/project/translations/en/LC_MESSAGES/messages.mo index 7aa95cd..bf57962 100644 Binary files a/project/translations/en/LC_MESSAGES/messages.mo and b/project/translations/en/LC_MESSAGES/messages.mo differ diff --git a/project/translations/en/LC_MESSAGES/messages.po b/project/translations/en/LC_MESSAGES/messages.po index be898ea..c93f4be 100644 --- a/project/translations/en/LC_MESSAGES/messages.po +++ b/project/translations/en/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2023-09-06 17:11+0200\n" +"POT-Creation-Date: 2023-09-07 22:40+0200\n" "PO-Revision-Date: 2021-04-30 15:04+0200\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -233,34 +233,38 @@ msgstr "" msgid "Start page" msgstr "" -#: project/forms/admin.py:17 project/forms/oauth2_client.py:24 +#: project/forms/admin.py:16 +msgid "Announcement" +msgstr "" + +#: project/forms/admin.py:18 project/forms/oauth2_client.py:24 #: project/forms/user.py:13 msgid "Save" msgstr "" -#: project/forms/admin.py:22 +#: project/forms/admin.py:23 msgid "Reset for all users" msgstr "" -#: project/forms/admin.py:24 +#: project/forms/admin.py:25 msgid "Reset" msgstr "" -#: project/forms/admin.py:28 project/forms/admin_unit_member.py:14 +#: project/forms/admin.py:29 project/forms/admin_unit_member.py:14 #: project/forms/admin_unit_member.py:34 msgid "Roles" msgstr "" -#: project/forms/admin.py:29 project/templates/admin/update_user.html:4 +#: project/forms/admin.py:30 project/templates/admin/update_user.html:4 #: project/templates/admin/update_user.html:8 msgid "Update user" msgstr "" -#: project/forms/admin.py:33 project/templates/admin/delete_user.html:6 +#: project/forms/admin.py:34 project/templates/admin/delete_user.html:6 msgid "Delete user" msgstr "" -#: project/forms/admin.py:34 project/forms/admin_unit.py:58 +#: project/forms/admin.py:35 project/forms/admin_unit.py:58 #: project/forms/admin_unit_member.py:12 project/forms/admin_unit_member.py:25 #: project/forms/admin_unit_member.py:30 project/forms/event.py:112 #: project/forms/event_suggestion.py:38 project/forms/organizer.py:33 @@ -272,60 +276,60 @@ msgstr "" msgid "Email" msgstr "" -#: project/forms/admin.py:39 +#: project/forms/admin.py:40 msgid "Incoming reference requests allowed" msgstr "" -#: project/forms/admin.py:40 +#: project/forms/admin.py:41 msgid "" "If set, other organizations can ask this organization to reference their " "event." msgstr "" -#: project/forms/admin.py:46 +#: project/forms/admin.py:47 msgid "Suggestions enabled" msgstr "" -#: project/forms/admin.py:47 +#: project/forms/admin.py:48 msgid "If set, the organization can work with suggestions." msgstr "" -#: project/forms/admin.py:51 +#: project/forms/admin.py:52 msgid "Create other organizations" msgstr "" -#: project/forms/admin.py:52 +#: project/forms/admin.py:53 msgid "If set, members of the organization can create other organizations." msgstr "" -#: project/forms/admin.py:58 +#: project/forms/admin.py:59 msgid "Invite other organizations" msgstr "" -#: project/forms/admin.py:59 +#: project/forms/admin.py:60 msgid "If set, members of the organization can invite other organizations." msgstr "" -#: project/forms/admin.py:65 +#: project/forms/admin.py:66 msgid "Verify other organizations" msgstr "" -#: project/forms/admin.py:66 +#: project/forms/admin.py:67 msgid "If set, members of the organization can verify other organizations." msgstr "" -#: project/forms/admin.py:71 project/templates/admin/update_admin_unit.html:4 +#: project/forms/admin.py:72 project/templates/admin/update_admin_unit.html:4 #: project/templates/admin/update_admin_unit.html:8 msgid "Update organization" msgstr "" -#: project/forms/admin.py:75 project/templates/admin/delete_admin_unit.html:6 +#: project/forms/admin.py:76 project/templates/admin/delete_admin_unit.html:6 #: project/templates/admin_unit/request_deletion.html:6 #: project/templates/admin_unit/update.html:94 msgid "Delete organization" msgstr "" -#: project/forms/admin.py:76 project/forms/admin_unit.py:147 +#: project/forms/admin.py:77 project/forms/admin_unit.py:147 #: project/forms/admin_unit.py:152 project/forms/admin_unit.py:157 #: project/forms/event.py:90 project/forms/event.py:119 #: project/forms/event_place.py:30 project/forms/event_place.py:56 @@ -341,27 +345,27 @@ msgstr "" msgid "Name" msgstr "" -#: project/forms/admin.py:80 project/forms/admin.py:87 +#: project/forms/admin.py:81 project/forms/admin.py:88 msgid "Recipient" msgstr "" -#: project/forms/admin.py:82 +#: project/forms/admin.py:83 msgid "Send test mail synchronously" msgstr "" -#: project/forms/admin.py:89 project/forms/admin.py:95 +#: project/forms/admin.py:90 project/forms/admin.py:96 msgid "Test recipient" msgstr "" -#: project/forms/admin.py:90 +#: project/forms/admin.py:91 msgid "All users with enabled newsletter setting" msgstr "" -#: project/forms/admin.py:96 +#: project/forms/admin.py:97 msgid "Message" msgstr "" -#: project/forms/admin.py:97 +#: project/forms/admin.py:98 msgid "Send newsletter" msgstr "" @@ -1926,7 +1930,7 @@ msgstr "" #: project/templates/admin/reset_tos_accepted.html:4 #: project/templates/admin/reset_tos_accepted.html:8 -#: project/templates/admin/settings.html:28 +#: project/templates/admin/settings.html:29 #: project/templates/admin/users.html:48 msgid "Reset acceptance of terms of service and privacy" msgstr "" diff --git a/tests/views/test_root.py b/tests/views/test_root.py index 51e3de0..431184c 100644 --- a/tests/views/test_root.py +++ b/tests/views/test_root.py @@ -107,3 +107,16 @@ def test_sitemap_xml(seeder, app, utils): result = runner.invoke(args=["seo", "generate-sitemap"]) assert result.exit_code == 0 utils.get_endpoint_ok("sitemap_xml") + + +def test_announcement(app, db, utils: UtilActions): + with app.app_context(): + from project.services.admin import upsert_settings + + settings = upsert_settings() + settings.announcement = "Wartungsarbeiten" + db.session.commit() + + url = utils.get_url("home") + response = utils.get_ok(url) + assert b"Wartungsarbeiten" in response.data