From 1677d5c982c69c246c22c7da0ae2bc70c6730759 Mon Sep 17 00:00:00 2001 From: Daniel Grams Date: Wed, 21 Apr 2021 15:37:57 +0200 Subject: [PATCH] Event display optimizations #157 --- README.md | 4 +- app.json | 32 ++++----- doc/deployment.md | 2 +- project/jinja_filters.py | 8 +++ project/templates/_macros.html | 44 +++++++++---- project/templates/home.html | 2 +- .../translations/de/LC_MESSAGES/messages.mo | Bin 26660 -> 26880 bytes .../translations/de/LC_MESSAGES/messages.po | 62 ++++++++++-------- 8 files changed, 93 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 0fe3bb4..c179946 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# Goslar Event Prototype +# Oveda - Open Event Database ![Tests](https://github.com/DanielGrams/gsevpt/workflows/Tests/badge.svg) [![codecov](https://codecov.io/gh/DanielGrams/gsevpt/branch/master/graph/badge.svg?token=66CLLWWV7Y)](https://codecov.io/gh/DanielGrams/gsevpt) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![Docker Pulls](https://img.shields.io/docker/pulls/danielgrams/gsevpt) -Website prototype using Python, Flask and Postgres. | +Event website using Python, Flask and Postgres. ## Deployment diff --git a/app.json b/app.json index 95c4c95..412eaca 100644 --- a/app.json +++ b/app.json @@ -1,18 +1,18 @@ { - "name": "Goslar Event Prototype", - "description": "Website prototype using Python, Flask and Postgres running on Heroku.", - "image": "heroku/python", - "keywords": ["python" ], - "repository": "https://github.com/DanielGrams/gsevpt", - "addons": [ "heroku-postgresql" ], - "env": { - "SECRET_TOKEN": { - "description": "A secret key for verifying the integrity of signed cookies.", - "generator": "secret" - }, - "SECURITY_PASSWORD_SALT": { - "description": "Bcrypt salt for encrypting passwords.", - "generator": "secret" - } + "name": "Oveda - Open Event Database", + "description": "Event website using Python, Flask and Postgres.", + "image": "heroku/python", + "keywords": ["python"], + "repository": "https://github.com/DanielGrams/gsevpt", + "addons": ["heroku-postgresql"], + "env": { + "SECRET_TOKEN": { + "description": "A secret key for verifying the integrity of signed cookies.", + "generator": "secret" + }, + "SECURITY_PASSWORD_SALT": { + "description": "Bcrypt salt for encrypting passwords.", + "generator": "secret" } - } \ No newline at end of file + } +} diff --git a/doc/deployment.md b/doc/deployment.md index 5093256..c93db6d 100644 --- a/doc/deployment.md +++ b/doc/deployment.md @@ -63,7 +63,7 @@ Create `.env` file in the root directory or pass as environment variables. | SECRET_KEY | A secret key for verifying the integrity of signed cookies. Generate a nice key using `python3 -c "import secrets; print(secrets.token_urlsafe())"`. | | SECURITY_PASSWORD_HASH | Bcrypt is set as default SECURITY_PASSWORD_HASH, which requires a salt. Generate a good salt using: `python3 -c "import secrets; print(secrets.SystemRandom().getrandbits(128))"`. | | JWT_PRIVATE_KEY | Private key for JWT (see "Generate JWT Keys for OIDC/OAuth") | -| SECURITY_PASSWORD_HASH | JWT_PUBLIC_JWKS (see "Generate JWT Keys for OIDC/OAuth") | +| JWT_PUBLIC_JWKS | Public JWKS (see "Generate JWT Keys for OIDC/OAuth") | ### Send notifications via Mail diff --git a/project/jinja_filters.py b/project/jinja_filters.py index 06397b8..c7f6fe6 100644 --- a/project/jinja_filters.py +++ b/project/jinja_filters.py @@ -21,6 +21,13 @@ def any_dict_value_true(data: dict): return any(data.values()) +def ensure_link_scheme(link: str): + if link.startswith("http://") or link.startswith("https://"): + return link + + return f"https://{link}" + + app.jinja_env.filters["event_category_name"] = lambda u: get_event_category_name(u) app.jinja_env.filters["loc_enum"] = lambda u: get_localized_enum_name(u) app.jinja_env.filters["loc_scope"] = lambda s: get_localized_scope(s) @@ -28,6 +35,7 @@ app.jinja_env.filters["env_override"] = env_override app.jinja_env.filters["quote_plus"] = lambda u: quote_plus(u) app.jinja_env.filters["is_list"] = is_list app.jinja_env.filters["any_dict_value_true"] = any_dict_value_true +app.jinja_env.filters["ensure_link_scheme"] = lambda s: ensure_link_scheme(s) @app.context_processor diff --git a/project/templates/_macros.html b/project/templates/_macros.html index a7f5ac0..911d974 100644 --- a/project/templates/_macros.html +++ b/project/templates/_macros.html @@ -202,8 +202,8 @@ {% endif %} {% endmacro %} -{% macro render_enum_prop(prop, icon, label_key) %} -{% if prop and prop.value > 0 %} +{% macro render_enum_prop(prop, icon, label_key, ignore=0) %} +{% if prop and prop.value > 0 and prop.value != ignore %}
{{ prop | loc_enum }} @@ -233,7 +233,7 @@ {% if link %}
- {{ link }} + {{ link }}
{% endif %} {% endmacro %} @@ -365,8 +365,8 @@ {{ render_bool_prop(event.kid_friendly, 'fa-child', 'Kid friendly') }} {{ render_bool_prop(event.accessible_for_free, 'fa-door-open', 'Accessible for free') }} {{ render_range_prop(event.age_from, event.age_to, 'fa-people-arrows', 'Typical Age range') }} -{{ render_enum_prop(event.target_group_origin, 'fa-users', 'Target group origin') }} -{{ render_enum_prop(event.attendance_mode, 'fa-mouse-pointer', 'Attendance mode') }} +{{ render_enum_prop(event.target_group_origin, 'fa-users', 'Target group origin', 1) }} +{{ render_enum_prop(event.attendance_mode, 'fa-mouse-pointer', 'Attendance mode', 1) }} {{ render_bool_prop(event.registration_required, 'fa-list', 'Registration required') }} {{ render_bool_prop(event.booked_up, 'fa-square-full', 'Booked up') }} {{ render_int_prop(event.expected_participants, 'fa-users', 'Expected number of participants') }} @@ -394,12 +394,12 @@ {% if end %}- {{ end | datetimeformat('short') }}{% endif %}
{% endif %} - {{ render_enum_prop(event.status, 'fa-info-circle', 'Status') }} + {{ render_enum_prop(event.status, 'fa-info-circle', 'Status', 1) }} {% if event.previous_start_date %}
{{ event.previous_start_date | datetimeformat('short') }}
{% endif %} - {% if show_rating and event.rating %} + {% if show_rating and event.rating and event.rating != 50 %} {{ render_string_prop("%d/10" % (event.rating/10), 'fa-adjust', 'Rating') }} {% endif %} @@ -441,9 +441,17 @@ {{ render_location_prop(event.event_place.location) }} + {% if event.attendance_mode and event.attendance_mode.value != 1 %}

