oarepo-runtime 1.5.16__tar.gz → 1.5.18__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. {oarepo-runtime-1.5.16/oarepo_runtime.egg-info → oarepo-runtime-1.5.18}/PKG-INFO +1 -1
  2. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/fixtures.py +5 -8
  3. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/index.py +19 -9
  4. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/fixtures.py +0 -1
  5. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/utils.py +1 -0
  6. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/ext.py +3 -3
  7. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/selectors.py +1 -0
  8. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/synthetic.py +23 -14
  9. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/config/__init__.py +7 -3
  10. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/ui.py +8 -0
  11. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/utils/functools.py +0 -1
  12. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  13. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/setup.cfg +1 -1
  14. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/LICENSE +0 -0
  15. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/MANIFEST.in +0 -0
  16. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/README.md +0 -0
  17. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/__init__.py +0 -0
  18. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/__init__.py +0 -0
  19. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/assets.py +0 -0
  20. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/base.py +0 -0
  21. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/cf.py +0 -0
  22. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/check.py +0 -0
  23. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/configuration.py +0 -0
  24. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/cli/validate.py +0 -0
  25. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/__init__.py +0 -0
  26. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  27. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/catalogue.py +0 -0
  28. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/datastreams.py +0 -0
  29. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/errors.py +0 -0
  30. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/ext.py +0 -0
  31. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/json.py +0 -0
  32. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  33. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  34. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  35. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/readers/json.py +0 -0
  36. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/readers/service.py +0 -0
  37. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  38. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  39. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/synchronous.py +0 -0
  40. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/transformers.py +0 -0
  41. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/types.py +0 -0
  42. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  43. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  44. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  45. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/service.py +0 -0
  46. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  47. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  48. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  49. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/ext_config.py +0 -0
  50. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/i18n/__init__.py +0 -0
  51. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/info/__init__.py +0 -0
  52. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/info/views.py +0 -0
  53. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/profile.py +0 -0
  54. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/proxies.py +0 -0
  55. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/__init__.py +0 -0
  56. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  57. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  58. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  59. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  60. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  61. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/relations/__init__.py +0 -0
  62. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/relations/base.py +0 -0
  63. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/relations/internal.py +0 -0
  64. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/relations/lookup.py +0 -0
  65. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  66. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/__init__.py +0 -0
  67. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  68. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  69. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/icu.py +0 -0
  70. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  71. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  72. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/resources/__init__.py +0 -0
  73. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/resources/file_resource.py +0 -0
  74. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  75. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/__init__.py +0 -0
  76. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  77. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/config/service.py +1 -1
  78. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  79. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  80. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/expansions/__init__.py +0 -0
  81. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  82. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/expansions/service.py +0 -0
  83. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/__init__.py +0 -0
  84. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/base.py +0 -0
  85. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/date.py +0 -0
  86. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/enum.py +0 -0
  87. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  88. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/max_facet.py +0 -0
  89. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  90. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/facets/params.py +0 -0
  91. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/files/__init__.py +0 -0
  92. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/files/service.py +0 -0
  93. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/relations/__init__.py +0 -0
  94. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/relations/components.py +0 -0
  95. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/relations/errors.py +0 -0
  96. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/relations/mapping.py +0 -0
  97. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/results.py +0 -0
  98. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/__init__.py +0 -0
  99. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/cf.py +0 -0
  100. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/i18n.py +0 -0
  101. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  102. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  103. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  104. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  105. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/schema/validation.py +0 -0
  106. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/services/search.py +0 -0
  107. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  108. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  109. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/default_translations.py +0 -0
  110. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  111. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  112. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/jinjax_messages.jinja +0 -0
  113. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/translations/messages.pot +0 -0
  114. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/uow.py +0 -0
  115. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/utils/__init__.py +0 -0
  116. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime/utils/path.py +0 -0
  117. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
  118. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  119. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  120. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime.egg-info/requires.txt +0 -0
  121. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/oarepo_runtime.egg-info/top_level.txt +0 -0
  122. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/pyproject.toml +0 -0
  123. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/setup.py +0 -0
  124. {oarepo-runtime-1.5.16 → oarepo-runtime-1.5.18}/tests/pkg_data/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.16
3
+ Version: 1.5.18
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -7,9 +7,10 @@ from oarepo_runtime.cli import oarepo
7
7
  from oarepo_runtime.datastreams import SynchronousDataStream
8
8
  from oarepo_runtime.datastreams.asynchronous import AsynchronousDataStream
9
9
  from oarepo_runtime.datastreams.fixtures import (
10
+ FixturesCallback,
10
11
  dump_fixtures,
11
12
  fixtures_asynchronous_callback,
12
- load_fixtures, FixturesCallback,
13
+ load_fixtures,
13
14
  )
14
15
  from oarepo_runtime.datastreams.types import StatsKeepingDataStreamCallback
15
16
 
@@ -33,11 +34,7 @@ def fixtures():
33
34
  help="Size for bulk indexing - this number of records "
