oarepo-runtime 1.5.116__tar.gz → 1.5.117__tar.gz
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.
- {oarepo_runtime-1.5.116/oarepo_runtime.egg-info → oarepo_runtime-1.5.117}/PKG-INFO +1 -1
- oarepo_runtime-1.5.117/oarepo_runtime/datastreams/json.py +4 -0
- oarepo_runtime-1.5.117/oarepo_runtime/datastreams/writers/publish.py +59 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/service.py +62 -9
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/permissions/generators.py +7 -6
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117/oarepo_runtime.egg-info}/PKG-INFO +1 -1
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/setup.cfg +1 -1
- oarepo_runtime-1.5.116/oarepo_runtime/datastreams/json.py +0 -4
- oarepo_runtime-1.5.116/oarepo_runtime/datastreams/writers/publish.py +0 -49
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/LICENSE +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/MANIFEST.in +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/README.md +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/assets.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/base.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/cf.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/check.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/configuration.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/fixtures.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/index.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/base.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/evaluate.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/list.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/search.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/validate.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/asynchronous.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/catalogue.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/datastreams.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/errors.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/ext.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/fixtures.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/excel.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/json.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/synchronous.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/transformers.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/types.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/utils.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/utils.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/ext.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/ext_config.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/i18n/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/check.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/permissions/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/permissions/debug.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/views.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/profile.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/proxies.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/mappings/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/mappings/rdm_parent_mapping.json +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/owners/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/owners/registry.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/base.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/internal.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/lookup.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/pid_relation.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/icu.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/mapping.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/owner.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/record_status.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/selectors.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/config.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/file_resource.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/json_serializer.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/resource.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/responses.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/components.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/link_conditions.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/permissions_presets.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/config.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/schema.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/base.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/date.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/enum.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/max_facet.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/nested_facet.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/params.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/year_histogram.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/components.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/generators.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/permissions/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/records/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/records/links.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/components.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/errors.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/mapping.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/results.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/cf.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/marshmallow.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/marshmallow_to_json_schema.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/oneofschema.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/polymorphic.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/rdm.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/rdm_ui.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/ui.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/validation.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/search.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/service.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/tasks.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/default_translations.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/translations/messages.pot +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/uow.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/utils/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/utils/functools.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/utils/path.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/entry_points.txt +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/requires.txt +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/top_level.txt +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/pyproject.toml +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/setup.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/__init__.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/test_datacite_ui_schema.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/test_simple_schema.py +0 -0
- {oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/pkg_data/__init__.py +0 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
from invenio_access.permissions import system_identity
|
2
|
+
from invenio_records_resources.proxies import current_service_registry
|
3
|
+
|
4
|
+
from oarepo_runtime.datastreams.types import StreamBatch, StreamEntry
|
5
|
+
from oarepo_runtime.datastreams.writers import BaseWriter
|
6
|
+
from oarepo_runtime.datastreams.writers.utils import record_invenio_exceptions
|
7
|
+
|
8
|
+
|
9
|
+
class PublishWriter(BaseWriter):
|
10
|
+
def __init__(
|
11
|
+
self,
|
12
|
+
*,
|
13
|
+
service,
|
14
|
+
request_name="publish_draft",
|
15
|
+
identity=None,
|
16
|
+
direct_call=False,
|
17
|
+
**kwargs
|
18
|
+
):
|
19
|
+
if isinstance(service, str):
|
20
|
+
service = current_service_registry.get(service)
|
21
|
+
|
22
|
+
self._service = service
|
23
|
+
self._identity = identity or system_identity
|
24
|
+
self._request_name = request_name
|
25
|
+
self._direct_call = direct_call
|
26
|
+
|
27
|
+
def write(self, batch: StreamBatch) -> StreamBatch:
|
28
|
+
for entry in batch.ok_entries:
|
29
|
+
if entry.deleted:
|
30
|
+
continue
|
31
|
+
|
32
|
+
with record_invenio_exceptions(entry):
|
33
|
+
self._write_entry(entry)
|
34
|
+
|
35
|
+
def _write_entry(self, entry: StreamEntry):
|
36
|
+
if self._direct_call:
|
37
|
+
self._service.publish(self._identity, entry.id)
|
38
|
+
else:
|
39
|
+
from invenio_requests.proxies import (
|
40
|
+
current_requests_service as current_invenio_requests_service,
|
41
|
+
)
|
42
|
+
from oarepo_requests.proxies import current_oarepo_requests_service
|
43
|
+
|
44
|
+
draft = self._service.read_draft(self._identity, entry.id)
|
45
|
+
request = current_oarepo_requests_service.create(
|
46
|
+
identity=self._identity,
|
47
|
+
data=None,
|
48
|
+
request_type=self._request_name,
|
49
|
+
topic=draft._record,
|
50
|
+
)
|
51
|
+
|
52
|
+
submit_result = current_invenio_requests_service.execute_action(
|
53
|
+
self._identity, request.id, "submit"
|
54
|
+
)
|
55
|
+
accept_result = current_invenio_requests_service.execute_action(
|
56
|
+
self._identity, request.id, "accept"
|
57
|
+
)
|
58
|
+
|
59
|
+
self._service.read(self._identity, draft["id"])
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/service.py
RENAMED
@@ -4,7 +4,7 @@ from invenio_records_resources.proxies import current_service_registry
|
|
4
4
|
from invenio_records_resources.services.uow import UnitOfWork
|
5
5
|
|
6
6
|
from ...uow import BulkUnitOfWork
|
7
|
-
from ..types import StreamBatch, StreamEntry
|
7
|
+
from ..types import StreamBatch, StreamEntry, StreamEntryError
|
8
8
|
from . import BaseWriter
|
9
9
|
from .utils import record_invenio_exceptions
|
10
10
|
|
@@ -38,10 +38,26 @@ class ServiceWriter(BaseWriter):
|
|
38
38
|
self._update = update
|
39
39
|
|
40
40
|
def _resolve(self, id_):
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
41
|
+
if hasattr(self._service, "read_draft"):
|
42
|
+
try:
|
43
|
+
# try to read the draft first
|
44
|
+
return self._service.read_draft(self._identity, id_)
|
45
|
+
except PIDDoesNotExistError:
|
46
|
+
pass
|
47
|
+
try:
|
48
|
+
# if the draft does not exist, read the published record
|
49
|
+
# and create a draft for it
|
50
|
+
rec = self._service.read(self._identity, id_)
|
51
|
+
return self._service.edit(self._identity, id_)
|
52
|
+
except PIDDoesNotExistError:
|
53
|
+
pass
|
54
|
+
|
55
|
+
else:
|
56
|
+
try:
|
57
|
+
return self._service.read(self._identity, id_)
|
58
|
+
except PIDDoesNotExistError:
|
59
|
+
pass
|
60
|
+
return None
|
45
61
|
|
46
62
|
def _get_stream_entry_id(self, entry: StreamEntry):
|
47
63
|
return entry.id
|
@@ -92,6 +108,16 @@ class ServiceWriter(BaseWriter):
|
|
92
108
|
stream_entry.id = repository_entry.id
|
93
109
|
|
94
110
|
stream_entry.context["revision_id"] = repository_entry._record.revision_id
|
111
|
+
if repository_entry.errors:
|
112
|
+
for err in repository_entry.errors:
|
113
|
+
field = err.get("field")
|
114
|
+
messages = err.get("messages")
|
115
|
+
for message in messages:
|
116
|
+
stream_entry.errors.append(
|
117
|
+
StreamEntryError(
|
118
|
+
code="validation", message=message, location=field
|
119
|
+
)
|
120
|
+
)
|
95
121
|
|
96
122
|
def try_update(self, entry_id, entry, **service_kwargs):
|
97
123
|
current = self._resolve(entry_id)
|
@@ -99,9 +125,15 @@ class ServiceWriter(BaseWriter):
|
|
99
125
|
updated = dict(current.to_dict(), **entry)
|
100
126
|
# might raise exception here but that's ok - we know that the entry
|
101
127
|
# exists in db as it was _resolved
|
102
|
-
|
103
|
-
|
104
|
-
|
128
|
+
if hasattr(self._service, "update_draft"):
|
129
|
+
# try to update draft first
|
130
|
+
return self._service.update_draft(
|
131
|
+
self._identity, entry_id, updated, **service_kwargs
|
132
|
+
)
|
133
|
+
else:
|
134
|
+
return self._service.update(
|
135
|
+
self._identity, entry_id, updated, **service_kwargs
|
136
|
+
)
|
105
137
|
|
106
138
|
def _delete_entry(self, stream_entry: StreamEntry, uow=None):
|
107
139
|
entry_id = self._get_stream_entry_id(stream_entry)
|
@@ -110,4 +142,25 @@ class ServiceWriter(BaseWriter):
|
|
110
142
|
service_kwargs = {}
|
111
143
|
if uow:
|
112
144
|
service_kwargs["uow"] = uow
|
113
|
-
|
145
|
+
deletion_exceptions = []
|
146
|
+
deletion_tries = 0
|
147
|
+
|
148
|
+
# if the service has drafts, try to delete it first
|
149
|
+
if hasattr(self._service, "delete_draft"):
|
150
|
+
# delete draft
|
151
|
+
deletion_tries += 1
|
152
|
+
try:
|
153
|
+
self._service.delete_draft(self._identity, entry_id, **service_kwargs)
|
154
|
+
except Exception as e:
|
155
|
+
deletion_exceptions.append(e)
|
156
|
+
|
157
|
+
# delete the record if it was published
|
158
|
+
deletion_tries += 1
|
159
|
+
try:
|
160
|
+
self._service.delete(self._identity, entry_id, **service_kwargs)
|
161
|
+
except Exception as e:
|
162
|
+
deletion_exceptions.append(e)
|
163
|
+
|
164
|
+
if len(deletion_exceptions) == deletion_tries:
|
165
|
+
# all deletion attempts failed
|
166
|
+
raise deletion_exceptions[-1]
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/permissions/generators.py
RENAMED
@@ -38,6 +38,7 @@ class RecordOwners(Generator):
|
|
38
38
|
return dsl.Q("terms", **{"parent.access.owned_by.user": users})
|
39
39
|
else:
|
40
40
|
return dsl.Q("terms", **{"parent.owners.user": users})
|
41
|
+
return dsl.Q("match_none")
|
41
42
|
|
42
43
|
|
43
44
|
class UserWithRole(Generator):
|
@@ -59,12 +60,12 @@ class UserWithRole(Generator):
|
|
59
60
|
class IfDraftType(ConditionalGenerator):
|
60
61
|
def __init__(
|
61
62
|
self,
|
62
|
-
draft_types:
|
63
|
-
Literal["initial"] | Literal["metadata"] | Literal["new_version"]
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
draft_types: (
|
64
|
+
list[Literal["initial"] | Literal["metadata"] | Literal["new_version"]]
|
65
|
+
| Literal["initial"]
|
66
|
+
| Literal["metadata"]
|
67
|
+
| Literal["new_version"]
|
68
|
+
),
|
68
69
|
then_=None,
|
69
70
|
else_=None,
|
70
71
|
):
|
@@ -1,49 +0,0 @@
|
|
1
|
-
from invenio_access.permissions import system_identity
|
2
|
-
from invenio_records_resources.proxies import current_service_registry
|
3
|
-
|
4
|
-
from oarepo_runtime.datastreams.types import StreamBatch, StreamEntry
|
5
|
-
from oarepo_runtime.datastreams.writers import BaseWriter
|
6
|
-
from oarepo_runtime.datastreams.writers.utils import record_invenio_exceptions
|
7
|
-
|
8
|
-
|
9
|
-
class PublishWriter(BaseWriter):
|
10
|
-
def __init__(
|
11
|
-
self, *, service, request_name="publish_draft", identity=None, **kwargs
|
12
|
-
):
|
13
|
-
if isinstance(service, str):
|
14
|
-
service = current_service_registry.get(service)
|
15
|
-
|
16
|
-
self._service = service
|
17
|
-
self._identity = identity or system_identity
|
18
|
-
self._request_name = request_name
|
19
|
-
|
20
|
-
def write(self, batch: StreamBatch) -> StreamBatch:
|
21
|
-
for entry in batch.ok_entries:
|
22
|
-
if entry.deleted:
|
23
|
-
continue
|
24
|
-
|
25
|
-
with record_invenio_exceptions(entry):
|
26
|
-
self._write_entry(entry)
|
27
|
-
|
28
|
-
def _write_entry(self, entry: StreamEntry):
|
29
|
-
from invenio_requests.proxies import (
|
30
|
-
current_requests_service as current_invenio_requests_service,
|
31
|
-
)
|
32
|
-
from oarepo_requests.proxies import current_oarepo_requests_service
|
33
|
-
|
34
|
-
draft = self._service.read_draft(self._identity, entry.id)
|
35
|
-
request = current_oarepo_requests_service.create(
|
36
|
-
identity=self._identity,
|
37
|
-
data=None,
|
38
|
-
request_type=self._request_name,
|
39
|
-
topic=draft._record,
|
40
|
-
)
|
41
|
-
|
42
|
-
submit_result = current_invenio_requests_service.execute_action(
|
43
|
-
self._identity, request.id, "submit"
|
44
|
-
)
|
45
|
-
accept_result = current_invenio_requests_service.execute_action(
|
46
|
-
self._identity, request.id, "accept"
|
47
|
-
)
|
48
|
-
|
49
|
-
self._service.read(self._identity, draft["id"])
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/__init__.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/cli/permissions/evaluate.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/asynchronous.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/attachments.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/excel.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/json.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/service.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/readers/yaml.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/semi_asynchronous.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/transformers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/utils.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/datastreams/writers/yaml.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/info/permissions/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/dumpers/edtf_interval.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/entity_resolvers/proxies.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/mappings/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/__init__.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/internal.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/lookup.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/relations/pid_relation.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/icu.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/mapping.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/owner.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/selectors.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/records/systemfields/synthetic.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/resources/json_serializer.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/config/link_conditions.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/custom_fields/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/custom_fields/mappings.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/entity/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/__init__.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/expansions/service.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/max_facet.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/nested_facet.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/facets/year_histogram.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/files/components.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/permissions/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/records/__init__.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/__init__.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/components.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/errors.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/relations/mapping.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/i18n_validation.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/marshmallow.py
RENAMED
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/oneofschema.py
RENAMED
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/polymorphic.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime/services/schema/validation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/oarepo_runtime.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{oarepo_runtime-1.5.116 → oarepo_runtime-1.5.117}/tests/marshmallow_to_json/test_simple_schema.py
RENAMED
File without changes
|
File without changes
|