oarepo-runtime 1.5.9__tar.gz → 1.5.10__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.9/oarepo_runtime.egg-info → oarepo-runtime-1.5.10}/PKG-INFO +1 -1
  2. oarepo-runtime-1.5.10/oarepo_runtime/services/config/service.py +90 -0
  3. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10/oarepo_runtime.egg-info}/PKG-INFO +1 -1
  4. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/setup.cfg +1 -1
  5. oarepo-runtime-1.5.9/oarepo_runtime/services/config/service.py +0 -43
  6. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/LICENSE +0 -0
  7. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/MANIFEST.in +0 -0
  8. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/README.md +0 -0
  9. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/__init__.py +0 -0
  10. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/__init__.py +0 -0
  11. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/assets.py +0 -0
  12. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/base.py +0 -0
  13. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/cf.py +0 -0
  14. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/check.py +0 -0
  15. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/configuration.py +0 -0
  16. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/fixtures.py +0 -0
  17. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/index.py +0 -0
  18. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/cli/validate.py +0 -0
  19. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/__init__.py +0 -0
  20. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/asynchronous.py +0 -0
  21. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/catalogue.py +0 -0
  22. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/datastreams.py +0 -0
  23. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/errors.py +0 -0
  24. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/ext.py +0 -0
  25. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/fixtures.py +0 -0
  26. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/json.py +0 -0
  27. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/readers/__init__.py +0 -0
  28. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/readers/attachments.py +0 -0
  29. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/readers/excel.py +0 -0
  30. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/readers/json.py +0 -0
  31. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/readers/service.py +0 -0
  32. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/readers/yaml.py +0 -0
  33. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/semi_asynchronous.py +0 -0
  34. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/synchronous.py +0 -0
  35. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/transformers.py +0 -0
  36. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/types.py +0 -0
  37. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/utils.py +0 -0
  38. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/__init__.py +0 -0
  39. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/attachments_file.py +0 -0
  40. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/attachments_service.py +0 -0
  41. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/service.py +0 -0
  42. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/utils.py +0 -0
  43. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/validation_errors.py +0 -0
  44. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/datastreams/writers/yaml.py +0 -0
  45. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/ext.py +0 -0
  46. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/ext_config.py +0 -0
  47. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/i18n/__init__.py +0 -0
  48. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/info/__init__.py +0 -0
  49. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/info/views.py +0 -0
  50. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/profile.py +0 -0
  51. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/proxies.py +0 -0
  52. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/__init__.py +0 -0
  53. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/dumpers/__init__.py +0 -0
  54. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/dumpers/edtf_interval.py +0 -0
  55. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/dumpers/multilingual_dumper.py +0 -0
  56. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/entity_resolvers/__init__.py +0 -0
  57. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/entity_resolvers/proxies.py +0 -0
  58. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/relations/__init__.py +0 -0
  59. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/relations/base.py +0 -0
  60. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/relations/internal.py +0 -0
  61. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/relations/lookup.py +0 -0
  62. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/relations/pid_relation.py +0 -0
  63. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/__init__.py +0 -0
  64. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/featured_file.py +0 -0
  65. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/has_draftcheck.py +0 -0
  66. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/icu.py +0 -0
  67. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/mapping.py +0 -0
  68. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/record_status.py +0 -0
  69. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/records/systemfields/synthetic.py +0 -0
  70. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/resources/__init__.py +0 -0
  71. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/resources/file_resource.py +0 -0
  72. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/resources/localized_ui_json_serializer.py +0 -0
  73. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/__init__.py +0 -0
  74. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/config/__init__.py +0 -0
  75. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/config/permissions_presets.py +0 -0
  76. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/custom_fields/__init__.py +0 -0
  77. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/custom_fields/mappings.py +0 -0
  78. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/expansions/__init__.py +0 -0
  79. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/expansions/expandable_fields.py +0 -0
  80. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/expansions/service.py +0 -0
  81. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/__init__.py +0 -0
  82. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/base.py +0 -0
  83. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/date.py +0 -0
  84. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/enum.py +0 -0
  85. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/facet_groups_names.py +0 -0
  86. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/max_facet.py +0 -0
  87. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/nested_facet.py +0 -0
  88. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/facets/params.py +0 -0
  89. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/files/__init__.py +0 -0
  90. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/files/service.py +0 -0
  91. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/relations/__init__.py +0 -0
  92. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/relations/components.py +0 -0
  93. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/relations/errors.py +0 -0
  94. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/relations/mapping.py +0 -0
  95. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/results.py +0 -0
  96. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/__init__.py +0 -0
  97. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/cf.py +0 -0
  98. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/i18n.py +0 -0
  99. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/i18n_ui.py +0 -0
  100. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/i18n_validation.py +0 -0
  101. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/marshmallow.py +0 -0
  102. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/polymorphic.py +0 -0
  103. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/ui.py +0 -0
  104. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/schema/validation.py +0 -0
  105. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/services/search.py +0 -0
  106. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.mo +0 -0
  107. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/cs/LC_MESSAGES/messages.po +0 -0
  108. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/default_translations.py +0 -0
  109. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/en/LC_MESSAGES/messages.mo +0 -0
  110. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/en/LC_MESSAGES/messages.po +0 -0
  111. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/jinjax_messages.jinja +0 -0
  112. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/translations/messages.pot +0 -0
  113. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/uow.py +0 -0
  114. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/utils/__init__.py +0 -0
  115. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/utils/functools.py +0 -0
  116. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime/utils/path.py +0 -0
  117. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime.egg-info/SOURCES.txt +0 -0
  118. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime.egg-info/dependency_links.txt +0 -0
  119. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime.egg-info/entry_points.txt +0 -0
  120. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime.egg-info/requires.txt +0 -0
  121. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/oarepo_runtime.egg-info/top_level.txt +0 -0
  122. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/pyproject.toml +0 -0
  123. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/setup.py +0 -0
  124. {oarepo-runtime-1.5.9 → oarepo-runtime-1.5.10}/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.9
