diff --git a/invenio.cfg b/invenio.cfg index 6d297d5f..30e43de8 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -37,12 +37,16 @@ from invenio_records_resources.services.records.queryparser import ( QueryParser, SearchFieldTransformer, ) +from invenio_rdm_records.contrib.subject import ( + SUBJECT_FIELDS_UI, + SUBJECT_FIELDS +) from invenio_rdm_records.services.components.signal import SignalComponent 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, COMMUNITY_FIELDS, COMMUNITY_FIELDS_UI +from zenodo_rdm.custom_fields import CUSTOM_FIELDS_UI, CUSTOM_FIELDS, CUSTOM_FIELDS_FACETS, NAMESPACES from zenodo_rdm.views import frontpage_view_function from zenodo_rdm.permissions import ZenodoCommunityPermissionPolicy, ZenodoRDMRecordPermissionPolicy from zenodo_rdm.api import ZenodoRDMRecord, ZenodoRDMDraft @@ -641,9 +645,9 @@ RDM_CUSTOM_FIELDS = CUSTOM_FIELDS RDM_CUSTOM_FIELDS_UI = CUSTOM_FIELDS_UI # UI components -COMMUNITIES_CUSTOM_FIELDS_UI = COMMUNITY_FIELDS_UI +COMMUNITIES_CUSTOM_FIELDS_UI = SUBJECT_FIELDS_UI -COMMUNITIES_CUSTOM_FIELDS = COMMUNITY_FIELDS +COMMUNITIES_CUSTOM_FIELDS = SUBJECT_FIELDS # Invenio-Communities # ============== diff --git a/site/zenodo_rdm/custom_fields/__init__.py b/site/zenodo_rdm/custom_fields/__init__.py index 692daeca..c8ab2964 100644 --- a/site/zenodo_rdm/custom_fields/__init__.py +++ b/site/zenodo_rdm/custom_fields/__init__.py @@ -34,7 +34,6 @@ THESIS_NAMESPACE, ) -from .community_fields import COMMUNITY_FIELDS, COMMUNITY_FIELDS_UI from .domain_fields import ( AUDIOVIS_FIELDS, AUDIOVIS_FIELDS_UI, diff --git a/site/zenodo_rdm/custom_fields/community_fields.py b/site/zenodo_rdm/custom_fields/community_fields.py deleted file mode 100644 index 210790c7..00000000 --- a/site/zenodo_rdm/custom_fields/community_fields.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- 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.contrib.subjects.api import Subject -from invenio_vocabularies.contrib.subjects.schema import SubjectRelationSchema -from invenio_vocabularies.services.custom_fields import VocabularyCF - - -class SubjectCF(VocabularyCF): - """Custom field for subjects.""" - - field_keys = ["id", "subject"] - - def __init__(self, **kwargs): - """Constructor.""" - super().__init__( - vocabulary_id="subjects", - schema=SubjectRelationSchema, - ui_schema=SubjectRelationSchema, - **kwargs - ) - self.pid_field = Subject.pid - - @property - def mapping(self): - """Return the mapping.""" - _mapping = { - "type": "object", - "properties": { - "@v": {"type": "keyword"}, - "id": {"type": "keyword"}, - "subject": {"type": "keyword"}, - }, - } - - return _mapping - - -COMMUNITY_FIELDS_UI = [ - { - "section": _("Subjects"), - "fields": [ - dict( - field="subjects", - ui_widget="SubjectAutocompleteDropdown", - 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/subjects", - noQueryMessage="Search for subjects...", - autocompleteFromAcceptHeader="application/vnd.inveniordm.v1+json", - required=False, - multiple=True, - clearable=True, - allowAdditions=False, - isCustomVocabulary=True, - ), - ) - ], - } -] - - -COMMUNITY_FIELDS = { - SubjectCF( - name="subjects", - multiple=True, - dump_options=False, - ) -}