oarepo-runtime 1.4.5__py3-none-any.whl → 1.4.6__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.
- oarepo_runtime/cli/index.py +41 -20
- oarepo_runtime/cli/validate.py +26 -2
- {oarepo_runtime-1.4.5.dist-info → oarepo_runtime-1.4.6.dist-info}/METADATA +1 -1
- {oarepo_runtime-1.4.5.dist-info → oarepo_runtime-1.4.6.dist-info}/RECORD +8 -8
- {oarepo_runtime-1.4.5.dist-info → oarepo_runtime-1.4.6.dist-info}/LICENSE +0 -0
- {oarepo_runtime-1.4.5.dist-info → oarepo_runtime-1.4.6.dist-info}/WHEEL +0 -0
- {oarepo_runtime-1.4.5.dist-info → oarepo_runtime-1.4.6.dist-info}/entry_points.txt +0 -0
- {oarepo_runtime-1.4.5.dist-info → oarepo_runtime-1.4.6.dist-info}/top_level.txt +0 -0
oarepo_runtime/cli/index.py
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import itertools
|
1
2
|
import sys
|
2
3
|
|
3
4
|
import click
|
@@ -85,6 +86,18 @@ def record_or_service(model):
|
|
85
86
|
return record
|
86
87
|
|
87
88
|
|
89
|
+
def model_records_generator(model_class):
|
90
|
+
try:
|
91
|
+
for x in db.session.query(model_class.model_cls.id).filter(
|
92
|
+
model_class.model_cls.is_deleted.is_(False)
|
93
|
+
):
|
94
|
+
rec_id = x[0]
|
95
|
+
yield model_class.get_record(rec_id)
|
96
|
+
except Exception as e:
|
97
|
+
if "Column expression or FROM clause expected" not in str(e):
|
98
|
+
raise
|
99
|
+
|
100
|
+
|
88
101
|
@index.command()
|
89
102
|
@with_appcontext
|
90
103
|
@click.argument("model", required=False)
|
@@ -99,30 +112,38 @@ def reindex(model):
|
|
99
112
|
service = current_service_registry.get(service_id)
|
100
113
|
record_class = getattr(service.config, "record_cls", None)
|
101
114
|
|
102
|
-
|
103
|
-
continue
|
115
|
+
id_generators = []
|
104
116
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
117
|
+
if record_class and hasattr(service, "indexer"):
|
118
|
+
try:
|
119
|
+
id_generators.append(model_records_generator(record_class))
|
120
|
+
except Exception as e:
|
121
|
+
click.secho(
|
122
|
+
f"Could not get record ids for {service_id}, exception {e}",
|
123
|
+
file=sys.stderr,
|
124
|
+
)
|
125
|
+
|
126
|
+
draft_class = getattr(service.config, "draft_cls", None)
|
127
|
+
|
128
|
+
if draft_class and hasattr(service, "indexer"):
|
129
|
+
try:
|
130
|
+
id_generators.append(model_records_generator(draft_class))
|
131
|
+
except Exception as e:
|
132
|
+
click.secho(
|
133
|
+
f"Could not get draft record ids for {service_id}, exception {e}",
|
134
|
+
file=sys.stderr,
|
110
135
|
)
|
111
|
-
)
|
112
|
-
except Exception as e:
|
113
|
-
click.secho(
|
114
|
-
f"Could not get record ids for {service_id}, exception {e}",
|
115
|
-
file=sys.stderr,
|
116
|
-
)
|
117
|
-
continue
|
118
136
|
|
119
137
|
click.secho(f"Indexing {service_id}", file=sys.stderr)
|
120
|
-
|
121
|
-
for
|
122
|
-
record
|
123
|
-
|
124
|
-
|
138
|
+
count = 0
|
139
|
+
for gen in id_generators:
|
140
|
+
for record in gen:
|
141
|
+
service.indexer.index(record)
|
142
|
+
count += 1
|
143
|
+
if count:
|
144
|
+
service.indexer.refresh()
|
145
|
+
|
125
146
|
click.secho(
|
126
|
-
f"Indexing {service_id} finished, indexed {
|
147
|
+
f"Indexing {service_id} finished, indexed {count} records",
|
127
148
|
file=sys.stderr,
|
128
149
|
)
|
oarepo_runtime/cli/validate.py
CHANGED
@@ -22,6 +22,12 @@ class CheckOk(Exception):
|
|
22
22
|
pass
|
23
23
|
|
24
24
|
|
25
|
+
def dump_data(d):
|
26
|
+
io = StringIO()
|
27
|
+
yaml.safe_dump(d, io, allow_unicode=True)
|
28
|
+
return io.getvalue()
|
29
|
+
|
30
|
+
|
25
31
|
@oarepo.command(
|
26
32
|
help="Validate a record. Takes one or two parameters - service name as "
|
27
33
|
"the first one, file name or stdin with record data as the second"
|
@@ -51,12 +57,22 @@ def validate(service_name, record_file, verbose):
|
|
51
57
|
if file_content.startswith("{"):
|
52
58
|
data = json.loads(file_content)
|
53
59
|
else:
|
54
|
-
data = yaml.
|
60
|
+
data = list(yaml.safe_load_all(StringIO(file_content)))
|
55
61
|
|
56
62
|
if not isinstance(data, list):
|
57
63
|
data = [data]
|
58
64
|
for idx, d in enumerate(data):
|
59
|
-
|
65
|
+
try:
|
66
|
+
loaded = schema().load(d)
|
67
|
+
except Exception as e:
|
68
|
+
click.secho(
|
69
|
+
f"Marshmallow validation of record idx {idx + 1} failed",
|
70
|
+
fg="red",
|
71
|
+
)
|
72
|
+
click.secho(dump_data(d))
|
73
|
+
click.secho(e)
|
74
|
+
continue
|
75
|
+
|
60
76
|
click.secho(
|
61
77
|
f"Marshmallow validation of record idx {idx+1} has been successful",
|
62
78
|
fg="green",
|
@@ -74,6 +90,14 @@ def validate(service_name, record_file, verbose):
|
|
74
90
|
click.secho(
|
75
91
|
f"Pre-commit hook of record idx {idx+1} has been successful", fg="green"
|
76
92
|
)
|
93
|
+
except Exception as e:
|
94
|
+
click.secho(
|
95
|
+
f"Pre-commit validation of record idx {idx + 1} failed",
|
96
|
+
fg="red",
|
97
|
+
)
|
98
|
+
click.secho(dump_data(d))
|
99
|
+
click.secho(e)
|
100
|
+
continue
|
77
101
|
|
78
102
|
if verbose:
|
79
103
|
yaml.safe_dump(loaded, sys.stdout, allow_unicode=True)
|
@@ -12,8 +12,8 @@ oarepo_runtime/cli/__init__.py,sha256=-WGXmjHoSqiApR_LvYnZTimuL-frR7SynrsSklnjb3
|
|
12
12
|
oarepo_runtime/cli/assets.py,sha256=XLZTnsGb88O5N8R2D3AYpZqtnO4JrbybUtRLKnL1p3w,2430
|
13
13
|
oarepo_runtime/cli/base.py,sha256=xZMsR2rati5Mz0DZzmnlhVI7E6ePCfnOiTayrxT9cWU,259
|
14
14
|
oarepo_runtime/cli/check.py,sha256=zQ6txhfN6LWvdWgRa3ZFdOifbuazoRQd-7ml0qwIBWg,2358
|
15
|
-
oarepo_runtime/cli/index.py,sha256=
|
16
|
-
oarepo_runtime/cli/validate.py,sha256=
|
15
|
+
oarepo_runtime/cli/index.py,sha256=fZMMw0Z4vwJ9fe7g8tb4wyoAMKeushxORvIUgxWQA40,4701
|
16
|
+
oarepo_runtime/cli/validate.py,sha256=HpSvHQCGHlrdgdpKix9cIlzlBoJEiT1vACZdMnOUGEY,2827
|
17
17
|
oarepo_runtime/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
18
|
oarepo_runtime/config/permissions_presets.py,sha256=4gWNYwOi7CmS69PnxpbjHY45sc0q7BcrvkhSFdn1SlU,5786
|
19
19
|
oarepo_runtime/config/service.py,sha256=IDDEQJ3LWYBLTFhE_8jPXiinIDNDY52fI0zigDJ_usQ,1095
|
@@ -81,9 +81,9 @@ oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,
|
|
81
81
|
oarepo_runtime/validation/__init__.py,sha256=lU7DgZq8pGD5Pa-QqL9gvLsib3IYtM-Y56k-NwHrPG0,166
|
82
82
|
oarepo_runtime/validation/dates.py,sha256=fahqKGDdIYWux5ZeoljrEe8VD2fDZR9VpfvYmTYAmpw,1050
|
83
83
|
tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
84
|
-
oarepo_runtime-1.4.
|
85
|
-
oarepo_runtime-1.4.
|
86
|
-
oarepo_runtime-1.4.
|
87
|
-
oarepo_runtime-1.4.
|
88
|
-
oarepo_runtime-1.4.
|
89
|
-
oarepo_runtime-1.4.
|
84
|
+
oarepo_runtime-1.4.6.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
|
85
|
+
oarepo_runtime-1.4.6.dist-info/METADATA,sha256=Qz4fu5lS2SVdr_-opBBEtzkFsWoGIMF78prI4eW-EyY,2694
|
86
|
+
oarepo_runtime-1.4.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
87
|
+
oarepo_runtime-1.4.6.dist-info/entry_points.txt,sha256=C32W4eT-8OypMCfwOO5WREioVKSneDfY51D78Uvdbp0,231
|
88
|
+
oarepo_runtime-1.4.6.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
|
89
|
+
oarepo_runtime-1.4.6.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|