invenio-vocabularies 6.4.1__py2.py3-none-any.whl → 6.6.0__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.

Files changed (25) hide show
  1. invenio_vocabularies/__init__.py +1 -1
  2. invenio_vocabularies/config.py +1 -1
  3. invenio_vocabularies/contrib/affiliations/affiliations.py +2 -1
  4. invenio_vocabularies/contrib/awards/awards.py +2 -1
  5. invenio_vocabularies/contrib/funders/funders.py +2 -1
  6. invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v2.0.0.json +6 -6
  7. invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v2.0.0.json +6 -6
  8. invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json +28 -5
  9. invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v2.0.0.json +4 -0
  10. invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v2.0.0.json +4 -0
  11. invenio_vocabularies/contrib/names/permissions.py +14 -4
  12. invenio_vocabularies/contrib/names/schema.py +1 -0
  13. invenio_vocabularies/contrib/names/services.py +23 -14
  14. invenio_vocabularies/contrib/subjects/config.py +4 -1
  15. invenio_vocabularies/contrib/subjects/mesh/datastreams.py +7 -2
  16. invenio_vocabularies/jobs.py +15 -0
  17. invenio_vocabularies/services/generators.py +38 -0
  18. invenio_vocabularies/services/permissions.py +6 -1
  19. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/METADATA +18 -1
  20. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/RECORD +25 -24
  21. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/entry_points.txt +1 -0
  22. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/AUTHORS.rst +0 -0
  23. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/LICENSE +0 -0
  24. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/WHEEL +0 -0
  25. {invenio_vocabularies-6.4.1.dist-info → invenio_vocabularies-6.6.0.dist-info}/top_level.txt +0 -0
@@ -10,6 +10,6 @@
10
10
 
11
11
  from .ext import InvenioVocabularies
12
12
 
13
- __version__ = "6.4.1"
13
+ __version__ = "6.6.0"
14
14
 
15
15
  __all__ = ("__version__", "InvenioVocabularies")
@@ -172,7 +172,7 @@ VOCABULARIES_TYPES_SEARCH = {
172
172
  }
173
173
  """Vocabulary type search configuration."""
174
174
 
175
- SUBJECTS_EUROSCIVOC_FILE_URL = "https://op.europa.eu/o/opportal-service/euvoc-download-handler?cellarURI=http%3A%2F%2Fpublications.europa.eu%2Fresource%2Fdistribution%2Feuroscivoc%2F20231115-0%2Frdf%2Fskos_ap_eu%2FEuroSciVoc-skos-ap-eu.rdf&fileName=EuroSciVoc-skos-ap-eu.rdf"
175
+ SUBJECTS_EUROSCIVOC_FILE_URL = "https://publications.europa.eu/resource/distribution/euroscivoc/rdf/skos_ap_eu/EuroSciVoc-skos-ap-eu.rdf"
176
176
  """Subject EuroSciVoc file download link."""
177
177
 
178
178
  VOCABULARIES_ORCID_ACCESS_KEY = "TODO"
@@ -16,7 +16,8 @@ from invenio_records_resources.factories.factory import RecordTypeFactory
16
16
  from invenio_records_resources.records.systemfields import ModelPIDField
17
17
  from invenio_records_resources.resources.records.headers import etag_headers
18
18
 
19
- from ...services.permissions import PermissionPolicy
19
+ from invenio_vocabularies.services.permissions import PermissionPolicy
20
+
20
21
  from .config import AffiliationsSearchOptions, service_components
21
22
  from .schema import AffiliationSchema
22
23
 
@@ -27,7 +27,8 @@ from invenio_records_resources.records.systemfields import (
27
27
  )
28
28
  from invenio_records_resources.resources.records.headers import etag_headers
29
29
 
30
- from ...services.permissions import PermissionPolicy
30
+ from invenio_vocabularies.services.permissions import PermissionPolicy
31
+
31
32
  from ..funders.api import Funder
32
33
  from ..subjects.api import Subject
33
34
  from .config import AwardsSearchOptions, service_components
@@ -21,7 +21,8 @@ from invenio_records_resources.factories.factory import RecordTypeFactory
21
21
  from invenio_records_resources.records.systemfields import ModelPIDField
22
22
  from invenio_records_resources.resources.records.headers import etag_headers
23
23
 
24
- from ...services.permissions import PermissionPolicy
24
+ from invenio_vocabularies.services.permissions import PermissionPolicy
25
+
25
26
  from .config import FundersSearchOptions, service_components
26
27
  from .schema import FunderSchema
27
28
  from .serializer import FunderL10NItemSchema
@@ -14,8 +14,8 @@
14
14
  "type": "custom",
15
15
  "char_filter": ["strip_special_chars"],
16
16
  "filter": [
17
- "lowercase",
18
- "asciifolding",
17
+ "lowercasepreserveoriginal",
18
+ "asciifoldingpreserveoriginal",
19
19
  "edgegrams"
20
20
  ]
21
21
  },
@@ -24,8 +24,8 @@
24
24
  "type": "custom",
25
25
  "char_filter": ["strip_special_chars"],
26
26
  "filter": [
27
- "lowercase",
28
- "asciifolding"
27
+ "lowercasepreserveoriginal",
28
+ "asciifoldingpreserveoriginal"
29
29
  ]
