diff --git a/invenio_config_tuw/startup.py b/invenio_config_tuw/startup.py
index 41d95b1c3910efbed9ba1a5ed690ebe777389533..a096fdebcf9eb781247892af69bfd55096db43e3 100644
--- a/invenio_config_tuw/startup.py
+++ b/invenio_config_tuw/startup.py
@@ -107,32 +107,46 @@ def override_communities_permissions(state):
svc.members.config.permission_policy_cls = TUWCommunitiesPermissionPolicy
-@blueprint.route("/account/settings/curation/", methods=["GET", "POST"])
-@login_required
-@register_menu(
- blueprint,
- "settings.curation",
- '<i class="file icon"></i> Curation',
- order=1,
-)
-@register_breadcrumb(blueprint, "breadcrumbs.settings.curation", ("Curation"))
-def curation_settings_view():
- preferences_curation_form = CurationForm(
- formdata=None, obj=current_user, prefix="preferences-curation"
- )
+def create_curation_settings_blueprint(app):
+ """Register the curation settings view after the app has been initialized.
- form_name = request.form.get("submit", None)
- form = preferences_curation_form if form_name else None
+ This is necessary because we're depending on the Flask-Menu extension.
+ """
- if form:
- form.process(formdata=request.form)
- if form.validate_on_submit():
- form.populate_obj(current_user)
- db.session.add(current_user)
- current_app.extensions["security"].datastore.commit()
- flash(("Curation settings were updated."), category="success")
+ blueprint = Blueprint(
+ "invenio_config_tuw_settings",
+ __name__,
+ url_prefix="/account/settings/curation",
+ )
- return render_template(
- "invenio_theme_tuw/settings/curation.html",
- preferences_curation_form=preferences_curation_form,
+ @blueprint.route("/", methods=["GET", "POST"])
+ @login_required
+ @register_menu(
+ blueprint,
+ "settings.curation",
+ '<i class="file icon"></i> Curation',
+ order=1,
)
+ @register_breadcrumb(blueprint, "breadcrumbs.settings.curation", ("Curation"))
+ def curation_settings_view():
+ preferences_curation_form = CurationForm(
+ formdata=None, obj=current_user, prefix="preferences-curation"
+ )
+
+ form_name = request.form.get("submit", None)
+ form = preferences_curation_form if form_name else None
+
+ if form:
+ form.process(formdata=request.form)
+ if form.validate_on_submit():
+ form.populate_obj(current_user)
+ db.session.add(current_user)
+ current_app.extensions["security"].datastore.commit()
+ flash(("Curation settings were updated."), category="success")
+
+ return render_template(
+ "invenio_theme_tuw/settings/curation.html",
+ preferences_curation_form=preferences_curation_form,
+ )
+
+ return blueprint
diff --git a/setup.cfg b/setup.cfg
index beb1c66435ef61abb92a5827405116573db31638..822b75dca26c8d279621df1af233a4e2fa212d4b 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -59,6 +59,7 @@ invenio_base.api_apps =
invenio_config_tuw = invenio_config_tuw:InvenioConfigTUW
invenio_base.blueprints =
invenio_config_tuw_hacks = invenio_config_tuw.startup:blueprint
+ invenio_config_tuw_settings = invenio_config_tuw.startup:create_curation_settings_blueprint
invenio_base.api_blueprints =
invenio_config_tuw_hacks = invenio_config_tuw.startup:blueprint
invenio_celery.tasks =