From 4b0cb3c375b0cda61fe395a0f2a93e6cc9c630e0 Mon Sep 17 00:00:00 2001 From: Daniel Grams Date: Tue, 12 Sep 2023 15:37:20 +0200 Subject: [PATCH] Remove short name from widget urls #546 --- project/templates/manage/widgets.html | 8 +- project/templates/widget/event_date/list.html | 4 +- .../widget/event_suggestion/create.html | 2 +- project/views/widget.py | 51 +----- tests/views/test_widget.py | 153 ++++++------------ 5 files changed, 65 insertions(+), 153 deletions(-) diff --git a/project/templates/manage/widgets.html b/project/templates/manage/widgets.html index cad0b8b..c41f2d0 100644 --- a/project/templates/manage/widgets.html +++ b/project/templates/manage/widgets.html @@ -70,7 +70,7 @@

Alternativ zur Einbindung per Script kann das Widget direkt per iFrame eingebunden werden.

Kopiere den unten stehenden Code und füge ihn auf deiner Website ein. Füge den folgenden Code an der Stelle im <body> der Seite ein, wo das Widget dargestellt werden soll.

- +
@@ -80,13 +80,13 @@
- Vorschau + Vorschau
{% if admin_unit.suggestions_enabled %}

{{ _('Link, um Veranstaltungen vorzuschlagen') }}

- -

Vorschau

+ +

Vorschau