3
+ Version: 1.5.10
4
4
  Summary: A set of runtime extensions of Invenio repository
5
5
  Description-Content-Type: text/markdown
6
6
  License-File: LICENSE
@@ -0,0 +1,90 @@
1
+ import inspect
2
+ import re
3
+ from functools import cached_property
4
+ from typing import List, Type
5
+
6
+ from flask import current_app
7
+ from invenio_records_permissions import BasePermissionPolicy
8
+
9
+
10
+ class PermissionsPresetsConfigMixin:
11
+ components = tuple()
12
+ PERMISSIONS_PRESETS_CONFIG_KEY = None
13
+ # PERMISSIONS_PRESETS = [] # noqa (omitted here because of the order of mixins)
14
+
15
+ @cached_property
16
+ def permission_policy_cls(self):
17
+ """
18
+ Returns a class that contains all permissions from the presets.
19
+ """
20
+ presets = self._get_preset_classes()
21
+
22
+ permissions = {}
23
+ for preset_class in presets:
24
+ for permission_name, permission_needs in self._get_permissions_from_preset(
25
+ preset_class
26
+ ):
27
+ target = permissions.setdefault(permission_name, [])
28
+ for need in permission_needs:
29
+ if need not in target:
30
+ target.append(need)
31
+
32
+ return type(f"{type(self).__name__}Permissions", tuple(presets), permissions)
33
+
34
+ @staticmethod
35
+ def _get_permissions_from_preset(preset_class):
36
+ for permission_name, permission_needs in inspect.getmembers(preset_class):
37
+ if not permission_name.startswith("can_"):
38
+ continue
39
+ if not isinstance(permission_needs, (list, tuple)):
40
+ continue
41
+ yield permission_name, permission_needs
42
+
43
+ def _get_preset_classes(self) -> List[Type[BasePermissionPolicy]]:
44
+ """
45
+ Returns a list of permission presets classes to be used for this service.
46
+
47
+ The list is read from the configuration, if it exists, otherwise it returns
48
+ the default value from the class attribute PERMISSIONS_PRESETS.
49
+ """
50
+ registered_preset_classes = current_app.config["OAREPO_PERMISSIONS_PRESETS"]
51
+ preset_classes = [
52
+ registered_preset_classes[x]
53
+ for x in self._get_permissions_presets()
54
+ ]
55
+ if hasattr(self, "base_permission_policy_cls"):
56
+ preset_classes.insert(0, self.base_permission_policy_cls)
57
+ return preset_classes
58
+
59
+ def _get_permissions_presets(self):
60
+ """
61
+ Returns a list of names of permissions presets to be used for this service.
62
+
63
+ The list is read from the configuration, if it exists, otherwise it returns
64
+ the default value from the class attribute PERMISSIONS_PRESETS.
65
+ """
66
+ config_key = self._get_presents_config_key()
67
+ if config_key in current_app.config:
68
+ return current_app.config[config_key]
69
+ return self.PERMISSIONS_PRESETS # noqa (omitted here because of the order of mixins)
70
+
71
+ def _get_presents_config_key(self):
72
+ """
73
+ Returns the name of the configuration key that contains the list of
74
+ permissions presets to be used for this service.
75
+
76
+ The key is read from the class attribute PERMISSIONS_PRESETS_CONFIG_KEY.
77
+ If it is not set, the key is generated from the name of the service
78
+ configuration class (MyServiceConfig becomes MY_SERVICE_PERMISSIONS_PRESETS).
79
+ """
80
+ if self.PERMISSIONS_PRESETS_CONFIG_KEY:
81
+ return self.PERMISSIONS_PRESETS_CONFIG_KEY
82
+
83
+ # use the base class of the service config file (e.g. MyServiceConfig),
84
+ # remove the "Config" part and convert it to snake uppercase.
85
+ # add "_PERMISSIONS_PRESETS" at the end.
86
+ name = type(self).__name__
87
+ if name.endswith("Config"):
88
+ name = name[:-6]
89
+ name = re.sub(r'(?<!^)(?=[A-Z])', '_', name).upper()
90
+ return f"{name}_PERMISSIONS_PRESETS"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oarepo-runtime
3
- Version: 1.5.9
3
+ Version: 1.5.10
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.9
3
+ version = 1.5.10
4
4
  description = A set of runtime extensions of Invenio repository
