From f8773c5a1fe2931120e61463f7c85b03b567703f Mon Sep 17 00:00:00 2001 From: Mirek Simek Date: Sat, 24 Feb 2024 16:03:25 +0100 Subject: [PATCH] Formatted sources --- oarepo_ui/ext.py | 8 +++++--- oarepo_ui/resources/components.py | 1 - oarepo_ui/resources/resource.py | 4 ++-- oarepo_ui/resources/templating/catalog.py | 2 +- oarepo_ui/resources/templating/data.py | 10 +++++++--- oarepo_ui/resources/templating/filters.py | 7 ++++++- oarepo_ui/views.py | 14 ++++++++++++-- 7 files changed, 33 insertions(+), 13 deletions(-) diff --git a/oarepo_ui/ext.py b/oarepo_ui/ext.py index 5ae922ba..752232e4 100644 --- a/oarepo_ui/ext.py +++ b/oarepo_ui/ext.py @@ -16,8 +16,10 @@ def __init__(self, app): def reinitialize_catalog(self): self._catalog = None try: - del self.catalog # noqa - this is a documented method of clearing the cache - except AttributeError: # but does not work if the cache is not initialized yet, thus the try/except + del self.catalog # noqa - this is a documented method of clearing the cache + except ( + AttributeError + ): # but does not work if the cache is not initialized yet, thus the try/except pass @functools.cached_property @@ -84,7 +86,7 @@ def init_config(self, app): app.config.setdefault(k, getattr(config, k)) # merge in default filters and globals if they have not been overridden - for k in ('OAREPO_UI_JINJAX_FILTERS', 'OAREPO_UI_JINJAX_GLOBALS'): + for k in ("OAREPO_UI_JINJAX_FILTERS", "OAREPO_UI_JINJAX_GLOBALS"): for name, val in getattr(config, k).items(): if name not in app.config[k]: app.config[k][name] = val diff --git a/oarepo_ui/resources/components.py b/oarepo_ui/resources/components.py index 3142c809..c848cded 100644 --- a/oarepo_ui/resources/components.py +++ b/oarepo_ui/resources/components.py @@ -6,7 +6,6 @@ from invenio_records_resources.services.records.results import RecordItem from oarepo_runtime.datastreams.utils import get_file_service_for_record_service -import oarepo_ui.resources.templating.filters from ..proxies import current_oarepo_ui if TYPE_CHECKING: diff --git a/oarepo_ui/resources/resource.py b/oarepo_ui/resources/resource.py index e8e7c9d3..79ace77b 100644 --- a/oarepo_ui/resources/resource.py +++ b/oarepo_ui/resources/resource.py @@ -23,8 +23,8 @@ ) from invenio_records_resources.services import LinksTemplate -import oarepo_ui.resources.templating.filters from oarepo_ui.utils import dump_empty + from .templating.data import FieldData if TYPE_CHECKING: @@ -181,7 +181,7 @@ def detail(self): extra_context=extra_context, ui_links=ui_links, context=current_oarepo_ui.catalog.jinja_env.globals, - d=FieldData(record, {}) # TODO: pass ui here + d=FieldData(record, {}), # TODO: pass ui here ) def make_links_absolute(self, links, api_prefix): diff --git a/oarepo_ui/resources/templating/catalog.py b/oarepo_ui/resources/templating/catalog.py index 8d63814c..84fbcaec 100644 --- a/oarepo_ui/resources/templating/catalog.py +++ b/oarepo_ui/resources/templating/catalog.py @@ -1,4 +1,5 @@ import re +import typing as t from collections import namedtuple from functools import cached_property from itertools import chain @@ -12,7 +13,6 @@ from jinjax import Catalog from jinjax.exceptions import ComponentNotFound from jinjax.jinjax import JinjaX -import typing as t DEFAULT_URL_ROOT = "/static/components/" ALLOWED_EXTENSIONS = (".css", ".js") diff --git a/oarepo_ui/resources/templating/data.py b/oarepo_ui/resources/templating/data.py index bed4862b..07cd9e21 100644 --- a/oarepo_ui/resources/templating/data.py +++ b/oarepo_ui/resources/templating/data.py @@ -31,14 +31,18 @@ def __get(self, name: Union[str, int]): if isinstance(self.__data, dict): if name in self.__data: - return FieldData(self.__data.get(name), self.__ui.get(name, {}), self.__path + [name]) + return FieldData( + self.__data.get(name), self.__ui.get(name, {}), self.__path + [name] + ) else: return EMPTY_FIELD_DATA if isinstance(self.__data, list): idx = int(name) if idx < len(self.__data): - return FieldData(self.__data[idx], self.__ui.get('items', {}), self.__path + [idx]) + return FieldData( + self.__data[idx], self.__ui.get("items", {}), self.__path + [idx] + ) return EMPTY_FIELD_DATA return EMPTY_FIELD_DATA @@ -56,7 +60,7 @@ def _as_array(self): ret = [] if isinstance(self.__data, list): for val in self.__data: - ret.append(FieldData(val, self.__ui.get('items', {}))) + ret.append(FieldData(val, self.__ui.get("items", {}))) elif isinstance(self.__data, dict): for key, val in self.__data.items(): ret.append(FieldData(val, self.__ui.get(key, {}))) diff --git a/oarepo_ui/resources/templating/filters.py b/oarepo_ui/resources/templating/filters.py index 257fb03f..59cb0938 100644 --- a/oarepo_ui/resources/templating/filters.py +++ b/oarepo_ui/resources/templating/filters.py @@ -46,7 +46,12 @@ def ichain(*iterables, remove_empty=False): elif it is not None: ret.extend(ensure_array(it)) if remove_empty: - ret = [x for x in ret if (isinstance(x, FieldData) or not x._is_empty) or x] + ret = [ + x + for x in ret + if (isinstance(x, FieldData) and not x._is_empty) + or (not isinstance(x, FieldData) and x) + ] return ret diff --git a/oarepo_ui/views.py b/oarepo_ui/views.py index 000217d6..f3e6e00f 100644 --- a/oarepo_ui/views.py +++ b/oarepo_ui/views.py @@ -10,8 +10,18 @@ def add_jinja_filters(state): # modified the global env - not pretty, but gets filters to search as well env = app.jinja_env - env.filters.update({k: obj_or_import_string(v) for k, v in app.config["OAREPO_UI_JINJAX_FILTERS"].items()}) - env.globals.update({k: obj_or_import_string(v) for k, v in app.config["OAREPO_UI_JINJAX_GLOBALS"].items()}) + env.filters.update( + { + k: obj_or_import_string(v) + for k, v in app.config["OAREPO_UI_JINJAX_FILTERS"].items() + } + ) + env.globals.update( + { + k: obj_or_import_string(v) + for k, v in app.config["OAREPO_UI_JINJAX_GLOBALS"].items() + } + ) env.policies.setdefault("json.dumps_kwargs", {}).setdefault("default", str) # the catalogue should not have been used at this point but if it was, we need to reinitialize it