{% endif %} diff --git a/project/templates/widget/event_date/list.html b/project/templates/widget/event_date/list.html index bcb4442..5009ac1 100644 --- a/project/templates/widget/event_date/list.html +++ b/project/templates/widget/event_date/list.html @@ -102,7 +102,7 @@ {{ date.event.organizer.name }} {% endif %} {{ date.event.event_place.name }} - +
{% if date.event.photo_id %} @@ -138,7 +138,7 @@ {{ date.event.organizer.name }} {% endif %} {{ date.event.event_place.name }} - +
diff --git a/project/templates/widget/event_suggestion/create.html b/project/templates/widget/event_suggestion/create.html index 368852a..428874c 100644 --- a/project/templates/widget/event_suggestion/create.html +++ b/project/templates/widget/event_suggestion/create.html @@ -25,7 +25,7 @@ var req_data = form.serialize(); $.ajax({ - url: "{{ url_for('event_suggestion_create_for_admin_unit', au_short_name=admin_unit.short_name) }}?preview=true", + url: "{{ url_for('event_suggestion_create_for_admin_unit', id=admin_unit.id) }}?preview=true", type: "post", data: req_data, error: function(xhr, status, error) { diff --git a/project/views/widget.py b/project/views/widget.py index 6f677a2..363e811 100644 --- a/project/views/widget.py +++ b/project/views/widget.py @@ -7,18 +7,13 @@ from sqlalchemy.sql import func from project import app, db from project.access import ( admin_unit_suggestions_enabled_or_404, - can_read_event_or_401, get_admin_unit_members_with_permission, ) from project.dateutils import get_next_full_hour from project.forms.event_date import FindEventDateWidgetForm from project.forms.event_suggestion import CreateEventSuggestionForm -from project.jsonld import get_sd_for_event_date from project.models import AdminUnit, EventOrganizer, EventReviewStatus, EventSuggestion -from project.services.event import ( - get_event_date_with_details_or_404, - get_event_dates_query, -) +from project.services.event import get_event_dates_query from project.services.event_suggestion import insert_event_suggestion from project.services.place import get_event_places from project.services.search_params import EventSearchParams @@ -26,19 +21,15 @@ from project.views.event import get_event_category_choices from project.views.utils import ( flash_errors, flash_message, - get_calendar_links_for_event_date, get_pagination_urls, - get_share_links, handleSqlError, send_mails_async, ) -@app.route("//widget/eventdates") -def widget_event_dates(au_short_name): - admin_unit = AdminUnit.query.filter( - AdminUnit.short_name == au_short_name - ).first_or_404() +@app.route("/organizations//widget/eventdates") +def widget_event_dates(id): + admin_unit = AdminUnit.query.get_or_404(id) params = EventSearchParams() params.set_default_date_range() @@ -63,41 +54,15 @@ def widget_event_dates(au_short_name): admin_unit=admin_unit, params=params, dates=dates.items, - pagination=get_pagination_urls(dates, au_short_name=au_short_name), - ) - - -@app.route("//widget/eventdate/") -def widget_event_date(au_short_name, id): - admin_unit = AdminUnit.query.filter( - AdminUnit.short_name == au_short_name - ).first_or_404() - - event_date = get_event_date_with_details_or_404(id) - can_read_event_or_401(event_date.event) - structured_data = app.json.dumps(get_sd_for_event_date(event_date), indent=2) - - url = url_for("event_date", id=id, _external=True) - share_links = get_share_links(url, event_date.event.name) - calendar_links = get_calendar_links_for_event_date(event_date) - - return render_template( - "widget/event_date/read.html", - event_date=event_date, - styles=get_styles(admin_unit), - structured_data=structured_data, - share_links=share_links, - calendar_links=calendar_links, + pagination=get_pagination_urls(dates, id=id), ) @app.route( - "//widget/event_suggestions/create", methods=("GET", "POST") + "/organizations//widget/event_suggestions/create", methods=("GET", "POST") ) -def event_suggestion_create_for_admin_unit(au_short_name): - admin_unit = AdminUnit.query.filter( - AdminUnit.short_name == au_short_name - ).first_or_404() +def event_suggestion_create_for_admin_unit(id): + admin_unit = AdminUnit.query.get_or_404(id) admin_unit_suggestions_enabled_or_404(admin_unit) form = CreateEventSuggestionForm() diff --git a/tests/views/test_widget.py b/tests/views/test_widget.py index 01be2ba..c648b8d 100644 --- a/tests/views/test_widget.py +++ b/tests/views/test_widget.py @@ -1,36 +1,34 @@ import pytest +from tests.seeder import Seeder +from tests.utils import UtilActions -def test_event_dates(client, seeder, utils): + +def test_event_dates(client, seeder: Seeder, utils: UtilActions): user_id, admin_unit_id = seeder.setup_base() seeder.create_event(admin_unit_id) seeder.create_event(admin_unit_id, draft=True) - au_short_name = "meinecrew" - url = utils.get_url("widget_event_dates", au_short_name=au_short_name) + url = utils.get_url("widget_event_dates", id=admin_unit_id) response = utils.get_ok(url) utils.assert_response_contains(response, "widget.css") assert "X-Frame-Options" not in response.headers - event_url = utils.get_url("widget_event_date", au_short_name=au_short_name, id=1) + event_url = utils.get_url("event_date", id=1) utils.assert_response_contains(response, event_url) - draft_url = utils.get_url("widget_event_date", au_short_name=au_short_name, id=2) + draft_url = utils.get_url("event_date", id=2) utils.assert_response_contains_not(response, draft_url) - url = utils.get_url( - "widget_event_dates", au_short_name=au_short_name, keyword="name" - ) + url = utils.get_url("widget_event_dates", id=admin_unit_id, keyword="name") utils.get_ok(url) - url = utils.get_url( - "widget_event_dates", au_short_name=au_short_name, category_id=1 - ) + url = utils.get_url("widget_event_dates", id=admin_unit_id, category_id=1) utils.get_ok(url) url = utils.get_url( "widget_event_dates", - au_short_name=au_short_name, + id=admin_unit_id, coordinate="51.9077888,10.4333312", distance=500, ) @@ -38,7 +36,7 @@ def test_event_dates(client, seeder, utils): url = utils.get_url( "widget_event_dates", - au_short_name=au_short_name, + id=admin_unit_id, date_from="2020-10-03", date_to="2021-10-03", ) @@ -46,7 +44,7 @@ def test_event_dates(client, seeder, utils): url = utils.get_url( "widget_event_dates", - au_short_name=au_short_name, + id=admin_unit_id, s_ft="Verdana", s_bg="#eceef0", s_pr="#b09641", @@ -55,15 +53,12 @@ def test_event_dates(client, seeder, utils): utils.get_ok(url) # Unverified - au_short_name = "unverifiedcrew" - _, _, unverified_id = seeder.create_event_unverified() - url = utils.get_url("widget_event_dates", au_short_name=au_short_name) + _, unverified_admin_unit_id, unverified_id = seeder.create_event_unverified() + url = utils.get_url("widget_event_dates", id=unverified_admin_unit_id) response = utils.get_ok(url) unverified_date_id = seeder.get_event_date_id(unverified_id) - unverified_url = utils.get_url( - "widget_event_date", au_short_name=au_short_name, id=unverified_date_id - ) + unverified_url = utils.get_url("event_date", id=unverified_date_id) utils.assert_response_contains_not(response, unverified_url) @@ -71,7 +66,6 @@ def test_event_dates_oneDay(client, seeder, utils): from project.dateutils import create_berlin_date user_id, admin_unit_id = seeder.setup_base() - au_short_name = "meinecrew" start = create_berlin_date(2020, 10, 3, 10) end = create_berlin_date(2020, 10, 3, 11) @@ -80,7 +74,7 @@ def test_event_dates_oneDay(client, seeder, utils): url = utils.get_url( "widget_event_dates", - au_short_name=au_short_name, + id=admin_unit_id, date_from="2020-10-03", date_to="2020-10-03", ) @@ -90,63 +84,12 @@ def test_event_dates_oneDay(client, seeder, utils): def test_event_dates_noneDescription(client, seeder, utils): _, admin_unit_id = seeder.setup_base() - au_short_name = "meinecrew" seeder.create_event(admin_unit_id, description=None) - url = utils.get_url("widget_event_dates", au_short_name=au_short_name) + url = utils.get_url("widget_event_dates", id=admin_unit_id) utils.get_ok(url) -def test_event_date(client, seeder, utils, app, db): - user_id, admin_unit_id = seeder.setup_base(log_in=False) - seeder.create_event(admin_unit_id) - au_short_name = "meinecrew" - - with app.app_context(): - from colour import Color - - from project.models import AdminUnit - - admin_unit = db.session.get(AdminUnit, admin_unit_id) - admin_unit.widget_font = "Verdana" - admin_unit.widget_background_color = Color("#eceef0") - admin_unit.widget_primary_color = Color("#b09641") - admin_unit.widget_link_color = Color("#7b2424") - db.session.commit() - - url = utils.get_url("widget_event_date", au_short_name=au_short_name, id=1) - response = utils.get_ok(url) - utils.assert_response_contains(response, "widget.css") - - seeder.create_event(admin_unit_id, draft=True) - url = utils.get_url("widget_event_date", au_short_name=au_short_name, id=2) - response = utils.get(url) - utils.assert_response_unauthorized(response) - - # Unverified - au_short_name = "unverifiedcrew" - _, _, unverified_id = seeder.create_event_unverified() - unverified_date_id = seeder.get_event_date_id(unverified_id) - url = utils.get_url( - "widget_event_date", au_short_name=au_short_name, id=unverified_date_id - ) - utils.assert_response_unauthorized(response) - - -def test_event_date_co_organizers(client, seeder, utils, app, db): - user_id, admin_unit_id = seeder.setup_base(log_in=False) - event_id, organizer_a_id, organizer_b_id = seeder.create_event_with_co_organizers( - admin_unit_id - ) - au_short_name = "meinecrew" - - url = utils.get_url("widget_event_date", au_short_name=au_short_name, id=event_id) - response = utils.get(url) - response = utils.get_ok(url) - utils.assert_response_contains(response, "Organizer A") - utils.assert_response_contains(response, "Organizer B") - - def get_create_data(): return { "accept_tos": "y", @@ -160,6 +103,26 @@ def get_create_data(): } +def test_event_dates_colors(client, seeder, utils, app, db): + user_id, admin_unit_id = seeder.setup_base(log_in=False) + seeder.create_event(admin_unit_id) + + with app.app_context(): + from colour import Color + + from project.models import AdminUnit + + admin_unit = db.session.get(AdminUnit, admin_unit_id) + admin_unit.widget_font = "Verdana" + admin_unit.widget_background_color = Color("#eceef0") + admin_unit.widget_primary_color = Color("#b09641") + admin_unit.widget_link_color = Color("#7b2424") + db.session.commit() + + url = utils.get_url("widget_event_dates", id=admin_unit_id) + utils.get_ok(url) + + @pytest.mark.parametrize("db_error", [True, False]) @pytest.mark.parametrize("free_text", [True, False]) @pytest.mark.parametrize("free_text_suffix", [True, False]) @@ -177,11 +140,8 @@ def test_event_suggestion_create_for_admin_unit( ): user_id = seeder.create_user() admin_unit_id = seeder.create_admin_unit(user_id, "Meine Crew") - au_short_name = "meinecrew" - url = utils.get_url( - "event_suggestion_create_for_admin_unit", au_short_name=au_short_name - ) + url = utils.get_url("event_suggestion_create_for_admin_unit", id=admin_unit_id) response = utils.get_ok(url) utils.assert_response_contains(response, "widget.css") @@ -252,11 +212,8 @@ def test_event_suggestion_create_for_admin_unit_allday( ): user_id = seeder.create_user() admin_unit_id = seeder.create_admin_unit(user_id, "Meine Crew") - au_short_name = "meinecrew" - url = utils.get_url( - "event_suggestion_create_for_admin_unit", au_short_name=au_short_name - ) + url = utils.get_url("event_suggestion_create_for_admin_unit", id=admin_unit_id) response = utils.get_ok(url) data = get_create_data() @@ -285,15 +242,12 @@ def test_event_suggestion_create_for_admin_unit_allday( def test_event_suggestion_create_for_admin_unit_startAfterEnd( - client, app, seeder, utils, mocker + client, app, seeder: Seeder, utils: UtilActions, mocker ): user_id = seeder.create_user() - seeder.create_admin_unit(user_id, "Meine Crew") - au_short_name = "meinecrew" + admin_unit_id = seeder.create_admin_unit(user_id, "Meine Crew") - url = utils.get_url( - "event_suggestion_create_for_admin_unit", au_short_name=au_short_name - ) + url = utils.get_url("event_suggestion_create_for_admin_unit", id=admin_unit_id) response = utils.get_ok(url) data = get_create_data() @@ -314,12 +268,9 @@ def test_event_suggestion_create_for_admin_unit_emptyFreeText( client, app, seeder, utils, mocker ): user_id = seeder.create_user() - seeder.create_admin_unit(user_id, "Meine Crew") - au_short_name = "meinecrew" + admin_unit_id = seeder.create_admin_unit(user_id, "Meine Crew") - url = utils.get_url( - "event_suggestion_create_for_admin_unit", au_short_name=au_short_name - ) + url = utils.get_url("event_suggestion_create_for_admin_unit", id=admin_unit_id) response = utils.get_ok(url) data = get_create_data() @@ -338,12 +289,9 @@ def test_event_suggestion_create_for_admin_unit_invalidEventPlaceId( client, app, seeder, utils, mocker ): user_id = seeder.create_user() - seeder.create_admin_unit(user_id, "Meine Crew") - au_short_name = "meinecrew" + admin_unit_id = seeder.create_admin_unit(user_id, "Meine Crew") - url = utils.get_url( - "event_suggestion_create_for_admin_unit", au_short_name=au_short_name - ) + url = utils.get_url("event_suggestion_create_for_admin_unit", id=admin_unit_id) response = utils.get_ok(url) data = get_create_data() @@ -359,11 +307,10 @@ def test_event_suggestion_create_for_admin_unit_invalidEventPlaceId( def test_event_suggestion_create_for_admin_unit_notEnabled(client, app, seeder, utils): user_id = seeder.create_user() - seeder.create_admin_unit(user_id, "Meine Crew", suggestions_enabled=False) - au_short_name = "meinecrew" - - url = utils.get_url( - "event_suggestion_create_for_admin_unit", au_short_name=au_short_name + admin_unit_id = seeder.create_admin_unit( + user_id, "Meine Crew", suggestions_enabled=False ) + + url = utils.get_url("event_suggestion_create_for_admin_unit", id=admin_unit_id) response = utils.get(url) utils.assert_response_notFound(response)