From 60e0ed1ba0dfa5c9f53429e63de7f3f8fe9ffedb Mon Sep 17 00:00:00 2001 From: Saksham Date: Tue, 24 Sep 2024 11:35:58 +0200 Subject: [PATCH] communities: config: Update static page URLs to prevent name collisions --- invenio_communities/config.py | 6 ++++-- .../invenio_communities/search.html | 2 +- invenio_communities/views/decorators.py | 20 +++++++++++++++++++ invenio_communities/views/ui.py | 18 +++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/invenio_communities/config.py b/invenio_communities/config.py index 5d26c537f..08ff97f15 100644 --- a/invenio_communities/config.py +++ b/invenio_communities/config.py @@ -21,8 +21,10 @@ COMMUNITIES_ROUTES = { "frontpage": "/communities", - "search": "/communities/search", - "new": "/communities/new", + "search": "/communities-search", + "deprecated_search": "/communities/search", + "new": "/communities-new", + "deprecated_new": "/communities/new", "upload": "/communities//upload", "settings": "/communities//settings", "requests": "/communities//requests", diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/search.html b/invenio_communities/templates/semantic-ui/invenio_communities/search.html index a1c48d1ba..f8cc5f420 100644 --- a/invenio_communities/templates/semantic-ui/invenio_communities/search.html +++ b/invenio_communities/templates/semantic-ui/invenio_communities/search.html @@ -22,7 +22,7 @@

{{_("Communities")}}

{% if permissions.can_create %} - + {{ _('New community') }} diff --git a/invenio_communities/views/decorators.py b/invenio_communities/views/decorators.py index 868097485..e71f71e3c 100644 --- a/invenio_communities/views/decorators.py +++ b/invenio_communities/views/decorators.py @@ -9,6 +9,7 @@ """Decorators.""" from functools import wraps +from warnings import warn from flask import g, request @@ -39,3 +40,22 @@ def view(**kwargs): return view return decorator + + +def warn_deprecation(deprecated_route, new_route): + """Decorator to log warnings for deprecated routes.""" + + def decorator(f): + @wraps(f) + def view(**kwargs): + warn( + f"The '{deprecated_route}' route is deprecated and will be removed in future releases. " + f"Please update to use '{new_route}' instead. If you want to keep using the old endpoint, then you can set up redirection separately.", + DeprecationWarning, + stacklevel=2, + ) + return f(**kwargs) + + return view + + return decorator diff --git a/invenio_communities/views/ui.py b/invenio_communities/views/ui.py index 577f8fb99..da3d2f2d6 100644 --- a/invenio_communities/views/ui.py +++ b/invenio_communities/views/ui.py @@ -43,6 +43,7 @@ invitations, members, ) +from .decorators import warn_deprecation # @@ -149,11 +150,28 @@ def create_ui_blueprint(app): strict_slashes=False, ) + blueprint.add_url_rule( + routes["deprecated_search"], + endpoint="deprecated_communities_search", + view_func=warn_deprecation(routes["deprecated_search"], routes["search"])( + communities_search + ), + strict_slashes=False, + ) + blueprint.add_url_rule( routes["new"], view_func=communities_new, ) + blueprint.add_url_rule( + routes["deprecated_new"], + endpoint="deprecated_communities_new", + view_func=warn_deprecation(routes["deprecated_new"], routes["new"])( + communities_new + ), + ) + blueprint.add_url_rule( routes["about"], view_func=communities_about,