oarepo-runtime 1.3.20__py3-none-any.whl → 1.3.21__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
File without changes
File without changes
@@ -0,0 +1,47 @@
1
+ from invenio_records.dictutils import dict_set
2
+ from invenio_records.systemfields import SystemField
3
+ from sqlalchemy.orm.exc import NoResultFound
4
+
5
+ from oarepo_runtime.cf import CustomFieldsMixin
6
+
7
+
8
+ # taken from https://github.com/inveniosoftware/invenio-rdm-records/blob/master/invenio_rdm_records/records/systemfields/has_draftcheck.py
9
+ class HasDraftCheckField(CustomFieldsMixin, SystemField):
10
+ """PID status field which checks against an expected status."""
11
+
12
+ def __init__(self, draft_cls=None, key=None, **kwargs):
13
+ """Initialize the PIDField.
14
+
15
+ It stores the `record.has_draft` value in the secondary storage
16
+ system's record or defaults to `False` if the `draft_cls` is not passed
17
+ e.g Draft records.
18
+
19
+ :param key: Attribute name of the HasDraftCheckField.
20
+ :param draft_cls: The draft class to use for querying.
21
+ """
22
+ super().__init__(key=key, **kwargs)
23
+ self.draft_cls = draft_cls
24
+
25
+ #
26
+ # Data descriptor methods (i.e. attribute access)
27
+ #
28
+ def __get__(self, record, owner=None):
29
+ if record is None:
30
+ return self # returns the field itself.
31
+
32
+ # If not draft_cls is passed return False
33
+ if self.draft_cls is None:
34
+ return False
35
+
36
+ try:
37
+ self.draft_cls.get_record(record.id)
38
+ return True
39
+ except NoResultFound:
40
+ return False
41
+
42
+ def pre_dump(self, record, data, **kwargs):
43
+ dict_set(data, self.key, record.has_draft)
44
+ """
45
+ def post_load(self, record, data, **kwargs):
46
+ record.pop(self.key, None)
47
+ """
oarepo_runtime/ext.py CHANGED
@@ -40,3 +40,6 @@ class OARepoRuntime(object):
40
40
 
41
41
  elif k.startswith("DATASTREAMS_"):
42
42
  app.config.setdefault(k, getattr(ext_config, k))
43
+
44
+ elif k == "HAS_DRAFT_CUSTOM_FIELD":
45
+ app.config.setdefault(k, getattr(ext_config, k))
@@ -11,6 +11,7 @@ from oarepo_runtime.datastreams.readers.service import ServiceReader
11
11
  from oarepo_runtime.datastreams.readers.yaml import YamlReader
12
12
  from oarepo_runtime.datastreams.writers.service import ServiceWriter
13
13
  from oarepo_runtime.datastreams.writers.yaml import YamlWriter
14
+ from invenio_records_resources.services.custom_fields import BooleanCF
14
15
 
