invenio-vocabularies 2.3.1__py2.py3-none-any.whl → 6.3.1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of invenio-vocabularies might be problematic. Click here for more details.
- invenio_vocabularies/__init__.py +2 -2
- invenio_vocabularies/administration/__init__.py +10 -0
- invenio_vocabularies/administration/views/__init__.py +10 -0
- invenio_vocabularies/administration/views/vocabularies.py +45 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/package.json +1 -7
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/CustomAwardForm.js +80 -64
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.js +49 -41
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingModal.js +5 -7
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/NoAwardResults.js +3 -3
- invenio_vocabularies/cli.py +31 -44
- invenio_vocabularies/config.py +68 -4
- invenio_vocabularies/contrib/affiliations/affiliations.py +11 -0
- invenio_vocabularies/contrib/affiliations/api.py +1 -2
- invenio_vocabularies/contrib/affiliations/config.py +13 -2
- invenio_vocabularies/contrib/affiliations/datastreams.py +186 -0
- invenio_vocabularies/contrib/affiliations/jsonschemas/affiliations/affiliation-v1.0.0.json +38 -1
- invenio_vocabularies/contrib/affiliations/mappings/os-v1/affiliations/affiliation-v1.0.0.json +22 -1
- invenio_vocabularies/contrib/affiliations/mappings/os-v1/affiliations/affiliation-v2.0.0.json +171 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v2/affiliations/affiliation-v1.0.0.json +22 -1
- invenio_vocabularies/contrib/affiliations/mappings/os-v2/affiliations/affiliation-v2.0.0.json +171 -0
- invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json +22 -1
- invenio_vocabularies/contrib/affiliations/schema.py +17 -3
- invenio_vocabularies/contrib/affiliations/services.py +1 -2
- invenio_vocabularies/contrib/awards/awards.py +17 -5
- invenio_vocabularies/contrib/awards/datastreams.py +241 -7
- invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json +38 -0
- invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json +51 -2
- invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json +51 -2
- invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json +51 -2
- invenio_vocabularies/contrib/awards/schema.py +16 -1
- invenio_vocabularies/contrib/awards/serializer.py +8 -1
- invenio_vocabularies/contrib/awards/services.py +1 -2
- invenio_vocabularies/contrib/common/__init__.py +9 -0
- invenio_vocabularies/contrib/common/openaire/__init__.py +9 -0
- invenio_vocabularies/contrib/common/openaire/datastreams.py +84 -0
- invenio_vocabularies/contrib/common/ror/__init__.py +9 -0
- invenio_vocabularies/contrib/common/ror/datastreams.py +220 -0
- invenio_vocabularies/contrib/funders/config.py +11 -2
- invenio_vocabularies/contrib/funders/datastreams.py +40 -62
- invenio_vocabularies/contrib/funders/funders.py +3 -1
- invenio_vocabularies/contrib/funders/jsonschemas/funders/funder-v1.0.0.json +36 -1
- invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v1.0.0.json +22 -1
- invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v2.0.0.json +156 -0
- invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v1.0.0.json +22 -1
- invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v2.0.0.json +156 -0
- invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json +22 -1
- invenio_vocabularies/contrib/funders/schema.py +8 -0
- invenio_vocabularies/contrib/funders/serializer.py +2 -1
- invenio_vocabularies/contrib/names/config.py +5 -3
- invenio_vocabularies/contrib/names/datastreams.py +172 -4
- invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json +3 -0
- invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v1.0.0.json +3 -0
- invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v2.0.0.json +150 -0
- invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v1.0.0.json +3 -0
- invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v2.0.0.json +150 -0
- invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json +3 -0
- invenio_vocabularies/contrib/names/names.py +15 -3
- invenio_vocabularies/contrib/names/permissions.py +20 -0
- invenio_vocabularies/contrib/names/s3client.py +44 -0
- invenio_vocabularies/contrib/names/schema.py +14 -0
- invenio_vocabularies/contrib/subjects/config.py +9 -3
- invenio_vocabularies/contrib/subjects/datastreams.py +61 -0
- invenio_vocabularies/contrib/subjects/euroscivoc/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/euroscivoc/datastreams.py +171 -0
- invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json +31 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json +35 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json +35 -0
- invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json +35 -0
- invenio_vocabularies/contrib/subjects/mesh/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/mesh/datastreams.py +43 -0
- invenio_vocabularies/contrib/subjects/schema.py +47 -5
- invenio_vocabularies/contrib/subjects/subjects.py +10 -0
- invenio_vocabularies/datastreams/datastreams.py +61 -13
- invenio_vocabularies/datastreams/factories.py +1 -2
- invenio_vocabularies/datastreams/readers.py +138 -29
- invenio_vocabularies/datastreams/tasks.py +37 -0
- invenio_vocabularies/datastreams/transformers.py +17 -27
- invenio_vocabularies/datastreams/writers.py +116 -14
- invenio_vocabularies/datastreams/xml.py +34 -0
- invenio_vocabularies/ext.py +59 -5
- invenio_vocabularies/factories.py +137 -0
- invenio_vocabularies/jobs.py +133 -0
- invenio_vocabularies/proxies.py +2 -2
- invenio_vocabularies/records/jsonschemas/vocabularies/definitions-v1.0.0.json +7 -0
- invenio_vocabularies/records/jsonschemas/vocabularies/vocabulary-v1.0.0.json +1 -4
- invenio_vocabularies/records/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +3 -3
- invenio_vocabularies/records/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +3 -3
- invenio_vocabularies/records/mappings/v7/vocabularies/vocabulary-v1.0.0.json +3 -3
- invenio_vocabularies/records/models.py +2 -4
- invenio_vocabularies/records/pidprovider.py +1 -2
- invenio_vocabularies/records/systemfields/relations.py +2 -2
- invenio_vocabularies/resources/__init__.py +9 -1
- invenio_vocabularies/resources/config.py +105 -0
- invenio_vocabularies/resources/resource.py +31 -41
- invenio_vocabularies/resources/schema.py +2 -1
- invenio_vocabularies/services/__init__.py +5 -2
- invenio_vocabularies/services/config.py +179 -0
- invenio_vocabularies/services/custom_fields/__init__.py +6 -2
- invenio_vocabularies/services/custom_fields/subject.py +82 -0
- invenio_vocabularies/services/custom_fields/vocabulary.py +5 -3
- invenio_vocabularies/services/permissions.py +3 -1
- invenio_vocabularies/services/results.py +110 -0
- invenio_vocabularies/services/schema.py +11 -2
- invenio_vocabularies/services/service.py +46 -94
- invenio_vocabularies/services/tasks.py +1 -1
- invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/subjects.html +23 -0
- invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabularies-list.html +12 -0
- invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html +71 -0
- invenio_vocabularies/translations/af/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ar/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/bg/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ca/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/cs/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/da/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/de/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/de_AT/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/de_DE/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/el/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/en/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/en_AT/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/en_HU/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/es/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/es_CU/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/es_MX/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/et/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/et_EE/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fa/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fa_IR/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fr/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fr_CI/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fr_FR/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/gl/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/hi_IN/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/hr/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/hu/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/hu_HU/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/it/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ja/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ka/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/lt/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/messages.pot +95 -48
- invenio_vocabularies/translations/ne/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/no/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/pl/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/pt/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ro/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ru/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/rw/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/sk/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/sv/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/sv_SE/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/tr/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/uk/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/uk_UA/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/views.py +12 -26
- invenio_vocabularies/webpack.py +3 -3
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/METADATA +150 -6
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/RECORD +165 -132
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/WHEEL +1 -1
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/entry_points.txt +17 -0
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/AUTHORS.rst +0 -0
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/LICENSE +0 -0
- {invenio_vocabularies-2.3.1.dist-info → invenio_vocabularies-6.3.1.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2020-
|
|
3
|
+
# Copyright (C) 2020-2024 CERN.
|
|
4
4
|
#
|
|
5
5
|
# Invenio-Vocabularies is free software; you can redistribute it and/or
|
|
6
6
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
|
@@ -35,6 +35,9 @@ class BaseVocabularyRelationSchema(Schema):
|
|
|
35
35
|
|
|
36
36
|
id = SanitizedUnicode(required=True)
|
|
37
37
|
|
|
38
|
+
# Nested field type for administration UI form generation
|
|
39
|
+
administration_schema_type = "vocabulary"
|
|
40
|
+
|
|
38
41
|
|
|
39
42
|
class VocabularyRelationSchema(BaseVocabularyRelationSchema):
|
|
40
43
|
"""Vocabulary relation schema."""
|
|
@@ -63,6 +66,9 @@ class ContribVocabularyRelationSchema(Schema):
|
|
|
63
66
|
ftf_name = None # free text field name
|
|
64
67
|
parent_field_name = None
|
|
65
68
|
|
|
69
|
+
# Nested field type for administration UI form generation
|
|
70
|
+
administration_schema_type = "vocabulary"
|
|
71
|
+
|
|
66
72
|
@validates_schema
|
|
67
73
|
def validate_relation_schema(self, data, **kwargs):
|
|
68
74
|
"""Validates that either id either the free text field are present."""
|
|
@@ -90,13 +96,16 @@ class BaseVocabularySchema(BaseRecordSchema):
|
|
|
90
96
|
title = i18n_strings
|
|
91
97
|
description = i18n_strings
|
|
92
98
|
icon = fields.Str(allow_none=False)
|
|
99
|
+
tags = fields.List(SanitizedUnicode())
|
|
100
|
+
|
|
101
|
+
# Nested field type for administration UI form generation
|
|
102
|
+
administration_schema_type = "vocabulary"
|
|
93
103
|
|
|
94
104
|
|
|
95
105
|
class VocabularySchema(BaseVocabularySchema):
|
|
96
106
|
"""Service schema for vocabulary records."""
|
|
97
107
|
|
|
98
108
|
props = fields.Dict(allow_none=False, keys=fields.Str(), values=fields.Str())
|
|
99
|
-
tags = fields.List(SanitizedUnicode())
|
|
100
109
|
type = fields.Str(attribute="type.id", required=True)
|
|
101
110
|
|
|
102
111
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C)
|
|
3
|
+
# Copyright (C) 2024 CERN.
|
|
4
4
|
# Copyright (C) 2021 Northwestern University.
|
|
5
|
+
# Copyright (C) 2024 University of Münster.
|
|
5
6
|
#
|
|
6
7
|
# Invenio-Vocabularies is free software; you can redistribute it and/or
|
|
7
8
|
# modify it under the terms of the MIT License; see LICENSE file for more
|
|
@@ -9,108 +10,59 @@
|
|
|
9
10
|
|
|
10
11
|
"""Vocabulary service."""
|
|
11
12
|
|
|
13
|
+
import sqlalchemy as sa
|
|
12
14
|
from invenio_cache import current_cache
|
|
13
|
-
from
|
|
14
|
-
from
|
|
15
|
-
from invenio_records_resources.services import (
|
|
16
|
-
Link,
|
|
17
|
-
LinksTemplate,
|
|
18
|
-
RecordService,
|
|
19
|
-
RecordServiceConfig,
|
|
20
|
-
SearchOptions,
|
|
21
|
-
pagination_links,
|
|
22
|
-
)
|
|
23
|
-
from invenio_records_resources.services.records.components import DataComponent
|
|
24
|
-
from invenio_records_resources.services.records.params import (
|
|
25
|
-
FilterParam,
|
|
26
|
-
SuggestQueryParser,
|
|
27
|
-
)
|
|
15
|
+
from invenio_records_resources.services import LinksTemplate, RecordService
|
|
16
|
+
from invenio_records_resources.services.base.utils import map_search_params
|
|
28
17
|
from invenio_records_resources.services.records.schema import ServiceSchemaWrapper
|
|
29
18
|
from invenio_records_resources.services.uow import unit_of_work
|
|
30
19
|
from invenio_search.engine import dsl
|
|
31
20
|
|
|
32
|
-
from ..records.api import Vocabulary
|
|
33
21
|
from ..records.models import VocabularyType
|
|
34
|
-
from .components import PIDComponent, VocabularyTypeComponent
|
|
35
|
-
from .permissions import PermissionPolicy
|
|
36
|
-
from .schema import TaskSchema, VocabularySchema
|
|
37
22
|
from .tasks import process_datastream
|
|
38
23
|
|
|
39
24
|
|
|
40
|
-
class
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
]
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
title=_("Newest"),
|
|
73
|
-
fields=["-created"],
|
|
74
|
-
),
|
|
75
|
-
"oldest": dict(
|
|
76
|
-
title=_("Oldest"),
|
|
77
|
-
fields=["created"],
|
|
78
|
-
),
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class VocabulariesServiceConfig(RecordServiceConfig):
|
|
83
|
-
"""Vocabulary service configuration."""
|
|
84
|
-
|
|
85
|
-
service_id = "vocabularies"
|
|
86
|
-
indexer_queue_name = "vocabularies"
|
|
87
|
-
permission_policy_cls = PermissionPolicy
|
|
88
|
-
record_cls = Vocabulary
|
|
89
|
-
schema = VocabularySchema
|
|
90
|
-
task_schema = TaskSchema
|
|
91
|
-
|
|
92
|
-
search = VocabularySearchOptions
|
|
93
|
-
|
|
94
|
-
components = [
|
|
95
|
-
# Order of components are important!
|
|
96
|
-
VocabularyTypeComponent,
|
|
97
|
-
DataComponent,
|
|
98
|
-
PIDComponent,
|
|
99
|
-
]
|
|
100
|
-
|
|
101
|
-
links_item = {
|
|
102
|
-
"self": Link(
|
|
103
|
-
"{+api}/vocabularies/{type}/{id}",
|
|
104
|
-
vars=lambda record, vars: vars.update(
|
|
105
|
-
{
|
|
106
|
-
"id": record.pid.pid_value,
|
|
107
|
-
"type": record.type.id,
|
|
108
|
-
}
|
|
109
|
-
),
|
|
110
|
-
),
|
|
111
|
-
}
|
|
25
|
+
class VocabularyTypeService(RecordService):
|
|
26
|
+
"""Vocabulary type service."""
|
|
27
|
+
|
|
28
|
+
def rebuild_index(self, identity, uow=None):
|
|
29
|
+
"""Raise error since services are not backed by search indices."""
|
|
30
|
+
raise NotImplementedError()
|
|
31
|
+
|
|
32
|
+
def search(self, identity, params=None):
|
|
33
|
+
"""Search for vocabulary types entries."""
|
|
34
|
+
self.require_permission(identity, "list_vocabularies")
|
|
35
|
+
|
|
36
|
+
search_params = map_search_params(self.config.search, params)
|
|
37
|
+
|
|
38
|
+
query_param = search_params["q"]
|
|
39
|
+
|
|
40
|
+
filters = []
|
|
41
|
+
if query_param:
|
|
42
|
+
filters.extend([VocabularyType.id.ilike(f"%{query_param}%")])
|
|
43
|
+
|
|
44
|
+
vocabulary_types = (
|
|
45
|
+
VocabularyType.query.filter(sa.or_(*filters))
|
|
46
|
+
.order_by(
|
|
47
|
+
search_params["sort_direction"](
|
|
48
|
+
sa.text(",".join(search_params["sort"]))
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
.paginate(
|
|
52
|
+
page=search_params["page"],
|
|
53
|
+
per_page=search_params["size"],
|
|
54
|
+
error_out=False,
|
|
55
|
+
)
|
|
56
|
+
)
|
|
112
57
|
|
|
113
|
-
|
|
58
|
+
return self.config.result_list_cls(
|
|
59
|
+
self,
|
|
60
|
+
identity,
|
|
61
|
+
vocabulary_types,
|
|
62
|
+
search_params,
|
|
63
|
+
links_tpl=LinksTemplate(self.config.links_search, context={"args": params}),
|
|
64
|
+
links_item_tpl=self.links_item_tpl,
|
|
65
|
+
)
|
|
114
66
|
|
|
115
67
|
|
|
116
68
|
class VocabulariesService(RecordService):
|
|
@@ -145,7 +97,7 @@ class VocabulariesService(RecordService):
|
|
|
145
97
|
params,
|
|
146
98
|
search_preference,
|
|
147
99
|
extra_filter=dsl.Q("term", type__id=vocabulary_type.id),
|
|
148
|
-
**kwargs
|
|
100
|
+
**kwargs,
|
|
149
101
|
).execute()
|
|
150
102
|
|
|
151
103
|
return self.result_list(
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{#
|
|
2
|
+
Copyright (C) 2024 CERN.
|
|
3
|
+
|
|
4
|
+
Invenio RDM Records is free software; you can redistribute it and/or modify
|
|
5
|
+
it under the terms of the MIT License; see LICENSE file for more details.
|
|
6
|
+
#}
|
|
7
|
+
|
|
8
|
+
{%- set subjects = field_value -%}
|
|
9
|
+
{% if subjects %}
|
|
10
|
+
<ul class="ui horizontal list no-bullets subjects">
|
|
11
|
+
{%- for subject in subjects %}
|
|
12
|
+
<li class="item">
|
|
13
|
+
{%- set q = 'metadata.subjects.subject:"' + subject.subject + '"' %}
|
|
14
|
+
<a href="{{ url_for('invenio_search_ui.search', q=q) }}"
|
|
15
|
+
class="subject"
|
|
16
|
+
title="{{ _('Search results for ') + subject.subject }}"
|
|
17
|
+
>
|
|
18
|
+
{{ subject.subject }}
|
|
19
|
+
</a>
|
|
20
|
+
</li>
|
|
21
|
+
{%- endfor %}
|
|
22
|
+
</ul>
|
|
23
|
+
{% endif %}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{#
|
|
2
|
+
Copyright (C) 2024 Uni Münster.
|
|
3
|
+
|
|
4
|
+
Invenio App RDM is free software; you can redistribute it and/or modify it
|
|
5
|
+
under the terms of the MIT License; see LICENSE file for more details.
|
|
6
|
+
#}
|
|
7
|
+
{% extends "invenio_administration/search.html" %}
|
|
8
|
+
|
|
9
|
+
{% block javascript %}
|
|
10
|
+
{{ super() }}
|
|
11
|
+
{{ webpack['invenio-vocabularies-search.js'] }}
|
|
12
|
+
{% endblock %}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{#
|
|
2
|
+
Copyright (C) 2024 CERN.
|
|
3
|
+
|
|
4
|
+
Invenio App RDM is free software; you can redistribute it and/or modify it
|
|
5
|
+
under the terms of the MIT License; see LICENSE file for more details.
|
|
6
|
+
#}
|
|
7
|
+
|
|
8
|
+
{%- from "invenio_administration/macros.html" import go_back %}
|
|
9
|
+
|
|
10
|
+
{% extends "invenio_administration/search.html" %}
|
|
11
|
+
|
|
12
|
+
{% block admin_main_column %}
|
|
13
|
+
<main id="admin-main-content"
|
|
14
|
+
class="ten wide mobile twelve wide tablet thirteen wide computer fourteen wide widescreen column">
|
|
15
|
+
|
|
16
|
+
<div class="ui container fluid pl-10 pr-10 pt-10 pb-10">
|
|
17
|
+
{{ go_back() }}
|
|
18
|
+
<div class="ui grid">
|
|
19
|
+
<div class="column six wide">
|
|
20
|
+
<h1 class="ui header">{{ title or name }}</h1>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="column ten wide right aligned">
|
|
23
|
+
<a class="ui icon labeled button"
|
|
24
|
+
href="{{ edit_endpoint }}">
|
|
25
|
+
<i aria-hidden="true"
|
|
26
|
+
class="cog icon"></i>{{ _("Settings") }}
|
|
27
|
+
</a>
|
|
28
|
+
<a class="ui icon labeled button"
|
|
29
|
+
href="{{ create_ui_endpoint }}">
|
|
30
|
+
<i aria-hidden="true"
|
|
31
|
+
class="calendar icon"></i>{{ _("Schedule") }}
|
|
32
|
+
</a>
|
|
33
|
+
<a class="ui icon labeled button"
|
|
34
|
+
href="{{ run_endpoint }}">
|
|
35
|
+
<i aria-hidden="true"
|
|
36
|
+
class="play icon"></i>{{ _("Run now") }}
|
|
37
|
+
</a>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
{% block admin_page_content %}
|
|
41
|
+
<div class="ui divider" aria-hidden="true"></div>
|
|
42
|
+
|
|
43
|
+
{%- block search_app %}
|
|
44
|
+
<div
|
|
45
|
+
id="invenio-search-config"
|
|
46
|
+
data-title='{{ title | tojson }}'
|
|
47
|
+
data-resource-name='{{ resource_name | tojson }}'
|
|
48
|
+
data-invenio-search-config='{{ search_config() | tojson }}'
|
|
49
|
+
data-fields='{{ fields | tojson }}'
|
|
50
|
+
data-display-search='{{ display_search | tojson }}'
|
|
51
|
+
data-display-read='{{ display_read | tojson }}'
|
|
52
|
+
data-display-edit='{{ display_edit | tojson }}'
|
|
53
|
+
data-display-delete='{{ display_delete | tojson }}'
|
|
54
|
+
data-resource-schema='{{ resource_schema | tojson }}'
|
|
55
|
+
data-actions='{{ actions | tojson }}'
|
|
56
|
+
data-api-endpoint='{{ api_endpoint }}'
|
|
57
|
+
data-pid-path='{{ pid_path | tojson }}'
|
|
58
|
+
data-create-endpoint='{{ create_ui_endpoint }}'
|
|
59
|
+
data-list-endpoint='{{ list_ui_endpoint }}'
|
|
60
|
+
>
|
|
61
|
+
</div>
|
|
62
|
+
{%- endblock search_app %}
|
|
63
|
+
{% endblock admin_page_content %}
|
|
64
|
+
</div>
|
|
65
|
+
</main>
|
|
66
|
+
{% endblock %}
|
|
67
|
+
|
|
68
|
+
{% block javascript %}
|
|
69
|
+
{{ super() }}
|
|
70
|
+
{{ webpack['invenio-jobs-details.js'] }}
|
|
71
|
+
{% endblock %}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,138 +1,185 @@
|
|
|
1
1
|
# Translations template for invenio-vocabularies.
|
|
2
|
-
# Copyright (C)
|
|
2
|
+
# Copyright (C) 2024 CERN
|
|
3
3
|
# This file is distributed under the same license as the
|
|
4
4
|
# invenio-vocabularies project.
|
|
5
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>,
|
|
5
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2024.
|
|
6
6
|
#
|
|
7
7
|
#, fuzzy
|
|
8
8
|
msgid ""
|
|
9
9
|
msgstr ""
|
|
10
|
-
"Project-Id-Version: invenio-vocabularies
|
|
10
|
+
"Project-Id-Version: invenio-vocabularies 4.3.0\n"
|
|
11
11
|
"Report-Msgid-Bugs-To: info@inveniosoftware.org\n"
|
|
12
|
-
"POT-Creation-Date:
|
|
12
|
+
"POT-Creation-Date: 2024-08-06 08:57+0000\n"
|
|
13
13
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
|
14
14
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
|
15
15
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
|
16
16
|
"MIME-Version: 1.0\n"
|
|
17
17
|
"Content-Type: text/plain; charset=utf-8\n"
|
|
18
18
|
"Content-Transfer-Encoding: 8bit\n"
|
|
19
|
-
"Generated-By: Babel 2.
|
|
19
|
+
"Generated-By: Babel 2.15.0\n"
|
|
20
20
|
|
|
21
|
-
#: invenio_vocabularies/config.py:
|
|
21
|
+
#: invenio_vocabularies/config.py:38
|
|
22
22
|
msgid "GRID"
|
|
23
23
|
msgstr ""
|
|
24
24
|
|
|
25
|
-
#: invenio_vocabularies/config.py:
|
|
25
|
+
#: invenio_vocabularies/config.py:39 invenio_vocabularies/config.py:103
|
|
26
26
|
msgid "GND"
|
|
27
27
|
msgstr ""
|
|
28
28
|
|
|
29
|
-
#: invenio_vocabularies/config.py:
|
|
29
|
+
#: invenio_vocabularies/config.py:40 invenio_vocabularies/config.py:102
|
|
30
30
|
msgid "ISNI"
|
|
31
31
|
msgstr ""
|
|
32
32
|
|
|
33
|
-
#: invenio_vocabularies/config.py:
|
|
33
|
+
#: invenio_vocabularies/config.py:41
|
|
34
34
|
msgid "ROR"
|
|
35
35
|
msgstr ""
|
|
36
36
|
|
|
37
|
-
#: invenio_vocabularies/config.py:
|
|
37
|
+
#: invenio_vocabularies/config.py:52 invenio_vocabularies/config.py:61
|
|
38
38
|
msgid "DOI"
|
|
39
39
|
msgstr ""
|
|
40
40
|
|
|
41
|
-
#: invenio_vocabularies/config.py:
|
|
41
|
+
#: invenio_vocabularies/config.py:60
|
|
42
42
|
msgid "URL"
|
|
43
43
|
msgstr ""
|
|
44
44
|
|
|
45
|
-
#: invenio_vocabularies/config.py:
|
|
45
|
+
#: invenio_vocabularies/config.py:101
|
|
46
46
|
msgid "ORCID"
|
|
47
47
|
msgstr ""
|
|
48
48
|
|
|
49
|
-
#: invenio_vocabularies/
|
|
50
|
-
#: invenio_vocabularies/contrib/
|
|
51
|
-
#: invenio_vocabularies/contrib/names/config.py:45
|
|
52
|
-
#: invenio_vocabularies/contrib/subjects/config.py:38
|
|
53
|
-
#: invenio_vocabularies/services/service.py:64
|
|
54
|
-
msgid "Best match"
|
|
55
|
-
msgstr ""
|
|
56
|
-
|
|
57
|
-
#: invenio_vocabularies/contrib/affiliations/config.py:48
|
|
49
|
+
#: invenio_vocabularies/config.py:143
|
|
50
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:42
|
|
58
51
|
#: invenio_vocabularies/contrib/funders/config.py:49
|
|
59
52
|
#: invenio_vocabularies/contrib/names/config.py:49
|
|
60
53
|
#: invenio_vocabularies/contrib/subjects/config.py:42
|
|
61
54
|
msgid "Name"
|
|
62
55
|
msgstr ""
|
|
63
56
|
|
|
64
|
-
#: invenio_vocabularies/
|
|
57
|
+
#: invenio_vocabularies/config.py:147
|
|
58
|
+
msgid "Number of entries"
|
|
59
|
+
msgstr ""
|
|
60
|
+
|
|
61
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:38
|
|
62
|
+
#: invenio_vocabularies/contrib/funders/config.py:45
|
|
63
|
+
#: invenio_vocabularies/contrib/names/config.py:45
|
|
64
|
+
#: invenio_vocabularies/contrib/subjects/config.py:38
|
|
65
|
+
#: invenio_vocabularies/services/config.py:73
|
|
66
|
+
msgid "Best match"
|
|
67
|
+
msgstr ""
|
|
68
|
+
|
|
69
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:46
|
|
65
70
|
#: invenio_vocabularies/contrib/funders/config.py:53
|
|
66
71
|
#: invenio_vocabularies/contrib/names/config.py:53
|
|
67
72
|
#: invenio_vocabularies/contrib/subjects/config.py:46
|
|
68
|
-
#: invenio_vocabularies/services/
|
|
73
|
+
#: invenio_vocabularies/services/config.py:81
|
|
69
74
|
msgid "Newest"
|
|
70
75
|
msgstr ""
|
|
71
76
|
|
|
72
|
-
#: invenio_vocabularies/contrib/affiliations/config.py:
|
|
77
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:50
|
|
73
78
|
#: invenio_vocabularies/contrib/funders/config.py:57
|
|
74
79
|
#: invenio_vocabularies/contrib/names/config.py:57
|
|
75
80
|
#: invenio_vocabularies/contrib/subjects/config.py:50
|
|
76
|
-
#: invenio_vocabularies/services/
|
|
81
|
+
#: invenio_vocabularies/services/config.py:85
|
|
77
82
|
msgid "Oldest"
|
|
78
83
|
msgstr ""
|
|
79
84
|
|
|
80
|
-
#: invenio_vocabularies/contrib/
|
|
81
|
-
|
|
85
|
+
#: invenio_vocabularies/contrib/affiliations/schema.py:41
|
|
86
|
+
#: invenio_vocabularies/contrib/funders/schema.py:36
|
|
87
|
+
#: invenio_vocabularies/contrib/funders/schema.py:44
|
|
88
|
+
msgid "Name cannot be blank."
|
|
82
89
|
msgstr ""
|
|
83
90
|
|
|
84
|
-
#: invenio_vocabularies/contrib/
|
|
85
|
-
|
|
91
|
+
#: invenio_vocabularies/contrib/affiliations/schema.py:47
|
|
92
|
+
#: invenio_vocabularies/contrib/awards/schema.py:50
|
|
93
|
+
#: invenio_vocabularies/contrib/funders/schema.py:60
|
|
94
|
+
msgid "PID cannot be blank."
|
|
86
95
|
msgstr ""
|
|
87
96
|
|
|
88
|
-
#: invenio_vocabularies/contrib/awards/
|
|
89
|
-
msgid "
|
|
97
|
+
#: invenio_vocabularies/contrib/awards/config.py:49
|
|
98
|
+
msgid "Funders"
|
|
90
99
|
msgstr ""
|
|
91
100
|
|
|
92
|
-
#: invenio_vocabularies/contrib/awards/
|
|
93
|
-
|
|
94
|
-
msgid "PID cannot be blank."
|
|
101
|
+
#: invenio_vocabularies/contrib/awards/datastreams.py:118
|
|
102
|
+
msgid "Unknown OpenAIRE funder prefix {openaire_funder_prefix}"
|
|
95
103
|
msgstr ""
|
|
96
104
|
|
|
97
|
-
#: invenio_vocabularies/contrib/awards/
|
|
98
|
-
|
|
99
|
-
|
|
105
|
+
#: invenio_vocabularies/contrib/awards/datastreams.py:159
|
|
106
|
+
msgid "Missing title attribute for award {award_id}"
|
|
107
|
+
msgstr ""
|
|
108
|
+
|
|
109
|
+
#: invenio_vocabularies/contrib/awards/schema.py:41
|
|
110
|
+
msgid "Number cannot be blank."
|
|
100
111
|
msgstr ""
|
|
101
112
|
|
|
102
|
-
#: invenio_vocabularies/contrib/awards/schema.py:
|
|
113
|
+
#: invenio_vocabularies/contrib/awards/schema.py:80
|
|
103
114
|
msgid "An existing id or number/title must be present."
|
|
104
115
|
msgstr ""
|
|
105
116
|
|
|
106
|
-
#: invenio_vocabularies/contrib/awards/schema.py:
|
|
117
|
+
#: invenio_vocabularies/contrib/awards/schema.py:97
|
|
107
118
|
msgid "At least award or funder should be present."
|
|
108
119
|
msgstr ""
|
|
109
120
|
|
|
110
|
-
#: invenio_vocabularies/contrib/
|
|
121
|
+
#: invenio_vocabularies/contrib/common/ror/datastreams.py:123
|
|
111
122
|
msgid "Id not found in ROR entry."
|
|
112
123
|
msgstr ""
|
|
113
124
|
|
|
114
|
-
#: invenio_vocabularies/contrib/
|
|
115
|
-
msgid "Name not found in ROR entry."
|
|
125
|
+
#: invenio_vocabularies/contrib/common/ror/datastreams.py:153
|
|
126
|
+
msgid "Name with type ror_display not found in ROR entry."
|
|
116
127
|
msgstr ""
|
|
117
128
|
|
|
118
|
-
#: invenio_vocabularies/contrib/funders/schema.py:
|
|
119
|
-
#: invenio_vocabularies/
|
|
120
|
-
msgid "
|
|
129
|
+
#: invenio_vocabularies/contrib/funders/schema.py:73
|
|
130
|
+
#: invenio_vocabularies/services/schema.py:120
|
|
131
|
+
msgid "Missing PID."
|
|
121
132
|
msgstr ""
|
|
122
133
|
|
|
123
134
|
#: invenio_vocabularies/contrib/names/schema.py:53
|
|
124
135
|
msgid "A name or the family name together with the given name must be present."
|
|
125
136
|
msgstr ""
|
|
126
137
|
|
|
138
|
+
#: invenio_vocabularies/contrib/names/schema.py:68
|
|
139
|
+
msgid "Duplicated affiliations."
|
|
140
|
+
msgstr ""
|
|
141
|
+
|
|
127
142
|
#: invenio_vocabularies/services/components.py:29
|
|
128
143
|
msgid "The vocabulary type does not exists."
|
|
129
144
|
msgstr ""
|
|
130
145
|
|
|
131
|
-
#: invenio_vocabularies/services/
|
|
146
|
+
#: invenio_vocabularies/services/config.py:77
|
|
147
|
+
msgid "Title"
|
|
148
|
+
msgstr ""
|
|
149
|
+
|
|
150
|
+
#: invenio_vocabularies/services/config.py:96
|
|
151
|
+
msgid "ID"
|
|
152
|
+
msgstr ""
|
|
153
|
+
|
|
154
|
+
#: invenio_vocabularies/services/config.py:106
|
|
155
|
+
msgid "Ascending"
|
|
156
|
+
msgstr ""
|
|
157
|
+
|
|
158
|
+
#: invenio_vocabularies/services/config.py:107
|
|
159
|
+
msgid "Descending"
|
|
160
|
+
msgstr ""
|
|
161
|
+
|
|
162
|
+
#: invenio_vocabularies/services/schema.py:85
|
|
132
163
|
msgid "An existing id or a free text {ftf_name} must be present."
|
|
133
164
|
msgstr ""
|
|
134
165
|
|
|
135
|
-
#: invenio_vocabularies/services/
|
|
136
|
-
msgid "
|
|
166
|
+
#: invenio_vocabularies/services/custom_fields/subject.py:50
|
|
167
|
+
msgid "Subjects"
|
|
168
|
+
msgstr ""
|
|
169
|
+
|
|
170
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/subjects.html:16
|
|
171
|
+
msgid "Search results for "
|
|
172
|
+
msgstr ""
|
|
173
|
+
|
|
174
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html:26
|
|
175
|
+
msgid "Settings"
|
|
176
|
+
msgstr ""
|
|
177
|
+
|
|
178
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html:31
|
|
179
|
+
msgid "Schedule"
|
|
180
|
+
msgstr ""
|
|
181
|
+
|
|
182
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html:36
|
|
183
|
+
msgid "Run now"
|
|
137
184
|
msgstr ""
|
|
138
185
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|