30
30
  }
31
31
  },
@@ -40,11 +40,11 @@
40
40
  }
41
41
  },
42
42
  "filter": {
43
- "lowercase": {
43
+ "lowercasepreserveoriginal": {
44
44
  "type": "lowercase",
45
45
  "preserve_original": true
46
46
  },
47
- "asciifolding": {
47
+ "asciifoldingpreserveoriginal": {
48
48
  "type": "asciifolding",
49
49
  "preserve_original": true
50
50
  },
@@ -14,8 +14,8 @@
14
14
  "type": "custom",
15
15
  "char_filter": ["strip_special_chars"],
16
16
  "filter": [
17
- "lowercase",
18
- "asciifolding",
17
+ "lowercasepreserveoriginal",
18
+ "asciifoldingpreserveoriginal",
19
19
  "edgegrams"
20
20
  ]
21
21
  },
@@ -24,8 +24,8 @@
24
24
  "type": "custom",
25
25
  "char_filter": ["strip_special_chars"],
26
26
  "filter": [
27
- "lowercase",
28
- "asciifolding"
27
+ "lowercasepreserveoriginal",
28
+ "asciifoldingpreserveoriginal"
29
29
  ]
30
30
  }
31
31
  },
@@ -40,11 +40,11 @@
40
40
  }
41
41
  },
42
42
  "filter": {
43
- "lowercase": {
43
+ "lowercasepreserveoriginal": {
44
44
  "type": "lowercase",
45
45
  "preserve_original": true
46
46
  },
47
- "asciifolding": {
47
+ "asciifoldingpreserveoriginal": {
48
48
  "type": "asciifolding",
49
49
  "preserve_original": true
50
50
  },
@@ -15,15 +15,38 @@
15
15
  "description": "Identifier of the name scheme.",
16
16
  "$ref": "local://definitions-v1.0.0.json#/identifier"
17
17
  },
18
- "name": {"type": "string"},
19
- "given_name": {"type": "string"},
20
- "family_name": {"type": "string"},
18
+ "name": {
19
+ "type": "string"
20
+ },
21
+ "given_name": {
22
+ "type": "string"
23
+ },
24
+ "family_name": {
25
+ "type": "string"
26
+ },
21
27
  "identifiers": {
22
28
  "description": "Identifiers for the person.",
23
29
  "type": "array",
24
- "items": {"$ref": "local://definitions-v1.0.0.json#/identifiers_with_scheme"},
30
+ "items": {
31
+ "$ref": "local://definitions-v1.0.0.json#/identifiers_with_scheme"
32
+ },
25
33
  "uniqueItems": true
26
34
  },
35
+ "props": {
36
+ "type": "object",
37
+ "patternProperties": {
38
+ "^.*$": {
39
+ "oneOf": [
40
+ {
41
+ "type": "string"
42
+ },
43
+ {
44
+ "type": "boolean"
45
+ }
46
+ ]
47
+ }
48
+ }
49
+ },
27
50
  "affiliations": {
28
51
  "description": "Affiliations of the person.",
29
52
  "type": "array",
@@ -42,4 +65,4 @@
42
65
  "uniqueItems": true
43
66
  }
44
67
  }
45
- }
68
+ }
@@ -144,6 +144,10 @@
144
144
  "type": "keyword"
145
145
  }
146
146
  }
147
+ },
148
+ "props": {
149
+ "type": "object",
150
+ "dynamic": "true"
147
151
  }
148
152
  }
149
153
  }
@@ -144,6 +144,10 @@
144
144
  "type": "keyword"
145
145
  }
146
146
  }
147
+ },
148
+ "props": {
149
+ "type": "object",
150
+ "dynamic": "true"
147
151
  }
148
152
  }
149
153
  }
@@ -10,11 +10,21 @@
10
10
 
11
11
  from invenio_records_permissions.generators import AuthenticatedUser, SystemProcess
12
12
 
13
- from ...services.permissions import PermissionPolicy
13
+ from invenio_vocabularies.services.generators import IfTags
14
+ from invenio_vocabularies.services.permissions import PermissionPolicy
14
15
 
15
16
 
16
17
  class NamesPermissionPolicy(PermissionPolicy):
17
- """Permission policy."""
18
+ """Names permission policy.
18
19
 
19
- can_search = [SystemProcess(), AuthenticatedUser()]
20
- can_read = [SystemProcess(), AuthenticatedUser()]
20
+ Names endpoints are protected, only authenticated users can access them.
21
+ """
22
+
23
+ can_search = [
24
+ SystemProcess(),
25
+ AuthenticatedUser(),
26
+ ]
27
+ can_read = [
28
+ SystemProcess(),
29
+ IfTags(["unlisted"], then_=[SystemProcess()], else_=[AuthenticatedUser()]),
30
+ ]
@@ -42,6 +42,7 @@ class NameSchema(BaseVocabularySchema, ModePIDFieldVocabularyMixin):
42
42
  )
43
43
  )
44
44
  affiliations = fields.List(fields.Nested(AffiliationRelationSchema))
45
+ props = fields.Dict(keys=fields.Str(), values=fields.Raw())
45
46
 
46
47
  @validates_schema
