From b0717107bd4f126d4e27cb5f085b3a6847dcd02a Mon Sep 17 00:00:00 2001 From: Ronald Krist Date: Thu, 17 Aug 2023 17:01:38 +0200 Subject: [PATCH 1/6] permissions mechanism change --- oarepo_requests/components/requests.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/oarepo_requests/components/requests.py b/oarepo_requests/components/requests.py index 02fa897f..175cc052 100644 --- a/oarepo_requests/components/requests.py +++ b/oarepo_requests/components/requests.py @@ -19,6 +19,7 @@ def before_ui_detail(self, identity, data=None, record=None, errors=None, **kwar ret = {} for request_name, request in requests.items(): # todo what about other types of actions? + # should we iterate over type's actions and try for each one # request_type = current_request_type_registry.lookup(request["type"]) try: current_requests_service.require_permission(identity, f"action_submit_{request['type']}") @@ -52,7 +53,7 @@ def publish(self, identity, data=None, record=None, **kwargs): request_status = "accepted" request.status = request_status setattr(record.parent, self.publish_request_type, None) - event = LogEventType(payload={"event": request_status, "content": "request was published through direct call without request"}) + event = LogEventType(payload={"event": request_status, "content": "record was published through direct call without request"}) _data = dict(payload=event.payload) current_events_service.create( identity, request.id, _data, event, uow=self.uow From 964b7391ee94ad938f9ab398979d7b0ef2c76300 Mon Sep 17 00:00:00 2001 From: Ronald Krist Date: Tue, 29 Aug 2023 12:53:35 +0200 Subject: [PATCH 2/6] savepoint --- oarepo_requests/components/requests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oarepo_requests/components/requests.py b/oarepo_requests/components/requests.py index 175cc052..105a79d0 100644 --- a/oarepo_requests/components/requests.py +++ b/oarepo_requests/components/requests.py @@ -20,7 +20,7 @@ def before_ui_detail(self, identity, data=None, record=None, errors=None, **kwar for request_name, request in requests.items(): # todo what about other types of actions? # should we iterate over type's actions and try for each one - # request_type = current_request_type_registry.lookup(request["type"]) + request_type = current_request_type_registry.lookup(request["type"]) try: current_requests_service.require_permission(identity, f"action_submit_{request['type']}") except PermissionDeniedError: From b0fcb1db3ecd71133cd322cac7d62ac823382c66 Mon Sep 17 00:00:00 2001 From: Ronald Krist Date: Wed, 30 Aug 2023 11:43:21 +0200 Subject: [PATCH 3/6] corrected permission checking in before ui, ui tests, reformat --- oarepo_requests/actions/delete_topic.py | 6 +- oarepo_requests/actions/publish_draft.py | 13 +- oarepo_requests/components/__init__.py | 8 +- oarepo_requests/components/requests.py | 84 +- oarepo_requests/schemas/marshmallow.py | 3 +- oarepo_requests/types/delete_record.py | 3 +- oarepo_requests/types/publish_draft.py | 1 - oarepo_requests/utils/utils.py | 11 +- run_tests.sh | 4 +- tests/{test_requests => }/conftest.py | 65 +- tests/test_requests/test_requests.py | 58 +- tests/test_ui/__init__.py | 0 tests/test_ui/conftest.py | 71 ++ tests/test_ui/manifest.json | 1319 ++++++++++++++++++++++ tests/test_ui/model.py | 90 ++ tests/test_ui/templates/test_detail.html | 5 + tests/test_ui/test_ui_resource.py | 84 ++ 17 files changed, 1730 insertions(+), 95 deletions(-) rename tests/{test_requests => }/conftest.py (77%) create mode 100644 tests/test_ui/__init__.py create mode 100644 tests/test_ui/conftest.py create mode 100644 tests/test_ui/manifest.json create mode 100644 tests/test_ui/model.py create mode 100644 tests/test_ui/templates/test_detail.html create mode 100644 tests/test_ui/test_ui_resource.py diff --git a/oarepo_requests/actions/delete_topic.py b/oarepo_requests/actions/delete_topic.py index 3ef89906..9c3ee38e 100644 --- a/oarepo_requests/actions/delete_topic.py +++ b/oarepo_requests/actions/delete_topic.py @@ -1,5 +1,5 @@ from invenio_records_resources.proxies import current_service_registry -from invenio_records_resources.services.uow import RecordCommitOp, RecordDeleteOp +from invenio_records_resources.services.uow import RecordDeleteOp from invenio_requests.customizations import SubmitAction from invenio_requests.resolvers.registry import ResolverRegistry @@ -14,5 +14,5 @@ def execute(self, identity, uow): else: raise KeyError(f"topic {topic} service not found") uow.register(RecordDeleteOp(topic, topic_service.indexer, index_refresh=True)) - #topic_service.delete(identity, id_, revision_id=None, uow=None) - super().execute(identity, uow) \ No newline at end of file + # topic_service.delete(identity, id_, revision_id=None, uow=None) + super().execute(identity, uow) diff --git a/oarepo_requests/actions/publish_draft.py b/oarepo_requests/actions/publish_draft.py index e81ff47d..7f4c8cbf 100644 --- a/oarepo_requests/actions/publish_draft.py +++ b/oarepo_requests/actions/publish_draft.py @@ -1,12 +1,8 @@ from invenio_records_resources.proxies import current_service_registry from invenio_records_resources.services.uow import RecordCommitOp -from invenio_requests import current_request_type_registry, current_requests_service -from invenio_requests.customizations import SubmitAction, AcceptAction +from invenio_requests.customizations import SubmitAction from invenio_requests.resolvers.registry import ResolverRegistry -from oarepo_requests.types.delete_record import DeleteRecordRequestType -from oarepo_requests.utils.utils import get_allowed_request_types - """ def create_delete_request(topic_service, topic_id, identity): record = topic_service.record_cls.pid.resolve(topic_id) @@ -14,6 +10,8 @@ def create_delete_request(topic_service, topic_id, identity): type_ = next(x for x in allowed_types.values() if issubclass(x, DeleteRecordRequestType)) current_requests_service.create(identity=identity, data={}, request_type=type_, receiver=None, topic=record) """ + + def publish_draft(draft, identity, uow): for resolver in ResolverRegistry.get_registered_resolvers(): if resolver.matches_entity(draft): @@ -26,7 +24,6 @@ def publish_draft(draft, identity, uow): topic_service.publish(identity, id_, uow=uow, expand=False) - class PublishDraftSubmitAction(SubmitAction): def execute(self, identity, uow): topic = self.request.topic.resolve() @@ -34,9 +31,11 @@ def execute(self, identity, uow): uow.register(RecordCommitOp(topic.parent)) publish_draft(topic, identity, uow) super().execute(identity, uow) + + """ class PublishDraftAcceptAction(AcceptAction): def execute(self, identity, uow): publish_draft(self, identity, uow) super().execute(identity, uow) -""" \ No newline at end of file +""" diff --git a/oarepo_requests/components/__init__.py b/oarepo_requests/components/__init__.py index ed7c43a0..8cd6c40b 100644 --- a/oarepo_requests/components/__init__.py +++ b/oarepo_requests/components/__init__.py @@ -1,9 +1,11 @@ -from .requests import AllowedRequestsComponent, PublishDraftComponent, OAICreateRequestsComponent +from .requests import ( + AllowedRequestsComponent, + OAICreateRequestsComponent, + PublishDraftComponent, +) __all__ = [ "AllowedRequestsComponent", "PublishDraftComponent", "OAICreateRequestsComponent", ] - - diff --git a/oarepo_requests/components/requests.py b/oarepo_requests/components/requests.py index 105a79d0..57e5f583 100644 --- a/oarepo_requests/components/requests.py +++ b/oarepo_requests/components/requests.py @@ -1,12 +1,14 @@ import functools -from invenio_records_resources.services.uow import RecordCommitOp -from invenio_requests.customizations import LogEventType - -from oarepo_requests.utils.utils import get_allowed_request_types -from invenio_records_resources.services.records.components import ServiceComponent -from invenio_requests.proxies import current_requests_service, current_request_type_registry, current_events_service from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_records_resources.services.records.components import ServiceComponent +from invenio_records_resources.services.uow import RecordCommitOp +from invenio_requests.customizations import LogEventType, RequestActions +from invenio_requests.proxies import ( + current_events_service, + current_request_type_registry, + current_requests_service, +) class AllowedRequestsComponent(ServiceComponent): @@ -14,24 +16,32 @@ class AllowedRequestsComponent(ServiceComponent): def before_ui_detail(self, identity, data=None, record=None, errors=None, **kwargs): # todo discriminate requests from other stuff which can be on parent in the future + # todo what to throw if parent doesn't exist requests = record["parent"] requests.pop("id") - ret = {} - for request_name, request in requests.items(): - # todo what about other types of actions? - # should we iterate over type's actions and try for each one - request_type = current_request_type_registry.lookup(request["type"]) - try: - current_requests_service.require_permission(identity, f"action_submit_{request['type']}") - except PermissionDeniedError: - continue - ret[request_name] = request + available_requests = {} + + for request_name, request_dict in requests.items(): + request = current_requests_service.record_cls.get_record(request_dict["id"]) + request_type = current_request_type_registry.lookup(request_dict["type"]) + for action_name, action in request_type.available_actions.items(): + try: + current_requests_service.require_permission( + identity, f"action_{action_name}", request=request + ) + except PermissionDeniedError: + continue + action = RequestActions.get_action(request, action_name) + if not action.can_execute(): + continue + available_requests[request_name] = request_dict extra_context = kwargs["extra_context"] - extra_context["allowed_requests"] = ret + extra_context["allowed_requests"] = available_requests class PublishDraftComponentPrivate(ServiceComponent): """Service component for request integration.""" + def __init__(self, publish_request_type, delete_request_type, *args, **kwargs): super().__init__(*args, **kwargs) self.publish_request_type = publish_request_type @@ -41,10 +51,15 @@ def create(self, identity, data=None, record=None, **kwargs): """Create the review if requested.""" # topic and request_type in kwargs if self.publish_request_type: - type_ = current_request_type_registry.lookup(self.publish_request_type, quiet=True) - request_item = current_requests_service.create(identity, {}, type_, receiver=None, topic=record, uow=self.uow) + type_ = current_request_type_registry.lookup( + self.publish_request_type, quiet=True + ) + request_item = current_requests_service.create( + identity, {}, type_, receiver=None, topic=record, uow=self.uow + ) setattr(record.parent, self.publish_request_type, request_item._request) self.uow.register(RecordCommitOp(record.parent)) + def publish(self, identity, data=None, record=None, **kwargs): publish_request = getattr(record.parent, self.publish_request_type) @@ -53,34 +68,49 @@ def publish(self, identity, data=None, record=None, **kwargs): request_status = "accepted" request.status = request_status setattr(record.parent, self.publish_request_type, None) - event = LogEventType(payload={"event": request_status, "content": "record was published through direct call without request"}) + event = LogEventType( + payload={ + "event": request_status, + "content": "record was published through direct call without request", + } + ) _data = dict(payload=event.payload) current_events_service.create( identity, request.id, _data, event, uow=self.uow ) if self.delete_request_type: - type_ = current_request_type_registry.lookup(self.delete_request_type, quiet=True) - request_item = current_requests_service.create(identity, {}, type_, receiver=None, topic=record, uow=self.uow) + type_ = current_request_type_registry.lookup( + self.delete_request_type, quiet=True + ) + request_item = current_requests_service.create( + identity, {}, type_, receiver=None, topic=record, uow=self.uow + ) setattr(record.parent, self.delete_request_type, request_item._request) self.uow.register(RecordCommitOp(record.parent)) - class OAICreateRequestsComponentPrivate(ServiceComponent): def __init__(self, delete_request_type, *args, **kwargs): super().__init__(*args, **kwargs) self.delete_request_type = delete_request_type def create(self, identity, data=None, record=None, **kwargs): - type_ = current_request_type_registry.lookup(self.delete_request_type, quiet=True) - request_item = current_requests_service.create(identity, {}, type_, receiver=None, topic=record, uow=self.uow) + type_ = current_request_type_registry.lookup( + self.delete_request_type, quiet=True + ) + request_item = current_requests_service.create( + identity, {}, type_, receiver=None, topic=record, uow=self.uow + ) setattr(record.parent, self.delete_request_type, request_item._request) self.uow.register(RecordCommitOp(record.parent)) + def PublishDraftComponent(publish_request_type, delete_request_type): - return functools.partial(PublishDraftComponentPrivate, publish_request_type, delete_request_type) + return functools.partial( + PublishDraftComponentPrivate, publish_request_type, delete_request_type + ) + def OAICreateRequestsComponent(delete_request_type): return functools.partial(OAICreateRequestsComponentPrivate, delete_request_type) - diff --git a/oarepo_requests/schemas/marshmallow.py b/oarepo_requests/schemas/marshmallow.py index af6dabd3..b9eaed74 100644 --- a/oarepo_requests/schemas/marshmallow.py +++ b/oarepo_requests/schemas/marshmallow.py @@ -1,5 +1,6 @@ from invenio_requests.services.schemas import GenericRequestSchema from marshmallow import fields + class NoneReceiverGenericRequestSchema(GenericRequestSchema): - receiver = fields.Dict(allow_none=True) \ No newline at end of file + receiver = fields.Dict(allow_none=True) diff --git a/oarepo_requests/types/delete_record.py b/oarepo_requests/types/delete_record.py index 21b5b9c4..d6e1c750 100644 --- a/oarepo_requests/types/delete_record.py +++ b/oarepo_requests/types/delete_record.py @@ -4,10 +4,9 @@ class DeleteRecordRequestType(RequestType): - available_actions = { **RequestType.available_actions, "submit": DeleteTopicSubmitAction, } - receiver_can_be_none = True \ No newline at end of file + receiver_can_be_none = True diff --git a/oarepo_requests/types/publish_draft.py b/oarepo_requests/types/publish_draft.py index 9cf41c26..852922e7 100644 --- a/oarepo_requests/types/publish_draft.py +++ b/oarepo_requests/types/publish_draft.py @@ -4,7 +4,6 @@ class PublishDraftRequestType(RequestType): - available_actions = { **RequestType.available_actions, "submit": PublishDraftSubmitAction, diff --git a/oarepo_requests/utils/utils.py b/oarepo_requests/utils/utils.py index 67e1cabd..537138cc 100644 --- a/oarepo_requests/utils/utils.py +++ b/oarepo_requests/utils/utils.py @@ -1,11 +1,16 @@ -from invenio_requests.resolvers.registry import ResolverRegistry from invenio_requests.proxies import current_request_type_registry +from invenio_requests.resolvers.registry import ResolverRegistry + def get_allowed_request_types(queryied_record_cls): request_types = current_request_type_registry._registered_types resolvers = list(ResolverRegistry.get_registered_resolvers()) # possibly the mapping doesn't have to be 1:1 - type_key2record_cls = {resolver.type_key:resolver.record_cls for resolver in resolvers if hasattr(resolver, "type_key")} + type_key2record_cls = { + resolver.type_key: resolver.record_cls + for resolver in resolvers + if hasattr(resolver, "type_key") + } ret = {} for request_name, request_type in request_types.items(): allowed_type_keys = set(request_type.allowed_topic_ref_types) @@ -16,4 +21,4 @@ def get_allowed_request_types(queryied_record_cls): if record_cls == queryied_record_cls: ret[request_name] = request_type break - return ret \ No newline at end of file + return ret diff --git a/run_tests.sh b/run_tests.sh index b5256ce4..76c6e89c 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -25,5 +25,7 @@ python3 -m venv $MODEL_VENV pip install -U setuptools pip wheel pip install "./$BUILD_TEST_DIR/$MODEL[tests]" pip install . +pip install oarepo-ui -pytest $BUILD_TEST_DIR/test_requests \ No newline at end of file +pytest $BUILD_TEST_DIR/test_requests +pytest $BUILD_TEST_DIR/test_ui \ No newline at end of file diff --git a/tests/test_requests/conftest.py b/tests/conftest.py similarity index 77% rename from tests/test_requests/conftest.py rename to tests/conftest.py index 961c869d..f310f9af 100644 --- a/tests/test_requests/conftest.py +++ b/tests/conftest.py @@ -2,22 +2,25 @@ import pytest from flask_principal import Identity, Need, UserNeed -from flask_security.utils import hash_password +from flask_security.utils import hash_password, login_user from invenio_access.models import ActionRoles -from invenio_access.permissions import superuser_access, system_identity +from invenio_access.permissions import superuser_access from invenio_accounts.models import Role -from invenio_records_resources.services.uow import RecordCommitOp, UnitOfWork +from invenio_accounts.testutils import login_user_via_session +from invenio_app.factory import create_api from invenio_requests.customizations import CommentEventType, LogEventType from invenio_requests.proxies import current_requests from invenio_requests.records.api import RequestEventFormat from thesis.proxies import current_service -from thesis.records.api import ThesisRecord, ThesisDraft -from invenio_app.factory import create_api +from thesis.records.api import ThesisRecord + @pytest.fixture(scope="module") def create_app(instance_path, entry_points): """Application factory fixture.""" return create_api + + @pytest.fixture(scope="module") def app_config(app_config): app_config["REQUESTS_REGISTERED_EVENT_TYPES"] = [LogEventType(), CommentEventType()] @@ -28,12 +31,12 @@ def app_config(app_config): } ] app_config["JSONSCHEMAS_HOST"] = "localhost" - app_config["RECORDS_REFRESOLVER_CLS"] = ( - "invenio_records.resolver.InvenioRefResolver" - ) - app_config["RECORDS_REFRESOLVER_STORE"] = ( - "invenio_jsonschemas.proxies.current_refresolver_store" - ) + app_config[ + "RECORDS_REFRESOLVER_CLS" + ] = "invenio_records.resolver.InvenioRefResolver" + app_config[ + "RECORDS_REFRESOLVER_STORE" + ] = "invenio_jsonschemas.proxies.current_refresolver_store" return app_config @@ -133,6 +136,26 @@ def users(app): return [user1, user2, admin] +@pytest.fixture(scope="module") +def identity_simple(users): + """Simple identity fixture.""" + user = users[0] + i = Identity(user.id) + i.provides.add(UserNeed(user.id)) + i.provides.add(Need(method="system_role", value="any_user")) + i.provides.add(Need(method="system_role", value="authenticated_user")) + return i + + +@pytest.fixture() +def client_with_login(client, users): + """Log in a user to the client.""" + user = users[0] + login_user(user) + login_user_via_session(client, email=user.email) + return client + + @pytest.fixture(scope="function") def request_record_input_data(): """Input data to a Request record.""" @@ -146,21 +169,21 @@ def request_record_input_data(): return ret +@pytest.fixture(scope="module") +def record_service(): + return current_service + + @pytest.fixture(scope="function") -def example_topic_draft(record_service): - draft = record_service.create(system_identity, {}) +def example_topic_draft(record_service, identity_simple): + draft = record_service.create(identity_simple, {}) return draft._obj - @pytest.fixture(scope="function") -def example_topic(record_service): - draft = record_service.create(system_identity, {}) - record = record_service.publish(system_identity, draft.id) +def example_topic(record_service, identity_simple): + draft = record_service.create(identity_simple, {}) + record = record_service.publish(identity_simple, draft.id) id_ = record.id record = ThesisRecord.pid.resolve(id_) return record - -@pytest.fixture -def record_service(): - return current_service diff --git a/tests/test_requests/test_requests.py b/tests/test_requests/test_requests.py index 5700351e..18934b1c 100644 --- a/tests/test_requests/test_requests.py +++ b/tests/test_requests/test_requests.py @@ -1,67 +1,73 @@ import pytest -from invenio_access.permissions import system_identity +from invenio_pidstore.errors import PIDDeletedError, PIDUnregistered from sqlalchemy.orm.exc import NoResultFound -from invenio_pidstore.errors import PIDUnregistered, PIDDeletedError - - def test_workflow( requests_service, record_service, - example_topic_draft + example_topic_draft, + identity_simple, ): record_id = example_topic_draft["id"] - resp1 = record_service.read_draft(system_identity, record_id) + resp1 = record_service.read_draft(identity_simple, record_id) with pytest.raises(PIDUnregistered): - record_service.read(system_identity, record_id) + record_service.read(identity_simple, record_id) - requests_service.execute_action(system_identity, resp1._obj.parent.publish_draft.id, "submit") + requests_service.execute_action( + identity_simple, resp1._obj.parent.publish_draft.id, "submit" + ) with pytest.raises(NoResultFound): - record_service.read_draft(system_identity, record_id) - resp2 = record_service.read(system_identity, record_id) + record_service.read_draft(identity_simple, record_id) + resp2 = record_service.read(identity_simple, record_id) assert resp2._obj.parent.publish_draft is None - requests_service.execute_action(system_identity, resp2._obj.parent.delete_record.id, "submit") + requests_service.execute_action( + identity_simple, resp2._obj.parent.delete_record.id, "submit" + ) with pytest.raises(PIDDeletedError): - record_service.read_draft(system_identity, record_id) + record_service.read_draft(identity_simple, record_id) with pytest.raises(PIDDeletedError): - record_service.read(system_identity, record_id) + record_service.read(identity_simple, record_id) -def test_direct_publish_request_deleted( - record_service, - example_topic_draft): +def test_direct_publish_request_deleted( + requests_service, record_service, example_topic_draft, identity_simple +): record_id = example_topic_draft["id"] - resp = record_service.publish(system_identity, record_id) + resp = record_service.publish(identity_simple, record_id) assert resp._obj.parent.publish_draft is None -def test_parent_dump(requests_service, - record_service, - example_topic_draft): +def test_parent_dump( + requests_service, record_service, example_topic_draft, identity_simple +): record_id = example_topic_draft["id"] - resp1 = record_service.read_draft(system_identity, record_id) + resp1 = record_service.read_draft(identity_simple, record_id) assert "parent" in resp1.data assert "publish_draft" in resp1.data["parent"] assert "delete_record" not in resp1.data["parent"] - requests_service.execute_action(system_identity, resp1.data["parent"]["publish_draft"]["id"], "submit") - resp2 = record_service.read(system_identity, record_id) + requests_service.execute_action( + identity_simple, resp1.data["parent"]["publish_draft"]["id"], "submit" + ) + resp2 = record_service.read(identity_simple, record_id) assert "parent" in resp2.data assert "publish_draft" not in resp2.data["parent"] assert "delete_record" in resp2.data["parent"] - requests_service.execute_action(system_identity, resp2.data["parent"]["delete_record"]["id"], "submit") + requests_service.execute_action( + identity_simple, resp2.data["parent"]["delete_record"]["id"], "submit" + ) with pytest.raises(PIDDeletedError): - record_service.read_draft(system_identity, record_id) + record_service.read_draft(identity_simple, record_id) with pytest.raises(PIDDeletedError): - record_service.read(system_identity, record_id) + record_service.read(identity_simple, record_id) diff --git a/tests/test_ui/__init__.py b/tests/test_ui/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/test_ui/conftest.py b/tests/test_ui/conftest.py new file mode 100644 index 00000000..70e6ef94 --- /dev/null +++ b/tests/test_ui/conftest.py @@ -0,0 +1,71 @@ +import os +import shutil +import sys +from pathlib import Path + +import pytest +from invenio_app.factory import create_app as _create_app + +from .model import ModelUIResource, ModelUIResourceConfig + + +@pytest.fixture(scope="module") +def extra_entry_points(): + """Extra entry points to load the mock_module features.""" + return {"invenio_i18n.translations": ["1000-test = tests"]} + + +@pytest.fixture(scope="module") +def app_config(app_config): + app_config["I18N_LANGUAGES"] = [("cs", "Czech")] + app_config["BABEL_DEFAULT_LOCALE"] = "en" + app_config["SEARCH_HOSTS"] = [ + { + "host": os.environ.get("OPENSEARCH_HOST", "localhost"), + "port": os.environ.get("OPENSEARCH_PORT", "9200"), + } + ] + app_config[ + "RECORDS_REFRESOLVER_CLS" + ] = "invenio_records.resolver.InvenioRefResolver" + app_config[ + "RECORDS_REFRESOLVER_STORE" + ] = "invenio_jsonschemas.proxies.current_refresolver_store" + + # for ui tests + app_config["APP_THEME"] = ["semantic-ui"] + app_config["THEME_SEARCHBAR"] = False + app_config["THEME_HEADER_TEMPLATE"] = "oarepo_ui/header.html" + + return app_config + + +@pytest.fixture(scope="module") +def create_app(instance_path, entry_points): + """Application factory fixture.""" + return _create_app + + +@pytest.fixture(scope="module") +def record_ui_resource_config(app): + return ModelUIResourceConfig() + + +@pytest.fixture(scope="module") +def record_ui_resource(app, record_ui_resource_config, record_service): + ui_resource = ModelUIResource(record_ui_resource_config) + app.register_blueprint( + ui_resource.as_blueprint(template_folder=Path(__file__).parent / "templates") + ) + return ui_resource + + +@pytest.fixture() +def fake_manifest(app): + python_path = Path(sys.executable) + invenio_instance_path = python_path.parent.parent / "var" / "instance" + manifest_path = invenio_instance_path / "static" / "dist" + manifest_path.mkdir(parents=True, exist_ok=True) + shutil.copy( + Path(__file__).parent / "manifest.json", manifest_path / "manifest.json" + ) diff --git a/tests/test_ui/manifest.json b/tests/test_ui/manifest.json new file mode 100644 index 00000000..a5c9a29c --- /dev/null +++ b/tests/test_ui/manifest.json @@ -0,0 +1,1319 @@ +{ + "status": "done", + "assets": { + "css/bottom_css.1b2e27b61142106979cc.css": { + "name": "css/bottom_css.1b2e27b61142106979cc.css", + "path": "/invenio/instance/static/dist/css/bottom_css.1b2e27b61142106979cc.css", + "publicPath": "/static/dist/css/bottom_css.1b2e27b61142106979cc.css" + }, + "css/bottom_css.78b33add02920b2d01b2.css": { + "name": "css/bottom_css.78b33add02920b2d01b2.css", + "path": "/invenio/instance/static/dist/css/bottom_css.78b33add02920b2d01b2.css", + "publicPath": "/static/dist/css/bottom_css.78b33add02920b2d01b2.css" + }, + "css/oarepo_vocabularies_ui_components.22a6dcb4ec850142e289.css": { + "name": "css/oarepo_vocabularies_ui_components.22a6dcb4ec850142e289.css", + "path": "/invenio/instance/static/dist/css/oarepo_vocabularies_ui_components.22a6dcb4ec850142e289.css", + "publicPath": "/static/dist/css/oarepo_vocabularies_ui_components.22a6dcb4ec850142e289.css" + }, + "css/oarepo_vocabularies_ui_components.fabb3796f93735eab713.css": { + "name": "css/oarepo_vocabularies_ui_components.fabb3796f93735eab713.css", + "path": "/invenio/instance/static/dist/css/oarepo_vocabularies_ui_components.fabb3796f93735eab713.css", + "publicPath": "/static/dist/css/oarepo_vocabularies_ui_components.fabb3796f93735eab713.css" + }, + "css/pdfjs_css.7523441f07ec785e6f0f.css": { + "name": "css/pdfjs_css.7523441f07ec785e6f0f.css", + "path": "/invenio/instance/static/dist/css/pdfjs_css.7523441f07ec785e6f0f.css", + "publicPath": "/static/dist/css/pdfjs_css.7523441f07ec785e6f0f.css" + }, + "css/pdfjs_css.e429d7a8c3723c7764b2.css": { + "name": "css/pdfjs_css.e429d7a8c3723c7764b2.css", + "path": "/invenio/instance/static/dist/css/pdfjs_css.e429d7a8c3723c7764b2.css", + "publicPath": "/static/dist/css/pdfjs_css.e429d7a8c3723c7764b2.css" + }, + "css/prism_css.c5d8ec75707893898080.css": { + "name": "css/prism_css.c5d8ec75707893898080.css", + "path": "/invenio/instance/static/dist/css/prism_css.c5d8ec75707893898080.css", + "publicPath": "/static/dist/css/prism_css.c5d8ec75707893898080.css" + }, + "css/prism_css.d26348f46347b7751296.css": { + "name": "css/prism_css.d26348f46347b7751296.css", + "path": "/invenio/instance/static/dist/css/prism_css.d26348f46347b7751296.css", + "publicPath": "/static/dist/css/prism_css.d26348f46347b7751296.css" + }, + "css/simple_image_css.22066ba3f533514193c2.css": { + "name": "css/simple_image_css.22066ba3f533514193c2.css", + "path": "/invenio/instance/static/dist/css/simple_image_css.22066ba3f533514193c2.css", + "publicPath": "/static/dist/css/simple_image_css.22066ba3f533514193c2.css" + }, + "css/simple_image_css.290dcaa3fef4f2b83552.css": { + "name": "css/simple_image_css.290dcaa3fef4f2b83552.css", + "path": "/invenio/instance/static/dist/css/simple_image_css.290dcaa3fef4f2b83552.css", + "publicPath": "/static/dist/css/simple_image_css.290dcaa3fef4f2b83552.css" + }, + "css/theme-admin.11e5c170f835c367813e.css": { + "name": "css/theme-admin.11e5c170f835c367813e.css", + "path": "/invenio/instance/static/dist/css/theme-admin.11e5c170f835c367813e.css", + "publicPath": "/static/dist/css/theme-admin.11e5c170f835c367813e.css" + }, + "css/theme-admin.a683b9f46174f3bed424.css": { + "name": "css/theme-admin.a683b9f46174f3bed424.css", + "path": "/invenio/instance/static/dist/css/theme-admin.a683b9f46174f3bed424.css", + "publicPath": "/static/dist/css/theme-admin.a683b9f46174f3bed424.css" + }, + "css/vendors~previewer_theme~theme.30d3a0d0ab545555a252.css": { + "name": "css/vendors~previewer_theme~theme.30d3a0d0ab545555a252.css", + "path": "/invenio/instance/static/dist/css/vendors~previewer_theme~theme.30d3a0d0ab545555a252.css", + "publicPath": "/static/dist/css/vendors~previewer_theme~theme.30d3a0d0ab545555a252.css" + }, + "css/vendors~previewer_theme~theme.96782c7b6e34f730c329.css": { + "name": "css/vendors~previewer_theme~theme.96782c7b6e34f730c329.css", + "path": "/invenio/instance/static/dist/css/vendors~previewer_theme~theme.96782c7b6e34f730c329.css", + "publicPath": "/static/dist/css/vendors~previewer_theme~theme.96782c7b6e34f730c329.css" + }, + "css/zip_css.020009a67c87b6f0496f.css": { + "name": "css/zip_css.020009a67c87b6f0496f.css", + "path": "/invenio/instance/static/dist/css/zip_css.020009a67c87b6f0496f.css", + "publicPath": "/static/dist/css/zip_css.020009a67c87b6f0496f.css" + }, + "css/zip_css.3d4504b43b600f573196.css": { + "name": "css/zip_css.3d4504b43b600f573196.css", + "path": "/invenio/instance/static/dist/css/zip_css.3d4504b43b600f573196.css", + "publicPath": "/static/dist/css/zip_css.3d4504b43b600f573196.css" + }, + "fonts/brand-icons.278156e.woff2": { + "name": "fonts/brand-icons.278156e.woff2", + "path": "/invenio/instance/static/dist/fonts/brand-icons.278156e.woff2", + "publicPath": "/static/dist/fonts/brand-icons.278156e.woff2" + }, + "fonts/brand-icons.65a2fb6.ttf": { + "name": "fonts/brand-icons.65a2fb6.ttf", + "path": "/invenio/instance/static/dist/fonts/brand-icons.65a2fb6.ttf", + "publicPath": "/static/dist/fonts/brand-icons.65a2fb6.ttf" + }, + "fonts/brand-icons.cac87dc.woff": { + "name": "fonts/brand-icons.cac87dc.woff", + "path": "/invenio/instance/static/dist/fonts/brand-icons.cac87dc.woff", + "publicPath": "/static/dist/fonts/brand-icons.cac87dc.woff" + }, + "fonts/brand-icons.d68fa3e.eot": { + "name": "fonts/brand-icons.d68fa3e.eot", + "path": "/invenio/instance/static/dist/fonts/brand-icons.d68fa3e.eot", + "publicPath": "/static/dist/fonts/brand-icons.d68fa3e.eot" + }, + "fonts/icons.38c6d8b.woff2": { + "name": "fonts/icons.38c6d8b.woff2", + "path": "/invenio/instance/static/dist/fonts/icons.38c6d8b.woff2", + "publicPath": "/static/dist/fonts/icons.38c6d8b.woff2" + }, + "fonts/icons.425399f.woff": { + "name": "fonts/icons.425399f.woff", + "path": "/invenio/instance/static/dist/fonts/icons.425399f.woff", + "publicPath": "/static/dist/fonts/icons.425399f.woff" + }, + "fonts/icons.a01e3f2.eot": { + "name": "fonts/icons.a01e3f2.eot", + "path": "/invenio/instance/static/dist/fonts/icons.a01e3f2.eot", + "publicPath": "/static/dist/fonts/icons.a01e3f2.eot" + }, + "fonts/icons.c656b8c.ttf": { + "name": "fonts/icons.c656b8c.ttf", + "path": "/invenio/instance/static/dist/fonts/icons.c656b8c.ttf", + "publicPath": "/static/dist/fonts/icons.c656b8c.ttf" + }, + "fonts/Lato-Bold.21b3848.woff2": { + "name": "fonts/Lato-Bold.21b3848.woff2", + "path": "/invenio/instance/static/dist/fonts/Lato-Bold.21b3848.woff2", + "publicPath": "/static/dist/fonts/Lato-Bold.21b3848.woff2" + }, + "fonts/Lato-Bold.825d6d7.eot": { + "name": "fonts/Lato-Bold.825d6d7.eot", + "path": "/invenio/instance/static/dist/fonts/Lato-Bold.825d6d7.eot", + "publicPath": "/static/dist/fonts/Lato-Bold.825d6d7.eot" + }, + "fonts/Lato-Bold.89b6180.woff": { + "name": "fonts/Lato-Bold.89b6180.woff", + "path": "/invenio/instance/static/dist/fonts/Lato-Bold.89b6180.woff", + "publicPath": "/static/dist/fonts/Lato-Bold.89b6180.woff" + }, + "fonts/Lato-Bold.8acc961.ttf": { + "name": "fonts/Lato-Bold.8acc961.ttf", + "path": "/invenio/instance/static/dist/fonts/Lato-Bold.8acc961.ttf", + "publicPath": "/static/dist/fonts/Lato-Bold.8acc961.ttf" + }, + "fonts/Lato-BoldItalic.3e6b998.woff": { + "name": "fonts/Lato-BoldItalic.3e6b998.woff", + "path": "/invenio/instance/static/dist/fonts/Lato-BoldItalic.3e6b998.woff", + "publicPath": "/static/dist/fonts/Lato-BoldItalic.3e6b998.woff" + }, + "fonts/Lato-BoldItalic.50fe8d1.ttf": { + "name": "fonts/Lato-BoldItalic.50fe8d1.ttf", + "path": "/invenio/instance/static/dist/fonts/Lato-BoldItalic.50fe8d1.ttf", + "publicPath": "/static/dist/fonts/Lato-BoldItalic.50fe8d1.ttf" + }, + "fonts/Lato-BoldItalic.add7906.eot": { + "name": "fonts/Lato-BoldItalic.add7906.eot", + "path": "/invenio/instance/static/dist/fonts/Lato-BoldItalic.add7906.eot", + "publicPath": "/static/dist/fonts/Lato-BoldItalic.add7906.eot" + }, + "fonts/Lato-BoldItalic.e48918f.woff2": { + "name": "fonts/Lato-BoldItalic.e48918f.woff2", + "path": "/invenio/instance/static/dist/fonts/Lato-BoldItalic.e48918f.woff2", + "publicPath": "/static/dist/fonts/Lato-BoldItalic.e48918f.woff2" + }, + "fonts/Lato-Italic.2269469.ttf": { + "name": "fonts/Lato-Italic.2269469.ttf", + "path": "/invenio/instance/static/dist/fonts/Lato-Italic.2269469.ttf", + "publicPath": "/static/dist/fonts/Lato-Italic.2269469.ttf" + }, + "fonts/Lato-Italic.2f91a4b.eot": { + "name": "fonts/Lato-Italic.2f91a4b.eot", + "path": "/invenio/instance/static/dist/fonts/Lato-Italic.2f91a4b.eot", + "publicPath": "/static/dist/fonts/Lato-Italic.2f91a4b.eot" + }, + "fonts/Lato-Italic.62a9c83.woff": { + "name": "fonts/Lato-Italic.62a9c83.woff", + "path": "/invenio/instance/static/dist/fonts/Lato-Italic.62a9c83.woff", + "publicPath": "/static/dist/fonts/Lato-Italic.62a9c83.woff" + }, + "fonts/Lato-Italic.bb5de40.woff2": { + "name": "fonts/Lato-Italic.bb5de40.woff2", + "path": "/invenio/instance/static/dist/fonts/Lato-Italic.bb5de40.woff2", + "publicPath": "/static/dist/fonts/Lato-Italic.bb5de40.woff2" + }, + "fonts/Lato-Regular.19df47b.eot": { + "name": "fonts/Lato-Regular.19df47b.eot", + "path": "/invenio/instance/static/dist/fonts/Lato-Regular.19df47b.eot", + "publicPath": "/static/dist/fonts/Lato-Regular.19df47b.eot" + }, + "fonts/Lato-Regular.1d2ca94.woff": { + "name": "fonts/Lato-Regular.1d2ca94.woff", + "path": "/invenio/instance/static/dist/fonts/Lato-Regular.1d2ca94.woff", + "publicPath": "/static/dist/fonts/Lato-Regular.1d2ca94.woff" + }, + "fonts/Lato-Regular.75614cf.woff2": { + "name": "fonts/Lato-Regular.75614cf.woff2", + "path": "/invenio/instance/static/dist/fonts/Lato-Regular.75614cf.woff2", + "publicPath": "/static/dist/fonts/Lato-Regular.75614cf.woff2" + }, + "fonts/Lato-Regular.bb14dc8.ttf": { + "name": "fonts/Lato-Regular.bb14dc8.ttf", + "path": "/invenio/instance/static/dist/fonts/Lato-Regular.bb14dc8.ttf", + "publicPath": "/static/dist/fonts/Lato-Regular.bb14dc8.ttf" + }, + "fonts/outline-icons.5367103.ttf": { + "name": "fonts/outline-icons.5367103.ttf", + "path": "/invenio/instance/static/dist/fonts/outline-icons.5367103.ttf", + "publicPath": "/static/dist/fonts/outline-icons.5367103.ttf" + }, + "fonts/outline-icons.687a499.woff2": { + "name": "fonts/outline-icons.687a499.woff2", + "path": "/invenio/instance/static/dist/fonts/outline-icons.687a499.woff2", + "publicPath": "/static/dist/fonts/outline-icons.687a499.woff2" + }, + "fonts/outline-icons.752905f.eot": { + "name": "fonts/outline-icons.752905f.eot", + "path": "/invenio/instance/static/dist/fonts/outline-icons.752905f.eot", + "publicPath": "/static/dist/fonts/outline-icons.752905f.eot" + }, + "fonts/outline-icons.ddae9b1.woff": { + "name": "fonts/outline-icons.ddae9b1.woff", + "path": "/invenio/instance/static/dist/fonts/outline-icons.ddae9b1.woff", + "publicPath": "/static/dist/fonts/outline-icons.ddae9b1.woff" + }, + "img/brand-icons.6729d29.svg": { + "name": "img/brand-icons.6729d29.svg", + "path": "/invenio/instance/static/dist/img/brand-icons.6729d29.svg", + "publicPath": "/static/dist/img/brand-icons.6729d29.svg" + }, + "img/flags.99f63ae.png": { + "name": "img/flags.99f63ae.png", + "path": "/invenio/instance/static/dist/img/flags.99f63ae.png", + "publicPath": "/static/dist/img/flags.99f63ae.png" + }, + "img/icons.62d9dae.svg": { + "name": "img/icons.62d9dae.svg", + "path": "/invenio/instance/static/dist/img/icons.62d9dae.svg", + "publicPath": "/static/dist/img/icons.62d9dae.svg" + }, + "img/outline-icons.9c4845b.svg": { + "name": "img/outline-icons.9c4845b.svg", + "path": "/invenio/instance/static/dist/img/outline-icons.9c4845b.svg", + "publicPath": "/static/dist/img/outline-icons.9c4845b.svg" + }, + "js/0.f0b23abc5a3b7894b82c.js": { + "name": "js/0.f0b23abc5a3b7894b82c.js", + "path": "/invenio/instance/static/dist/js/0.f0b23abc5a3b7894b82c.js", + "publicPath": "/static/dist/js/0.f0b23abc5a3b7894b82c.js" + }, + "js/adminlte.42a924dd510a5e51b979.js": { + "name": "js/adminlte.42a924dd510a5e51b979.js", + "path": "/invenio/instance/static/dist/js/adminlte.42a924dd510a5e51b979.js", + "publicPath": "/static/dist/js/adminlte.42a924dd510a5e51b979.js" + }, + "js/adminlte.b8dba7c95ea7a702e056.js": { + "name": "js/adminlte.b8dba7c95ea7a702e056.js", + "path": "/invenio/instance/static/dist/js/adminlte.b8dba7c95ea7a702e056.js", + "publicPath": "/static/dist/js/adminlte.b8dba7c95ea7a702e056.js" + }, + "js/base-admin-theme.469b511face6ed650f82.js": { + "name": "js/base-admin-theme.469b511face6ed650f82.js", + "path": "/invenio/instance/static/dist/js/base-admin-theme.469b511face6ed650f82.js", + "publicPath": "/static/dist/js/base-admin-theme.469b511face6ed650f82.js" + }, + "js/base-admin-theme.4b122d5ea696062f654a.js": { + "name": "js/base-admin-theme.4b122d5ea696062f654a.js", + "path": "/invenio/instance/static/dist/js/base-admin-theme.4b122d5ea696062f654a.js", + "publicPath": "/static/dist/js/base-admin-theme.4b122d5ea696062f654a.js" + }, + "js/base.109e805b66010b3ac6f2.js": { + "name": "js/base.109e805b66010b3ac6f2.js", + "path": "/invenio/instance/static/dist/js/base.109e805b66010b3ac6f2.js", + "publicPath": "/static/dist/js/base.109e805b66010b3ac6f2.js" + }, + "js/base.9d47e96f9fb3514286ce.js": { + "name": "js/base.9d47e96f9fb3514286ce.js", + "path": "/invenio/instance/static/dist/js/base.9d47e96f9fb3514286ce.js", + "publicPath": "/static/dist/js/base.9d47e96f9fb3514286ce.js" + }, + "js/bottom_css.559c8ab2c8dd00a6888e.js": { + "name": "js/bottom_css.559c8ab2c8dd00a6888e.js", + "path": "/invenio/instance/static/dist/js/bottom_css.559c8ab2c8dd00a6888e.js", + "publicPath": "/static/dist/js/bottom_css.559c8ab2c8dd00a6888e.js" + }, + "js/bottom_css.c7def77184aad651320f.js": { + "name": "js/bottom_css.c7def77184aad651320f.js", + "path": "/invenio/instance/static/dist/js/bottom_css.c7def77184aad651320f.js", + "publicPath": "/static/dist/js/bottom_css.c7def77184aad651320f.js" + }, + "js/bottom_js.28a4660195d304e6d53e.js": { + "name": "js/bottom_js.28a4660195d304e6d53e.js", + "path": "/invenio/instance/static/dist/js/bottom_js.28a4660195d304e6d53e.js", + "publicPath": "/static/dist/js/bottom_js.28a4660195d304e6d53e.js" + }, + "js/bottom_js.a408d1a120e9055464ac.js": { + "name": "js/bottom_js.a408d1a120e9055464ac.js", + "path": "/invenio/instance/static/dist/js/bottom_js.a408d1a120e9055464ac.js", + "publicPath": "/static/dist/js/bottom_js.a408d1a120e9055464ac.js" + }, + "js/d3_csv.75e5c9e5269671473b80.js": { + "name": "js/d3_csv.75e5c9e5269671473b80.js", + "path": "/invenio/instance/static/dist/js/d3_csv.75e5c9e5269671473b80.js", + "publicPath": "/static/dist/js/d3_csv.75e5c9e5269671473b80.js" + }, + "js/d3_csv.f7e63bb90faea4725332.js": { + "name": "js/d3_csv.f7e63bb90faea4725332.js", + "path": "/invenio/instance/static/dist/js/d3_csv.f7e63bb90faea4725332.js", + "publicPath": "/static/dist/js/d3_csv.f7e63bb90faea4725332.js" + }, + "js/fullscreen_js.e3bb6fe1bc026c6bcc0a.js": { + "name": "js/fullscreen_js.e3bb6fe1bc026c6bcc0a.js", + "path": "/invenio/instance/static/dist/js/fullscreen_js.e3bb6fe1bc026c6bcc0a.js", + "publicPath": "/static/dist/js/fullscreen_js.e3bb6fe1bc026c6bcc0a.js" + }, + "js/i18n_app.0c4c0993bdaa6a4fa94e.js": { + "name": "js/i18n_app.0c4c0993bdaa6a4fa94e.js", + "path": "/invenio/instance/static/dist/js/i18n_app.0c4c0993bdaa6a4fa94e.js", + "publicPath": "/static/dist/js/i18n_app.0c4c0993bdaa6a4fa94e.js" + }, + "js/i18n_app.f9a16803dd05400bd0f2.js": { + "name": "js/i18n_app.f9a16803dd05400bd0f2.js", + "path": "/invenio/instance/static/dist/js/i18n_app.f9a16803dd05400bd0f2.js", + "publicPath": "/static/dist/js/i18n_app.f9a16803dd05400bd0f2.js" + }, + "js/invenio_search_ui_app.3a229e7520cb83507459.js": { + "name": "js/invenio_search_ui_app.3a229e7520cb83507459.js", + "path": "/invenio/instance/static/dist/js/invenio_search_ui_app.3a229e7520cb83507459.js", + "publicPath": "/static/dist/js/invenio_search_ui_app.3a229e7520cb83507459.js" + }, + "js/invenio-administration-create.12b08625af77e0c1e5d2.js": { + "name": "js/invenio-administration-create.12b08625af77e0c1e5d2.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-create.12b08625af77e0c1e5d2.js", + "publicPath": "/static/dist/js/invenio-administration-create.12b08625af77e0c1e5d2.js" + }, + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js": { + "name": "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "publicPath": "/static/dist/js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js" + }, + "js/invenio-administration-details.4d65c7f63cebb416f887.js": { + "name": "js/invenio-administration-details.4d65c7f63cebb416f887.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-details.4d65c7f63cebb416f887.js", + "publicPath": "/static/dist/js/invenio-administration-details.4d65c7f63cebb416f887.js" + }, + "js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js": { + "name": "js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js", + "publicPath": "/static/dist/js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js" + }, + "js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js": { + "name": "js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js", + "publicPath": "/static/dist/js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js" + }, + "js/invenio-administration-edit.e004ee5710fb8d22b10d.js": { + "name": "js/invenio-administration-edit.e004ee5710fb8d22b10d.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-edit.e004ee5710fb8d22b10d.js", + "publicPath": "/static/dist/js/invenio-administration-edit.e004ee5710fb8d22b10d.js" + }, + "js/invenio-administration-search.abe875852d9b3340742a.js": { + "name": "js/invenio-administration-search.abe875852d9b3340742a.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-search.abe875852d9b3340742a.js", + "publicPath": "/static/dist/js/invenio-administration-search.abe875852d9b3340742a.js" + }, + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js": { + "name": "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js", + "publicPath": "/static/dist/js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js" + }, + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js": { + "name": "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "path": "/invenio/instance/static/dist/js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "publicPath": "/static/dist/js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js" + }, + "js/invenio-communities-admin-featured.b3183bafa1129ccee058.js": { + "name": "js/invenio-communities-admin-featured.b3183bafa1129ccee058.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-admin-featured.b3183bafa1129ccee058.js", + "publicPath": "/static/dist/js/invenio-communities-admin-featured.b3183bafa1129ccee058.js" + }, + "js/invenio-communities-admin-featured~invenio-communities-admin-search.34e33317cc55856bdd80.js": { + "name": "js/invenio-communities-admin-featured~invenio-communities-admin-search.34e33317cc55856bdd80.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-admin-featured~invenio-communities-admin-search.34e33317cc55856bdd80.js", + "publicPath": "/static/dist/js/invenio-communities-admin-featured~invenio-communities-admin-search.34e33317cc55856bdd80.js" + }, + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js": { + "name": "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "publicPath": "/static/dist/js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js" + }, + "js/invenio-communities-admin-search.a861c1c50417e54b78f8.js": { + "name": "js/invenio-communities-admin-search.a861c1c50417e54b78f8.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-admin-search.a861c1c50417e54b78f8.js", + "publicPath": "/static/dist/js/invenio-communities-admin-search.a861c1c50417e54b78f8.js" + }, + "js/invenio-communities-carousel.37197bcd4b7ff52118a5.js": { + "name": "js/invenio-communities-carousel.37197bcd4b7ff52118a5.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-carousel.37197bcd4b7ff52118a5.js", + "publicPath": "/static/dist/js/invenio-communities-carousel.37197bcd4b7ff52118a5.js" + }, + "js/invenio-communities-details-search.c911e2f28076f1b5fa96.js": { + "name": "js/invenio-communities-details-search.c911e2f28076f1b5fa96.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-details-search.c911e2f28076f1b5fa96.js", + "publicPath": "/static/dist/js/invenio-communities-details-search.c911e2f28076f1b5fa96.js" + }, + "js/invenio-communities-featured.856d2ee24ba69bcc5fb1.js": { + "name": "js/invenio-communities-featured.856d2ee24ba69bcc5fb1.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-featured.856d2ee24ba69bcc5fb1.js", + "publicPath": "/static/dist/js/invenio-communities-featured.856d2ee24ba69bcc5fb1.js" + }, + "js/invenio-communities-frontpage.757287079172672a7b02.js": { + "name": "js/invenio-communities-frontpage.757287079172672a7b02.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-frontpage.757287079172672a7b02.js", + "publicPath": "/static/dist/js/invenio-communities-frontpage.757287079172672a7b02.js" + }, + "js/invenio-communities-invitations.ef4646bff64a9d376267.js": { + "name": "js/invenio-communities-invitations.ef4646bff64a9d376267.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-invitations.ef4646bff64a9d376267.js", + "publicPath": "/static/dist/js/invenio-communities-invitations.ef4646bff64a9d376267.js" + }, + "js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js": { + "name": "js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js", + "publicPath": "/static/dist/js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js" + }, + "js/invenio-communities-invitations~invenio-communities-requests.ff051d9573313b766adc.js": { + "name": "js/invenio-communities-invitations~invenio-communities-requests.ff051d9573313b766adc.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-invitations~invenio-communities-requests.ff051d9573313b766adc.js", + "publicPath": "/static/dist/js/invenio-communities-invitations~invenio-communities-requests.ff051d9573313b766adc.js" + }, + "js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js": { + "name": "js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js", + "publicPath": "/static/dist/js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js" + }, + "js/invenio-communities-members-manager.3363b397a7dd2b1c3550.js": { + "name": "js/invenio-communities-members-manager.3363b397a7dd2b1c3550.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-members-manager.3363b397a7dd2b1c3550.js", + "publicPath": "/static/dist/js/invenio-communities-members-manager.3363b397a7dd2b1c3550.js" + }, + "js/invenio-communities-members-public.6e9bc7941e991dbdb2f8.js": { + "name": "js/invenio-communities-members-public.6e9bc7941e991dbdb2f8.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-members-public.6e9bc7941e991dbdb2f8.js", + "publicPath": "/static/dist/js/invenio-communities-members-public.6e9bc7941e991dbdb2f8.js" + }, + "js/invenio-communities-members.41bc0c3eec186652b95f.js": { + "name": "js/invenio-communities-members.41bc0c3eec186652b95f.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-members.41bc0c3eec186652b95f.js", + "publicPath": "/static/dist/js/invenio-communities-members.41bc0c3eec186652b95f.js" + }, + "js/invenio-communities-members~invenio-communities-members-manager.d7b3fb52444c0adc7d33.js": { + "name": "js/invenio-communities-members~invenio-communities-members-manager.d7b3fb52444c0adc7d33.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-members~invenio-communities-members-manager.d7b3fb52444c0adc7d33.js", + "publicPath": "/static/dist/js/invenio-communities-members~invenio-communities-members-manager.d7b3fb52444c0adc7d33.js" + }, + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js": { + "name": "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js", + "publicPath": "/static/dist/js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js" + }, + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js": { + "name": "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "publicPath": "/static/dist/js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js" + }, + "js/invenio-communities-new.461f7a1b08f9ff46a99e.js": { + "name": "js/invenio-communities-new.461f7a1b08f9ff46a99e.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-new.461f7a1b08f9ff46a99e.js", + "publicPath": "/static/dist/js/invenio-communities-new.461f7a1b08f9ff46a99e.js" + }, + "js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js": { + "name": "js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js", + "publicPath": "/static/dist/js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js" + }, + "js/invenio-communities-privileges.f10b9e16a55c32215031.js": { + "name": "js/invenio-communities-privileges.f10b9e16a55c32215031.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-privileges.f10b9e16a55c32215031.js", + "publicPath": "/static/dist/js/invenio-communities-privileges.f10b9e16a55c32215031.js" + }, + "js/invenio-communities-profile.d5c24ea5a8ffd4658d35.js": { + "name": "js/invenio-communities-profile.d5c24ea5a8ffd4658d35.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-profile.d5c24ea5a8ffd4658d35.js", + "publicPath": "/static/dist/js/invenio-communities-profile.d5c24ea5a8ffd4658d35.js" + }, + "js/invenio-communities-requests.a7e5d7c106912122946b.js": { + "name": "js/invenio-communities-requests.a7e5d7c106912122946b.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-requests.a7e5d7c106912122946b.js", + "publicPath": "/static/dist/js/invenio-communities-requests.a7e5d7c106912122946b.js" + }, + "js/invenio-communities-search.9ac30fd8c894a16f918b.js": { + "name": "js/invenio-communities-search.9ac30fd8c894a16f918b.js", + "path": "/invenio/instance/static/dist/js/invenio-communities-search.9ac30fd8c894a16f918b.js", + "publicPath": "/static/dist/js/invenio-communities-search.9ac30fd8c894a16f918b.js" + }, + "js/invenio-requests-base.06522baeacd35f179168.js": { + "name": "js/invenio-requests-base.06522baeacd35f179168.js", + "path": "/invenio/instance/static/dist/js/invenio-requests-base.06522baeacd35f179168.js", + "publicPath": "/static/dist/js/invenio-requests-base.06522baeacd35f179168.js" + }, + "js/manifest.4695496aebf9efb0cd82.js": { + "name": "js/manifest.4695496aebf9efb0cd82.js", + "path": "/invenio/instance/static/dist/js/manifest.4695496aebf9efb0cd82.js", + "publicPath": "/static/dist/js/manifest.4695496aebf9efb0cd82.js" + }, + "js/oarepo_ui_forms.b28a0864bf143cb9a055.js": { + "name": "js/oarepo_ui_forms.b28a0864bf143cb9a055.js", + "path": "/invenio/instance/static/dist/js/oarepo_ui_forms.b28a0864bf143cb9a055.js", + "publicPath": "/static/dist/js/oarepo_ui_forms.b28a0864bf143cb9a055.js" + }, + "js/oarepo_ui_forms~oarepo_vocabularies_forms.9ae700f302de2931ba77.js": { + "name": "js/oarepo_ui_forms~oarepo_vocabularies_forms.9ae700f302de2931ba77.js", + "path": "/invenio/instance/static/dist/js/oarepo_ui_forms~oarepo_vocabularies_forms.9ae700f302de2931ba77.js", + "publicPath": "/static/dist/js/oarepo_ui_forms~oarepo_vocabularies_forms.9ae700f302de2931ba77.js" + }, + "js/oarepo_ui_search.ad60aadf85ba3fff286d.js": { + "name": "js/oarepo_ui_search.ad60aadf85ba3fff286d.js", + "path": "/invenio/instance/static/dist/js/oarepo_ui_search.ad60aadf85ba3fff286d.js", + "publicPath": "/static/dist/js/oarepo_ui_search.ad60aadf85ba3fff286d.js" + }, + "js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js": { + "name": "js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js", + "path": "/invenio/instance/static/dist/js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js", + "publicPath": "/static/dist/js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js" + }, + "js/oarepo_ui.7724d779e1a8a681f30a.js": { + "name": "js/oarepo_ui.7724d779e1a8a681f30a.js", + "path": "/invenio/instance/static/dist/js/oarepo_ui.7724d779e1a8a681f30a.js", + "publicPath": "/static/dist/js/oarepo_ui.7724d779e1a8a681f30a.js" + }, + "js/oarepo_vocabularies_detail.d4cf8fb17558171be139.js": { + "name": "js/oarepo_vocabularies_detail.d4cf8fb17558171be139.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_detail.d4cf8fb17558171be139.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_detail.d4cf8fb17558171be139.js" + }, + "js/oarepo_vocabularies_detail~oarepo_vocabularies_search.71bcec28303ca863314b.js": { + "name": "js/oarepo_vocabularies_detail~oarepo_vocabularies_search.71bcec28303ca863314b.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_detail~oarepo_vocabularies_search.71bcec28303ca863314b.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_detail~oarepo_vocabularies_search.71bcec28303ca863314b.js" + }, + "js/oarepo_vocabularies_forms.127ff3203acdc2611b74.js": { + "name": "js/oarepo_vocabularies_forms.127ff3203acdc2611b74.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.127ff3203acdc2611b74.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.127ff3203acdc2611b74.js" + }, + "js/oarepo_vocabularies_forms.207c2f3bdc23e89f1d7d.js": { + "name": "js/oarepo_vocabularies_forms.207c2f3bdc23e89f1d7d.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.207c2f3bdc23e89f1d7d.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.207c2f3bdc23e89f1d7d.js" + }, + "js/oarepo_vocabularies_forms.4edc9ea27840c56b5ab0.js": { + "name": "js/oarepo_vocabularies_forms.4edc9ea27840c56b5ab0.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.4edc9ea27840c56b5ab0.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.4edc9ea27840c56b5ab0.js" + }, + "js/oarepo_vocabularies_forms.5c5575fe59e2e1b956c6.js": { + "name": "js/oarepo_vocabularies_forms.5c5575fe59e2e1b956c6.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.5c5575fe59e2e1b956c6.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.5c5575fe59e2e1b956c6.js" + }, + "js/oarepo_vocabularies_forms.664a50ee3bf01863db9c.js": { + "name": "js/oarepo_vocabularies_forms.664a50ee3bf01863db9c.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.664a50ee3bf01863db9c.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.664a50ee3bf01863db9c.js" + }, + "js/oarepo_vocabularies_forms.6bbfc79fb1a2e55b277c.js": { + "name": "js/oarepo_vocabularies_forms.6bbfc79fb1a2e55b277c.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.6bbfc79fb1a2e55b277c.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.6bbfc79fb1a2e55b277c.js" + }, + "js/oarepo_vocabularies_forms.789972720f36780e2ea1.js": { + "name": "js/oarepo_vocabularies_forms.789972720f36780e2ea1.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.789972720f36780e2ea1.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.789972720f36780e2ea1.js" + }, + "js/oarepo_vocabularies_forms.7a381c4fd36a4c0a2139.js": { + "name": "js/oarepo_vocabularies_forms.7a381c4fd36a4c0a2139.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.7a381c4fd36a4c0a2139.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.7a381c4fd36a4c0a2139.js" + }, + "js/oarepo_vocabularies_forms.7b4d28046d21e87908cd.js": { + "name": "js/oarepo_vocabularies_forms.7b4d28046d21e87908cd.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.7b4d28046d21e87908cd.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.7b4d28046d21e87908cd.js" + }, + "js/oarepo_vocabularies_forms.8c8a4ab4d8fe1d65eef9.js": { + "name": "js/oarepo_vocabularies_forms.8c8a4ab4d8fe1d65eef9.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.8c8a4ab4d8fe1d65eef9.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.8c8a4ab4d8fe1d65eef9.js" + }, + "js/oarepo_vocabularies_forms.a50bcf4b474e704f7309.js": { + "name": "js/oarepo_vocabularies_forms.a50bcf4b474e704f7309.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.a50bcf4b474e704f7309.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.a50bcf4b474e704f7309.js" + }, + "js/oarepo_vocabularies_forms.ac990f7983702c60f67e.js": { + "name": "js/oarepo_vocabularies_forms.ac990f7983702c60f67e.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.ac990f7983702c60f67e.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.ac990f7983702c60f67e.js" + }, + "js/oarepo_vocabularies_forms.b5a54cadad8b156c498f.js": { + "name": "js/oarepo_vocabularies_forms.b5a54cadad8b156c498f.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.b5a54cadad8b156c498f.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.b5a54cadad8b156c498f.js" + }, + "js/oarepo_vocabularies_forms.c07feac8a96087fe887d.js": { + "name": "js/oarepo_vocabularies_forms.c07feac8a96087fe887d.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.c07feac8a96087fe887d.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.c07feac8a96087fe887d.js" + }, + "js/oarepo_vocabularies_forms.c2355e484fe67215446a.js": { + "name": "js/oarepo_vocabularies_forms.c2355e484fe67215446a.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.c2355e484fe67215446a.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.c2355e484fe67215446a.js" + }, + "js/oarepo_vocabularies_forms.ce27f236ebe46c7c821a.js": { + "name": "js/oarepo_vocabularies_forms.ce27f236ebe46c7c821a.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.ce27f236ebe46c7c821a.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.ce27f236ebe46c7c821a.js" + }, + "js/oarepo_vocabularies_forms.d1b8ac09e17b634c8b3d.js": { + "name": "js/oarepo_vocabularies_forms.d1b8ac09e17b634c8b3d.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.d1b8ac09e17b634c8b3d.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.d1b8ac09e17b634c8b3d.js" + }, + "js/oarepo_vocabularies_forms.e0001f00ced33092da3f.js": { + "name": "js/oarepo_vocabularies_forms.e0001f00ced33092da3f.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.e0001f00ced33092da3f.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.e0001f00ced33092da3f.js" + }, + "js/oarepo_vocabularies_forms.e75cdac977465ba77131.js": { + "name": "js/oarepo_vocabularies_forms.e75cdac977465ba77131.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_forms.e75cdac977465ba77131.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_forms.e75cdac977465ba77131.js" + }, + "js/oarepo_vocabularies_search.3efc909a421d69b44b16.js": { + "name": "js/oarepo_vocabularies_search.3efc909a421d69b44b16.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_search.3efc909a421d69b44b16.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_search.3efc909a421d69b44b16.js" + }, + "js/oarepo_vocabularies_ui_components.26409fd60ecb8ccebb18.js": { + "name": "js/oarepo_vocabularies_ui_components.26409fd60ecb8ccebb18.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_ui_components.26409fd60ecb8ccebb18.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_ui_components.26409fd60ecb8ccebb18.js" + }, + "js/oarepo_vocabularies_ui_components.de4d3f4261ebc8cbf950.js": { + "name": "js/oarepo_vocabularies_ui_components.de4d3f4261ebc8cbf950.js", + "path": "/invenio/instance/static/dist/js/oarepo_vocabularies_ui_components.de4d3f4261ebc8cbf950.js", + "publicPath": "/static/dist/js/oarepo_vocabularies_ui_components.de4d3f4261ebc8cbf950.js" + }, + "js/open_pdf.2837432f2839645f9914.js": { + "name": "js/open_pdf.2837432f2839645f9914.js", + "path": "/invenio/instance/static/dist/js/open_pdf.2837432f2839645f9914.js", + "publicPath": "/static/dist/js/open_pdf.2837432f2839645f9914.js" + }, + "js/pdfjs_css.c3921995a5cd9553c53e.js": { + "name": "js/pdfjs_css.c3921995a5cd9553c53e.js", + "path": "/invenio/instance/static/dist/js/pdfjs_css.c3921995a5cd9553c53e.js", + "publicPath": "/static/dist/js/pdfjs_css.c3921995a5cd9553c53e.js" + }, + "js/pdfjs_css.c5058d4cb87e7e7e7e45.js": { + "name": "js/pdfjs_css.c5058d4cb87e7e7e7e45.js", + "path": "/invenio/instance/static/dist/js/pdfjs_css.c5058d4cb87e7e7e7e45.js", + "publicPath": "/static/dist/js/pdfjs_css.c5058d4cb87e7e7e7e45.js" + }, + "js/pdfjs_js.a9a7c168e4cbfe05f754.js": { + "name": "js/pdfjs_js.a9a7c168e4cbfe05f754.js", + "path": "/invenio/instance/static/dist/js/pdfjs_js.a9a7c168e4cbfe05f754.js", + "publicPath": "/static/dist/js/pdfjs_js.a9a7c168e4cbfe05f754.js" + }, + "js/previewer_theme.293dd3c431dd27b06f08.js": { + "name": "js/previewer_theme.293dd3c431dd27b06f08.js", + "path": "/invenio/instance/static/dist/js/previewer_theme.293dd3c431dd27b06f08.js", + "publicPath": "/static/dist/js/previewer_theme.293dd3c431dd27b06f08.js" + }, + "js/previewer_theme.af08a70dcfdb468863e1.js": { + "name": "js/previewer_theme.af08a70dcfdb468863e1.js", + "path": "/invenio/instance/static/dist/js/previewer_theme.af08a70dcfdb468863e1.js", + "publicPath": "/static/dist/js/previewer_theme.af08a70dcfdb468863e1.js" + }, + "js/prism_css.22c9656ce42c3a49d582.js": { + "name": "js/prism_css.22c9656ce42c3a49d582.js", + "path": "/invenio/instance/static/dist/js/prism_css.22c9656ce42c3a49d582.js", + "publicPath": "/static/dist/js/prism_css.22c9656ce42c3a49d582.js" + }, + "js/prism_css.f6bf7f8fde5425f1a6dc.js": { + "name": "js/prism_css.f6bf7f8fde5425f1a6dc.js", + "path": "/invenio/instance/static/dist/js/prism_css.f6bf7f8fde5425f1a6dc.js", + "publicPath": "/static/dist/js/prism_css.f6bf7f8fde5425f1a6dc.js" + }, + "js/prism_js.68de206741bf8e0e49b1.js": { + "name": "js/prism_js.68de206741bf8e0e49b1.js", + "path": "/invenio/instance/static/dist/js/prism_js.68de206741bf8e0e49b1.js", + "publicPath": "/static/dist/js/prism_js.68de206741bf8e0e49b1.js" + }, + "js/simple_image_css.561e05d32df67a9df4c4.js": { + "name": "js/simple_image_css.561e05d32df67a9df4c4.js", + "path": "/invenio/instance/static/dist/js/simple_image_css.561e05d32df67a9df4c4.js", + "publicPath": "/static/dist/js/simple_image_css.561e05d32df67a9df4c4.js" + }, + "js/simple_image_css.8d0b56840c279e774976.js": { + "name": "js/simple_image_css.8d0b56840c279e774976.js", + "path": "/invenio/instance/static/dist/js/simple_image_css.8d0b56840c279e774976.js", + "publicPath": "/static/dist/js/simple_image_css.8d0b56840c279e774976.js" + }, + "js/theme-admin.0ff5897140e434b53d40.js": { + "name": "js/theme-admin.0ff5897140e434b53d40.js", + "path": "/invenio/instance/static/dist/js/theme-admin.0ff5897140e434b53d40.js", + "publicPath": "/static/dist/js/theme-admin.0ff5897140e434b53d40.js" + }, + "js/theme-admin.a9c83de7ffd547a8fef7.js": { + "name": "js/theme-admin.a9c83de7ffd547a8fef7.js", + "path": "/invenio/instance/static/dist/js/theme-admin.a9c83de7ffd547a8fef7.js", + "publicPath": "/static/dist/js/theme-admin.a9c83de7ffd547a8fef7.js" + }, + "js/theme.0a1b1fcdbcecfe21bec9.js": { + "name": "js/theme.0a1b1fcdbcecfe21bec9.js", + "path": "/invenio/instance/static/dist/js/theme.0a1b1fcdbcecfe21bec9.js", + "publicPath": "/static/dist/js/theme.0a1b1fcdbcecfe21bec9.js" + }, + "js/theme.7e75449e2458aa35146e.js": { + "name": "js/theme.7e75449e2458aa35146e.js", + "path": "/invenio/instance/static/dist/js/theme.7e75449e2458aa35146e.js", + "publicPath": "/static/dist/js/theme.7e75449e2458aa35146e.js" + }, + "js/vendors~adminlte.0def173073df55d9729d.js": { + "name": "js/vendors~adminlte.0def173073df55d9729d.js", + "path": "/invenio/instance/static/dist/js/vendors~adminlte.0def173073df55d9729d.js", + "publicPath": "/static/dist/js/vendors~adminlte.0def173073df55d9729d.js" + }, + "js/vendors~adminlte.7dbbf26e15359810b482.js": { + "name": "js/vendors~adminlte.7dbbf26e15359810b482.js", + "path": "/invenio/instance/static/dist/js/vendors~adminlte.7dbbf26e15359810b482.js", + "publicPath": "/static/dist/js/vendors~adminlte.7dbbf26e15359810b482.js" + }, + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js": { + "name": "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "path": "/invenio/instance/static/dist/js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "publicPath": "/static/dist/js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js" + }, + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.e7f1fcc82cb020ad2070.js": { + "name": "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.e7f1fcc82cb020ad2070.js", + "path": "/invenio/instance/static/dist/js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.e7f1fcc82cb020ad2070.js", + "publicPath": "/static/dist/js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.e7f1fcc82cb020ad2070.js" + }, + "js/vendors~d3_csv.9c049b06455aa1f3574a.js": { + "name": "js/vendors~d3_csv.9c049b06455aa1f3574a.js", + "path": "/invenio/instance/static/dist/js/vendors~d3_csv.9c049b06455aa1f3574a.js", + "publicPath": "/static/dist/js/vendors~d3_csv.9c049b06455aa1f3574a.js" + }, + "js/vendors~d3_csv.f5a770bc8e6f5fc3358a.js": { + "name": "js/vendors~d3_csv.f5a770bc8e6f5fc3358a.js", + "path": "/invenio/instance/static/dist/js/vendors~d3_csv.f5a770bc8e6f5fc3358a.js", + "publicPath": "/static/dist/js/vendors~d3_csv.f5a770bc8e6f5fc3358a.js" + }, + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js": { + "name": "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js" + }, + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js": { + "name": "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js" + }, + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js": { + "name": "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js" + }, + "js/vendors~invenio-administration-details.68e4b67a323ee0be345a.js": { + "name": "js/vendors~invenio-administration-details.68e4b67a323ee0be345a.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-details.68e4b67a323ee0be345a.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-details.68e4b67a323ee0be345a.js" + }, + "js/vendors~invenio-administration-edit.57623728e2561684210d.js": { + "name": "js/vendors~invenio-administration-edit.57623728e2561684210d.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-edit.57623728e2561684210d.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-edit.57623728e2561684210d.js" + }, + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js": { + "name": "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js" + }, + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js": { + "name": "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js" + }, + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js": { + "name": "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js" + }, + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js": { + "name": "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js" + }, + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js": { + "name": "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "publicPath": "/static/dist/js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js" + }, + "js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js": { + "name": "js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js", + "publicPath": "/static/dist/js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js" + }, + "js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js": { + "name": "js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js", + "publicPath": "/static/dist/js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js" + }, + "js/vendors~invenio-communities-privileges~invenio-communities-profile.fe62a7845824a9026922.js": { + "name": "js/vendors~invenio-communities-privileges~invenio-communities-profile.fe62a7845824a9026922.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-communities-privileges~invenio-communities-profile.fe62a7845824a9026922.js", + "publicPath": "/static/dist/js/vendors~invenio-communities-privileges~invenio-communities-profile.fe62a7845824a9026922.js" + }, + "js/vendors~invenio-communities-profile.3a346855744e571fc076.js": { + "name": "js/vendors~invenio-communities-profile.3a346855744e571fc076.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-communities-profile.3a346855744e571fc076.js", + "publicPath": "/static/dist/js/vendors~invenio-communities-profile.3a346855744e571fc076.js" + }, + "js/vendors~invenio-communities-profile~oarepo_vocabularies_forms.47ce335f4a316a63c91d.js": { + "name": "js/vendors~invenio-communities-profile~oarepo_vocabularies_forms.47ce335f4a316a63c91d.js", + "path": "/invenio/instance/static/dist/js/vendors~invenio-communities-profile~oarepo_vocabularies_forms.47ce335f4a316a63c91d.js", + "publicPath": "/static/dist/js/vendors~invenio-communities-profile~oarepo_vocabularies_forms.47ce335f4a316a63c91d.js" + }, + "js/vendors~oarepo_ui_forms~oarepo_vocabularies_forms.78fa06a269d54eb5d9aa.js": { + "name": "js/vendors~oarepo_ui_forms~oarepo_vocabularies_forms.78fa06a269d54eb5d9aa.js", + "path": "/invenio/instance/static/dist/js/vendors~oarepo_ui_forms~oarepo_vocabularies_forms.78fa06a269d54eb5d9aa.js", + "publicPath": "/static/dist/js/vendors~oarepo_ui_forms~oarepo_vocabularies_forms.78fa06a269d54eb5d9aa.js" + }, + "js/vendors~pdfjs_js.15011b7f4b2e611aa57a.js": { + "name": "js/vendors~pdfjs_js.15011b7f4b2e611aa57a.js", + "path": "/invenio/instance/static/dist/js/vendors~pdfjs_js.15011b7f4b2e611aa57a.js", + "publicPath": "/static/dist/js/vendors~pdfjs_js.15011b7f4b2e611aa57a.js" + }, + "js/vendors~previewer_theme~theme.ba2deb8c39b0bd1f14f3.js": { + "name": "js/vendors~previewer_theme~theme.ba2deb8c39b0bd1f14f3.js", + "path": "/invenio/instance/static/dist/js/vendors~previewer_theme~theme.ba2deb8c39b0bd1f14f3.js", + "publicPath": "/static/dist/js/vendors~previewer_theme~theme.ba2deb8c39b0bd1f14f3.js" + }, + "js/vendors~previewer_theme~theme.ee93338293bbbc6dbfbd.js": { + "name": "js/vendors~previewer_theme~theme.ee93338293bbbc6dbfbd.js", + "path": "/invenio/instance/static/dist/js/vendors~previewer_theme~theme.ee93338293bbbc6dbfbd.js", + "publicPath": "/static/dist/js/vendors~previewer_theme~theme.ee93338293bbbc6dbfbd.js" + }, + "js/vendors~prism_js.6682fd1a890b9218fd52.js": { + "name": "js/vendors~prism_js.6682fd1a890b9218fd52.js", + "path": "/invenio/instance/static/dist/js/vendors~prism_js.6682fd1a890b9218fd52.js", + "publicPath": "/static/dist/js/vendors~prism_js.6682fd1a890b9218fd52.js" + }, + "js/zip_css.01c6b0ff38bdf04e7efb.js": { + "name": "js/zip_css.01c6b0ff38bdf04e7efb.js", + "path": "/invenio/instance/static/dist/js/zip_css.01c6b0ff38bdf04e7efb.js", + "publicPath": "/static/dist/js/zip_css.01c6b0ff38bdf04e7efb.js" + }, + "js/zip_css.e311b442e1e5e4274a29.js": { + "name": "js/zip_css.e311b442e1e5e4274a29.js", + "path": "/invenio/instance/static/dist/js/zip_css.e311b442e1e5e4274a29.js", + "publicPath": "/static/dist/js/zip_css.e311b442e1e5e4274a29.js" + } + }, + "chunks": { + "adminlte": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "js/vendors~adminlte.7dbbf26e15359810b482.js", + "js/adminlte.42a924dd510a5e51b979.js" + ], + "base": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "js/base.9d47e96f9fb3514286ce.js" + ], + "base-admin-theme": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "js/base-admin-theme.4b122d5ea696062f654a.js" + ], + "bottom_css": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/bottom_css.1b2e27b61142106979cc.css", + "js/bottom_css.c7def77184aad651320f.js" + ], + "bottom_js": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "js/bottom_js.a408d1a120e9055464ac.js" + ], + "d3_csv": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "js/vendors~d3_csv.f5a770bc8e6f5fc3358a.js", + "js/d3_csv.f7e63bb90faea4725332.js" + ], + "fullscreen_js": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/fullscreen_js.e3bb6fe1bc026c6bcc0a.js" + ], + "i18n_app": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "js/i18n_app.0c4c0993bdaa6a4fa94e.js" + ], + "invenio_search_ui_app": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio_search_ui_app.3a229e7520cb83507459.js" + ], + "invenio-administration-create": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "js/invenio-administration-create.12b08625af77e0c1e5d2.js" + ], + "invenio-administration-details": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-details.68e4b67a323ee0be345a.js", + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js", + "js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js", + "js/invenio-administration-details.4d65c7f63cebb416f887.js" + ], + "invenio-administration-edit": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-edit.57623728e2561684210d.js", + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "js/invenio-administration-edit.e004ee5710fb8d22b10d.js" + ], + "invenio-administration-search": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js", + "js/invenio-administration-search.abe875852d9b3340742a.js" + ], + "invenio-communities-admin-featured": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js", + "js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search.34e33317cc55856bdd80.js", + "js/invenio-communities-admin-featured.b3183bafa1129ccee058.js" + ], + "invenio-communities-admin-search": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-administration-create~invenio-administration-details~invenio-administration-edit~invenio-adm~c42839fd.9d0557140c360e30d0ad.js", + "js/invenio-administration-details~invenio-administration-search~invenio-communities-admin-featured~inve~39dbfc21.6f882ffe91620507a036.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search.8bd20d7547e718fd150c.js", + "js/invenio-administration-details~invenio-communities-admin-featured~invenio-communities-admin-search.746e78604f6b773c1a1d.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search.34e33317cc55856bdd80.js", + "js/invenio-communities-admin-search.a861c1c50417e54b78f8.js" + ], + "invenio-communities-carousel": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-communities-carousel.37197bcd4b7ff52118a5.js" + ], + "invenio-communities-details-search": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-details-search.c911e2f28076f1b5fa96.js" + ], + "invenio-communities-featured": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-communities-featured.856d2ee24ba69bcc5fb1.js" + ], + "invenio-communities-frontpage": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/invenio-communities-frontpage.757287079172672a7b02.js" + ], + "invenio-communities-invitations": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js", + "js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js", + "js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js", + "js/invenio-communities-invitations~invenio-communities-requests.ff051d9573313b766adc.js", + "js/invenio-communities-invitations.ef4646bff64a9d376267.js" + ], + "invenio-communities-members": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js", + "js/invenio-communities-members~invenio-communities-members-manager.d7b3fb52444c0adc7d33.js", + "js/invenio-communities-members.41bc0c3eec186652b95f.js" + ], + "invenio-communities-members-manager": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "js/invenio-communities-invitations~invenio-communities-members~invenio-communities-members-manager.c589aeec260850c55680.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js", + "js/invenio-communities-members~invenio-communities-members-manager.d7b3fb52444c0adc7d33.js", + "js/invenio-communities-members-manager.3363b397a7dd2b1c3550.js" + ], + "invenio-communities-members-public": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-members-public.5f2e82f59b019c1841e6.js", + "js/invenio-communities-members-public.6e9bc7941e991dbdb2f8.js" + ], + "invenio-communities-new": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js", + "js/invenio-communities-new.461f7a1b08f9ff46a99e.js" + ], + "invenio-communities-privileges": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-communities-privileges~invenio-communities-profile.fe62a7845824a9026922.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js", + "js/invenio-communities-privileges.f10b9e16a55c32215031.js" + ], + "invenio-communities-profile": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/vendors~invenio-communities-profile~oarepo_vocabularies_forms.47ce335f4a316a63c91d.js", + "js/vendors~invenio-communities-privileges~invenio-communities-profile.fe62a7845824a9026922.js", + "js/vendors~invenio-communities-profile.3a346855744e571fc076.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-communities-members~invenio-communities-members-manager~invenio-communities-new~invenio-comm~0e7746b6.aeab749b2980be9f06ed.js", + "js/invenio-communities-new~invenio-communities-privileges~invenio-communities-profile.968d481cabfbf39553ad.js", + "js/invenio-communities-profile.d5c24ea5a8ffd4658d35.js" + ], + "invenio-communities-requests": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js", + "js/invenio-communities-invitations~invenio-communities-requests.ff051d9573313b766adc.js", + "js/invenio-communities-requests.a7e5d7c106912122946b.js" + ], + "invenio-communities-search": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-communities-admin-featured~invenio-communities-admin-search~invenio-communities-carousel~inv~98c4a9cd.49ab88eedb6b548939bf.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/invenio-communities-search.9ac30fd8c894a16f918b.js" + ], + "invenio-requests-base": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.71782eb9a729b4a1f6dc.js", + "js/invenio-communities-invitations~invenio-communities-requests~invenio-requests-base.7acd261e6dae4dc01ab9.js", + "js/invenio-requests-base.06522baeacd35f179168.js" + ], + "oarepo_ui": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/oarepo_ui.7724d779e1a8a681f30a.js" + ], + "oarepo_ui_forms": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js", + "js/vendors~oarepo_ui_forms~oarepo_vocabularies_forms.78fa06a269d54eb5d9aa.js", + "js/oarepo_ui_forms~oarepo_vocabularies_forms.9ae700f302de2931ba77.js", + "js/oarepo_ui_forms.b28a0864bf143cb9a055.js" + ], + "oarepo_ui_search": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js", + "js/oarepo_ui_search.ad60aadf85ba3fff286d.js" + ], + "oarepo_vocabularies_detail": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js", + "js/oarepo_vocabularies_detail~oarepo_vocabularies_search.71bcec28303ca863314b.js", + "js/oarepo_vocabularies_detail.d4cf8fb17558171be139.js" + ], + "oarepo_vocabularies_forms": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/vendors~invenio-communities-invitations~oarepo_ui_forms~oarepo_vocabularies_forms.fcc18fa787a9246039f1.js", + "js/vendors~oarepo_ui_forms~oarepo_vocabularies_forms.78fa06a269d54eb5d9aa.js", + "js/vendors~invenio-communities-profile~oarepo_vocabularies_forms.47ce335f4a316a63c91d.js", + "js/oarepo_ui_forms~oarepo_vocabularies_forms.9ae700f302de2931ba77.js", + "js/oarepo_vocabularies_forms.8c8a4ab4d8fe1d65eef9.js" + ], + "oarepo_vocabularies_search": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d198f411.e2145fa894f86c01e3d7.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~17a921b5.c30f1f7f67bc72307ecd.js", + "js/vendors~invenio-administration-create~invenio-administration-details~invenio-administration-edit~inv~d50aface.d40bc31e78be5cc33cc4.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6e1ad9b9.1f5e2e3dc72f23eb59e0.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~6fd4a4a2.b15ab95e22d760186475.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~fb2c456e.4a44d9e4d96375c30ee9.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-search~invenio-communities-details-s~e903ca29.bf4d2b11f446a22416e3.js", + "js/invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-search~in~de8835e7.f105cf5d39a5b32ee139.js", + "js/oarepo_ui_search~oarepo_vocabularies_detail~oarepo_vocabularies_search.56df6f65c43f8b0737e3.js", + "js/oarepo_vocabularies_detail~oarepo_vocabularies_search.71bcec28303ca863314b.js", + "js/oarepo_vocabularies_search.3efc909a421d69b44b16.js" + ], + "oarepo_vocabularies_ui_components": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/oarepo_vocabularies_ui_components.22a6dcb4ec850142e289.css", + "js/oarepo_vocabularies_ui_components.de4d3f4261ebc8cbf950.js" + ], + "open_pdf": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/open_pdf.2837432f2839645f9914.js" + ], + "pdfjs_css": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/pdfjs_css.7523441f07ec785e6f0f.css", + "js/pdfjs_css.c5058d4cb87e7e7e7e45.js" + ], + "pdfjs_js": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~invenio-administration-search~invenio-communities-admin-featured~invenio-communities-admin-s~e806c643.e1e1cdf17c63a9995c88.js", + "js/vendors~pdfjs_js.15011b7f4b2e611aa57a.js", + "js/pdfjs_js.a9a7c168e4cbfe05f754.js" + ], + "previewer_theme": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "css/vendors~previewer_theme~theme.96782c7b6e34f730c329.css", + "js/vendors~previewer_theme~theme.ba2deb8c39b0bd1f14f3.js", + "js/previewer_theme.af08a70dcfdb468863e1.js" + ], + "prism_css": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/prism_css.d26348f46347b7751296.css", + "js/prism_css.22c9656ce42c3a49d582.js" + ], + "prism_js": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~prism_js.6682fd1a890b9218fd52.js", + "js/prism_js.68de206741bf8e0e49b1.js" + ], + "simple_image_css": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/simple_image_css.290dcaa3fef4f2b83552.css", + "js/simple_image_css.8d0b56840c279e774976.js" + ], + "theme": [ + "js/manifest.4695496aebf9efb0cd82.js", + "js/vendors~adminlte~base~base-admin-theme~bottom_js~d3_csv~i18n_app~previewer_theme~theme.88caf9afb6e144d288ae.js", + "css/vendors~previewer_theme~theme.96782c7b6e34f730c329.css", + "js/vendors~previewer_theme~theme.ba2deb8c39b0bd1f14f3.js", + "js/theme.7e75449e2458aa35146e.js" + ], + "theme-admin": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/theme-admin.11e5c170f835c367813e.css", + "js/theme-admin.a9c83de7ffd547a8fef7.js" + ], + "zip_css": [ + "js/manifest.4695496aebf9efb0cd82.js", + "css/zip_css.3d4504b43b600f573196.css", + "js/zip_css.01c6b0ff38bdf04e7efb.js" + ] + }, + "publicPath": "/static/dist/", + "error": "ESLintError", + "message": "\n āœ˜ http://eslint.org/docs/rules/no-undef 'error' is not defined \n js/oarepo_vocabularies_ui/form/api/DepositApiClient.js:98:29\n \n\n\nāœ˜ 1 problem (1 error, 0 warnings)\n\n\nErrors:\n 1 http://eslint.org/docs/rules/no-undef" +} \ No newline at end of file diff --git a/tests/test_ui/model.py b/tests/test_ui/model.py new file mode 100644 index 00000000..1d2342dc --- /dev/null +++ b/tests/test_ui/model.py @@ -0,0 +1,90 @@ + +from oarepo_ui.resources import ( + BabelComponent, + RecordsUIResource, + RecordsUIResourceConfig, +) +from oarepo_ui.resources.components import PermissionsComponent +from thesis.resources.records.ui import ThesisUIJSONSerializer + +from oarepo_requests.components import AllowedRequestsComponent + +""" +class ModelRecordIdProvider(RecordIdProviderV2): + pid_type = "rec" + + +class ModelRecord(Record): + index = IndexField("test_record") + model_cls = RecordMetadata + pid = PIDField( + provider=ModelRecordIdProvider, context_cls=PIDFieldContext, create=True + ) + + +class ModelPermissionPolicy(RecordPermissionPolicy): + can_create = [AnyUser(), SystemProcess()] + can_search = [AnyUser(), SystemProcess()] + can_read = [AnyUser(), SystemProcess()] + + +class ModelSchema(ma.Schema): + title = ma.fields.String() + + class Meta: + unknown = ma.INCLUDE + + +class ModelServiceConfig(RecordServiceConfig): + record_cls = ModelRecord + permission_policy_cls = ModelPermissionPolicy + schema = ModelSchema + + url_prefix = "/simple-model" + + @property + def links_item(self): + return { + "self": RecordLink("{+api}%s/{id}" % self.url_prefix), + "ui": RecordLink("{+ui}%s/{id}" % self.url_prefix), + } + + +class ModelService(RecordService): + pass + + +class ModelUISerializer(MarshmallowSerializer): + + def __init__(self): + + super().__init__( + format_serializer_cls=JSONSerializer, + object_schema_cls=ModelSchema, + list_schema_cls=BaseListSchema, + schema_context={"object_key": "ui"}, + ) +""" + + +class ModelUIResourceConfig(RecordsUIResourceConfig): + api_service = ( + "thesis" # must be something included in oarepo, as oarepo is used in tests + ) + + blueprint_name = "thesis" + url_prefix = "/thesis/" + ui_serializer_class = ThesisUIJSONSerializer + templates = { + **RecordsUIResourceConfig.templates, + "detail": {"layout": "test_detail.html", "blocks": {}}, + "search": { + "layout": "test_detail.html", + }, + } + + components = [BabelComponent, PermissionsComponent, AllowedRequestsComponent] + + +class ModelUIResource(RecordsUIResource): + pass diff --git a/tests/test_ui/templates/test_detail.html b/tests/test_ui/templates/test_detail.html new file mode 100644 index 00000000..ba6fd402 --- /dev/null +++ b/tests/test_ui/templates/test_detail.html @@ -0,0 +1,5 @@ +links={{ links }} +available_requests= +{% for request_name, request in allowed_requests.items() %} +{{ request_name }}: {{ request }} +{% endfor %} diff --git a/tests/test_ui/test_ui_resource.py b/tests/test_ui/test_ui_resource.py new file mode 100644 index 00000000..b5efe8ec --- /dev/null +++ b/tests/test_ui/test_ui_resource.py @@ -0,0 +1,84 @@ + +""" +def test_ui_resource_create_new(app, record_ui_resource, record_service): + assert record_ui_resource.empty_record(None) == {"title": None} + + +def test_ui_resource_form_config(app, record_ui_resource): + # TODO: what is this? + assert record_ui_resource + + +def test_draft_publish_request_present( + app, record_ui_resource, example_topic_draft, client_with_login, fake_manifest +): + with client_with_login.get(f"/thesis/{example_topic_draft['id']}/draft") as c: + assert c.status_code == 200 + assert "delete_record: " in c.text + assert "'type': 'delete_record'" in c.text + assert "'receiver': None" in c.text + assert "'status': 'created'" in c.text + assert "'links': {}" in c.text +""" + + +def test_record_delete_request_present( + app, record_ui_resource, example_topic, client_with_login, fake_manifest +): + with client_with_login.get(f"/thesis/{example_topic['id']}") as c: + assert c.status_code == 200 + assert "delete_record: " in c.text + assert "'type': 'delete_record'" in c.text + assert "'receiver': None" in c.text + assert "'status': 'created'" in c.text + assert "'links': {}" in c.text + + +""" +def test_permissions_on_search( + app, record_ui_resource, simple_record, client, fake_manifest +): + with client.get(f"/simple-model/") as c: + assert c.status_code == 200 + assert ("permissions={'can_create': True}") in c.text + + +def test_ui_links_on_detail( + app, record_ui_resource, simple_record, client, fake_manifest +): + with client.get(f"/simple-model/{simple_record.id}") as c: + assert c.status_code == 200 + assert ( + f"self:https://127.0.0.1:5000/simple-model/{simple_record.id}\n" in c.text + ) + assert ( + f"edit:https://127.0.0.1:5000/simple-model/{simple_record.id}/edit\n" + in c.text + ) + + +def test_ui_listing(app, record_ui_resource, simple_record, client, fake_manifest): + with client.get(f"/simple-model/") as c: + assert c.status_code == 200 + assert "self:https://127.0.0.1:5000/simple-model" in c.text + assert "next:https://127.0.0.1:5000/simple-model?page=2" in c.text + assert "create:https://127.0.0.1:5000/simple-model/_new" in c.text + + with client.get(f"/simple-model/?page=2") as c: + assert c.status_code == 200 + assert "self:https://127.0.0.1:5000/simple-model?page=2" in c.text + assert "prev:https://127.0.0.1:5000/simple-model?page=1" in c.text + assert "next:https://127.0.0.1:5000/simple-model?page=3" in c.text + assert "create:https://127.0.0.1:5000/simple-model/_new" in c.text + + +def test_service_ui_link(app, record_service, example_topic, fake_manifest): + data = record_service.read(system_identity, example_topic.id) + # note: in tests, the ui and api urls are the same, this should be different + # in production + assert ( + data.links["self"] + == f"https://127.0.0.1:5000/api/simple-model/{example_topic.id}" + ) + assert data.links["ui"] == f"https://127.0.0.1:5000/simple-model/{example_topic.id}" +""" From f6fbfd40b20462bb5bf9ac7efe9e1d8583e2d740 Mon Sep 17 00:00:00 2001 From: Ronald Krist Date: Wed, 30 Aug 2023 11:43:58 +0200 Subject: [PATCH 4/6] version bump --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index 6893bb4e..6582738d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = oarepo-requests -version = 1.0.0 +version = 1.0.1 description = authors = Ronald Krist readme = README.md From 16a102841315325ba88c63f8c3eda61644fcfc2d Mon Sep 17 00:00:00 2001 From: Ronald Krist <34395689+SilvyPuzzlewell@users.noreply.github.com> Date: Wed, 30 Aug 2023 11:48:55 +0200 Subject: [PATCH 5/6] Update main.yaml --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b4e44adc..6577bb73 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -43,7 +43,7 @@ jobs: - name: Test with pytest run: | - ./run-tests.sh + ./run_tests.sh - name: Build package to publish From a558e25be6fbf2025f39df345eeaa49b2d66663c Mon Sep 17 00:00:00 2001 From: Ronald Krist <34395689+SilvyPuzzlewell@users.noreply.github.com> Date: Wed, 30 Aug 2023 11:56:36 +0200 Subject: [PATCH 6/6] redis in github actions --- .github/workflows/main.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 6577bb73..7d7482ac 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -5,6 +5,18 @@ on: [ push ] jobs: build: runs-on: ubuntu-latest + services: + redis: + # Docker Hub image + image: redis + # Set health checks to wait until redis has started + options: >- + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 6379:6379 strategy: matrix: python-version: [ "3.9", "3.10" ]