34
35
  "will be committed in a single transaction and indexed together",
35
36
  )
36
- @click.option(
37
- "--batch-size",
38
- help="Alias for --bulk-size",
39
- type=int
40
- )
37
+ @click.option("--batch-size", help="Alias for --bulk-size", type=int)
41
38
  @with_appcontext
42
39
  def load(
43
40
  fixture_dir=None,
@@ -47,7 +44,7 @@ def load(
47
44
  verbose=False,
48
45
  bulk_size=100,
49
46
  on_background=False,
50
- batch_size=None
47
+ batch_size=None,
51
48
  ):
52
49
  """Loads fixtures"""
53
50
  if batch_size:
@@ -104,7 +101,7 @@ def _show_stats(callback: StatsKeepingDataStreamCallback, title: str):
104
101
 
105
102
 
106
103
  class TQDMCallback(FixturesCallback):
107
- def __init__(self, message_prefix = 'Loading ', verbose=False):
104
+ def __init__(self, message_prefix="Loading ", verbose=False):
108
105
  super().__init__()
109
106
  self._tqdm = tqdm.tqdm(unit=" item(s)")
110
107
  self._message_prefix = message_prefix
@@ -1,13 +1,13 @@
1
1
  import sys
2
+ from io import StringIO
2
3
 
3
4
  import click
5
+ import yaml
4
6
  from flask.cli import with_appcontext
5
7
  from invenio_db import db
6
8
  from invenio_records_resources.proxies import current_service_registry
7
9
  from invenio_search.proxies import current_search
8
10
  from werkzeug.utils import ImportStringError, import_string
9
- from io import StringIO
10
- import yaml
11
11
 
12
12
  try:
13
13
  from tqdm import tqdm
@@ -152,15 +152,25 @@ def reindex(model, bulk_size, verbose):
152
152
  index_result = service.indexer.client.bulk(bulk)
153
153
  count += len(bulk) // 2
154
154
 
155
- for index_item_result in index_result['items']:
156
- result = index_item_result['index']
157
- if result['status'] != 200:
155
+ for index_item_result in index_result["items"]:
156
+ result = index_item_result["index"]
157
+ if result["status"] != 200:
158
158
  errors += 1
159
- click.secho(f"Error indexing record with id {result['_id']}", fg="red", file=sys.stderr)
160
- click.secho(dump_yaml(result.get('error')), fg="red", file=sys.stderr)
159
+ click.secho(
160
+ f"Error indexing record with id {result['_id']}",
161
+ fg="red",
162
+ file=sys.stderr,
163
+ )
164
+ click.secho(
165
+ dump_yaml(result.get("error")), fg="red", file=sys.stderr
166
+ )
161
167
  if verbose:
162
168
  click.secho("Record:", file=sys.stderr)
163
- rec = [bulk[idx+1] for idx in range(0, len(bulk), 2) if bulk[idx]['index']['_id'] == result['_id']]
169
+ rec = [
170
+ bulk[idx + 1]
171
+ for idx in range(0, len(bulk), 2)
172
+ if bulk[idx]["index"]["_id"] == result["_id"]
173
+ ]
164
174
  if rec:
165
175
  click.secho(dump_yaml(rec[0]))
166
176
  else:
@@ -204,4 +214,4 @@ def generate_bulk_data(record_generator, record_indexer, bulk_size):
204
214
  def dump_yaml(data):
205
215
  io = StringIO()
206
216
  yaml.dump(data, io, allow_unicode=True)
207
- return io.getvalue()
217
+ return io.getvalue()
@@ -27,7 +27,6 @@ class FixturesCallback(StatsKeepingDataStreamCallback):
27
27
  pass
28
28
 
29
29
 
30
-
31
30
  def load_fixtures(
32
31
  fixture_dir=None,
33
32
  include=None,
@@ -32,6 +32,7 @@ def get_record_service_for_record(record):
32
32
  if service_record == type(record):
33
33
  return svc
34
34
 
35
+
35
36
  def get_file_service_for_record_class(record_class):
36
37
  if not record_class:
37
38
  return None
@@ -28,9 +28,9 @@ class OARepoRuntime(object):
28
28
 
29
29
  for k in ext_config.OAREPO_PERMISSIONS_PRESETS:
30
30
  if k not in app.config["OAREPO_PERMISSIONS_PRESETS"]:
31
- app.config["OAREPO_PERMISSIONS_PRESETS"][k] = (
32
- ext_config.OAREPO_PERMISSIONS_PRESETS[k]
33
- )
31
+ app.config["OAREPO_PERMISSIONS_PRESETS"][
32
+ k
33
+ ] = ext_config.OAREPO_PERMISSIONS_PRESETS[k]
34
34
 
35
35
  for k in dir(ext_config):
36
36
  if k == "DEFAULT_DATASTREAMS_EXCLUDES":
@@ -22,6 +22,7 @@ class FirstItemSelector(PathSelector):
22
22
  def select(self, record):
23
23
  for rec in super().select(record):
24
24
  return [rec]
25
+ return []
25
26
 
26
27
 
27
28
  def getter(data, path: List):
@@ -2,6 +2,10 @@ from invenio_records.systemfields import SystemField
2
2
 
3
3
  from .mapping import MappingSystemFieldMixin
4
4
 
5
+ import logging
6
+
7
+ log = logging.getLogger(__name__)
8
+
5
9
 
6
10
  class SyntheticSystemField(MappingSystemFieldMixin, SystemField):
7
11
  """
@@ -90,6 +94,7 @@ class SyntheticSystemField(MappingSystemFieldMixin, SystemField):
90
94
  remove_key(d[key[0]], key[1:])
91
95
  if not d[key[0]]:
92
96
  d.pop(key[0])
97
+
93
98
  remove_key(data, self.key.split("."))
94
99
 
95
100
  def __get__(self, record, owner=None):
@@ -99,20 +104,24 @@ class SyntheticSystemField(MappingSystemFieldMixin, SystemField):
99
104
 
100
105
  def _value(self, data):
101
106
  if self.selector:
102
- value = list(self.selector.select(data))
103
- value = [x for x in value if x is not None]
104
- if self.filter:
105
- value = [x for x in value if self.filter(x)]
106
- if self.map:
107
- ret = []
108
- for x in value:
109
- mapped = self.map(x)
110
- if isinstance(mapped, list):
111
- ret.extend(mapped)
112
- elif mapped is not None:
113
- ret.append(mapped)
114
- value = ret
115
- return value
107
+ try:
108
+ value = list(self.selector.select(data) or [])
109
+ value = [x for x in value if x is not None]
110
+ if self.filter:
111
+ value = [x for x in value if self.filter(x)]
112
+ if self.map:
113
+ ret = []
114
+ for x in value:
115
+ mapped = self.map(x)
116
+ if isinstance(mapped, list):
117
+ ret.extend(mapped)
118
+ elif mapped is not None:
119
+ ret.append(mapped)
120
+ value = ret
121
+ return value
122
+ except:
123
+ log.exception(f"Error in selector {self.selector} for {self.key}")
124
+ return []
116
125
  raise ValueError(
117
126
  "Please either provide a selector or subclass this class and implement a _value method"
118
127
  )
@@ -1,5 +1,9 @@
1
- from .permissions_presets import (OaiHarvesterPermissionPolicy, ReadOnlyPermissionPolicy, EveryonePermissionPolicy,
2
- AuthenticatedPermissionPolicy)
1
+ from .permissions_presets import (
2
+ AuthenticatedPermissionPolicy,
3
+ EveryonePermissionPolicy,
4
+ OaiHarvesterPermissionPolicy,
5
+ ReadOnlyPermissionPolicy,
6
+ )
3
7
  from .service import PermissionsPresetsConfigMixin, UserWithRole
4
8
 
5
9
  __all__ = (
@@ -9,4 +13,4 @@ __all__ = (
9
13
  "ReadOnlyPermissionPolicy",
10
14
  "EveryonePermissionPolicy",
11
15
  "AuthenticatedPermissionPolicy",
12
- )
16
+ )
@@ -88,10 +88,18 @@ class LocalizedEDTF(LocalizedMixin, MultilayerFormatEDTF):
88
88
  pass
89
89
 
90
90
 
91
+ class LocalizedEDTFTime(LocalizedMixin, MultilayerFormatEDTF):
92
+ pass
93
+
94
+
91
95
  class LocalizedEDTFInterval(LocalizedMixin, FormatEDTF):
92
96
  pass
93
97
 
94
98
 
99
+ class LocalizedEDTFTimeInterval(LocalizedMixin, FormatEDTF):
100
+ pass
101
+
102
+
95
103
  class PrefixedGettextField(BabelGettextDictField):
96
104
  def __init__(self, *, value_prefix, locale, default_locale, **kwargs):
97
105
  super().__init__(locale, default_locale, **kwargs)
@@ -9,7 +9,6 @@ def try_sequence(*funcs, ignored_exceptions=(), raised_exception=Exception):
9
9
 
10
10
 
11
11
  class class_property:
12
-
13
12
  def __init__(self, getter=None, setter=None):
14
13
  if getter is not None and not isinstance(getter, classmethod):
15
14
  getter = classmethod(getter)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.16
3
+ Version: 1.5.18
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = oarepo-runtime
3
- version = 1.5.16
3
+ version = 1.5.18
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md
File without changes
@@ -7,9 +7,9 @@ from flask_principal import RoleNeed
7
7
  from invenio_accounts.models import User
8
8
  from invenio_records_permissions import BasePermissionPolicy
9
9
  from invenio_records_permissions.generators import Generator
10
+ from invenio_search.engine import dsl
10
11
 
11
12
  from oarepo_runtime.utils.functools import class_property
12
- from invenio_search.engine import dsl
13
13
 
14
14
 
15
15
  class PermissionsPresetsConfigMixin: