Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pr/736 #740

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions invenio.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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_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
Expand Down Expand Up @@ -642,6 +641,10 @@ 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

# Invenio-Communities
# ==============
COMMUNITIES_GROUPS_ENABLED = False
Expand Down
4 changes: 4 additions & 0 deletions site/zenodo_rdm/custom_fields/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
THESIS_NAMESPACE,
)

from .community_fields import (
COMMUNITY_FIELDS,
COMMUNITY_FIELDS_UI,
)
from .domain_fields import (
AUDIOVIS_FIELDS,
AUDIOVIS_FIELDS_UI,
Expand Down
76 changes: 76 additions & 0 deletions site/zenodo_rdm/custom_fields/community_fields.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# -*- 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
from invenio_vocabularies.contrib.subjects.schema import SubjectRelationSchema
from invenio_vocabularies.contrib.subjects.api import Subject


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",
autocompleteFromAcceptHeader="application/vnd.inveniordm.v1+json",
required=False,
multiple=True,
clearable=True,
allowAdditions=False,
),
)
],
}
]


COMMUNITY_FIELDS = {
SubjectCF(
name="subjects",
multiple=True,
dump_options=False,
)
}
Loading