47
48
  def validate_names(self, data, **kwargs):
@@ -19,11 +19,12 @@ NamesServiceConfig = record_type.service_config_cls
19
19
  class NamesService(record_type.service_cls):
20
20
  """Name service."""
21
21
 
22
- def resolve(self, identity, id_, id_type):
22
+ def resolve(self, identity, id_, id_type, many=False):
23
23
  """Get the record with a given identifier.
24
24
 
25
- This method assumes that the are no duplicates in the system
26
- (i.e. only one name record can have a pair of identifier:scheme).
25
+ param id_: The identifier value.
26
+ param id_type: The identifier type.
27
+ param many: If True, return a list of records.
27
28
  """
28
29
  search_query = dsl.Q(
29
30
  "bool",
@@ -36,20 +37,28 @@ class NamesService(record_type.service_cls):
36
37
 
37
38
  # max_records = 1, we assume there cannot be duplicates
38
39
  # the loading process needs to make sure of that
39
- results = self._read_many(identity, search_query, max_records=1)
40
+ if many:
41
+ results = self._read_many(identity, search_query)
42
+ else:
43
+ results = self._read_many(identity, search_query, max_records=1)
44
+
40
45
  # cant use the results_item because it returns dicts intead of records
41
46
  total = results.hits.total["value"]
42
47
  if total == 0:
43
48
  # Not a PID but trated as such
44
49
  raise PIDDoesNotExistError(pid_type=id_type, pid_value=id_)
50
+ if many:
51
+ for result in results:
52
+ record = self.record_cls.loads(result.to_dict())
53
+ self.require_permission(identity, "read", record=record)
54
+ return self.result_list(self, identity, results)
55
+ else:
56
+ record = self.record_cls.loads(results[0].to_dict())
57
+ self.require_permission(identity, "read", record=record)
45
58
 
46
- # (0 < #hits <= max_records) = 1
47
- record = self.record_cls.loads(results[0].to_dict())
48
- self.require_permission(identity, "read", record=record)
49
-
50
- return self.result_item(
51
- self,
52
- identity,
53
- record,
54
- links_tpl=self.links_item_tpl,
55
- )
59
+ return self.result_item(
60
+ self,
61
+ identity,
62
+ record,
63
+ links_tpl=self.links_item_tpl,
64
+ )
@@ -11,6 +11,7 @@
11
11
  """Subjects configuration."""
12
12
 
13
13
  from flask import current_app
14
+ from invenio_i18n import get_locale
14
15
  from invenio_i18n import lazy_gettext as _
15
16
  from invenio_records_resources.services import SearchOptions
16
17
  from invenio_records_resources.services.records.components import DataComponent
@@ -22,6 +23,7 @@ from ...services.querystr import FilteredSuggestQueryParser
22
23
  subject_schemes = LocalProxy(
23
24
  lambda: current_app.config["VOCABULARIES_SUBJECTS_SCHEMES"]
24
25
  )
26
+ localized_title = LocalProxy(lambda: f"title.{get_locale()}^20")
25
27
 
26
28
 
27
29
  class SubjectsSearchOptions(SearchOptions):
@@ -30,7 +32,8 @@ class SubjectsSearchOptions(SearchOptions):
30
32
  suggest_parser_cls = FilteredSuggestQueryParser.factory(
31
33
  filter_field="scheme",
32
34
  fields=[ # suggest fields
33
- "title.*^100",
35
+ "subject^100",
36
+ localized_title,
34
37
  "synonyms^20",
35
38
  ],
36
39
  )
@@ -22,14 +22,19 @@ class MeshSubjectsTransformer(BaseTransformer):
22
22
  """Apply transformation on steam entry."""
23
23
  entry_data = stream_entry.entry
24
24
 
25
- # ID in MeSH data is the URL, ex. https://id.nlm.nih.gov/mesh/D000001
25
+ # ID in MeSH data is in the URL, ex. https://id.nlm.nih.gov/mesh/D000001
26
26
  # We just want to use the ID prefixed by "mesh:""
27
27
  try:
28
28
  mesh_id = entry_data["id"].split("/")[-1]
29
+ entry_data["id"] = "mesh:" + mesh_id
29
30
  except Exception:
30
31
  raise TransformerError("Not a valid MeSH ID.")
31
32
 
32
- entry_data["id"] = "mesh:" + mesh_id
33
+ entry_data["title"] = title = entry_data.get("title", {})
34
+ # NOTE: MeSH import file comes with an English subject by default
35
+ if "en" not in title:
36
+ title["en"] = entry_data["subject"]
37
+
33
38
  return stream_entry
34
39
 
35
40
 
@@ -18,6 +18,8 @@ from marshmallow_utils.fields import TZDateTime
18
18
 
19
19
  from invenio_vocabularies.services.tasks import process_datastream
20
20
 
21
+ from .contrib.names.datastreams import ORCID_PRESET_DATASTREAM_CONFIG
22
+
21
23
 
22
24
  class ArgsSchema(Schema):
23
25
  """Schema of task input arguments."""
@@ -194,3 +196,16 @@ class UpdateAwardsCordisJob(ProcessDataStreamJob):
194
196
  ],
195
197
  }
196
198
  }
