invenio-vocabularies 9.1.2__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.
- invenio_vocabularies/__init__.py +16 -0
- invenio_vocabularies/administration/__init__.py +10 -0
- invenio_vocabularies/administration/views/__init__.py +10 -0
- invenio_vocabularies/administration/views/vocabularies.py +43 -0
- invenio_vocabularies/alembic/17c703ce1eb7_create_names_table.py +54 -0
- invenio_vocabularies/alembic/3ba812d80559_add_internal_name_id.py +36 -0
- invenio_vocabularies/alembic/4a9a4fd235f8_create_vocabulary_schemes.py +37 -0
- invenio_vocabularies/alembic/4f365fced43f_create_vocabularies_tables.py +92 -0
- invenio_vocabularies/alembic/55a700f897b6_add_names_and_afiliations_pid_column.py +96 -0
- invenio_vocabularies/alembic/6312f33645c1_create_affiliations_table.py +54 -0
- invenio_vocabularies/alembic/676dd587542d_create_funders_vocabulary_table.py +58 -0
- invenio_vocabularies/alembic/8ff82dfb0be8_create_vocabularies_branch.py +28 -0
- invenio_vocabularies/alembic/__init__.py +9 -0
- invenio_vocabularies/alembic/af2457652217_drop_unique_constraint_from_internal_id.py +37 -0
- invenio_vocabularies/alembic/e1146238edd3_create_awards_table.py +56 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.eslintrc.yml +11 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/.prettierrc +1 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/index.js +7 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/package.json +25 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/AwardResults.js +95 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/CustomAwardForm.js +139 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FunderDropdown.js +87 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.js +244 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingField.test.js +1 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingFieldItem.js +152 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/FundingModal.js +246 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/NoAwardResults.js +37 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/Funding/index.js +8 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/forms/index.js +7 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/contrib/index.js +7 -0
- invenio_vocabularies/assets/semantic-ui/js/invenio_vocabularies/src/index.js +7 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/i18next.js +36 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/_generatedTranslations.js +66 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ar/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ar/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/bg/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/bg/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ca/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ca/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/cs/messages.po +97 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/cs/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/da/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/da/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/de/messages.po +98 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/de/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/el/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/el/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/en/messages.po +88 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/en/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/es/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/es/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/et/messages.po +95 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/et/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/fa/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/fa/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/fr/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/fr/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/hr/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/hr/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/hu/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/hu/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/index.js +24 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/it/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/it/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ja/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ja/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ka/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ka/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ko/messages.po +90 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ko/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/lt/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/lt/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/no/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/no/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/pl/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/pl/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/pt/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/pt/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ro/messages.po +95 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ro/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ru/messages.po +95 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/ru/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/sk/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/sk/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/sv/messages.po +98 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/sv/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/tr/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/tr/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/uk/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/uk/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/zh_CN/messages.po +96 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/zh_CN/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/zh_TW/messages.po +94 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/messages/zh_TW/translations.json +28 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/package.json +19 -0
- invenio_vocabularies/assets/semantic-ui/translations/invenio_vocabularies/translations.pot +88 -0
- invenio_vocabularies/cli.py +175 -0
- invenio_vocabularies/config.py +231 -0
- invenio_vocabularies/contrib/__init__.py +9 -0
- invenio_vocabularies/contrib/affiliations/__init__.py +20 -0
- invenio_vocabularies/contrib/affiliations/affiliations.py +61 -0
- invenio_vocabularies/contrib/affiliations/api.py +13 -0
- invenio_vocabularies/contrib/affiliations/config.py +79 -0
- invenio_vocabularies/contrib/affiliations/datastreams.py +301 -0
- invenio_vocabularies/contrib/affiliations/facets.py +36 -0
- invenio_vocabularies/contrib/affiliations/jsonschemas/__init__.py +9 -0
- invenio_vocabularies/contrib/affiliations/jsonschemas/affiliations/affiliation-v1.0.0.json +63 -0
- invenio_vocabularies/contrib/affiliations/mappings/__init__.py +10 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v1/__init__.py +9 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v1/affiliations/affiliation-v1.0.0.json +112 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v1/affiliations/affiliation-v2.0.0.json +171 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v2/__init__.py +9 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v2/affiliations/affiliation-v1.0.0.json +112 -0
- invenio_vocabularies/contrib/affiliations/mappings/os-v2/affiliations/affiliation-v2.0.0.json +171 -0
- invenio_vocabularies/contrib/affiliations/mappings/v7/__init__.py +9 -0
- invenio_vocabularies/contrib/affiliations/mappings/v7/affiliations/affiliation-v1.0.0.json +112 -0
- invenio_vocabularies/contrib/affiliations/models.py +13 -0
- invenio_vocabularies/contrib/affiliations/resources.py +16 -0
- invenio_vocabularies/contrib/affiliations/schema.py +71 -0
- invenio_vocabularies/contrib/affiliations/services.py +15 -0
- invenio_vocabularies/contrib/awards/__init__.py +19 -0
- invenio_vocabularies/contrib/awards/api.py +13 -0
- invenio_vocabularies/contrib/awards/awards.py +96 -0
- invenio_vocabularies/contrib/awards/config.py +59 -0
- invenio_vocabularies/contrib/awards/datastreams.py +372 -0
- invenio_vocabularies/contrib/awards/jsonschemas/__init__.py +9 -0
- invenio_vocabularies/contrib/awards/jsonschemas/awards/award-v1.0.0.json +91 -0
- invenio_vocabularies/contrib/awards/mappings/__init__.py +9 -0
- invenio_vocabularies/contrib/awards/mappings/os-v1/__init__.py +9 -0
- invenio_vocabularies/contrib/awards/mappings/os-v1/awards/award-v1.0.0.json +147 -0
- invenio_vocabularies/contrib/awards/mappings/os-v2/__init__.py +9 -0
- invenio_vocabularies/contrib/awards/mappings/os-v2/awards/award-v1.0.0.json +147 -0
- invenio_vocabularies/contrib/awards/mappings/v7/__init__.py +9 -0
- invenio_vocabularies/contrib/awards/mappings/v7/awards/award-v1.0.0.json +147 -0
- invenio_vocabularies/contrib/awards/models.py +13 -0
- invenio_vocabularies/contrib/awards/resources.py +16 -0
- invenio_vocabularies/contrib/awards/schema.py +119 -0
- invenio_vocabularies/contrib/awards/serializer.py +47 -0
- invenio_vocabularies/contrib/awards/services.py +15 -0
- 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 +230 -0
- invenio_vocabularies/contrib/funders/__init__.py +19 -0
- invenio_vocabularies/contrib/funders/api.py +13 -0
- invenio_vocabularies/contrib/funders/config.py +78 -0
- invenio_vocabularies/contrib/funders/datastreams.py +97 -0
- invenio_vocabularies/contrib/funders/facets.py +36 -0
- invenio_vocabularies/contrib/funders/funders.py +72 -0
- invenio_vocabularies/contrib/funders/jsonschemas/__init__.py +9 -0
- invenio_vocabularies/contrib/funders/jsonschemas/funders/funder-v1.0.0.json +65 -0
- invenio_vocabularies/contrib/funders/mappings/__init__.py +9 -0
- invenio_vocabularies/contrib/funders/mappings/os-v1/__init__.py +9 -0
- invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v1.0.0.json +90 -0
- invenio_vocabularies/contrib/funders/mappings/os-v1/funders/funder-v2.0.0.json +156 -0
- invenio_vocabularies/contrib/funders/mappings/os-v2/__init__.py +9 -0
- invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v1.0.0.json +90 -0
- invenio_vocabularies/contrib/funders/mappings/os-v2/funders/funder-v2.0.0.json +156 -0
- invenio_vocabularies/contrib/funders/mappings/v7/__init__.py +9 -0
- invenio_vocabularies/contrib/funders/mappings/v7/funders/funder-v1.0.0.json +90 -0
- invenio_vocabularies/contrib/funders/models.py +13 -0
- invenio_vocabularies/contrib/funders/resources.py +16 -0
- invenio_vocabularies/contrib/funders/schema.py +88 -0
- invenio_vocabularies/contrib/funders/serializer.py +33 -0
- invenio_vocabularies/contrib/funders/services.py +15 -0
- invenio_vocabularies/contrib/names/__init__.py +19 -0
- invenio_vocabularies/contrib/names/api.py +13 -0
- invenio_vocabularies/contrib/names/components.py +24 -0
- invenio_vocabularies/contrib/names/config.py +75 -0
- invenio_vocabularies/contrib/names/datastreams.py +483 -0
- invenio_vocabularies/contrib/names/jsonschemas/__init__.py +9 -0
- invenio_vocabularies/contrib/names/jsonschemas/names/name-v1.0.0.json +68 -0
- invenio_vocabularies/contrib/names/mappings/__init__.py +9 -0
- invenio_vocabularies/contrib/names/mappings/os-v1/__init__.py +9 -0
- invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v1.0.0.json +101 -0
- invenio_vocabularies/contrib/names/mappings/os-v1/names/name-v2.0.0.json +165 -0
- invenio_vocabularies/contrib/names/mappings/os-v2/__init__.py +9 -0
- invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v1.0.0.json +101 -0
- invenio_vocabularies/contrib/names/mappings/os-v2/names/name-v2.0.0.json +165 -0
- invenio_vocabularies/contrib/names/mappings/v7/__init__.py +9 -0
- invenio_vocabularies/contrib/names/mappings/v7/names/name-v1.0.0.json +101 -0
- invenio_vocabularies/contrib/names/models.py +13 -0
- invenio_vocabularies/contrib/names/names.py +80 -0
- invenio_vocabularies/contrib/names/permissions.py +30 -0
- invenio_vocabularies/contrib/names/resources.py +54 -0
- invenio_vocabularies/contrib/names/s3client.py +50 -0
- invenio_vocabularies/contrib/names/schema.py +121 -0
- invenio_vocabularies/contrib/names/services.py +64 -0
- invenio_vocabularies/contrib/subjects/__init__.py +22 -0
- invenio_vocabularies/contrib/subjects/api.py +14 -0
- invenio_vocabularies/contrib/subjects/config.py +90 -0
- invenio_vocabularies/contrib/subjects/datastreams.py +63 -0
- invenio_vocabularies/contrib/subjects/euroscivoc/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/euroscivoc/datastreams.py +101 -0
- invenio_vocabularies/contrib/subjects/facets.py +23 -0
- invenio_vocabularies/contrib/subjects/gemet/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/gemet/datastreams.py +140 -0
- invenio_vocabularies/contrib/subjects/jsonschemas/__init__.py +10 -0
- invenio_vocabularies/contrib/subjects/jsonschemas/subjects/subject-v1.0.0.json +69 -0
- invenio_vocabularies/contrib/subjects/mappings/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v1/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v1/subjects/subject-v1.0.0.json +96 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v2/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/mappings/os-v2/subjects/subject-v1.0.0.json +96 -0
- invenio_vocabularies/contrib/subjects/mappings/v7/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/mappings/v7/subjects/subject-v1.0.0.json +96 -0
- invenio_vocabularies/contrib/subjects/mesh/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/mesh/datastreams.py +48 -0
- invenio_vocabularies/contrib/subjects/models.py +14 -0
- invenio_vocabularies/contrib/subjects/nvs/__init__.py +9 -0
- invenio_vocabularies/contrib/subjects/nvs/datastreams.py +114 -0
- invenio_vocabularies/contrib/subjects/resources.py +17 -0
- invenio_vocabularies/contrib/subjects/schema.py +101 -0
- invenio_vocabularies/contrib/subjects/services.py +30 -0
- invenio_vocabularies/contrib/subjects/subjects.py +55 -0
- invenio_vocabularies/datastreams/__init__.py +18 -0
- invenio_vocabularies/datastreams/datastreams.py +239 -0
- invenio_vocabularies/datastreams/errors.py +29 -0
- invenio_vocabularies/datastreams/factories.py +86 -0
- invenio_vocabularies/datastreams/readers.py +448 -0
- invenio_vocabularies/datastreams/tasks.py +115 -0
- invenio_vocabularies/datastreams/transformers.py +130 -0
- invenio_vocabularies/datastreams/writers.py +222 -0
- invenio_vocabularies/datastreams/xml.py +34 -0
- invenio_vocabularies/ext.py +179 -0
- invenio_vocabularies/factories.py +193 -0
- invenio_vocabularies/fixtures.py +52 -0
- invenio_vocabularies/jobs.py +207 -0
- invenio_vocabularies/proxies.py +27 -0
- invenio_vocabularies/records/__init__.py +9 -0
- invenio_vocabularies/records/api.py +53 -0
- invenio_vocabularies/records/jsonschemas/__init__.py +9 -0
- invenio_vocabularies/records/jsonschemas/vocabularies/definitions-v1.0.0.json +30 -0
- invenio_vocabularies/records/jsonschemas/vocabularies/vocabulary-v1.0.0.json +55 -0
- invenio_vocabularies/records/mappings/__init__.py +9 -0
- invenio_vocabularies/records/mappings/os-v1/__init__.py +9 -0
- invenio_vocabularies/records/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +109 -0
- invenio_vocabularies/records/mappings/os-v2/__init__.py +9 -0
- invenio_vocabularies/records/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +109 -0
- invenio_vocabularies/records/mappings/v7/__init__.py +9 -0
- invenio_vocabularies/records/mappings/v7/vocabularies/vocabulary-v1.0.0.json +109 -0
- invenio_vocabularies/records/models.py +90 -0
- invenio_vocabularies/records/pidprovider.py +118 -0
- invenio_vocabularies/records/systemfields/__init__.py +16 -0
- invenio_vocabularies/records/systemfields/pid.py +125 -0
- invenio_vocabularies/records/systemfields/relations.py +51 -0
- invenio_vocabularies/resources/__init__.py +23 -0
- invenio_vocabularies/resources/config.py +105 -0
- invenio_vocabularies/resources/resource.py +156 -0
- invenio_vocabularies/resources/schema.py +21 -0
- invenio_vocabularies/resources/serializer.py +39 -0
- invenio_vocabularies/services/__init__.py +19 -0
- invenio_vocabularies/services/components.py +58 -0
- invenio_vocabularies/services/config.py +173 -0
- invenio_vocabularies/services/custom_fields/__init__.py +17 -0
- invenio_vocabularies/services/custom_fields/subject.py +82 -0
- invenio_vocabularies/services/custom_fields/vocabulary.py +96 -0
- invenio_vocabularies/services/facets.py +114 -0
- invenio_vocabularies/services/generators.py +38 -0
- invenio_vocabularies/services/permissions.py +30 -0
- invenio_vocabularies/services/querystr.py +57 -0
- invenio_vocabularies/services/results.py +110 -0
- invenio_vocabularies/services/schema.py +163 -0
- invenio_vocabularies/services/service.py +189 -0
- invenio_vocabularies/services/tasks.py +38 -0
- 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/ar/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ar/LC_MESSAGES/messages.po +277 -0
- invenio_vocabularies/translations/bg/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/bg/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/ca/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ca/LC_MESSAGES/messages.po +276 -0
- invenio_vocabularies/translations/cs/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/cs/LC_MESSAGES/messages.po +281 -0
- invenio_vocabularies/translations/da/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/da/LC_MESSAGES/messages.po +271 -0
- invenio_vocabularies/translations/de/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/de/LC_MESSAGES/messages.po +293 -0
- invenio_vocabularies/translations/el/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/el/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/es/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/es/LC_MESSAGES/messages.po +281 -0
- invenio_vocabularies/translations/et/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/et/LC_MESSAGES/messages.po +276 -0
- invenio_vocabularies/translations/fa/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fa/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/fr/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/fr/LC_MESSAGES/messages.po +279 -0
- invenio_vocabularies/translations/hr/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/hr/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/hu/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/hu/LC_MESSAGES/messages.po +280 -0
- invenio_vocabularies/translations/it/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/it/LC_MESSAGES/messages.po +277 -0
- invenio_vocabularies/translations/ja/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ja/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/ka/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ka/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/ko/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ko/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/lt/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/lt/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/messages.pot +270 -0
- invenio_vocabularies/translations/no/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/no/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/pl/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/pl/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/pt/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/pt/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/ro/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ro/LC_MESSAGES/messages.po +280 -0
- invenio_vocabularies/translations/ru/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/ru/LC_MESSAGES/messages.po +276 -0
- invenio_vocabularies/translations/sk/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/sk/LC_MESSAGES/messages.po +276 -0
- invenio_vocabularies/translations/sv/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/sv/LC_MESSAGES/messages.po +280 -0
- invenio_vocabularies/translations/tr/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/tr/LC_MESSAGES/messages.po +277 -0
- invenio_vocabularies/translations/uk/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/uk/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/zh_CN/LC_MESSAGES/messages.po +276 -0
- invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.mo +0 -0
- invenio_vocabularies/translations/zh_TW/LC_MESSAGES/messages.po +275 -0
- invenio_vocabularies/views.py +53 -0
- invenio_vocabularies/webpack.py +51 -0
- invenio_vocabularies-9.1.2.dist-info/METADATA +517 -0
- invenio_vocabularies-9.1.2.dist-info/RECORD +337 -0
- invenio_vocabularies-9.1.2.dist-info/WHEEL +6 -0
- invenio_vocabularies-9.1.2.dist-info/entry_points.txt +73 -0
- invenio_vocabularies-9.1.2.dist-info/licenses/AUTHORS.rst +13 -0
- invenio_vocabularies-9.1.2.dist-info/licenses/LICENSE +21 -0
- invenio_vocabularies-9.1.2.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2024 CERN.
|
|
4
|
+
# Copyright (C) 2021 Northwestern University.
|
|
5
|
+
# Copyright (C) 2024 University of Münster.
|
|
6
|
+
# Copyright (C) 2025 Graz University of Technology.
|
|
7
|
+
#
|
|
8
|
+
# Invenio-Vocabularies is free software; you can redistribute it and/or
|
|
9
|
+
# modify it under the terms of the MIT License; see LICENSE file for more
|
|
10
|
+
# details.
|
|
11
|
+
|
|
12
|
+
"""Vocabulary service."""
|
|
13
|
+
|
|
14
|
+
import sqlalchemy as sa
|
|
15
|
+
from invenio_cache import current_cache
|
|
16
|
+
from invenio_records_resources.services import LinksTemplate, RecordService
|
|
17
|
+
from invenio_records_resources.services.base.utils import map_search_params
|
|
18
|
+
from invenio_records_resources.services.records.schema import ServiceSchemaWrapper
|
|
19
|
+
from invenio_records_resources.services.uow import unit_of_work
|
|
20
|
+
from invenio_search.engine import dsl
|
|
21
|
+
|
|
22
|
+
from ..records.models import VocabularyType
|
|
23
|
+
from .tasks import process_datastream
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class VocabularyTypeService(RecordService):
|
|
27
|
+
"""Vocabulary type service."""
|
|
28
|
+
|
|
29
|
+
def rebuild_index(self, identity, uow=None):
|
|
30
|
+
"""Raise error since services are not backed by search indices."""
|
|
31
|
+
raise NotImplementedError()
|
|
32
|
+
|
|
33
|
+
def search(self, identity, params=None):
|
|
34
|
+
"""Search for vocabulary types entries."""
|
|
35
|
+
self.require_permission(identity, "list_vocabularies")
|
|
36
|
+
|
|
37
|
+
filters = []
|
|
38
|
+
search_params = map_search_params(self.config.search, params)
|
|
39
|
+
|
|
40
|
+
query_param = search_params["q"]
|
|
41
|
+
if query_param:
|
|
42
|
+
filters.append(
|
|
43
|
+
# NOTE: Even though we only have one field, we use `or_` to
|
|
44
|
+
# allow for future expansion where multiple fields might be searched.
|
|
45
|
+
sa.or_(
|
|
46
|
+
VocabularyType.id.ilike(f"%{query_param}%"),
|
|
47
|
+
)
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
vocabulary_types = (
|
|
51
|
+
VocabularyType.query.filter(*filters)
|
|
52
|
+
.order_by(
|
|
53
|
+
search_params["sort_direction"](
|
|
54
|
+
sa.text(",".join(search_params["sort"]))
|
|
55
|
+
)
|
|
56
|
+
)
|
|
57
|
+
.paginate(
|
|
58
|
+
page=search_params["page"],
|
|
59
|
+
per_page=search_params["size"],
|
|
60
|
+
error_out=False,
|
|
61
|
+
)
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
return self.config.result_list_cls(
|
|
65
|
+
self,
|
|
66
|
+
identity,
|
|
67
|
+
vocabulary_types,
|
|
68
|
+
search_params,
|
|
69
|
+
links_tpl=LinksTemplate(self.config.links_search, context={"args": params}),
|
|
70
|
+
links_item_tpl=self.links_item_tpl,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class VocabulariesService(RecordService):
|
|
75
|
+
"""Vocabulary service."""
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def task_schema(self):
|
|
79
|
+
"""Returns the data schema instance."""
|
|
80
|
+
return ServiceSchemaWrapper(self, schema=self.config.task_schema)
|
|
81
|
+
|
|
82
|
+
@unit_of_work()
|
|
83
|
+
def create_type(self, identity, id, pid_type, uow=None):
|
|
84
|
+
"""Create a new vocabulary type."""
|
|
85
|
+
self.require_permission(identity, "manage")
|
|
86
|
+
type_ = VocabularyType.create(id=id, pid_type=pid_type)
|
|
87
|
+
return type_
|
|
88
|
+
|
|
89
|
+
def search(
|
|
90
|
+
self, identity, params=None, search_preference=None, type=None, **kwargs
|
|
91
|
+
):
|
|
92
|
+
"""Search for vocabulary entries."""
|
|
93
|
+
self.require_permission(identity, "search")
|
|
94
|
+
|
|
95
|
+
# If not found, NoResultFound is raised (caught by the resource).
|
|
96
|
+
vocabulary_type = VocabularyType.query.filter_by(id=type).one()
|
|
97
|
+
|
|
98
|
+
# Prepare and execute the search
|
|
99
|
+
params = params or {}
|
|
100
|
+
search_result = self._search(
|
|
101
|
+
"search",
|
|
102
|
+
identity,
|
|
103
|
+
params,
|
|
104
|
+
search_preference,
|
|
105
|
+
extra_filter=dsl.Q("term", type__id=vocabulary_type.id),
|
|
106
|
+
**kwargs,
|
|
107
|
+
).execute()
|
|
108
|
+
|
|
109
|
+
return self.result_list(
|
|
110
|
+
self,
|
|
111
|
+
identity,
|
|
112
|
+
search_result,
|
|
113
|
+
params,
|
|
114
|
+
links_tpl=LinksTemplate(
|
|
115
|
+
self.config.links_search,
|
|
116
|
+
context={
|
|
117
|
+
"args": params,
|
|
118
|
+
"type": vocabulary_type.id,
|
|
119
|
+
},
|
|
120
|
+
),
|
|
121
|
+
links_item_tpl=self.links_item_tpl,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
def read_all(self, identity, fields, type, cache=True, extra_filter="", **kwargs):
|
|
125
|
+
"""Search for records matching the querystring."""
|
|
126
|
+
cache_key = type + "_" + str(extra_filter) + "_" + "-".join(fields)
|
|
127
|
+
results = current_cache.get(cache_key)
|
|
128
|
+
search_query = dsl.Q("match_all")
|
|
129
|
+
|
|
130
|
+
if not results:
|
|
131
|
+
# If not found, NoResultFound is raised (caught by the resource).
|
|
132
|
+
vocabulary_type = VocabularyType.query.filter_by(id=type).one()
|
|
133
|
+
vocab_id_filter = dsl.Q("term", type__id=vocabulary_type.id)
|
|
134
|
+
if extra_filter:
|
|
135
|
+
vocab_id_filter = vocab_id_filter & extra_filter
|
|
136
|
+
results = self._read_many(
|
|
137
|
+
identity, search_query, fields, extra_filter=vocab_id_filter, **kwargs
|
|
138
|
+
)
|
|
139
|
+
if cache:
|
|
140
|
+
# ES DSL Response is not pickable.
|
|
141
|
+
# If saved in cache serialization wont work with to_dict()
|
|
142
|
+
current_cache.set(cache_key, results.to_dict())
|
|
143
|
+
|
|
144
|
+
else:
|
|
145
|
+
search = self.create_search(
|
|
146
|
+
identity=identity,
|
|
147
|
+
record_cls=self.record_cls,
|
|
148
|
+
search_opts=self.config.search,
|
|
149
|
+
permission_action="search",
|
|
150
|
+
).query(search_query)
|
|
151
|
+
|
|
152
|
+
results = dsl.response.Response(search, results)
|
|
153
|
+
|
|
154
|
+
return self.result_list(self, identity, results)
|
|
155
|
+
|
|
156
|
+
def read_many(self, identity, type, ids, fields=None, **kwargs):
|
|
157
|
+
"""Search for records matching the querystring filtered by ids."""
|
|
158
|
+
search_query = dsl.Q("match_all")
|
|
159
|
+
vocabulary_type = VocabularyType.query.filter_by(id=type).one()
|
|
160
|
+
vocab_id_filter = dsl.Q("term", type__id=vocabulary_type.id)
|
|
161
|
+
filters = []
|
|
162
|
+
|
|
163
|
+
for id_ in ids:
|
|
164
|
+
filters.append(dsl.Q("term", **{"id": id_}))
|
|
165
|
+
filter = dsl.Q("bool", minimum_should_match=1, should=filters)
|
|
166
|
+
filter = filter & vocab_id_filter
|
|
167
|
+
results = self._read_many(
|
|
168
|
+
identity, search_query, fields, extra_filter=filter, **kwargs
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
return self.result_list(self, identity, results)
|
|
172
|
+
|
|
173
|
+
def launch(self, identity, data):
|
|
174
|
+
"""Create a task.
|
|
175
|
+
|
|
176
|
+
FIXME: This is a PoC. The final implementation should resemble
|
|
177
|
+
the PIDs, having a sub-service and a manager. If persistance is
|
|
178
|
+
added UoW should be used.
|
|
179
|
+
"""
|
|
180
|
+
self.require_permission(identity, "manage")
|
|
181
|
+
task_config, _ = self.task_schema.load(
|
|
182
|
+
data,
|
|
183
|
+
context={"identity": identity}, # FIXME: is this needed
|
|
184
|
+
raise_errors=True,
|
|
185
|
+
)
|
|
186
|
+
process_datastream.delay(task_config)
|
|
187
|
+
|
|
188
|
+
# 202 if accepted, otherwise it will be caught by an error handler
|
|
189
|
+
return True
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2022-2024 CERN.
|
|
4
|
+
#
|
|
5
|
+
# Invenio-Vocabularies is free software; you can redistribute it and/or modify
|
|
6
|
+
# it under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
+
|
|
8
|
+
"""Celery tasks."""
|
|
9
|
+
|
|
10
|
+
from celery import shared_task
|
|
11
|
+
from flask import current_app
|
|
12
|
+
from invenio_jobs.errors import TaskExecutionPartialError
|
|
13
|
+
|
|
14
|
+
from ..datastreams.factories import DataStreamFactory
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@shared_task(ignore_result=True)
|
|
18
|
+
def process_datastream(config):
|
|
19
|
+
"""Process a datastream from config."""
|
|
20
|
+
ds = DataStreamFactory.create(
|
|
21
|
+
readers_config=config["readers"],
|
|
22
|
+
transformers_config=config.get("transformers"),
|
|
23
|
+
writers_config=config["writers"],
|
|
24
|
+
batch_size=config.get("batch_size", 1000),
|
|
25
|
+
write_many=config.get("write_many", False),
|
|
26
|
+
)
|
|
27
|
+
entries_with_errors = 0
|
|
28
|
+
for result in ds.process():
|
|
29
|
+
if result.errors:
|
|
30
|
+
for err in result.errors:
|
|
31
|
+
current_app.logger.error(err)
|
|
32
|
+
entries_with_errors += 1
|
|
33
|
+
|
|
34
|
+
if entries_with_errors:
|
|
35
|
+
raise TaskExecutionPartialError(
|
|
36
|
+
message=f"Task execution succeeded with {entries_with_errors} entries with errors.",
|
|
37
|
+
errored_entries_count=entries_with_errors,
|
|
38
|
+
)
|
|
@@ -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
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# Translations template for invenio-vocabularies.
|
|
2
|
+
# Copyright (C) 2025 CERN
|
|
3
|
+
# This file is distributed under the same license as the
|
|
4
|
+
# invenio-vocabularies project.
|
|
5
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2025.
|
|
6
|
+
#
|
|
7
|
+
# Translators:
|
|
8
|
+
# Tibor Simko <tibor.simko@cern.ch>, 2021
|
|
9
|
+
# Salaheddine Ben Ali <salaheddine.benali@cnudst.tn>, 2025
|
|
10
|
+
# Bessem Aamira <bessemamira@gmail.com>, 2025
|
|
11
|
+
#
|
|
12
|
+
#, fuzzy
|
|
13
|
+
msgid ""
|
|
14
|
+
msgstr ""
|
|
15
|
+
"Project-Id-Version: invenio-vocabularies 8.1.0\n"
|
|
16
|
+
"Report-Msgid-Bugs-To: info@inveniosoftware.org\n"
|
|
17
|
+
"POT-Creation-Date: 2025-07-08 20:00+0000\n"
|
|
18
|
+
"PO-Revision-Date: 2021-07-13 12:40+0000\n"
|
|
19
|
+
"Last-Translator: Bessem Aamira <bessemamira@gmail.com>, 2025\n"
|
|
20
|
+
"Language-Team: Arabic (https://app.transifex.com/inveniosoftware/teams/23537/ar/)\n"
|
|
21
|
+
"MIME-Version: 1.0\n"
|
|
22
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
|
23
|
+
"Content-Transfer-Encoding: 8bit\n"
|
|
24
|
+
"Generated-By: Babel 2.17.0\n"
|
|
25
|
+
"Language: ar\n"
|
|
26
|
+
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
|
27
|
+
|
|
28
|
+
#: invenio_vocabularies/config.py:44
|
|
29
|
+
msgid "GRID"
|
|
30
|
+
msgstr "GRID"
|
|
31
|
+
|
|
32
|
+
#: invenio_vocabularies/config.py:45 invenio_vocabularies/config.py:126
|
|
33
|
+
#: invenio_vocabularies/config.py:131
|
|
34
|
+
msgid "GND"
|
|
35
|
+
msgstr "GND"
|
|
36
|
+
|
|
37
|
+
#: invenio_vocabularies/config.py:46 invenio_vocabularies/config.py:125
|
|
38
|
+
msgid "ISNI"
|
|
39
|
+
msgstr "ISNI"
|
|
40
|
+
|
|
41
|
+
#: invenio_vocabularies/config.py:47
|
|
42
|
+
msgid "ROR"
|
|
43
|
+
msgstr "رور ROR"
|
|
44
|
+
|
|
45
|
+
#: invenio_vocabularies/config.py:68
|
|
46
|
+
msgid "PIC"
|
|
47
|
+
msgstr ""
|
|
48
|
+
|
|
49
|
+
#: invenio_vocabularies/config.py:69
|
|
50
|
+
msgid "EDMO"
|
|
51
|
+
msgstr ""
|
|
52
|
+
|
|
53
|
+
#: invenio_vocabularies/config.py:75 invenio_vocabularies/config.py:84
|
|
54
|
+
msgid "DOI"
|
|
55
|
+
msgstr "المعرف الوحيد للأشياء DOI"
|
|
56
|
+
|
|
57
|
+
#: invenio_vocabularies/config.py:83 invenio_vocabularies/config.py:132
|
|
58
|
+
msgid "URL"
|
|
59
|
+
msgstr "عنوان ويب URL"
|
|
60
|
+
|
|
61
|
+
#: invenio_vocabularies/config.py:124
|
|
62
|
+
msgid "ORCID"
|
|
63
|
+
msgstr "أوركيد ORCID"
|
|
64
|
+
|
|
65
|
+
#: invenio_vocabularies/administration/views/vocabularies.py:37
|
|
66
|
+
#: invenio_vocabularies/config.py:175
|
|
67
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:61
|
|
68
|
+
#: invenio_vocabularies/contrib/funders/config.py:60
|
|
69
|
+
#: invenio_vocabularies/contrib/names/config.py:55
|
|
70
|
+
#: invenio_vocabularies/contrib/subjects/config.py:70
|
|
71
|
+
msgid "Name"
|
|
72
|
+
msgstr "إسم"
|
|
73
|
+
|
|
74
|
+
#: invenio_vocabularies/administration/views/vocabularies.py:38
|
|
75
|
+
#: invenio_vocabularies/config.py:179
|
|
76
|
+
msgid "Number of entries"
|
|
77
|
+
msgstr ""
|
|
78
|
+
|
|
79
|
+
#: invenio_vocabularies/jobs.py:30
|
|
80
|
+
msgid "Process ROR affiliations"
|
|
81
|
+
msgstr ""
|
|
82
|
+
|
|
83
|
+
#: invenio_vocabularies/jobs.py:31
|
|
84
|
+
msgid "Load ROR affiliations"
|
|
85
|
+
msgstr ""
|
|
86
|
+
|
|
87
|
+
#: invenio_vocabularies/jobs.py:68
|
|
88
|
+
msgid "Process ROR funders"
|
|
89
|
+
msgstr ""
|
|
90
|
+
|
|
91
|
+
#: invenio_vocabularies/jobs.py:69
|
|
92
|
+
msgid "Load ROR funders"
|
|
93
|
+
msgstr ""
|
|
94
|
+
|
|
95
|
+
#: invenio_vocabularies/jobs.py:106
|
|
96
|
+
msgid "Import awards from OpenAIRE"
|
|
97
|
+
msgstr ""
|
|
98
|
+
|
|
99
|
+
#: invenio_vocabularies/jobs.py:107
|
|
100
|
+
msgid "Import Awards OpenAIRE"
|
|
101
|
+
msgstr ""
|
|
102
|
+
|
|
103
|
+
#: invenio_vocabularies/jobs.py:141
|
|
104
|
+
msgid "Update awards from CORDIS"
|
|
105
|
+
msgstr ""
|
|
106
|
+
|
|
107
|
+
#: invenio_vocabularies/jobs.py:142
|
|
108
|
+
msgid "Update Awards CORDIS"
|
|
109
|
+
msgstr ""
|
|
110
|
+
|
|
111
|
+
#: invenio_vocabularies/jobs.py:169 invenio_vocabularies/jobs.py:170
|
|
112
|
+
msgid "Import ORCID data"
|
|
113
|
+
msgstr ""
|
|
114
|
+
|
|
115
|
+
#: invenio_vocabularies/administration/views/vocabularies.py:21
|
|
116
|
+
#: invenio_vocabularies/administration/views/vocabularies.py:24
|
|
117
|
+
msgid "Vocabulary Types"
|
|
118
|
+
msgstr ""
|
|
119
|
+
|
|
120
|
+
#: invenio_vocabularies/administration/views/vocabularies.py:25
|
|
121
|
+
msgid "Site management"
|
|
122
|
+
msgstr "إدارة الموقع"
|
|
123
|
+
|
|
124
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:57
|
|
125
|
+
#: invenio_vocabularies/contrib/funders/config.py:56
|
|
126
|
+
#: invenio_vocabularies/contrib/names/config.py:51
|
|
127
|
+
#: invenio_vocabularies/contrib/subjects/config.py:66
|
|
128
|
+
#: invenio_vocabularies/services/config.py:67
|
|
129
|
+
msgid "Best match"
|
|
130
|
+
msgstr "أفضل تطابق "
|
|
131
|
+
|
|
132
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:65
|
|
133
|
+
#: invenio_vocabularies/contrib/funders/config.py:64
|
|
134
|
+
#: invenio_vocabularies/contrib/names/config.py:59
|
|
135
|
+
#: invenio_vocabularies/contrib/subjects/config.py:74
|
|
136
|
+
#: invenio_vocabularies/services/config.py:75
|
|
137
|
+
msgid "Newest"
|
|
138
|
+
msgstr "الأحدث"
|
|
139
|
+
|
|
140
|
+
#: invenio_vocabularies/contrib/affiliations/config.py:69
|
|
141
|
+
#: invenio_vocabularies/contrib/funders/config.py:68
|
|
142
|
+
#: invenio_vocabularies/contrib/names/config.py:63
|
|
143
|
+
#: invenio_vocabularies/contrib/subjects/config.py:78
|
|
144
|
+
#: invenio_vocabularies/services/config.py:79
|
|
145
|
+
msgid "Oldest"
|
|
146
|
+
msgstr "الأقدم"
|
|
147
|
+
|
|
148
|
+
#: invenio_vocabularies/contrib/affiliations/schema.py:41
|
|
149
|
+
#: invenio_vocabularies/contrib/funders/schema.py:36
|
|
150
|
+
#: invenio_vocabularies/contrib/funders/schema.py:44
|
|
151
|
+
msgid "Name cannot be blank."
|
|
152
|
+
msgstr "اﻹسم لا يمكن أن يكون فارغا"
|
|
153
|
+
|
|
154
|
+
#: invenio_vocabularies/contrib/affiliations/schema.py:47
|
|
155
|
+
#: invenio_vocabularies/contrib/awards/schema.py:69
|
|
156
|
+
#: invenio_vocabularies/contrib/funders/schema.py:60
|
|
157
|
+
msgid "PID cannot be blank."
|
|
158
|
+
msgstr "معرف PID لا يمكن أن يكون فارغا."
|
|
159
|
+
|
|
160
|
+
#: invenio_vocabularies/contrib/awards/config.py:49
|
|
161
|
+
msgid "Funders"
|
|
162
|
+
msgstr "ممولون"
|
|
163
|
+
|
|
164
|
+
#: invenio_vocabularies/contrib/awards/datastreams.py:67
|
|
165
|
+
#, python-brace-format
|
|
166
|
+
msgid "Unknown OpenAIRE funder prefix {openaire_funder_prefix}"
|
|
167
|
+
msgstr "OpenAIRE funder prefix غير معلوم {openaire_funder_prefix}"
|
|
168
|
+
|
|
169
|
+
#: invenio_vocabularies/contrib/awards/datastreams.py:108
|
|
170
|
+
#, python-brace-format
|
|
171
|
+
msgid "Missing title attribute for award {award_id}"
|
|
172
|
+
msgstr ""
|
|
173
|
+
|
|
174
|
+
#: invenio_vocabularies/contrib/awards/datastreams.py:244
|
|
175
|
+
#, python-brace-format
|
|
176
|
+
msgid "No related legal basis programme found for project {project_id}"
|
|
177
|
+
msgstr ""
|
|
178
|
+
|
|
179
|
+
#: invenio_vocabularies/contrib/awards/schema.py:52
|
|
180
|
+
msgid "Number cannot be blank."
|
|
181
|
+
msgstr "الرقم لا يمكن أن يكون فارغا"
|
|
182
|
+
|
|
183
|
+
#: invenio_vocabularies/contrib/awards/schema.py:100
|
|
184
|
+
msgid "An existing id or either number or title must be present."
|
|
185
|
+
msgstr ""
|
|
186
|
+
|
|
187
|
+
#: invenio_vocabularies/contrib/awards/schema.py:118
|
|
188
|
+
msgid "At least award or funder should be present."
|
|
189
|
+
msgstr " يجب ان يكون هناك جائزة أو ممول على الاقل."
|
|
190
|
+
|
|
191
|
+
#: invenio_vocabularies/contrib/common/ror/datastreams.py:147
|
|
192
|
+
msgid "Id not found in ROR entry."
|
|
193
|
+
msgstr "معرف Id غير متواجد بمدخلات سجل ROR."
|
|
194
|
+
|
|
195
|
+
#: invenio_vocabularies/contrib/common/ror/datastreams.py:179
|
|
196
|
+
msgid "Name with type ror_display not found in ROR entry."
|
|
197
|
+
msgstr ""
|
|
198
|
+
|
|
199
|
+
#: invenio_vocabularies/contrib/funders/schema.py:73
|
|
200
|
+
#: invenio_vocabularies/services/schema.py:120
|
|
201
|
+
msgid "Missing PID."
|
|
202
|
+
msgstr "معرف PID مفقود."
|
|
203
|
+
|
|
204
|
+
#: invenio_vocabularies/contrib/names/schema.py:76
|
|
205
|
+
msgid ""
|
|
206
|
+
"A name or the family name together with the given name must be present."
|
|
207
|
+
msgstr "يجب أن يكون اللّقب أو اسم العائلة موجودا مع الاسم."
|
|
208
|
+
|
|
209
|
+
#: invenio_vocabularies/contrib/names/schema.py:90
|
|
210
|
+
msgid "Duplicated affiliations."
|
|
211
|
+
msgstr "الانتماءات المكررة."
|
|
212
|
+
|
|
213
|
+
#: invenio_vocabularies/records/models.py:84
|
|
214
|
+
#, python-format
|
|
215
|
+
msgid "No '%(banned_char)s' allowed in VocabularyScheme.id"
|
|
216
|
+
msgstr "كل '%(banned_char)s' غير مسموحة في VocabularyScheme.id"
|
|
217
|
+
|
|
218
|
+
#: invenio_vocabularies/services/components.py:29
|
|
219
|
+
msgid "The vocabulary type does not exists."
|
|
220
|
+
msgstr "نوع المفردات غير موجود."
|
|
221
|
+
|
|
222
|
+
#: invenio_vocabularies/services/config.py:71
|
|
223
|
+
msgid "Title"
|
|
224
|
+
msgstr "العنوان"
|
|
225
|
+
|
|
226
|
+
#: invenio_vocabularies/services/config.py:90
|
|
227
|
+
msgid "ID"
|
|
228
|
+
msgstr "معرّف ID"
|
|
229
|
+
|
|
230
|
+
#: invenio_vocabularies/services/config.py:100
|
|
231
|
+
msgid "Ascending"
|
|
232
|
+
msgstr "تصاعدي"
|
|
233
|
+
|
|
234
|
+
#: invenio_vocabularies/services/config.py:101
|
|
235
|
+
msgid "Descending"
|
|
236
|
+
msgstr "تنازلي"
|
|
237
|
+
|
|
238
|
+
#: invenio_vocabularies/services/schema.py:85
|
|
239
|
+
#, python-brace-format
|
|
240
|
+
msgid "An existing id or a free text {ftf_name} must be present."
|
|
241
|
+
msgstr "يجب أن يكون هناك معرف id موجود او نص حر {ftf_name}."
|
|
242
|
+
|
|
243
|
+
#: invenio_vocabularies/services/custom_fields/subject.py:50
|
|
244
|
+
msgid "Subjects"
|
|
245
|
+
msgstr "المواضيع"
|
|
246
|
+
|
|
247
|
+
#: invenio_vocabularies/services/custom_fields/subject.py:57
|
|
248
|
+
msgid "Keywords and subjects"
|
|
249
|
+
msgstr "كلمات مفتاحية و مواضيع"
|
|
250
|
+
|
|
251
|
+
#: invenio_vocabularies/services/custom_fields/subject.py:59
|
|
252
|
+
msgid "The subjects related to the community"
|
|
253
|
+
msgstr "المواضيع المتعلقة بالمجتمع"
|
|
254
|
+
|
|
255
|
+
#: invenio_vocabularies/services/custom_fields/subject.py:60
|
|
256
|
+
msgid "Search for a subject by name e.g. Psychology ..."
|
|
257
|
+
msgstr "إبحث عن موضوع حسب الاسم مثل: علم النفس ..."
|
|
258
|
+
|
|
259
|
+
#: invenio_vocabularies/services/custom_fields/subject.py:62
|
|
260
|
+
msgid "Search for subjects..."
|
|
261
|
+
msgstr "البحث عن المواضيع..."
|
|
262
|
+
|
|
263
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/subjects.html:16
|
|
264
|
+
msgid "Search results for "
|
|
265
|
+
msgstr "نتائج البحث لـ"
|
|
266
|
+
|
|
267
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html:26
|
|
268
|
+
msgid "Settings"
|
|
269
|
+
msgstr "إعدادات"
|
|
270
|
+
|
|
271
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html:31
|
|
272
|
+
msgid "Schedule"
|
|
273
|
+
msgstr ""
|
|
274
|
+
|
|
275
|
+
#: invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/vocabulary-details.html:36
|
|
276
|
+
msgid "Run now"
|
|
277
|
+
msgstr ""
|
|
Binary file
|