From 7d99cc6a47bf966228f6e8c09c0ff67f5c247c02 Mon Sep 17 00:00:00 2001 From: Fatimah Date: Thu, 22 Feb 2024 16:16:36 +0100 Subject: [PATCH] custom_field: added subject field to community --- app_data/vocabularies.yaml | 10 ++++- app_data/vocabularies/subjects.yaml | 9 ++++ invenio.cfg | 9 +++- site/zenodo_rdm/custom_fields/__init__.py | 6 +++ .../custom_fields/community_fields.py | 43 +++++++++++++++++++ 5 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 app_data/vocabularies/subjects.yaml create mode 100644 site/zenodo_rdm/custom_fields/community_fields.py diff --git a/app_data/vocabularies.yaml b/app_data/vocabularies.yaml index 58bbbc1f..fa89f408 100644 --- a/app_data/vocabularies.yaml +++ b/app_data/vocabularies.yaml @@ -3,4 +3,12 @@ licenses: data-file: vocabularies/licenses.csv descriptiontypes: pid-type: dty - data-file: vocabularies/description_types.yaml \ No newline at end of file + data-file: vocabularies/description_types.yaml +subjects: + pid-type: sub + schemes: + - id: EuroSci + name: Euro Science Vocabulary + uri: "https://op.europa.eu/en/web/eu-vocabularies/dataset/-/resource?uri=http://publications.europa.eu/resource/dataset/euroscivoc" + data-file: vocabularies/subjects.yaml + \ No newline at end of file diff --git a/app_data/vocabularies/subjects.yaml b/app_data/vocabularies/subjects.yaml new file mode 100644 index 00000000..70dc4392 --- /dev/null +++ b/app_data/vocabularies/subjects.yaml @@ -0,0 +1,9 @@ +- id: 1_es + scheme: EuroSci + subject: "Mathematics" +- id: 2_es + scheme: EuroSci + subject: "Physics" +- id: 3_es + scheme: EuroSci + subject: "Psychology" diff --git a/invenio.cfg b/invenio.cfg index 04f18851..0b6936c7 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -42,8 +42,7 @@ from invenio_rdm_records.services.components import DefaultRecordsComponents from invenio_oauthclient.views.client import auto_redirect_login from invenio_communities.communities.services import facets as community_facets - -from zenodo_rdm.custom_fields import CUSTOM_FIELDS_UI, CUSTOM_FIELDS, CUSTOM_FIELDS_FACETS, NAMESPACES +from zenodo_rdm.custom_fields import CUSTOM_FIELDS_UI, CUSTOM_FIELDS, CUSTOM_FIELDS_FACETS, NAMESPACES, COMMUNITY_NAMESPACES,COMMUNITY_FIELDS, COMMUNITY_FIELDS_UI from zenodo_rdm.views import frontpage_view_function from zenodo_rdm.permissions import ZenodoCommunityPermissionPolicy, ZenodoRDMRecordPermissionPolicy from zenodo_rdm.api import ZenodoRDMRecord, ZenodoRDMDraft @@ -642,6 +641,12 @@ RDM_CUSTOM_FIELDS = CUSTOM_FIELDS RDM_CUSTOM_FIELDS_UI = CUSTOM_FIELDS_UI # UI components +COMMUNITIES_CUSTOM_FIELDS_UI = COMMUNITY_FIELDS_UI + +COMMUNITIES_CUSTOM_FIELDS = COMMUNITY_FIELDS + +COMMUNITIES_NAMESPACES = COMMUNITY_NAMESPACES + # Invenio-Communities # ============== COMMUNITIES_GROUPS_ENABLED = False diff --git a/site/zenodo_rdm/custom_fields/__init__.py b/site/zenodo_rdm/custom_fields/__init__.py index c8ab2964..48fb5121 100644 --- a/site/zenodo_rdm/custom_fields/__init__.py +++ b/site/zenodo_rdm/custom_fields/__init__.py @@ -40,6 +40,12 @@ BIODIV_FIELDS, BIODIVERSITY_FIELDS_UI, ) + +from.community_fields import ( + COMMUNITY_FIELDS_UI, + COMMUNITY_FIELDS, + COMMUNITY_NAMESPACES, +) from .legacy import LEGACY_CUSTOM_FIELDS from .publishing import PUBLISHING_FIELDS_UI diff --git a/site/zenodo_rdm/custom_fields/community_fields.py b/site/zenodo_rdm/custom_fields/community_fields.py new file mode 100644 index 00000000..8e11fde6 --- /dev/null +++ b/site/zenodo_rdm/custom_fields/community_fields.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# ZenodoRDM is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Custom fields.""" +from invenio_i18n import lazy_gettext as _ +from invenio_vocabularies.services.custom_fields import VocabularyCF + +COMMUNITY_FIELDS_UI = [{ + "section": _("Subjects"), + "fields": [dict( + field="es:subjects", + ui_widget="AutocompleteDropdown", + props=dict( + label="Keywords and subjects", + icon="tag", + description="The subjects related to the community", + placeholder="Search for a subject by name e.g. Psychology ...", + autocompleteFrom="/api/vocabularies/languages", + autocompleteFromAcceptHeader="application/vnd.inveniordm.v1+json", + required=False, + multiple=True, + clearable=True, + ), + )] +}] + + +COMMUNITY_FIELDS = {VocabularyCF( + name="es:subjects", + vocabulary_id="es:subjects", + multiple=True, + dump_options=False, + ) +} + + +COMMUNITY_NAMESPACES = { + "es": "https://op.europa.eu/en/web/eu-vocabularies/dataset/-/resource?uri=http://publications.europa.eu/resource/dataset/euroscivoc", +}