5
5
  authors = Alzbeta Pokorna
6
6
  readme = README.md
@@ -1,43 +0,0 @@
1
- import inspect
2
- from functools import cached_property
3
-
4
- from flask import current_app
5
-
6
-
7
- class PermissionsPresetsConfigMixin:
8
- components = tuple()
9
-
10
- @cached_property
11
- def permission_policy_cls(self):
12
- presets = self._get_preset_classes()
13
-
14
- permissions = {}
15
- for preset_class in presets:
16
- for permission_name, permission_needs in self._get_permissions_from_preset(
17
- preset_class
18
- ):
19
- target = permissions.setdefault(permission_name, [])
20
- for need in permission_needs:
21
- if need not in target:
22
- target.append(need)
23
-
24
- return type(f"{type(self).__name__}Permissions", tuple(presets), permissions)
25
-
26
- @staticmethod
27
- def _get_permissions_from_preset(preset_class):
28
- for permission_name, permission_needs in inspect.getmembers(preset_class):
29
- if not permission_name.startswith("can_"):
30
- continue
31
- if not isinstance(permission_needs, (list, tuple)):
32
- continue
33
- yield permission_name, permission_needs
34
-
35
- def _get_preset_classes(self):
36
- registered_preset_classes = current_app.config["OAREPO_PERMISSIONS_PRESETS"]
37
- preset_classes = [
38
- registered_preset_classes[x]
39
- for x in self.PERMISSIONS_PRESETS # noqa (omitted here because of the order of mixins)
40
- ]
41
- if hasattr(self, "base_permission_policy_cls"):
42
- preset_classes.insert(0, self.base_permission_policy_cls)
43
- return preset_classes
File without changes
File without changes