oarepo-runtime 1.5.20__py3-none-any.whl → 1.5.22__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/info/views.py +29 -9
- oarepo_runtime/records/systemfields/has_draftcheck.py +4 -0
- {oarepo_runtime-1.5.20.dist-info → oarepo_runtime-1.5.22.dist-info}/METADATA +1 -1
- {oarepo_runtime-1.5.20.dist-info → oarepo_runtime-1.5.22.dist-info}/RECORD +8 -8
- {oarepo_runtime-1.5.20.dist-info → oarepo_runtime-1.5.22.dist-info}/LICENSE +0 -0
- {oarepo_runtime-1.5.20.dist-info → oarepo_runtime-1.5.22.dist-info}/WHEEL +0 -0
- {oarepo_runtime-1.5.20.dist-info → oarepo_runtime-1.5.22.dist-info}/entry_points.txt +0 -0
- {oarepo_runtime-1.5.20.dist-info → oarepo_runtime-1.5.22.dist-info}/top_level.txt +0 -0
oarepo_runtime/info/views.py
CHANGED
@@ -8,6 +8,8 @@ import importlib_metadata
|
|
8
8
|
import importlib_resources
|
9
9
|
import marshmallow as ma
|
10
10
|
from flask import current_app, request, url_for
|
11
|
+
from flask.ctx import RequestContext
|
12
|
+
from flask.globals import _cv_request
|
11
13
|
from flask_resources import (
|
12
14
|
Resource,
|
13
15
|
ResourceConfig,
|
@@ -91,12 +93,13 @@ class InfoResource(Resource):
|
|
91
93
|
model_data = json.loads(
|
92
94
|
importlib_resources.files(package_name).joinpath(file_name).read_text()
|
93
95
|
)
|
94
|
-
model_data = model_data
|
95
|
-
if model_data
|
96
|
+
model_data = model_data.get("model", {})
|
97
|
+
if model_data.get("type") != "model":
|
96
98
|
continue
|
97
99
|
|
98
100
|
service = self._get_service(model_data)
|
99
|
-
|
101
|
+
service_class = self._get_service_class(model_data)
|
102
|
+
if not service or type(service) != service_class:
|
100
103
|
continue
|
101
104
|
|
102
105
|
model_features = self._get_model_features(model_data)
|
@@ -271,6 +274,11 @@ class InfoResource(Resource):
|
|
271
274
|
return service
|
272
275
|
|
273
276
|
|
277
|
+
def _get_service_class(self, model_data):
|
278
|
+
service_id = model_data["service"]["class"]
|
279
|
+
return obj_or_import_string(service_id)
|
280
|
+
|
281
|
+
|
274
282
|
def create_wellknown_blueprint(app):
|
275
283
|
"""Create blueprint."""
|
276
284
|
config_class = obj_or_import_string(
|
@@ -292,11 +300,23 @@ def get_package_version(package_name):
|
|
292
300
|
|
293
301
|
def api_url_for(endpoint, _external=True, **values):
|
294
302
|
"""API url_for."""
|
303
|
+
try:
|
304
|
+
api_app = current_app.wsgi_app.mounts['/api']
|
305
|
+
except:
|
306
|
+
api_app = current_app
|
307
|
+
|
295
308
|
site_api_url = current_app.config["SITE_API_URL"]
|
296
309
|
site_url = current_app.config["SITE_UI_URL"]
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
310
|
+
current_request_context = _cv_request.get()
|
311
|
+
try:
|
312
|
+
new_context = RequestContext(app=api_app,
|
313
|
+
environ=request.environ)
|
314
|
+
_cv_request.set(new_context)
|
315
|
+
base_url = api_app.url_for(endpoint, **values, _external=_external)
|
316
|
+
if base_url.startswith(site_api_url):
|
317
|
+
return base_url
|
318
|
+
if base_url.startswith(site_url):
|
319
|
+
return base_url.replace(site_url, site_api_url)
|
320
|
+
raise ValueError(f"URL {base_url} does not start with {site_url} or {site_api_url}")
|
321
|
+
finally:
|
322
|
+
_cv_request.set(current_request_context)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
from inspect import isfunction
|
2
|
+
|
1
3
|
from invenio_records.dictutils import dict_set
|
2
4
|
from invenio_records.systemfields import SystemField
|
3
5
|
from sqlalchemy.orm.exc import NoResultFound
|
@@ -34,6 +36,8 @@ class HasDraftCheckField(CustomFieldsMixin, SystemField):
|
|
34
36
|
return False
|
35
37
|
|
36
38
|
try:
|
39
|
+
if isfunction(self.draft_cls):
|
40
|
+
self.draft_cls = self.draft_cls()
|
37
41
|
self.draft_cls.get_record(record.id)
|
38
42
|
return True
|
39
43
|
except NoResultFound:
|
@@ -41,7 +41,7 @@ oarepo_runtime/datastreams/writers/validation_errors.py,sha256=wOCXdniR6so_4Expd
|
|
41
41
|
oarepo_runtime/datastreams/writers/yaml.py,sha256=XchUJHQ58E2Mfgs8elImXbL38jFtI8Hfoye6yaR0gKI,1482
|
42
42
|
oarepo_runtime/i18n/__init__.py,sha256=G4PJ_kQlPDiBW6ntjQZ-O4qHQgkJWAXsNLUuOBcglNM,402
|
43
43
|
oarepo_runtime/info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
|
-
oarepo_runtime/info/views.py,sha256=
|
44
|
+
oarepo_runtime/info/views.py,sha256=jtI2JJBdApuT5ZIxU2kskJBz6GpJVTgUGrM8EMNIiAk,11137
|
45
45
|
oarepo_runtime/records/__init__.py,sha256=Bxm2XNtB9j6iOAKGSVsjXTKIZS-iXKPzakCqyNkEix8,432
|
46
46
|
oarepo_runtime/records/dumpers/__init__.py,sha256=OmzNhLdMNKibmCksnj9eTX9xPBG30dziiK3j3bAAp3k,233
|
47
47
|
oarepo_runtime/records/dumpers/edtf_interval.py,sha256=YCShZAoqBQYaxVilEVotS-jXZsxxoXO67yu2urhkaMA,1198
|
@@ -57,7 +57,7 @@ oarepo_runtime/records/relations/lookup.py,sha256=wi3jPfOedazOmhOMrgu50PUETc1jfS
|
|
57
57
|
oarepo_runtime/records/relations/pid_relation.py,sha256=zJjSf_ocFBViYsOuMMZLbQZpNZeKiOK33dPD4tk74Qo,2786
|
58
58
|
oarepo_runtime/records/systemfields/__init__.py,sha256=SPaMWM6t-azz6gZLUKvvXbOyE2_-LW6i_szQk8nhbAc,455
|
59
59
|
oarepo_runtime/records/systemfields/featured_file.py,sha256=MbSaYR130_o5S9gEOblnChq-PVK4xGPGpSCrzwG3cwc,1720
|
60
|
-
oarepo_runtime/records/systemfields/has_draftcheck.py,sha256=
|
60
|
+
oarepo_runtime/records/systemfields/has_draftcheck.py,sha256=4JkMEefPLpqtPtlTgK3UT0KzTRgyw5_Qtkss2qcz5xk,1643
|
61
61
|
oarepo_runtime/records/systemfields/icu.py,sha256=tAwplzy9y7C9Dm7HqcGZsDu2AKqVGXhCbKLsFlgVWg8,5921
|
62
62
|
oarepo_runtime/records/systemfields/mapping.py,sha256=tXOK_jkdY1pOUO7_VfChfDNB8UTi21GUXaidpugTnO8,1017
|
63
63
|
oarepo_runtime/records/systemfields/owner.py,sha256=46-EKkGq77FYQgZFvUhWxvaVlu9KbRWg5nveZL4cAP4,3633
|
@@ -114,9 +114,9 @@ oarepo_runtime/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
114
114
|
oarepo_runtime/utils/functools.py,sha256=gKS9YZtlIYcDvdNA9cmYO00yjiXBYV1jg8VpcRUyQyg,1324
|
115
115
|
oarepo_runtime/utils/path.py,sha256=V1NVyk3m12_YLbj7QHYvUpE1wScO78bYsX1LOLeXDkI,3108
|
116
116
|
tests/pkg_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
117
|
-
oarepo_runtime-1.5.
|
118
|
-
oarepo_runtime-1.5.
|
119
|
-
oarepo_runtime-1.5.
|
120
|
-
oarepo_runtime-1.5.
|
121
|
-
oarepo_runtime-1.5.
|
122
|
-
oarepo_runtime-1.5.
|
117
|
+
oarepo_runtime-1.5.22.dist-info/LICENSE,sha256=h2uWz0OaB3EN-J1ImdGJZzc7yvfQjvHVYdUhQ-H7ypY,1064
|
118
|
+
oarepo_runtime-1.5.22.dist-info/METADATA,sha256=Pj8uJfDhVkrJiFU2SsjLs0lBrriYCG-qx7uEVnVm1mQ,4680
|
119
|
+
oarepo_runtime-1.5.22.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
120
|
+
oarepo_runtime-1.5.22.dist-info/entry_points.txt,sha256=QrlXAKuPDVBinaSh_v3yO9_Nb9ZNmJCJ0VFcCW-z0Jg,327
|
121
|
+
oarepo_runtime-1.5.22.dist-info/top_level.txt,sha256=bHhlkT1_RQC4IkfTQCqA3iN4KCB6cSFQlsXpQMSP-bE,21
|
122
|
+
oarepo_runtime-1.5.22.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|