15
16
  OAREPO_PERMISSIONS_PRESETS = {
16
17
  "read_only": ReadOnlyPermissionPolicy,
@@ -53,3 +54,5 @@ DATASTREAMS_TRANSFORMERS = {}
53
54
  DEFAULT_DATASTREAMS_EXCLUDES = []
54
55
 
55
56
  DATASTREAMS_CONFIG_GENERATOR = default_config_generator
57
+
58
+ HAS_DRAFT_CUSTOM_FIELD = [BooleanCF("has_draft")]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.3.20
3
+ Version: 1.3.21
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -25,6 +25,8 @@ Requires-Dist: invenio-app ; extra == 'tests'
25
25
  Requires-Dist: invenio-search[opensearch2] ; extra == 'tests'
26
26
  Requires-Dist: oarepo (<12,>=11.0) ; extra == 'tests'
27
27
  Requires-Dist: uritemplate (>=4.1.1) ; extra == 'tests'
28
+ Requires-Dist: oarepo-model-builder ; extra == 'tests'
29
+ Requires-Dist: oarepo-model-builder-tests ; extra == 'tests'
28
30
 
29
31
  # OARepo runtime
30
32
 
@@ -1,6 +1,6 @@
1
1
  oarepo_runtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- oarepo_runtime/ext.py,sha256=0xAEKFkGoef5aR1HYiArB87M-L0CWo-cx-OWUDLOhPE,1455
3
- oarepo_runtime/ext_config.py,sha256=qXChr8GWEgxVpTU1y4qpl-gqnA8hnIjbS_8IlcjXDNo,1574
2
+ oarepo_runtime/ext.py,sha256=D6-vAzXawQ9tvUuuPeNevBJ_6FGtkJynQveBdGYIYXY,1569
3
+ oarepo_runtime/ext_config.py,sha256=_sun7XB6ylxtyoPcJImJLwUGUYgkWuevVClxYPofj1c,1696
4
4
  oarepo_runtime/marshmallow.py,sha256=BaRh9Z07h2DznYMyYxiTmSfe4EJaeXvTY8lKVyvVGa4,340
5
5
  oarepo_runtime/polymorphic.py,sha256=CkvXVUiXbrsLWFgoNnjjpUviQyzRMCmpsD3GWfV0WZA,494
6
6
  oarepo_runtime/cf/__init__.py,sha256=z6PcNsz2Xtp6ozDeZ25plYjmjKaKHXoovd_uzjKzRFs,1322
@@ -33,6 +33,9 @@ oarepo_runtime/datastreams/writers/__init__.py,sha256=8HIRwHxacUxvluqKxog8pUE1iK
33
33
  oarepo_runtime/datastreams/writers/service.py,sha256=ALXGibX1QTpSH720GQL2Axm8RTmnSDiYYkPmwBmEMzE,3414
34
34
  oarepo_runtime/datastreams/writers/validation_errors.py,sha256=wOCXdniR6so_4ExpdFYYgBRyENp7_6kVFZM2L-Hy3G8,661
35
35
  oarepo_runtime/datastreams/writers/yaml.py,sha256=B4lv-85UYB9K-3B35O1_vsRhH8AdhYfL8IgB3SS1LFw,1312
36
+ oarepo_runtime/drafts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ oarepo_runtime/drafts/systemfields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
+ oarepo_runtime/drafts/systemfields/has_draftcheck.py,sha256=Vs7PtjRtVTBmaMB92-Buwfg67ecyV6y8_WsNDCutkjg,1597
36
39
  oarepo_runtime/expansions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
40
  oarepo_runtime/expansions/expandable_fields.py,sha256=7DWKFL6ml8J7zGI6wm9LO7Xd6R0LSylsuq4lyRumNHQ,745
38
41
  oarepo_runtime/expansions/service.py,sha256=HaEy76XOhDf__sQ91hi-8iH1hthM9q07pRhOmyZyVrs,144
@@ -71,9 +74,9 @@ oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
71
74
  oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
72
75
  oarepo_runtime/validation/__init__.py,sha256=lU7DgZq8pGD5Pa-QqL9gvLsib3IYtM-Y56k-NwHrPG0,166
73
76
  oarepo_runtime/validation/dates.py,sha256=fahqKGDdIYWux5ZeoljrEe8VD2fDZR9VpfvYmTYAmpw,1050
74
- oarepo_runtime-1.3.20.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
75
- oarepo_runtime-1.3.20.dist-info/METADATA,sha256=C4Wx7hHKqPPQRhWplvF9el79gQvP9tKHeYDNA5tNBlI,2552
76
- oarepo_runtime-1.3.20.dist-info/WHEEL,sha256=AtBG6SXL3KF_v0NxLf0ehyVOh0cold-JbJYXNGorC6Q,92
77
- oarepo_runtime-1.3.20.dist-info/entry_points.txt,sha256=C32W4eT-8OypMCfwOO5WREioVKSneDfY51D78Uvdbp0,231
78
- oarepo_runtime-1.3.20.dist-info/top_level.txt,sha256=Vdo5ohKvEHniyXfcy3hv92nVSYIngDYGQtinWviujlw,15
79
- oarepo_runtime-1.3.20.dist-info/RECORD,,
77
+ oarepo_runtime-1.3.21.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
78
+ oarepo_runtime-1.3.21.dist-info/METADATA,sha256=prtM79Yq-KyJOPXgthDXlrTSgO1PAB37hJ3s7EKrAEk,2668
79
+ oarepo_runtime-1.3.21.dist-info/WHEEL,sha256=AtBG6SXL3KF_v0NxLf0ehyVOh0cold-JbJYXNGorC6Q,92
80
+ oarepo_runtime-1.3.21.dist-info/entry_points.txt,sha256=C32W4eT-8OypMCfwOO5WREioVKSneDfY51D78Uvdbp0,231
81
+ oarepo_runtime-1.3.21.dist-info/top_level.txt,sha256=Vdo5ohKvEHniyXfcy3hv92nVSYIngDYGQtinWviujlw,15
82
+ oarepo_runtime-1.3.21.dist-info/RECORD,,