Compare commits

...
4 Commits
Author SHA1 Message Date
Cian-H e74d2017fc Version bump 2025-06-06 13:15:29 +01:00
Cian-H ef1f268298 Template reference fixes 2025-06-06 13:14:58 +01:00
Cian-H af61f927f1 Removed translations entrypoint as was unused 2025-06-06 12:51:57 +01:00
Cian-H d5b9686302 Switched blueprint creation to newer flask style
Noticed and cherry picked from tugraz theme during debugging of plugin
build issues. See:
https://github.com/tu-graz-library/invenio-theme-tugraz/commit/62c572e483b7b33a207414d61857d12037723f66
2025-06-06 12:51:17 +01:00
12 changed files with 45 additions and 46 deletions
+1 -1
View File
@@ -8,4 +8,4 @@
"""Metadata for this python module.""" """Metadata for this python module."""
__version__ = "2025.6.3" __version__ = "2025.6.6"
+3 -1
View File
@@ -106,7 +106,9 @@ DEPOSITS_HEADER_TEMPLATE = "invenio_theme_iform/header.html"
# SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_iform/search.html" # SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_iform/search.html"
# """override the default search page""" # """override the default search page"""
IFORM_ROUTES = { THEME_IFORM_ROUTES = {
"index": "/", "index": "/",
"comingsoon": "/comingsoon", "comingsoon": "/comingsoon",
"records-search": "/records/search",
"overview": "/me/overview",
} }
@@ -39,7 +39,7 @@
<title>{{ title }}</title> <title>{{ title }}</title>
{%- endblock head_title %} {%- endblock head_title %}
{%- block head_links %} {%- block head_links %}
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" /> <link rel="shortcut icon" href="{{ url_for('invenio_theme_iform.static', filename='favicon.ico') }}" />
{%- if keywords %}<link rel="canonical" href="{{ canonical_url }}" />{% endif %} {%- if keywords %}<link rel="canonical" href="{{ canonical_url }}" />{% endif %}
{%- block head_links_langs %} {%- block head_links_langs %}
{%- if alternate_urls %} {%- if alternate_urls %}
@@ -58,7 +58,7 @@
<link <link
rel="apple-touch-icon-precomposed" rel="apple-touch-icon-precomposed"
sizes="{{ size }}x{{ size }}" sizes="{{ size }}x{{ size }}"
href="{{ url_for('static', filename=icon_name) }}" href="{{ url_for('invenio_theme_iform.static', filename=icon_name) }}"
/> />
{%- endfor %} {%- endfor %}
{%- endblock head_apple_icons %} {%- endblock head_apple_icons %}
@@ -36,7 +36,7 @@
Log in with Log in with
{{ config.SSO_SAML_IDPS[name]['title']|default("SAML", true) }} {{ config.SSO_SAML_IDPS[name]['title']|default("SAML", true) }}
<img <img
src="{{ url_for('static', filename=config.INVENIO_THEME_IFORM_ICON) }}" src="{{ url_for('invenio_theme_iform.static', filename=config.INVENIO_THEME_IFORM_ICON) }}"
height="20px" height="20px"
/> />
</a> </a>
@@ -42,12 +42,12 @@
{%- if config.INVENIO_CONFIG_IFORM_SHIBBOLETH %} {%- if config.INVENIO_CONFIG_IFORM_SHIBBOLETH %}
<div class="ui divider"></div> <div class="ui divider"></div>
<a <a
href="{{ url_for("sso_saml.sso", idp="idp") }}" href="{{ url_for('sso_saml.sso', idp='idp') }}"
class="login-page-button ui fluid large button" class="login-page-button ui fluid large button"
> >
<span style="font-size: 18px;">Sign up with I-Form</span> <span style="font-size: 18px;">Sign up with I-Form</span>
<img <img
src="{{ url_for("static", filename=config.INVENIO_THEME_IFORM_ICON) }}" src="{{ url_for('invenio_theme_iform.static', filename=config.INVENIO_THEME_IFORM_ICON) }}"
height="20px" height="20px"
/> />
</a> </a>
@@ -73,7 +73,7 @@
<div class="content {{ accordion_active }}"> <div class="content {{ accordion_active }}">
<form <form
class="ui large form" class="ui large form"
action="{{ url_for_security("register") }}" action="{{ url_for_security('register') }}"
method="POST" method="POST"
name="register_user_form" name="register_user_form"
> >
@@ -36,7 +36,7 @@
{%- endblock head_title %} {%- endblock head_title %}
{%- block head_links %} {%- block head_links %}
<link rel="shortcut icon" href="{{ url_for("static", filename="favicon.ico") }}" /> <link rel="shortcut icon" href="{{ url_for('inveino_theme_iform.static', filename='favicon.ico') }}" />
{%- if keywords %} {%- if keywords %}
<link rel="canonical" href="{{ canonical_url }}" /> <link rel="canonical" href="{{ canonical_url }}" />
@@ -132,7 +132,7 @@
title="invenioRDM" title="invenioRDM"
> >
<img <img
src="{{ url_for("static", filename="images/inveniordm-tail.svg") }}" src="{{ url_for('invenio_theme_iform.static', filename='images/inveniordm-tail.svg') }}"
alt="InvenioRDM logo" alt="InvenioRDM logo"
style="display: block; height: 90px; margin-top: 8px;" style="display: block; height: 90px; margin-top: 8px;"
/> />
@@ -148,7 +148,7 @@
title="Science Foundation Ireland" title="Science Foundation Ireland"
> >
<img <img
src="{{ url_for("static", filename="images/SFI_logo.png") }}" src="{{ url_for('invenio_theme_iform.static', filename='images/SFI_logo.png') }}"
alt="Science Foundation Ireland" alt="Science Foundation Ireland"
style="display: block; height: auto; margin-top: 15px; width: 230px;" style="display: block; height: auto; margin-top: 15px; width: 230px;"
/> />
@@ -15,7 +15,7 @@
<a href="{{ creators.identifiers.orcid|pid_url('orcid') }}" target="_blank" <a href="{{ creators.identifiers.orcid|pid_url('orcid') }}" target="_blank"
><img ><img
class="inline-orcid" class="inline-orcid"
src="{{ url_for('static', filename='extra/orcid.png') }}" src="{{ url_for('invenio_theme_iform.static', filename='extra/orcid.png') }}"
/></a> /></a>
{%- endif %} {%- endif %}
@@ -64,7 +64,7 @@
<div class="affiliation-text"> <div class="affiliation-text">
<a <a
title="Home" title="Home"
href="{{ url_for("invenio_theme_iform.index") }}" href="{{ url_for('invenio_theme_iform.index') }}"
class="no-decoration" class="no-decoration"
> >
I-FORM I-FORM
@@ -33,7 +33,7 @@
<img <img
width="400px" width="400px"
alt="Research Results" alt="Research Results"
src="{{ url_for('static', filename='images/diamond.svg') }}" src="{{ url_for('invenio_theme_iform.static', filename='images/diamond.svg') }}"
/> />
</a> </a>
<div class="ui right floated text"> <div class="ui right floated text">
@@ -48,7 +48,7 @@
<img <img
width="400px" width="400px"
alt="Communities" alt="Communities"
src="{{ url_for('static', filename='images/group-discussion.svg') }}" src="{{ url_for('invenio_theme_iform.static', filename='images/group-discussion.svg') }}"
/> />
</a> </a>
<div>Overview: Description of Communities</div> <div>Overview: Description of Communities</div>
@@ -61,7 +61,7 @@
<img <img
width="400px" width="400px"
alt="Requests" alt="Requests"
src="{{ url_for('static', filename='images/umbrella.svg') }}" src="{{ url_for('invenio_theme_iform.static', filename='images/umbrella.svg') }}"
/> />
</a> </a>
<div>Overview: Description of Requests</div> <div>Overview: Description of Requests</div>
@@ -112,7 +112,7 @@
<img <img
width="400px" width="400px"
alt="Research Results" alt="Research Results"
src="{{ url_for('static', filename='images/diamond.svg') }}" src="{{ url_for('invenio_theme_iform.static', filename='images/diamond.svg') }}"
/> />
</div> </div>
<div class="ui right floated text"> <div class="ui right floated text">
@@ -129,7 +129,7 @@
<img <img
width="400px" width="400px"
alt="Publications" alt="Publications"
src="{{ url_for('static', filename='images/library-book-svgrepo-com.svg') }}" src="{{ url_for('invenio_theme_iform.static', filename='images/library-book-svgrepo-com.svg') }}"
/> />
</a> </a>
<div>Overview: Description for publications</div> <div>Overview: Description for publications</div>
@@ -143,7 +143,7 @@
<img <img
width="400px" width="400px"
alt="Open Educational Resources" alt="Open Educational Resources"
src="{{ url_for('static', filename='images/play.svg') }}" src="{{ url_for('invenio_theme_iform.static', filename='images/play.svg') }}"
/> />
</a> </a>
<div>Overview: Description for open educational resources</div> <div>Overview: Description for open educational resources</div>
+23 -23
View File
@@ -11,7 +11,7 @@
from functools import wraps from functools import wraps
from typing import Dict from typing import Dict
from flask import Blueprint, current_app, g, redirect, render_template, url_for from flask import Blueprint, Flask, current_app, g, redirect, render_template, url_for
from flask_login import current_user, login_required from flask_login import current_user, login_required
from invenio_rdm_records.proxies import current_rdm_records from invenio_rdm_records.proxies import current_rdm_records
from invenio_records_global_search.resources.serializers import ( from invenio_records_global_search.resources.serializers import (
@@ -22,15 +22,30 @@ from opensearch_dsl.utils import AttrDict
from .search import FrontpageRecordsSearch from .search import FrontpageRecordsSearch
blueprint = Blueprint(
"invenio_theme_iform", def create_blueprint(app: Flask) -> Blueprint:
__name__, """Create blueprint."""
template_folder="templates", blueprint = Blueprint(
static_folder="static", "invenio_theme_iform",
) __name__,
template_folder="templates",
static_folder="static",
)
routes = app.config.get("THEME_IFORM_ROUTES")
blueprint.add_url_rule(routes["records-search"], view_func=records_search)
blueprint.add_url_rule(routes["index"], view_func=index)
blueprint.add_url_rule(routes["overview"], view_func=overview)
# base case for any otherwise unhandled exception
app.register_error_handler(Exception, default_error_handler)
blueprint.add_app_template_filter(make_dict_like)
blueprint.add_app_template_filter(cast_to_dict)
return blueprint
@blueprint.route("/records/search")
def records_search(): def records_search():
"""Search page ui. """Search page ui.
@@ -70,7 +85,6 @@ def require_iform_authenticated(view_func):
return decorated_view return decorated_view
@blueprint.route("/me/overview")
@login_required @login_required
def overview(): def overview():
"""Overview.""" """Overview."""
@@ -85,7 +99,6 @@ def overview():
) )
@blueprint.app_template_filter("make_dict_like")
def make_dict_like(value: str, key: str) -> Dict[str, str]: def make_dict_like(value: str, key: str) -> Dict[str, str]:
"""Convert the value to a dict like structure. """Convert the value to a dict like structure.
@@ -94,7 +107,6 @@ def make_dict_like(value: str, key: str) -> Dict[str, str]:
return {key: value} return {key: value}
@blueprint.app_template_filter("cast_to_dict")
def cast_to_dict(attr_dict): def cast_to_dict(attr_dict):
"""Return the dict structure of AttrDict variable.""" """Return the dict structure of AttrDict variable."""
return AttrDict.to_dict(attr_dict) return AttrDict.to_dict(attr_dict)
@@ -112,18 +124,6 @@ def default_error_handler(e: Exception):
return render_template(current_app.config["THEME_500_TEMPLATE"]), 500 return render_template(current_app.config["THEME_500_TEMPLATE"]), 500
def ui_blueprint(app):
"""Blueprint for the routes and resources provided by invenio-theme-iform."""
routes = app.config.get("IFORM_ROUTES")
blueprint.add_url_rule(routes["index"], view_func=index)
# base case for any otherwise unhandled exception
app.register_error_handler(Exception, default_error_handler)
return blueprint
def records_serializer(records=None): def records_serializer(records=None):
"""Serialize list of records.""" """Serialize list of records."""
serializer = GlobalSearchJSONSerializer() serializer = GlobalSearchJSONSerializer()
+1 -4
View File
@@ -44,10 +44,7 @@ test = "scripts.test:main"
invenio_theme_iform = "invenio_theme_iform:InvenioThemeIform" invenio_theme_iform = "invenio_theme_iform:InvenioThemeIform"
[project.entry-points."invenio_base.blueprints"] [project.entry-points."invenio_base.blueprints"]
invenio_theme_iform = "invenio_theme_iform.views:ui_blueprint" invenio_theme_iform = "invenio_theme_iform.views:create_blueprint"
[project.entry-points."invenio_i18n.translations"]
messages = "invenio_theme_iform"
[project.entry-points."invenio_assets.webpack"] [project.entry-points."invenio_assets.webpack"]
invenio_theme_iform_theme = "invenio_theme_iform.webpack:theme" invenio_theme_iform_theme = "invenio_theme_iform.webpack:theme"