199
+
200
+
201
+ class ImportORCIDJob(ProcessDataStreamJob):
202
+ """Import ORCID data registered task."""
203
+
204
+ description = "Import ORCID data"
205
+ title = "Import ORCID data"
206
+ id = "import_orcid"
207
+
208
+ @classmethod
209
+ def default_args(cls, job_obj, **kwargs):
210
+ """Generate default job arguments."""
211
+ return {"config": {**ORCID_PRESET_DATASTREAM_CONFIG}}
@@ -0,0 +1,38 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2024 CERN.
4
+ #
5
+ # Invenio-Vocabularies is free software; you can redistribute it and/or
6
+ # modify it under the terms of the MIT License; see LICENSE file for more
7
+ # details.
8
+ #
9
+
10
+ """Vocabulary generators."""
11
+
12
+ from invenio_access import any_user, authenticated_user
13
+ from invenio_records_permissions.generators import ConditionalGenerator
14
+ from invenio_search.engine import dsl
15
+
16
+
17
+ class IfTags(ConditionalGenerator):
18
+ """Generator to filter based on tags.
19
+
20
+ This generator will filter out records based on the tags field.
21
+ """
22
+
23
+ def __init__(self, tags, then_, else_):
24
+ """Constructor."""
25
+ self.tags = tags or []
26
+ super().__init__(then_, else_)
27
+
28
+ def _condition(self, record=None, **kwargs):
29
+ """Check if the record has the tags."""
30
+ return any(tag in record.get("tags", []) for tag in self.tags)
31
+
32
+ def query_filter(self, **kwargs):
33
+ """Search based on configured tags."""
34
+ must_not_clauses = [dsl.Q("terms", tags=self.tags)]
35
+ return dsl.Q(
36
+ "bool",
37
+ must_not=must_not_clauses,
38
+ )
@@ -11,12 +11,17 @@
11
11
  from invenio_records_permissions import RecordPermissionPolicy
12
12
  from invenio_records_permissions.generators import AnyUser, SystemProcess
13
13
 
14
+ from invenio_vocabularies.services.generators import IfTags
15
+
14
16
 
15
17
  class PermissionPolicy(RecordPermissionPolicy):
16
18
  """Permission policy."""
17
19
 
18
20
  can_search = [SystemProcess(), AnyUser()]
19
- can_read = [SystemProcess(), AnyUser()]
21
+ can_read = [
22
+ SystemProcess(),
23
+ IfTags(["unlisted"], then_=[SystemProcess()], else_=[AnyUser()]),
24
+ ]
20
25
  can_create = [SystemProcess()]
21
26
  can_update = [SystemProcess()]
22
27
  can_delete = [SystemProcess()]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-vocabularies
3
- Version: 6.4.1
3
+ Version: 6.6.0
4
4
  Summary: Invenio module for managing vocabularies.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-vocabularies
6
6
  Author: CERN
@@ -83,6 +83,23 @@ https://invenio-vocabularies.readthedocs.io/
83
83
  Changes
84
84
  =======
85
85
 