{{ _('Show directions') }}

+ {% endif %} + + {% if event.attendance_mode and event.attendance_mode.value == 2 %} +

{{ _('The event takes place online.') }}

+ {% elif event.attendance_mode and event.attendance_mode.value == 3 %} +

{{ _('The event takes place both offline and online.') }}

+ {% endif %} {% endif %} @@ -532,12 +540,12 @@

{{ _('Event') }}

- {{ render_enum_prop(event.status, 'fa-info-circle', 'Status') }} + {{ render_enum_prop(event.status, 'fa-info-circle', 'Status', 1) }} {% if event.previous_start_date %}
{{ event.previous_start_date | datetimeformat('short') }}
{% endif %} - {% if show_rating and event.rating %} + {% if show_rating and event.rating and event.rating != 50 %} {{ render_string_prop("%d/10" % (event.rating/10), 'fa-adjust', 'Rating') }} {% endif %} @@ -546,10 +554,10 @@
{% if event.description %} -
{{ event.description }}
+
{{ event.description }}
{% endif %} -
+
{{ render_audit(event, show_rating) }}
@@ -572,9 +580,17 @@ {{ render_link_prop(event.event_place.url) }} {{ render_location_prop(event.event_place.location) }} -
- {{ _('Show directions') }} -
+ {% if event.attendance_mode and event.attendance_mode.value != 2 %} +
+ {{ _('Show directions') }} +
+ {% endif %} + + {% if event.attendance_mode and event.attendance_mode.value == 2 %} +
{{ _('The event takes place online.') }}
+ {% elif event.attendance_mode and event.attendance_mode.value == 3 %} +
{{ _('The event takes place both offline and online.') }}
+ {% endif %} diff --git a/project/templates/home.html b/project/templates/home.html index eae4ee7..f82c11d 100644 --- a/project/templates/home.html +++ b/project/templates/home.html @@ -113,7 +113,7 @@ oveda - Offene Veranstaltungsdatenbank
Grafik Entwicklung
Entwicklungsphase
-

