Skip to content

Commit

Permalink
Template page UI resource (#124)
Browse files Browse the repository at this point in the history
* template page ui resource

* version bump

* Fixed tests

* custom render method

* Extra args to custom render method
  • Loading branch information
mesemus authored Jan 4, 2024
1 parent 417a6e3 commit b71ee0b
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 9 deletions.
7 changes: 6 additions & 1 deletion oarepo_ui/resources/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,12 @@ def get_template_folder(self):


class TemplatePageUIResourceConfig(UIResourceConfig):
routes = {}
pages = {}
"""
Templates used for rendering the UI.
The key in the dictionary is URL path (relative to url_prefix),
value is a jinjax macro that renders the UI
"""


class RecordsUIResourceConfig(UIResourceConfig):
Expand Down
13 changes: 8 additions & 5 deletions oarepo_ui/resources/resource.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
# Resource
#
from ..proxies import current_oarepo_ui
from .config import RecordsUIResourceConfig, UIResourceConfig
from .config import RecordsUIResourceConfig, UIResourceConfig, TemplatePageUIResourceConfig

request_export_args = request_parser(
from_conf("request_export_args"), location="view_args"
Expand Down Expand Up @@ -433,17 +433,19 @@ class TemplatePageUIResource(UIResource):

def create_url_rules(self):
"""Create the URL rules for the record resource."""
route_config = self.config.routes
self.config: TemplatePageUIResourceConfig

pages_config = self.config.pages
routes = []
for route_name, route_path in route_config.items():
handler = getattr(self, route_name, None) or partial(self.render, page=route_name)
for page_url_path, page_template_name in pages_config.items():
handler = getattr(self, f"render_{page_template_name}", None) or partial(self.render, page=page_template_name)
if not hasattr(handler, '__name__'):
handler.__name__ = self.render.__name__
if not hasattr(handler, '__self__'):
handler.__self__ = self

routes.append(
route("GET", route_path, handler),
route("GET", page_url_path, handler),
)
return routes

Expand All @@ -463,6 +465,7 @@ def render(self, page, *args, **kwargs):

return current_oarepo_ui.catalog.render(
page,
**kwargs,
ui_config=self.config,
ui_resource=self,
extra_context=extra_context,
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[metadata]
name = oarepo-ui
version = 5.0.95
version = 5.0.96
description = UI module for invenio 3.5+
long_description = file: README.md
long_description_content_type = text/markdown
Expand Down
2 changes: 2 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ def app_config(app_config):
app_config["APP_THEME"] = ["semantic-ui"]
app_config["THEME_SEARCHBAR"] = False
app_config["THEME_HEADER_TEMPLATE"] = "oarepo_ui/header.html"
app_config["THEME_HEADER_LOGIN_TEMPLATE"] = "oarepo_ui/header_login.html"

app_config["OAREPO_UI_JINJAX_FILTERS"] = {"dummy": lambda *args, **kwargs: "dummy"}

return app_config
Expand Down
4 changes: 2 additions & 2 deletions tests/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ def _get_record(self, resource_requestctx, allow_draft=False):
class TitlePageUIResourceConfig(TemplatePageUIResourceConfig):
blueprint_name = 'titlepage'
url_prefix = '/'
routes = {
'TitlePage': ''
pages = {
'': 'TitlePage'
}


Expand Down

0 comments on commit b71ee0b

Please sign in to comment.