86
+ Version v6.6.0 (released 2024-11-15)
87
+
88
+ - mesh: add title en if not present
89
+ - subjects: add subject to search fields
90
+ - jobs: add ORCID job
91
+ - global: Add unlisted tag
92
+ * This adds a new tag to the vocabularies to allow for unlisted
93
+ vocabularies. This is useful for vocabularies that are not meant to be
94
+ displayed in the UI.
95
+ * This requires to update the names mapping to add the props.
96
+
97
+ Version v6.5.0 (released 2024-10-31)
98
+
99
+ - subjects: euroscivoc: change default to latest version-less URL
100
+ - Rename patched filters so the normalizer uses the default ones (#409)
101
+ * rename patched filters so the normalizer uses the default ones
102
+
86
103
  Version v6.4.1 (released 2024-10-15)
87
104
 
88
105
  - fix: exclude unknown fields when updating awards with subjects
@@ -1,10 +1,10 @@
1
- invenio_vocabularies/__init__.py,sha256=cnTvl-gNQL8JCB5A30kCWNNoQi84lT9ksWrLQbmr8eY,377
1
+ invenio_vocabularies/__init__.py,sha256=DkkDOJmftfh3xjufCTDk4WnNqDSoY5oEWAyLQ_kwtwI,377
2
2
  invenio_vocabularies/cli.py,sha256=S3lBsLxsSYa83sCDaGZr5mP7TwPvmmwxzzbB13h8VBI,5856
3
- invenio_vocabularies/config.py,sha256=bpNKVgwfb7bgkP5zbmoawnAMD6bHWXIJV-6CpEhi-M8,5752
3
+ invenio_vocabularies/config.py,sha256=l-mKnoZaIO0p-9K2gnlBvExdjzpQw5aU1lFI16ZI4Mk,5614
4
4
  invenio_vocabularies/ext.py,sha256=GujJ4UARd4Fxf4z7zznRk9JAgHamZuYCOdrKU5czg00,5987
5
5
  invenio_vocabularies/factories.py,sha256=mVg4yGKe58e4uS8rYe0DmIO6oMpmtNTcK3wH9eM5jVU,4380
6
6
  invenio_vocabularies/fixtures.py,sha256=nNWwH04HFASjfj1oy5kMdcQGKmVjzUuA5wSw-ER1QAg,1585
7
- invenio_vocabularies/jobs.py,sha256=OoQOBQoWOLHZ16EMlVM54OezgO58u_aMDemAjbCuUk8,6371
7
+ invenio_vocabularies/jobs.py,sha256=0aTukWooBPCvEgvnjJcQAZuMeS2H_m-RGULNIfJ5Gmc,6800
8
8
  invenio_vocabularies/proxies.py,sha256=k7cTUgWfnCoYIuNqAj_VFi1zBN33KNNclRSVnBkObEM,711
9
9
  invenio_vocabularies/views.py,sha256=PNJ5nvc3O7ASwNe56xmqy5YaU9n3UYF3W2JwvtE_kYs,1561
10
10
  invenio_vocabularies/webpack.py,sha256=hzTM0qx6iiRHkmjti53yuZ5ebfPMR5mpO9uNewBat74,1891
@@ -44,7 +44,7 @@ invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/script
44
44
  invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/scripts/initCatalog.js,sha256=ghTi5iOIhT8AJoFGlxnBrHWiw2ts21dKwY_vWxmkiCE,682
45
45
  invenio_vocabularies/contrib/__init__.py,sha256=C5eDia6tAVBCrbb5hd_KnxmczyBoF87NIBUCLID-Tzc,240
46
46
  invenio_vocabularies/contrib/affiliations/__init__.py,sha256=rV8YAzBRoSKsBYcVjCNJh6j7ITuPRfurwj9HJHRjkN8,565
47
- invenio_vocabularies/contrib/affiliations/affiliations.py,sha256=BSEjzAjLq17GGKHyPrgC5VLluvZqVnKMepIiqqLQKzo,2077
47
+ invenio_vocabularies/contrib/affiliations/affiliations.py,sha256=zqFwrAuYhZw7dTfm7dE8bUDxmyPqydUEjKTMPwWSjHk,2096
48
48
  invenio_vocabularies/contrib/affiliations/api.py,sha256=5nIOvpfcseuAAg2XgblHc8jb7TAdfU79XOBRpL-p398,326
49
49
  invenio_vocabularies/contrib/affiliations/config.py,sha256=kk-zAl7Uyi6N4qVOiCkBD9cN1KKOvDcILDHJ-zoIzJA,2084
50
50
  invenio_vocabularies/contrib/affiliations/datastreams.py,sha256=M99qM0R2_Tpa1IR_WC9xI2jHQDaVjvEHSn7Mh17_AHI,6060
@@ -66,7 +66,7 @@ invenio_vocabularies/contrib/affiliations/mappings/v7/__init__.py,sha256=zr9YyyK
66
66
  invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json,sha256=PaHChFsf9r7xRnZ_7ro8SWNEXpWv4uUYrl32g0QESZs,2096
67
67
  invenio_vocabularies/contrib/awards/__init__.py,sha256=KwCmwFalz-3pDs9iTa5TKUidBjLepnUMqpCBXRiQOO8,474
68
68
  invenio_vocabularies/contrib/awards/api.py,sha256=OXukE7PLXs45BTtqVrhvGBNqLmQaI-CgXmHTCi36LZk,303
69
- invenio_vocabularies/contrib/awards/awards.py,sha256=tOLvcvTPiN1gn1QAl-hSh1bwcclg8Kx2ZMmJMEhI7vk,2959
69
+ invenio_vocabularies/contrib/awards/awards.py,sha256=GrC-ClFPWrGl_kij2aSpsidnHisBP5_V1kdkCaoYjmQ,2978
70
70
  invenio_vocabularies/contrib/awards/config.py,sha256=PlDHabkWDUzwa1Fvk_U2hG83kQYBqM1IyChg8Yg_VlY,1630
71
71
  invenio_vocabularies/contrib/awards/datastreams.py,sha256=4J6JFCqYosDO8y4FRq-LTWgRNPbeH4Tj4Tur6ziChtY,14234
72
72
  invenio_vocabularies/contrib/awards/models.py,sha256=mM-kSNf7kDH3oIbV8epxxbUi7muYqi4JreXxgWXlVzw,318
@@ -93,7 +93,7 @@ invenio_vocabularies/contrib/funders/api.py,sha256=QKGGeSnPHSoBfucvpaVruXT_txYid
93
93
  invenio_vocabularies/contrib/funders/config.py,sha256=EU7UrwLOkr2Bem9Skz_HJIxyBQRkXEdPT8zIuV8vbzI,2217
94
94
  invenio_vocabularies/contrib/funders/datastreams.py,sha256=3tOwcN1mK5AVqtdU6KdguouGSUurPTO-FDWTKzK1eRo,2481
95
95
  invenio_vocabularies/contrib/funders/facets.py,sha256=a068TVtt74Ncu0latb177LFK8EdnpbMOWecAKozA04M,1245
96
- invenio_vocabularies/contrib/funders/funders.py,sha256=F2AQWv7IfSovThoKPEmlQbxbbmv7gNzIxDoSCaL5D0U,2338
96
+ invenio_vocabularies/contrib/funders/funders.py,sha256=j4V7lz0fR5rp5XBL3cwmQQElwpopIpv4v37xfi1rU0o,2357
97
97
  invenio_vocabularies/contrib/funders/models.py,sha256=RAU-_YVOUNVCn03_XGJ2czcVwXTaZPk5w7X_bMAgMOk,314
98
98
  invenio_vocabularies/contrib/funders/resources.py,sha256=He4gXd737ovdrHL-HB9dX7AGxp1BVJ9QteIO7JWUVSE,415
99
99
  invenio_vocabularies/contrib/funders/schema.py,sha256=tEOdMU2i0z_3PkXL1yD1qIJeoAy_8n22xxv8V7iltz0,2480
@@ -104,10 +104,10 @@ invenio_vocabularies/contrib/funders/jsonschemas/funders/funder-v1.0.0.json,sha2
104
104
  invenio_vocabularies/contrib/funders/mappings/__init__.py,sha256=aSr-tZd9rsjet6leeS336gdSdZHXwZKdaPStNtVNQVk,244
105
105
  invenio_vocabularies/contrib/funders/mappings/os-v1/__init__.py,sha256=xXEX3tacmXp0I1KFtDw7ohIahozd2oIGp1UN40IhFic,251
106
106
  invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v1.0.0.json,sha256=E7Zp4IHsQGdaxVrksr-SaQtieV7tV0W6-LgGe231G1w,1646
107
- invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v2.0.0.json,sha256=31shkTYZDvx7tSCnOA4OlqRmQ0IEv2qhePJsIStReJo,3385
107
+ invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v2.0.0.json,sha256=gx2CkNWNcTxP94iCU9remCrWxR-AmNqloYTh47gwNHQ,3481
108
108
  invenio_vocabularies/contrib/funders/mappings/os-v2/__init__.py,sha256=YvMRlKYTnEmyTzI9smZp_lO3w-zcK-8IpqT-jGUXEEY,251
109
109
  invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v1.0.0.json,sha256=E7Zp4IHsQGdaxVrksr-SaQtieV7tV0W6-LgGe231G1w,1646
110
- invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v2.0.0.json,sha256=31shkTYZDvx7tSCnOA4OlqRmQ0IEv2qhePJsIStReJo,3385
110
+ invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v2.0.0.json,sha256=gx2CkNWNcTxP94iCU9remCrWxR-AmNqloYTh47gwNHQ,3481
111
111
  invenio_vocabularies/contrib/funders/mappings/v7/__init__.py,sha256=yFHmi3QYD65YKzLU5vMEtwAZn0gwkFYa6Db_tSbHjKE,254
112
112
  invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json,sha256=E7Zp4IHsQGdaxVrksr-SaQtieV7tV0W6-LgGe231G1w,1646
113
113
  invenio_vocabularies/contrib/names/__init__.py,sha256=DBfsM7JMETZGaV5QmXEwE7zhCaAXvc2SZN6uXnW_V-c,451
@@ -116,25 +116,25 @@ invenio_vocabularies/contrib/names/config.py,sha256=8FVtMuq1NHC0cz8O-p_-Ng_IpHE9
116
116
  invenio_vocabularies/contrib/names/datastreams.py,sha256=EKatHb0gkvcC9LCYBLIcN5pAgklBY4G43lZR_XE52wY,9505
117
117
  invenio_vocabularies/contrib/names/models.py,sha256=SYdtDDG-y5Wq_d06YhiVO5n8gfxPW_mx-tECsIcv5H8,308
118
118
  invenio_vocabularies/contrib/names/names.py,sha256=x_kcSrH48Q6Iqx1zeCcat5xRmTLe_KqZd5CbHCeR2C4,2498
119
- invenio_vocabularies/contrib/names/permissions.py,sha256=d7UxvmqFBKWNcFQeJ4MGGFUHlNh_BJGO03-DVW_YFI4,576
119
+ invenio_vocabularies/contrib/names/permissions.py,sha256=5xrpYsA3oQUJ5lJpF7wjRAFiW-pM6_yP1k9zllbRwnQ,844
120
120
  invenio_vocabularies/contrib/names/resources.py,sha256=Z8XqLKfFKE69zdTTvcTDmpEZ6wqiqjIH5tp0LzXTSwQ,1588
121
121
  invenio_vocabularies/contrib/names/s3client.py,sha256=c7B9_NbnXCfE4pE_yMTsT6uQ2hgbcRU-KY6nbWFuFzU,1063
122
- invenio_vocabularies/contrib/names/schema.py,sha256=eKhpNwBaACMEY0JWNrSUhr-40lXhkiHDRmM42KsLrYg,3354
123
- invenio_vocabularies/contrib/names/services.py,sha256=1viM-L8VEojmQWMisIOhDyl8KInPPCZEIf6tU8G07As,1763
122
+ invenio_vocabularies/contrib/names/schema.py,sha256=zALcirT7toGnzLuLWlec6sTElpCxELNHvcANA75jScc,3418
123
+ invenio_vocabularies/contrib/names/services.py,sha256=IyZzZ9fovSQa_tqorWciRaPTrY5yv1clD9PHotdzYOQ,2125
124
124
  invenio_vocabularies/contrib/names/jsonschemas/__init__.py,sha256=pdDZdyoxqWbAQ6ngiclhYoDUsGKgRDRPXlIDy0U5Jzg,241
125
- invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json,sha256=RYV811bVjnbcBnelZBSDX2hmG2Y6bZXb-u65GLXz2qE,1258
125
+ invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json,sha256=SmnQtet_AWZE1uZR8UY01IiO5QVLHRNAQ2cNubfP8-o,1573
126
126
  invenio_vocabularies/contrib/names/mappings/__init__.py,sha256=l5hYJmrj83lds5GupnwCcwQn7cdJo6_4H4YYzrnBa54,242
127
127
  invenio_vocabularies/contrib/names/mappings/os-v1/__init__.py,sha256=CKtF-xflE4QGF5P82Lj1ifEP1c7ekR24fc3SiTAkhsY,249
128
128
  invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v1.0.0.json,sha256=5Ybcq3fUMYx3u1MNKmHh-CWBtATS9MYpdEcwAM8EQ80,1943
129
- invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v2.0.0.json,sha256=q9jfAXSy_r0ZcTVH-9HbpM29P_wzIi7NKpufJphGJ8A,3349
129
+ invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v2.0.0.json,sha256=qnQyYP_eJedklQaNZHkzJL1Az1jzNz6MC-o4dksrN6I,3427
130
130
  invenio_vocabularies/contrib/names/mappings/os-v2/__init__.py,sha256=p38Ausy2cu1OetTQYwx-9gOFoxGrtrmqjArSDpvxfMU,249
131
131
  invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v1.0.0.json,sha256=5Ybcq3fUMYx3u1MNKmHh-CWBtATS9MYpdEcwAM8EQ80,1943
132
- invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v2.0.0.json,sha256=q9jfAXSy_r0ZcTVH-9HbpM29P_wzIi7NKpufJphGJ8A,3349
132
+ invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v2.0.0.json,sha256=qnQyYP_eJedklQaNZHkzJL1Az1jzNz6MC-o4dksrN6I,3427
133
133
  invenio_vocabularies/contrib/names/mappings/v7/__init__.py,sha256=qLGB8C0kPI3xubcfhI8t6Wb2bLlCmVYCiwQ08bKGz9g,252
134
134
  invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json,sha256=5Ybcq3fUMYx3u1MNKmHh-CWBtATS9MYpdEcwAM8EQ80,1943
135
135
  invenio_vocabularies/contrib/subjects/__init__.py,sha256=GtXZKA6VWG1oA1fUX2Wh92nd-1i7RnnQF6RprGhxkD4,591
136
136
  invenio_vocabularies/contrib/subjects/api.py,sha256=QH8mxoLsa8qjJT1i1Tj6rRnpbH23plo2IMOJ56rnvbU,347
137
- invenio_vocabularies/contrib/subjects/config.py,sha256=12Hoy46iGaBv7DlxcCjBuJaDtmpSvPPQKrWabtaUGe0,1712
137
+ invenio_vocabularies/contrib/subjects/config.py,sha256=lkui8VA9yoshA5_mIIkWrJrGfo0rBEpOu_wI0pbBjP4,1842
138
138
  invenio_vocabularies/contrib/subjects/datastreams.py,sha256=CiLSTm9PukzLKm34VDmmKOH4A_pYnjbrshxAht1Fox4,1787
139
139
  invenio_vocabularies/contrib/subjects/facets.py,sha256=qQ7_rppFBzsmrlZu4-MvOIdUcjeOmDA9gOHAcs0lWwI,695
140
140
  invenio_vocabularies/contrib/subjects/models.py,sha256=8XgbVRxDDvhWPjMWsoCriNlOKdmV_113a14yLRtlvM4,363
@@ -154,7 +154,7 @@ invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.jso
154
154
  invenio_vocabularies/contrib/subjects/mappings/v7/__init__.py,sha256=QK__a1749g2UN3fBqOr9jx8ccZHWAuvd6DSN4B1jJW4,258
155
155
  invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json,sha256=WNNWVsaf-pNxqV6p_IR2uIcwIBh30WJeP4IDIxzqutI,1810
156
156
  invenio_vocabularies/contrib/subjects/mesh/__init__.py,sha256=P44hmgVNNTN5O_EmWgaeYJ91yqkGNoeKYo0wfif_wE4,241
157
- invenio_vocabularies/contrib/subjects/mesh/datastreams.py,sha256=qsi2fu-TzpI2aC9qIOkXGpNcLFkClJ5Dw5rC9ffEdjc,1318
157
+ invenio_vocabularies/contrib/subjects/mesh/datastreams.py,sha256=6W6bgQ7P_31kf3enkAqCBTFBqgrQ2BlV625vn0N9ibQ,1544
158
158
  invenio_vocabularies/datastreams/__init__.py,sha256=VPefh6k4Q3eYxKIW8I5zXUGucntp7VHxaOR5Vhgkfmg,412
159
159
  invenio_vocabularies/datastreams/datastreams.py,sha256=SpI6ivmf2LIDS2JSkxoM2v5kRmrPoRDtAG5fuzZO4oQ,6078
160
160
  invenio_vocabularies/datastreams/errors.py,sha256=IDUZ3gNtYGrhcOgApHCms1gNNJTyJzoMPmG5JtIeYNU,678
@@ -190,7 +190,8 @@ invenio_vocabularies/services/__init__.py,sha256=6mi62EG21Id6x23nx0X193I6sVTakK6
190
190
  invenio_vocabularies/services/components.py,sha256=d9C-24dEDM63gFm75nU-dXrrjS2zZi7Nfkv40BGnHwM,1941
191
191
  invenio_vocabularies/services/config.py,sha256=H5l1PQ-72-LyLXPiouvU9_7lqWZcdKOrGVSTlyldIdE,4787
192
192
  invenio_vocabularies/services/facets.py,sha256=qvdHoGSJJr90dZHSVe0-hlO1r0LtTnFVSjrt9PNuNAg,3872
193
- invenio_vocabularies/services/permissions.py,sha256=nU1t_aW-RimFTWHbg9SivfzoP3P2Z5CqZ16U4jX5wN8,821
193
+ invenio_vocabularies/services/generators.py,sha256=jcXwb9Hiyek4o-cQ1G2osVgbTBKDbd-5siJMBOWE018,1116
194
+ invenio_vocabularies/services/permissions.py,sha256=83rNOwCuggdJji3VtWTQgytTrhfiWqASCpvI75DxEus,960
194
195
  invenio_vocabularies/services/querystr.py,sha256=X3JHVF9B0O0iLWrnW3ok_bf_8jA-Cs_oAcYYkGOm3Uw,1829
195
196
  invenio_vocabularies/services/results.py,sha256=6LZIpzWSbt9wpRNWgjA1uIM4RFooOYTkHcp5-PnIJdU,3767
196
197
  invenio_vocabularies/services/schema.py,sha256=mwIBFylpQlWw1M6h_axc-z4Yd7X3Z1S0PxJOlZGpfrQ,4634
@@ -297,10 +298,10 @@ invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo,sha256=g1I5aNO8r
297
298
  invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.po,sha256=vg8qC8ofpAdJ3mQz7mWM1ylKDpiNWXFs7rlMdSPkgKk,4629
298
299
  invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo,sha256=cqSm8NtMAwrP9O6qbmtkDtRT1e9D93qpsJN5X9_PPVw,600
299
300
  invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.po,sha256=9ACePz_EpB-LfcIJajZ2kp8Q04tcdrQLOtug162ZUss,4115
300
- invenio_vocabularies-6.4.1.dist-info/AUTHORS.rst,sha256=8d0p_WWE1r9DavvzMDi2D4YIGBHiMYcN3LYxqQOj8sY,291
301
- invenio_vocabularies-6.4.1.dist-info/LICENSE,sha256=UvI8pR8jGWqe0sTkb_hRG6eIrozzWwWzyCGEpuXX4KE,1062
302
- invenio_vocabularies-6.4.1.dist-info/METADATA,sha256=54qe6nCLmGJy9rNAImi2olrld8Cl2p3BGn2jp6u9ADY,10433
303
- invenio_vocabularies-6.4.1.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
304
- invenio_vocabularies-6.4.1.dist-info/entry_points.txt,sha256=xskfdwhOV074XHL1g8x8BZ6BNsdZ6D7XPVqcU5JqB2g,3118
305
- invenio_vocabularies-6.4.1.dist-info/top_level.txt,sha256=x1gRNbaODF_bCD0SBLM3nVOFPGi06cmGX5X94WKrFKk,21
306
- invenio_vocabularies-6.4.1.dist-info/RECORD,,
301
+ invenio_vocabularies-6.6.0.dist-info/AUTHORS.rst,sha256=8d0p_WWE1r9DavvzMDi2D4YIGBHiMYcN3LYxqQOj8sY,291
302
+ invenio_vocabularies-6.6.0.dist-info/LICENSE,sha256=UvI8pR8jGWqe0sTkb_hRG6eIrozzWwWzyCGEpuXX4KE,1062
303
+ invenio_vocabularies-6.6.0.dist-info/METADATA,sha256=-goSCUDGKwEl_kvbJJdy3WTizJVJlQKdGq3lFhtqIqM,11082
304
+ invenio_vocabularies-6.6.0.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
305
+ invenio_vocabularies-6.6.0.dist-info/entry_points.txt,sha256=ud9nfdMlhO_mu3okwmy5vQD48r3-rCU_pSR-lUtLeYE,3180
306
+ invenio_vocabularies-6.6.0.dist-info/top_level.txt,sha256=x1gRNbaODF_bCD0SBLM3nVOFPGi06cmGX5X94WKrFKk,21
307
+ invenio_vocabularies-6.6.0.dist-info/RECORD,,
@@ -51,6 +51,7 @@ invenio_vocabularies = invenio_vocabularies
51
51
 
52
52
  [invenio_jobs.jobs]
53
53
  import_awards_openaire = invenio_vocabularies.jobs:ImportAwardsOpenAIREJob
54
+ import_orcid_names = invenio_vocabularies.jobs:ImportORCIDJob
54
55
  process_ror_affiliations = invenio_vocabularies.jobs:ProcessRORAffiliationsJob
55
56
  process_ror_funders = invenio_vocabularies.jobs:ProcessRORFundersJob
56
57
  update_awards_cordis = invenio_vocabularies.jobs:UpdateAwardsCordisJob