Wir haben aktuell einen gut funktionierenden Prototypen, der gerne getestet werden darf.

+

Wir haben aktuell einen gut funktionierenden Stand, der gerne getestet werden darf.

diff --git a/project/translations/de/LC_MESSAGES/messages.mo b/project/translations/de/LC_MESSAGES/messages.mo index e165f4eb20358219f77b0e483b2f8805ffd84286..2d70fde5551275bbf7b1d3eb003a5197ca5af4a4 100644 GIT binary patch delta 6472 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 delta 6282 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 Y898(2GqdNsA0ZGG_n0JgKWuK)l5 diff --git a/project/translations/de/LC_MESSAGES/messages.po b/project/translations/de/LC_MESSAGES/messages.po index 865c02f..c0fb775 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: 2021-04-18 15:53+0200\n" +"POT-Creation-Date: 2021-04-20 16:47+0200\n" "PO-Revision-Date: 2020-06-07 18:51+0200\n" "Last-Translator: FULL NAME \n" "Language: de\n" @@ -176,7 +176,7 @@ msgstr "Nutzungsbedingungen" msgid "Legal notice" msgstr "Impressum" -#: project/forms/admin.py:12 project/templates/_macros.html:1151 +#: project/forms/admin.py:12 project/templates/_macros.html:1167 #: project/templates/layout.html:193 #: project/templates/widget/event_suggestion/create.html:155 #: project/views/root.py:54 @@ -615,7 +615,7 @@ msgstr "Teilnahme" #: project/forms/event.py:187 msgid "EventAttendanceMode.offline" -msgstr "Offline" +msgstr "Normal (Offline)" #: project/forms/event.py:191 msgid "EventAttendanceMode.online" @@ -651,7 +651,7 @@ msgid "An event can last a maximum of 24 hours." msgstr "Eine Veranstaltung darf maximal 24 Stunden dauern." #: project/forms/event.py:225 project/templates/_macros.html:399 -#: project/templates/_macros.html:537 +#: project/templates/_macros.html:545 msgid "Previous start date" msgstr "Vorheriges Startdatum" @@ -683,7 +683,7 @@ msgstr "Wähle aus, wie relevant die Veranstaltung für deine Organisation ist." #: project/forms/event.py:250 project/forms/event.py:259 #: project/forms/event.py:319 project/forms/event_suggestion.py:50 -#: project/templates/_macros.html:425 project/templates/_macros.html:560 +#: project/templates/_macros.html:425 project/templates/_macros.html:568 #: project/templates/event/create.html:108 #: project/templates/event/update.html:58 #: project/templates/event_place/create.html:21 @@ -702,8 +702,8 @@ msgstr "Neuen Ort eingeben" #: project/forms/event.py:266 project/forms/event.py:275 #: project/forms/event.py:327 project/forms/event.py:373 -#: project/forms/event_suggestion.py:57 project/templates/_macros.html:455 -#: project/templates/_macros.html:585 project/templates/event/create.html:83 +#: project/forms/event_suggestion.py:57 project/templates/_macros.html:463 +#: project/templates/_macros.html:601 project/templates/event/create.html:83 #: project/templates/event/update.html:49 #: project/templates/organizer/create.html:17 #: project/templates/organizer/delete.html:13 @@ -788,7 +788,7 @@ msgstr "Wähle den Status der Veranstaltung." msgid "Update event" msgstr "Veranstaltung aktualisieren" -#: project/forms/event.py:358 project/templates/_macros.html:1099 +#: project/forms/event.py:358 project/templates/_macros.html:1115 #: project/templates/event/actions.html:41 #: project/templates/event/delete.html:6 msgid "Delete event" @@ -956,7 +956,7 @@ msgid "Weekdays" msgstr "Wochentage" #: project/forms/reference.py:11 project/forms/reference_request.py:15 -#: project/templates/_macros.html:476 project/templates/_macros.html:607 +#: project/templates/_macros.html:484 project/templates/_macros.html:623 #: project/templates/admin_unit/create.html:17 #: project/templates/admin_unit/update.html:18 msgid "Admin unit" @@ -983,7 +983,7 @@ msgstr "Anfrage speichern" msgid "Delete request" msgstr "Anfrage löschen" -#: project/forms/reference_request.py:27 project/templates/_macros.html:1163 +#: project/forms/reference_request.py:27 project/templates/_macros.html:1179 #: project/templates/event_suggestion/review_status.html:18 #: project/templates/reference_request/review_status.html:12 msgid "Review status" @@ -1038,7 +1038,7 @@ msgid "This field is optional." msgstr "Dieses Feld ist optional." #: project/templates/_macros.html:116 project/templates/_macros.html:385 -#: project/templates/_macros.html:392 project/templates/_macros.html:780 +#: project/templates/_macros.html:392 project/templates/_macros.html:796 msgid "Date" msgstr "Datum" @@ -1078,7 +1078,7 @@ msgstr "Zuletzt aktualisiert am %(updated_at)s von %(updated_by)s." msgid "Last updated at %(updated_at)s." msgstr "Zuletzt aktualisiert am %(updated_at)s." -#: project/templates/_macros.html:378 project/templates/_macros.html:533 +#: project/templates/_macros.html:378 project/templates/_macros.html:541 #: project/templates/event/actions.html:12 #: project/templates/event/create.html:62 #: project/templates/event/delete.html:13 @@ -1088,26 +1088,34 @@ msgstr "Zuletzt aktualisiert am %(updated_at)s." msgid "Event" msgstr "Veranstaltung" -#: project/templates/_macros.html:388 project/templates/_macros.html:519 +#: project/templates/_macros.html:388 project/templates/_macros.html:527 #, python-format msgid "%(count)d event dates" msgstr "%(count)d Termine" -#: project/templates/_macros.html:445 project/templates/_macros.html:576 +#: project/templates/_macros.html:446 project/templates/_macros.html:585 msgid "Show directions" msgstr "Anreise planen" -#: project/templates/_macros.html:627 project/templates/event_date/list.html:4 +#: project/templates/_macros.html:451 project/templates/_macros.html:590 +msgid "The event takes place online." +msgstr "Die Veranstaltung findet online statt." + +#: project/templates/_macros.html:453 project/templates/_macros.html:592 +msgid "The event takes place both offline and online." +msgstr "Die Veranstaltung findet sowohl offline als auch online statt." + +#: project/templates/_macros.html:643 project/templates/event_date/list.html:4 #: project/templates/event_date/list.html:256 #: project/templates/reference_request/review.html:30 msgid "Event Dates" msgstr "Termine" -#: project/templates/_macros.html:698 +#: project/templates/_macros.html:714 msgid "Search location on Google" msgstr "Ort bei Google suchen" -#: project/templates/_macros.html:730 project/templates/_macros.html:732 +#: project/templates/_macros.html:746 project/templates/_macros.html:748 #: project/templates/event_date/list.html:277 #: project/templates/widget/event_suggestion/create.html:144 #: project/templates/widget/event_suggestion/create.html:169 @@ -1118,12 +1126,12 @@ msgstr "Ort bei Google suchen" msgid "Previous" msgstr "Zurück" -#: project/templates/_macros.html:734 +#: project/templates/_macros.html:750 #, python-format msgid "Page %(page)d of %(pages)d (%(total)d total)" msgstr "Seite %(page)d von %(pages)d (%(total)d insgesamt)" -#: project/templates/_macros.html:736 project/templates/_macros.html:738 +#: project/templates/_macros.html:752 project/templates/_macros.html:754 #: project/templates/event_date/list.html:279 #: project/templates/widget/event_suggestion/create.html:145 #: project/templates/widget/event_suggestion/create.html:170 @@ -1133,35 +1141,35 @@ msgstr "Seite %(page)d von %(pages)d (%(total)d insgesamt)" msgid "Next" msgstr "Weiter" -#: project/templates/_macros.html:803 +#: project/templates/_macros.html:819 msgid "Radius" msgstr "Umkreis" -#: project/templates/_macros.html:1008 +#: project/templates/_macros.html:1024 msgid "Edit image" msgstr "Bild bearbeiten" -#: project/templates/_macros.html:1029 +#: project/templates/_macros.html:1045 msgid "Close" msgstr "Schließen" -#: project/templates/_macros.html:1030 +#: project/templates/_macros.html:1046 msgid "Okay" msgstr "OK" -#: project/templates/_macros.html:1039 project/templates/_macros.html:1041 +#: project/templates/_macros.html:1055 project/templates/_macros.html:1057 msgid "Choose image file" msgstr "Bild-Datei auswählen" -#: project/templates/_macros.html:1098 project/templates/event/actions.html:40 +#: project/templates/_macros.html:1114 project/templates/event/actions.html:40 msgid "Edit event" msgstr "Veranstaltung bearbeiten" -#: project/templates/_macros.html:1101 project/templates/manage/events.html:30 +#: project/templates/_macros.html:1117 project/templates/manage/events.html:30 msgid "More" msgstr "Mehr" -#: project/templates/_macros.html:1123 +#: project/templates/_macros.html:1139 msgid "Event suggestion" msgstr "Veranstaltungsvorschlag"