amsdal 0.3.3__cp311-cp311-macosx_10_9_universal2.whl → 0.5.29__cp311-cp311-macosx_10_9_universal2.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.
Files changed (244) hide show
  1. amsdal/Third-Party Materials - AMSDAL Dependencies - License Notices.md +56 -2
  2. amsdal/__about__.py +1 -1
  3. amsdal/__init__.py +20 -0
  4. amsdal/__init__.pyi +9 -0
  5. amsdal/__migrations__/0000_initial.py +23 -190
  6. amsdal/__migrations__/0001_create_class_file.py +61 -0
  7. amsdal/__migrations__/0002_create_class_file.py +109 -0
  8. amsdal/__migrations__/0003_update_class_file.py +91 -0
  9. amsdal/__migrations__/0004_update_class_file.py +45 -0
  10. amsdal/cloud/__init__.cpython-311-darwin.so +0 -0
  11. amsdal/cloud/client.cpython-311-darwin.so +0 -0
  12. amsdal/cloud/constants.cpython-311-darwin.so +0 -0
  13. amsdal/cloud/enums.cpython-311-darwin.so +0 -0
  14. amsdal/cloud/models/__init__.cpython-311-darwin.so +0 -0
  15. amsdal/cloud/models/base.cpython-311-darwin.so +0 -0
  16. amsdal/cloud/services/__init__.cpython-311-darwin.so +0 -0
  17. amsdal/cloud/services/actions/__init__.cpython-311-darwin.so +0 -0
  18. amsdal/cloud/services/actions/add_allowlist_ip.cpython-311-darwin.so +0 -0
  19. amsdal/cloud/services/actions/add_basic_auth.cpython-311-darwin.so +0 -0
  20. amsdal/cloud/services/actions/add_dependency.cpython-311-darwin.so +0 -0
  21. amsdal/cloud/services/actions/add_secret.cpython-311-darwin.so +0 -0
  22. amsdal/cloud/services/actions/base.cpython-311-darwin.so +0 -0
  23. amsdal/cloud/services/actions/create_deploy.cpython-311-darwin.so +0 -0
  24. amsdal/cloud/services/actions/create_env.cpython-311-darwin.so +0 -0
  25. amsdal/cloud/services/actions/create_session.cpython-311-darwin.so +0 -0
  26. amsdal/cloud/services/actions/delete_allowlist_ip.cpython-311-darwin.so +0 -0
  27. amsdal/cloud/services/actions/delete_basic_auth.cpython-311-darwin.so +0 -0
  28. amsdal/cloud/services/actions/delete_dependency.cpython-311-darwin.so +0 -0
  29. amsdal/cloud/services/actions/delete_env.cpython-311-darwin.so +0 -0
  30. amsdal/cloud/services/actions/delete_secret.cpython-311-darwin.so +0 -0
  31. amsdal/cloud/services/actions/destroy_deploy.cpython-311-darwin.so +0 -0
  32. amsdal/cloud/services/actions/expose_db.cpython-311-darwin.so +0 -0
  33. amsdal/cloud/services/actions/get_basic_auth_credentials.cpython-311-darwin.so +0 -0
  34. amsdal/cloud/services/actions/get_monitoring_info.cpython-311-darwin.so +0 -0
  35. amsdal/cloud/services/actions/list_dependencies.cpython-311-darwin.so +0 -0
  36. amsdal/cloud/services/actions/list_deploys.cpython-311-darwin.so +0 -0
  37. amsdal/cloud/services/actions/list_envs.cpython-311-darwin.so +0 -0
  38. amsdal/cloud/services/actions/list_secrets.cpython-311-darwin.so +0 -0
  39. amsdal/cloud/services/actions/manager.cpython-311-darwin.so +0 -0
  40. amsdal/cloud/services/actions/signup_action.cpython-311-darwin.so +0 -0
  41. amsdal/cloud/services/actions/update_deploy.cpython-311-darwin.so +0 -0
  42. amsdal/cloud/services/auth/__init__.cpython-311-darwin.so +0 -0
  43. amsdal/cloud/services/auth/base.cpython-311-darwin.so +0 -0
  44. amsdal/cloud/services/auth/credentials.cpython-311-darwin.so +0 -0
  45. amsdal/cloud/services/auth/credentials.pyi +0 -1
  46. amsdal/cloud/services/auth/manager.cpython-311-darwin.so +0 -0
  47. amsdal/cloud/services/auth/signup_service.cpython-311-darwin.so +0 -0
  48. amsdal/cloud/services/auth/token.cpython-311-darwin.so +0 -0
  49. amsdal/cloud/services/auth/token.pyi +0 -1
  50. amsdal/configs/main.py +40 -20
  51. amsdal/configs/main.pyi +19 -18
  52. amsdal/contrib/__init__.cpython-311-darwin.so +0 -0
  53. amsdal/contrib/auth/errors.py +36 -0
  54. amsdal/contrib/auth/errors.pyi +12 -0
  55. amsdal/contrib/auth/fixtures/basic_permissions.json +64 -0
  56. amsdal/contrib/auth/lifecycle/consumer.py +13 -13
  57. amsdal/contrib/auth/lifecycle/consumer.pyi +3 -0
  58. amsdal/contrib/auth/migrations/0000_initial.py +69 -31
  59. amsdal/contrib/auth/migrations/0001_add_mfa_support.py +188 -0
  60. amsdal/contrib/auth/models/__init__.py +1 -0
  61. amsdal/contrib/auth/models/backup_code.py +85 -0
  62. amsdal/contrib/auth/models/email_mfa_device.py +108 -0
  63. amsdal/contrib/auth/models/login_session.py +235 -0
  64. amsdal/contrib/auth/models/mfa_device.py +86 -0
  65. amsdal/contrib/auth/models/permission.py +23 -0
  66. amsdal/contrib/auth/models/sms_device.py +113 -0
  67. amsdal/contrib/auth/models/totp_device.py +58 -0
  68. amsdal/contrib/auth/models/user.py +156 -0
  69. amsdal/contrib/auth/services/__init__.py +1 -0
  70. amsdal/contrib/auth/services/mfa_device_service.py +544 -0
  71. amsdal/contrib/auth/services/mfa_device_service.pyi +216 -0
  72. amsdal/contrib/auth/services/totp_service.py +358 -0
  73. amsdal/contrib/auth/services/totp_service.pyi +158 -0
  74. amsdal/contrib/auth/settings.py +8 -0
  75. amsdal/contrib/auth/settings.pyi +8 -0
  76. amsdal/contrib/auth/transactions/__init__.py +1 -0
  77. amsdal/contrib/auth/transactions/mfa_device_transactions.py +463 -0
  78. amsdal/contrib/auth/transactions/mfa_device_transactions.pyi +226 -0
  79. amsdal/contrib/auth/transactions/totp_transactions.py +206 -0
  80. amsdal/contrib/auth/transactions/totp_transactions.pyi +113 -0
  81. amsdal/contrib/auth/utils/__init__.py +0 -0
  82. amsdal/contrib/auth/utils/__init__.pyi +0 -0
  83. amsdal/contrib/auth/utils/mfa.py +257 -0
  84. amsdal/contrib/auth/utils/mfa.pyi +119 -0
  85. amsdal/contrib/frontend_configs/conversion/convert.py +85 -25
  86. amsdal/contrib/frontend_configs/conversion/convert.pyi +0 -1
  87. amsdal/contrib/frontend_configs/lifecycle/consumer.py +32 -13
  88. amsdal/contrib/frontend_configs/lifecycle/consumer.pyi +1 -1
  89. amsdal/contrib/frontend_configs/migrations/0000_initial.py +167 -195
  90. amsdal/contrib/frontend_configs/migrations/0001_update_frontend_control_config.py +245 -0
  91. amsdal/contrib/frontend_configs/migrations/0002_add_button_and_invoke_actions.py +352 -0
  92. amsdal/contrib/frontend_configs/migrations/0003_create_class_frontendconfigdashboardelement.py +145 -0
  93. amsdal/contrib/frontend_configs/models/__init__.py +0 -0
  94. amsdal/contrib/frontend_configs/models/frontend_activator_config.py +22 -0
  95. amsdal/contrib/frontend_configs/models/frontend_config_async_validator.py +11 -0
  96. amsdal/contrib/frontend_configs/models/frontend_config_control_action.py +110 -0
  97. amsdal/contrib/frontend_configs/models/frontend_config_dashboard.py +51 -0
  98. amsdal/contrib/frontend_configs/models/frontend_config_group_validator.py +21 -0
  99. amsdal/contrib/frontend_configs/models/frontend_config_option.py +12 -0
  100. amsdal/contrib/frontend_configs/models/frontend_config_skip_none_base.py +17 -0
  101. amsdal/contrib/frontend_configs/models/frontend_config_slider_option.py +13 -0
  102. amsdal/contrib/frontend_configs/models/frontend_config_text_mask.py +14 -0
  103. amsdal/contrib/frontend_configs/models/frontend_config_validator.py +28 -0
  104. amsdal/contrib/frontend_configs/models/frontend_control_config.py +110 -0
  105. amsdal/contrib/frontend_configs/models/frontend_model_config.py +14 -0
  106. amsdal/errors.py +0 -3
  107. amsdal/errors.pyi +0 -1
  108. amsdal/fixtures/__init__.cpython-311-darwin.so +0 -0
  109. amsdal/fixtures/manager.cpython-311-darwin.so +0 -0
  110. amsdal/fixtures/manager.pyi +73 -123
  111. amsdal/fixtures/utils.cpython-311-darwin.so +0 -0
  112. amsdal/fixtures/utils.pyi +9 -0
  113. amsdal/manager.cpython-311-darwin.so +0 -0
  114. amsdal/manager.pyi +9 -96
  115. amsdal/mixins/__init__.cpython-311-darwin.so +0 -0
  116. amsdal/mixins/class_versions_mixin.cpython-311-darwin.so +0 -0
  117. amsdal/models/__init__.py +19 -0
  118. amsdal/models/core/__init__.py +0 -0
  119. amsdal/models/core/class_object.py +38 -0
  120. amsdal/models/core/class_property.py +26 -0
  121. amsdal/models/core/file.py +243 -0
  122. amsdal/models/core/fixture.py +25 -0
  123. amsdal/models/core/option.py +11 -0
  124. amsdal/models/core/storage_metadata.py +15 -0
  125. amsdal/models/core/validator.py +12 -0
  126. amsdal/models/mixins.py +31 -0
  127. amsdal/models/types/__init__.py +0 -0
  128. amsdal/models/types/object.py +26 -0
  129. amsdal/queryset/__init__.py +21 -0
  130. amsdal/queryset/__init__.pyi +6 -0
  131. amsdal/schemas/core/class_object/model.json +20 -0
  132. amsdal/schemas/core/class_property/model.json +19 -0
  133. amsdal/schemas/core/file/properties/from_file.py +1 -1
  134. amsdal/schemas/core/file/properties/validate_data.py +3 -4
  135. amsdal/schemas/core/storage_metadata/model.json +52 -0
  136. amsdal/schemas/interfaces.py +25 -0
  137. amsdal/schemas/interfaces.pyi +20 -0
  138. amsdal/schemas/manager.cpython-311-darwin.so +0 -0
  139. amsdal/schemas/manager.py +0 -116
  140. amsdal/schemas/manager.pyi +0 -65
  141. amsdal/schemas/mixins/__init__.py +0 -0
  142. amsdal/schemas/mixins/__init__.pyi +0 -0
  143. amsdal/schemas/mixins/check_dependencies_mixin.py +130 -0
  144. amsdal/schemas/mixins/check_dependencies_mixin.pyi +45 -0
  145. amsdal/schemas/mixins/verify_schemas_mixin.py +96 -0
  146. amsdal/schemas/mixins/verify_schemas_mixin.pyi +33 -0
  147. amsdal/schemas/repository.py +84 -0
  148. amsdal/schemas/repository.pyi +22 -0
  149. amsdal/schemas/utils.py +16 -0
  150. amsdal/schemas/utils.pyi +10 -0
  151. amsdal/services/__init__.py +11 -0
  152. amsdal/services/__init__.pyi +4 -0
  153. amsdal/services/external_connections.py +262 -0
  154. amsdal/services/external_connections.pyi +190 -0
  155. amsdal/services/external_model_generator.py +350 -0
  156. amsdal/services/external_model_generator.pyi +134 -0
  157. amsdal/services/transaction_execution.cpython-311-darwin.so +0 -0
  158. amsdal/services/transaction_execution.pyi +2 -1
  159. amsdal/storages/__init__.py +20 -0
  160. amsdal/storages/__init__.pyi +8 -0
  161. amsdal/storages/file_system.py +214 -0
  162. amsdal/storages/file_system.pyi +36 -0
  163. amsdal/transactions/__init__.py +13 -0
  164. amsdal/transactions/__init__.pyi +4 -0
  165. amsdal/utils/rollback/__init__.py +99 -54
  166. amsdal/utils/rollback/__init__.pyi +6 -0
  167. amsdal/utils/tests/enums.py +0 -2
  168. amsdal/utils/tests/helpers.py +253 -231
  169. amsdal/utils/tests/migrations.py +157 -0
  170. {amsdal-0.3.3.dist-info → amsdal-0.5.29.dist-info}/METADATA +17 -10
  171. amsdal-0.5.29.dist-info/RECORD +276 -0
  172. {amsdal-0.3.3.dist-info → amsdal-0.5.29.dist-info}/WHEEL +1 -1
  173. amsdal/__migrations__/0001_datetime_type.py +0 -18
  174. amsdal/__migrations__/0002_fixture_order.py +0 -40
  175. amsdal/__migrations__/0003_schema_type_in_class_meta.py +0 -56
  176. amsdal/contrib/auth/models/login_session/hooks/pre_init.py +0 -68
  177. amsdal/contrib/auth/models/login_session/model.json +0 -23
  178. amsdal/contrib/auth/models/login_session/modifiers/display_name.py +0 -11
  179. amsdal/contrib/auth/models/permission/fixtures/basic_permissions.json +0 -62
  180. amsdal/contrib/auth/models/permission/model.json +0 -18
  181. amsdal/contrib/auth/models/permission/modifiers/display_name.py +0 -11
  182. amsdal/contrib/auth/models/user/hooks/post_init.py +0 -76
  183. amsdal/contrib/auth/models/user/hooks/pre_create.py +0 -8
  184. amsdal/contrib/auth/models/user/model.json +0 -25
  185. amsdal/contrib/auth/models/user/modifiers/display_name.py +0 -19
  186. amsdal/contrib/frontend_configs/models/frontend_activator_config/model.json +0 -11
  187. amsdal/contrib/frontend_configs/models/frontend_config_async_validator/model.json +0 -11
  188. amsdal/contrib/frontend_configs/models/frontend_config_group_validator/model.json +0 -52
  189. amsdal/contrib/frontend_configs/models/frontend_config_option/model.json +0 -15
  190. amsdal/contrib/frontend_configs/models/frontend_config_skip_none_base/model.json +0 -6
  191. amsdal/contrib/frontend_configs/models/frontend_config_skip_none_base/properties/model_dump.py +0 -13
  192. amsdal/contrib/frontend_configs/models/frontend_config_slider_option/model.json +0 -19
  193. amsdal/contrib/frontend_configs/models/frontend_config_text_mask/model.json +0 -26
  194. amsdal/contrib/frontend_configs/models/frontend_config_validator/model.json +0 -41
  195. amsdal/contrib/frontend_configs/models/frontend_control_config/model.json +0 -250
  196. amsdal/contrib/frontend_configs/models/frontend_model_config/fixtures/permissions.json +0 -24
  197. amsdal/contrib/frontend_configs/models/frontend_model_config/model.json +0 -17
  198. amsdal/contrib/frontend_configs/models/frontent_config_control_action/model.json +0 -54
  199. amsdal/contrib/frontend_configs/models/frontent_config_control_action/properties/action_validate.py +0 -33
  200. amsdal/migration/__init__.cpython-311-darwin.so +0 -0
  201. amsdal/migration/base_migration_schemas.cpython-311-darwin.so +0 -0
  202. amsdal/migration/base_migration_schemas.pyi +0 -120
  203. amsdal/migration/data_classes.cpython-311-darwin.so +0 -0
  204. amsdal/migration/data_classes.pyi +0 -172
  205. amsdal/migration/executors/__init__.cpython-311-darwin.so +0 -0
  206. amsdal/migration/executors/base.cpython-311-darwin.so +0 -0
  207. amsdal/migration/executors/base.pyi +0 -118
  208. amsdal/migration/executors/default_executor.cpython-311-darwin.so +0 -0
  209. amsdal/migration/executors/default_executor.pyi +0 -184
  210. amsdal/migration/executors/state_executor.cpython-311-darwin.so +0 -0
  211. amsdal/migration/executors/state_executor.pyi +0 -78
  212. amsdal/migration/file_migration_executor.cpython-311-darwin.so +0 -0
  213. amsdal/migration/file_migration_executor.pyi +0 -68
  214. amsdal/migration/file_migration_generator.cpython-311-darwin.so +0 -0
  215. amsdal/migration/file_migration_generator.pyi +0 -139
  216. amsdal/migration/file_migration_store.cpython-311-darwin.so +0 -0
  217. amsdal/migration/file_migration_store.pyi +0 -61
  218. amsdal/migration/file_migration_writer.cpython-311-darwin.so +0 -0
  219. amsdal/migration/file_migration_writer.pyi +0 -73
  220. amsdal/migration/migrations.cpython-311-darwin.so +0 -0
  221. amsdal/migration/migrations.pyi +0 -166
  222. amsdal/migration/migrations_loader.cpython-311-darwin.so +0 -0
  223. amsdal/migration/migrations_loader.pyi +0 -32
  224. amsdal/migration/schemas_loaders.cpython-311-darwin.so +0 -0
  225. amsdal/migration/schemas_loaders.pyi +0 -37
  226. amsdal/migration/templates/data_migration.tmpl +0 -18
  227. amsdal/migration/templates/dict_validator.tmpl +0 -4
  228. amsdal/migration/templates/migration.tmpl +0 -6
  229. amsdal/migration/templates/model_class.tmpl +0 -8
  230. amsdal/migration/templates/model_class_layout.tmpl +0 -24
  231. amsdal/migration/templates/options_validator.tmpl +0 -4
  232. amsdal/migration/utils.cpython-311-darwin.so +0 -0
  233. amsdal/migration/utils.pyi +0 -58
  234. amsdal/mixins/build_mixin.cpython-311-darwin.so +0 -0
  235. amsdal/mixins/build_mixin.pyi +0 -78
  236. amsdal/schemas/core/class_object_meta/model.json +0 -59
  237. amsdal/schemas/core/class_property_meta/model.json +0 -23
  238. amsdal/services/__init__.cpython-311-darwin.so +0 -0
  239. amsdal-0.3.3.dist-info/RECORD +0 -257
  240. amsdal-0.3.3.dist-info/licenses/LICENSE.txt +0 -107
  241. /amsdal/{migration → contrib/auth/services}/__init__.pyi +0 -0
  242. /amsdal/{migration/executors → contrib/auth/transactions}/__init__.pyi +0 -0
  243. {amsdal-0.3.3.dist-info → amsdal-0.5.29.dist-info/licenses}/LICENSE.txt +0 -0
  244. {amsdal-0.3.3.dist-info → amsdal-0.5.29.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,245 @@
1
+ from amsdal_models.migration import migrations
2
+ from amsdal_utils.models.enums import ModuleType
3
+
4
+
5
+ class Migration(migrations.Migration):
6
+ operations: list[migrations.Operation] = [
7
+ migrations.CreateClass(
8
+ module_type=ModuleType.CONTRIB,
9
+ class_name="Condition",
10
+ new_schema={
11
+ "title": "Condition",
12
+ "type": "FrontendConfigSkipNoneBase",
13
+ "required": ["operation", "conditions"],
14
+ "properties": {
15
+ "operation": {
16
+ "type": "string",
17
+ "options": [
18
+ {"key": "and", "value": "and"},
19
+ {"key": "or", "value": "or"},
20
+ {"key": "not", "value": "not"},
21
+ ],
22
+ "title": "Operation",
23
+ "enum": ["and", "or", "not"],
24
+ },
25
+ "conditions": {
26
+ "type": "array",
27
+ "items": {"type": "ConditionItem", "title": "ConditionItem"},
28
+ "title": "Conditions",
29
+ },
30
+ },
31
+ "meta_class": "TypeMeta",
32
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
33
+ "storage_metadata": {"table_name": "Condition", "db_fields": {}, "foreign_keys": {}},
34
+ },
35
+ ),
36
+ migrations.CreateClass(
37
+ module_type=ModuleType.CONTRIB,
38
+ class_name="ConditionItem",
39
+ new_schema={
40
+ "title": "ConditionItem",
41
+ "type": "FrontendConfigSkipNoneBase",
42
+ "required": ["path", "condition"],
43
+ "properties": {
44
+ "path": {"type": "string", "title": "Path"},
45
+ "condition": {"type": "string", "title": "Condition"},
46
+ "value": {"type": "anything", "title": "Value"},
47
+ },
48
+ "meta_class": "TypeMeta",
49
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
50
+ "storage_metadata": {"table_name": "ConditionItem", "db_fields": {}, "foreign_keys": {}},
51
+ },
52
+ ),
53
+ migrations.UpdateClass(
54
+ module_type=ModuleType.CONTRIB,
55
+ class_name="FrontendControlConfig",
56
+ old_schema={
57
+ "title": "FrontendControlConfig",
58
+ "type": "FrontendConfigSkipNoneBase",
59
+ "required": ["type", "name"],
60
+ "properties": {
61
+ "type": {"type": "string", "title": "Type"},
62
+ "name": {"type": "string", "title": "Name"},
63
+ "label": {"type": "string", "title": "Label"},
64
+ "required": {"type": "boolean", "title": "Required"},
65
+ "hideLabel": {"type": "boolean", "title": "Hide Label"},
66
+ "actions": {
67
+ "type": "array",
68
+ "items": {"type": "FrontendConfigControlAction", "title": "FrontendConfigControlAction"},
69
+ "title": "Actions",
70
+ },
71
+ "validators": {
72
+ "type": "array",
73
+ "items": {"type": "FrontendConfigValidator", "title": "FrontendConfigValidator"},
74
+ "title": "Validators",
75
+ },
76
+ "asyncValidators": {
77
+ "type": "array",
78
+ "items": {"type": "FrontendConfigAsyncValidator", "title": "FrontendConfigAsyncValidator"},
79
+ "title": "Async Validators",
80
+ },
81
+ "activators": {
82
+ "type": "array",
83
+ "items": {"type": "FrontendActivatorConfig", "title": "FrontendActivatorConfig"},
84
+ "title": "Activators",
85
+ },
86
+ "additionalText": {"type": "string", "title": "Additional Text"},
87
+ "value": {"type": "anything", "title": "Value"},
88
+ "placeholder": {"type": "string", "title": "Placeholder"},
89
+ "options": {
90
+ "type": "array",
91
+ "items": {"type": "FrontendConfigOption", "title": "FrontendConfigOption"},
92
+ "title": "Options",
93
+ },
94
+ "mask": {"type": "FrontendConfigTextMask", "title": "Mask"},
95
+ "controls": {
96
+ "type": "array",
97
+ "items": {"type": "FrontendControlConfig", "title": "FrontendControlConfig"},
98
+ "title": "Controls",
99
+ },
100
+ "showSearch": {"type": "boolean", "title": "Show Search"},
101
+ "sliderOptions": {"type": "FrontendConfigSliderOption", "title": "Slider Option"},
102
+ "customLabel": {"type": "array", "items": {"type": "string"}, "title": "Custom Label"},
103
+ "control": {"type": "FrontendControlConfig", "title": "Control"},
104
+ "entityType": {"type": "string", "title": "Entity Type"},
105
+ },
106
+ "meta_class": "TypeMeta",
107
+ "custom_code": "from typing import Any\n\nfrom amsdal_models.builder.validators.options_validators import validate_options\nfrom pydantic.functional_validators import field_validator\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\n@field_validator('type')\n@classmethod\ndef validate_value_in_options_type(cls: type, value: Any) -> Any:\n return validate_options(value, options=['Bytes', 'array', 'checkbox', 'date', 'dateTriplet', 'datetime', 'dict', 'dropzone', 'email', 'file', 'group', 'group_switch', 'group_toggle', 'info-group', 'infoscreen', 'multiselect', 'number', 'number-operations', 'number-slider', 'number_equals', 'number_initial', 'number_minus', 'number_plus', 'object', 'object_group', 'object_latest', 'password', 'phone', 'radio', 'select', 'text', 'textarea', 'time', 'toggle'])\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
108
+ "storage_metadata": {"table_name": "FrontendControlConfig", "db_fields": {}, "foreign_keys": {}},
109
+ },
110
+ new_schema={
111
+ "title": "FrontendControlConfig",
112
+ "type": "FrontendConfigSkipNoneBase",
113
+ "required": ["type", "name"],
114
+ "properties": {
115
+ "type": {
116
+ "type": "string",
117
+ "options": [
118
+ {"key": "Bytes", "value": "Bytes"},
119
+ {"key": "array", "value": "array"},
120
+ {"key": "checkbox", "value": "checkbox"},
121
+ {"key": "date", "value": "date"},
122
+ {"key": "dateTriplet", "value": "dateTriplet"},
123
+ {"key": "datetime", "value": "datetime"},
124
+ {"key": "dict", "value": "dict"},
125
+ {"key": "dropzone", "value": "dropzone"},
126
+ {"key": "email", "value": "email"},
127
+ {"key": "file", "value": "file"},
128
+ {"key": "group", "value": "group"},
129
+ {"key": "group_switch", "value": "group_switch"},
130
+ {"key": "group_toggle", "value": "group_toggle"},
131
+ {"key": "info-group", "value": "info-group"},
132
+ {"key": "infoscreen", "value": "infoscreen"},
133
+ {"key": "multiselect", "value": "multiselect"},
134
+ {"key": "number", "value": "number"},
135
+ {"key": "number-operations", "value": "number-operations"},
136
+ {"key": "number-slider", "value": "number-slider"},
137
+ {"key": "number_equals", "value": "number_equals"},
138
+ {"key": "number_initial", "value": "number_initial"},
139
+ {"key": "number_minus", "value": "number_minus"},
140
+ {"key": "number_plus", "value": "number_plus"},
141
+ {"key": "object", "value": "object"},
142
+ {"key": "object_group", "value": "object_group"},
143
+ {"key": "object_latest", "value": "object_latest"},
144
+ {"key": "password", "value": "password"},
145
+ {"key": "phone", "value": "phone"},
146
+ {"key": "radio", "value": "radio"},
147
+ {"key": "select", "value": "select"},
148
+ {"key": "text", "value": "text"},
149
+ {"key": "textarea", "value": "textarea"},
150
+ {"key": "time", "value": "time"},
151
+ {"key": "toggle", "value": "toggle"},
152
+ {"key": "sections", "value": "sections"},
153
+ {"key": "section", "value": "section"},
154
+ ],
155
+ "title": "Type",
156
+ "enum": [
157
+ "Bytes",
158
+ "array",
159
+ "checkbox",
160
+ "date",
161
+ "dateTriplet",
162
+ "datetime",
163
+ "dict",
164
+ "dropzone",
165
+ "email",
166
+ "file",
167
+ "group",
168
+ "group_switch",
169
+ "group_toggle",
170
+ "info-group",
171
+ "infoscreen",
172
+ "multiselect",
173
+ "number",
174
+ "number-operations",
175
+ "number-slider",
176
+ "number_equals",
177
+ "number_initial",
178
+ "number_minus",
179
+ "number_plus",
180
+ "object",
181
+ "object_group",
182
+ "object_latest",
183
+ "password",
184
+ "phone",
185
+ "radio",
186
+ "select",
187
+ "text",
188
+ "textarea",
189
+ "time",
190
+ "toggle",
191
+ "sections",
192
+ "section",
193
+ ],
194
+ },
195
+ "name": {"type": "string", "title": "Name"},
196
+ "label": {"type": "string", "title": "Label"},
197
+ "required": {"type": "boolean", "title": "Required"},
198
+ "hideLabel": {"type": "boolean", "title": "Hide Label"},
199
+ "actions": {
200
+ "type": "array",
201
+ "items": {"type": "FrontendConfigControlAction", "title": "FrontendConfigControlAction"},
202
+ "title": "Actions",
203
+ },
204
+ "validators": {
205
+ "type": "array",
206
+ "items": {"type": "FrontendConfigValidator", "title": "FrontendConfigValidator"},
207
+ "title": "Validators",
208
+ },
209
+ "asyncValidators": {
210
+ "type": "array",
211
+ "items": {"type": "FrontendConfigAsyncValidator", "title": "FrontendConfigAsyncValidator"},
212
+ "title": "Async Validators",
213
+ },
214
+ "activators": {
215
+ "type": "array",
216
+ "items": {"type": "FrontendActivatorConfig", "title": "FrontendActivatorConfig"},
217
+ "title": "Activators",
218
+ },
219
+ "additionalText": {"type": "string", "title": "Additional Text"},
220
+ "value": {"type": "anything", "title": "Value"},
221
+ "placeholder": {"type": "string", "title": "Placeholder"},
222
+ "options": {
223
+ "type": "array",
224
+ "items": {"type": "FrontendConfigOption", "title": "FrontendConfigOption"},
225
+ "title": "Options",
226
+ },
227
+ "mask": {"type": "FrontendConfigTextMask", "title": "Mask"},
228
+ "controls": {
229
+ "type": "array",
230
+ "items": {"type": "FrontendControlConfig", "title": "FrontendControlConfig"},
231
+ "title": "Controls",
232
+ },
233
+ "showSearch": {"type": "boolean", "title": "Show Search"},
234
+ "sliderOptions": {"type": "FrontendConfigSliderOption", "title": "Slider Option"},
235
+ "customLabel": {"type": "array", "items": {"type": "string"}, "title": "Custom Label"},
236
+ "control": {"type": "FrontendControlConfig", "title": "Control"},
237
+ "entityType": {"type": "string", "title": "Entity Type"},
238
+ "condition": {"type": "Condition", "title": "Condition"},
239
+ },
240
+ "meta_class": "TypeMeta",
241
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_activator_config import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_async_validator import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_control_action import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_slider_option import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_text_mask import *\nfrom amsdal.contrib.frontend_configs.models.frontend_config_validator import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
242
+ "storage_metadata": {"table_name": "FrontendControlConfig", "db_fields": {}, "foreign_keys": {}},
243
+ },
244
+ ),
245
+ ]
@@ -0,0 +1,352 @@
1
+ from amsdal_models.migration import migrations
2
+ from amsdal_utils.models.enums import ModuleType
3
+
4
+
5
+ class Migration(migrations.Migration):
6
+ operations: list[migrations.Operation] = [
7
+ migrations.CreateClass(
8
+ module_type=ModuleType.CONTRIB,
9
+ class_name="UpdateValueAction",
10
+ new_schema={
11
+ "title": "UpdateValueAction",
12
+ "type": "FrontendConfigSkipNoneBase",
13
+ "required": ["type", "field_id", "value"],
14
+ "properties": {
15
+ "type": {
16
+ "type": "string",
17
+ "options": [{"key": "update_value", "value": "update_value"}],
18
+ "title": "Type",
19
+ "enum": ["update_value"],
20
+ },
21
+ "field_id": {"type": "string", "title": "Field ID"},
22
+ "value": {"type": "anything", "title": "Value"},
23
+ },
24
+ "meta_class": "TypeMeta",
25
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
26
+ "storage_metadata": {"table_name": "UpdateValueAction", "db_fields": {}, "foreign_keys": {}},
27
+ },
28
+ ),
29
+ migrations.CreateClass(
30
+ module_type=ModuleType.CONTRIB,
31
+ class_name="InvokeAction",
32
+ new_schema={
33
+ "title": "InvokeAction",
34
+ "type": "FrontendConfigSkipNoneBase",
35
+ "required": ["type", "method", "url"],
36
+ "properties": {
37
+ "type": {
38
+ "type": "string",
39
+ "options": [{"key": "invoke", "value": "invoke"}],
40
+ "title": "Type",
41
+ "enum": ["invoke"],
42
+ },
43
+ "method": {
44
+ "type": "string",
45
+ "title": "HTTP Method",
46
+ "enum": ["GET", "POST", "PUT", "PATCH", "DELETE"],
47
+ "options": [
48
+ {"key": "GET", "value": "GET"},
49
+ {"key": "POST", "value": "POST"},
50
+ {"key": "PUT", "value": "PUT"},
51
+ {"key": "PATCH", "value": "PATCH"},
52
+ {"key": "DELETE", "value": "DELETE"},
53
+ ],
54
+ },
55
+ "url": {"type": "string", "title": "URL"},
56
+ "headers": {"type": "dict", "title": "Headers"},
57
+ "body": {"type": "dict", "title": "Body"},
58
+ "onSuccess": {
59
+ "type": "array",
60
+ "items": {"type": "anything"},
61
+ "title": "On Success Actions",
62
+ },
63
+ "onError": {
64
+ "type": "array",
65
+ "items": {"type": "anything"},
66
+ "title": "On Error Actions",
67
+ },
68
+ },
69
+ "meta_class": "TypeMeta",
70
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
71
+ "storage_metadata": {"table_name": "InvokeAction", "db_fields": {}, "foreign_keys": {}},
72
+ },
73
+ ),
74
+ migrations.CreateClass(
75
+ module_type=ModuleType.CONTRIB,
76
+ class_name="ChangeContextAction",
77
+ new_schema={
78
+ "title": "ChangeContextAction",
79
+ "type": "FrontendConfigSkipNoneBase",
80
+ "required": ["type", "context"],
81
+ "properties": {
82
+ "type": {
83
+ "type": "string",
84
+ "options": [{"key": "change_context", "value": "change_context"}],
85
+ "title": "Type",
86
+ "enum": ["change_context"],
87
+ },
88
+ "context": {"type": "dict", "title": "Context"},
89
+ },
90
+ "meta_class": "TypeMeta",
91
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
92
+ "storage_metadata": {"table_name": "ChangeContextAction", "db_fields": {}, "foreign_keys": {}},
93
+ },
94
+ ),
95
+ migrations.CreateClass(
96
+ module_type=ModuleType.CONTRIB,
97
+ class_name="SaveAction",
98
+ new_schema={
99
+ "title": "SaveAction",
100
+ "type": "FrontendConfigSkipNoneBase",
101
+ "required": ["type"],
102
+ "properties": {
103
+ "type": {
104
+ "type": "string",
105
+ "options": [{"key": "save", "value": "save"}],
106
+ "title": "Type",
107
+ "enum": ["save"],
108
+ },
109
+ },
110
+ "meta_class": "TypeMeta",
111
+ "custom_code": "from typing import Any\n\nfrom amsdal.contrib.frontend_configs.models.frontend_config_skip_none_base import *\n\n\ndef model_dump(self, **kwargs: Any) -> dict[str, Any]:\n kwargs['exclude_none'] = True\n return super().model_dump(**kwargs)\n\ndef model_dump_json(self, **kwargs: Any) -> str:\n kwargs['exclude_none'] = True\n return super().model_dump_json(**kwargs)",
112
+ "storage_metadata": {"table_name": "SaveAction", "db_fields": {}, "foreign_keys": {}},
113
+ },
114
+ ),
115
+ migrations.UpdateClass(
116
+ module_type=ModuleType.CONTRIB,
117
+ class_name="FrontendControlConfig",
118
+ old_schema={
119
+ "title": "FrontendControlConfig",
120
+ "type": "FrontendConfigSkipNoneBase",
121
+ "required": ["type", "name"],
122
+ "properties": {
123
+ "type": {
124
+ "type": "string",
125
+ "options": [
126
+ {"key": "Bytes", "value": "Bytes"},
127
+ {"key": "array", "value": "array"},
128
+ {"key": "checkbox", "value": "checkbox"},
129
+ {"key": "date", "value": "date"},
130
+ {"key": "dateTriplet", "value": "dateTriplet"},
131
+ {"key": "datetime", "value": "datetime"},
132
+ {"key": "dict", "value": "dict"},
133
+ {"key": "dropzone", "value": "dropzone"},
134
+ {"key": "email", "value": "email"},
135
+ {"key": "file", "value": "file"},
136
+ {"key": "group", "value": "group"},
137
+ {"key": "group_switch", "value": "group_switch"},
138
+ {"key": "group_toggle", "value": "group_toggle"},
139
+ {"key": "info-group", "value": "info-group"},
140
+ {"key": "infoscreen", "value": "infoscreen"},
141
+ {"key": "multiselect", "value": "multiselect"},
142
+ {"key": "number", "value": "number"},
143
+ {"key": "number-operations", "value": "number-operations"},
144
+ {"key": "number-slider", "value": "number-slider"},
145
+ {"key": "number_equals", "value": "number_equals"},
146
+ {"key": "number_initial", "value": "number_initial"},
147
+ {"key": "number_minus", "value": "number_minus"},
148
+ {"key": "number_plus", "value": "number_plus"},
149
+ {"key": "object", "value": "object"},
150
+ {"key": "object_group", "value": "object_group"},
151
+ {"key": "object_latest", "value": "object_latest"},
152
+ {"key": "password", "value": "password"},
153
+ {"key": "phone", "value": "phone"},
154
+ {"key": "radio", "value": "radio"},
155
+ {"key": "select", "value": "select"},
156
+ {"key": "text", "value": "text"},
157
+ {"key": "textarea", "value": "textarea"},
158
+ {"key": "time", "value": "time"},
159
+ {"key": "toggle", "value": "toggle"},
160
+ {"key": "sections", "value": "sections"},
161
+ {"key": "section", "value": "section"},
162
+ ],
163
+ "title": "Type",
164
+ "enum": [
165
+ "Bytes",
166
+ "array",
167
+ "checkbox",
168
+ "date",
169
+ "dateTriplet",
170
+ "datetime",
171
+ "dict",
172
+ "dropzone",
173
+ "email",
174
+ "file",
175
+ "group",
176
+ "group_switch",
177
+ "group_toggle",
178
+ "info-group",
179
+ "infoscreen",
180
+ "multiselect",
181
+ "number",
182
+ "number-operations",
183
+ "number-slider",
184
+ "number_equals",
185
+ "number_initial",
186
+ "number_minus",
187
+ "number_plus",
188
+ "object",
189
+ "object_group",
190
+ "object_latest",
191
+ "password",
192
+ "phone",
193
+ "radio",
194
+ "select",
195
+ "text",
196
+ "textarea",
197
+ "time",
198
+ "toggle",
199
+ "sections",
200
+ "section",
201
+ ],
202
+ },
203
+ "name": {"type": "string", "title": "Name"},
204
+ "actions": {
205
+ "type": "array",
206
+ "items": {"type": "FrontendConfigControlAction", "title": "FrontendConfigControlAction"},
207
+ "title": "Actions",
208
+ },
209
+ },
210
+ "meta_class": "TypeMeta",
211
+ "storage_metadata": {"table_name": "FrontendControlConfig", "db_fields": {}, "foreign_keys": {}},
212
+ },
213
+ new_schema={
214
+ "title": "FrontendControlConfig",
215
+ "type": "FrontendConfigSkipNoneBase",
216
+ "required": ["type", "name"],
217
+ "properties": {
218
+ "type": {
219
+ "type": "string",
220
+ "options": [
221
+ {"key": "Bytes", "value": "Bytes"},
222
+ {"key": "array", "value": "array"},
223
+ {"key": "button", "value": "button"},
224
+ {"key": "chat", "value": "chat"},
225
+ {"key": "checkbox", "value": "checkbox"},
226
+ {"key": "date", "value": "date"},
227
+ {"key": "dateTriplet", "value": "dateTriplet"},
228
+ {"key": "datetime", "value": "datetime"},
229
+ {"key": "dict", "value": "dict"},
230
+ {"key": "dropzone", "value": "dropzone"},
231
+ {"key": "email", "value": "email"},
232
+ {"key": "file", "value": "file"},
233
+ {"key": "group", "value": "group"},
234
+ {"key": "group_switch", "value": "group_switch"},
235
+ {"key": "group_toggle", "value": "group_toggle"},
236
+ {"key": "info-group", "value": "info-group"},
237
+ {"key": "infoscreen", "value": "infoscreen"},
238
+ {"key": "multiselect", "value": "multiselect"},
239
+ {"key": "number", "value": "number"},
240
+ {"key": "number-operations", "value": "number-operations"},
241
+ {"key": "number-slider", "value": "number-slider"},
242
+ {"key": "number_equals", "value": "number_equals"},
243
+ {"key": "number_initial", "value": "number_initial"},
244
+ {"key": "number_minus", "value": "number_minus"},
245
+ {"key": "number_plus", "value": "number_plus"},
246
+ {"key": "object", "value": "object"},
247
+ {"key": "object_group", "value": "object_group"},
248
+ {"key": "object_latest", "value": "object_latest"},
249
+ {"key": "password", "value": "password"},
250
+ {"key": "phone", "value": "phone"},
251
+ {"key": "radio", "value": "radio"},
252
+ {"key": "select", "value": "select"},
253
+ {"key": "text", "value": "text"},
254
+ {"key": "textarea", "value": "textarea"},
255
+ {"key": "time", "value": "time"},
256
+ {"key": "toggle", "value": "toggle"},
257
+ {"key": "sections", "value": "sections"},
258
+ {"key": "section", "value": "section"},
259
+ ],
260
+ "title": "Type",
261
+ "enum": [
262
+ "Bytes",
263
+ "array",
264
+ "button",
265
+ "chat",
266
+ "checkbox",
267
+ "date",
268
+ "dateTriplet",
269
+ "datetime",
270
+ "dict",
271
+ "dropzone",
272
+ "email",
273
+ "file",
274
+ "group",
275
+ "group_switch",
276
+ "group_toggle",
277
+ "info-group",
278
+ "infoscreen",
279
+ "multiselect",
280
+ "number",
281
+ "number-operations",
282
+ "number-slider",
283
+ "number_equals",
284
+ "number_initial",
285
+ "number_minus",
286
+ "number_plus",
287
+ "object",
288
+ "object_group",
289
+ "object_latest",
290
+ "password",
291
+ "phone",
292
+ "radio",
293
+ "select",
294
+ "text",
295
+ "textarea",
296
+ "time",
297
+ "toggle",
298
+ "sections",
299
+ "section",
300
+ ],
301
+ },
302
+ "id": {"type": "string", "title": "ID"},
303
+ "name": {"type": "string", "title": "Name"},
304
+ "label": {"type": "string", "title": "Label"},
305
+ "required": {"type": "boolean", "title": "Required"},
306
+ "hideLabel": {"type": "boolean", "title": "Hide Label"},
307
+ "actions": {
308
+ "type": "array",
309
+ "items": {"type": "anything"},
310
+ "title": "Actions",
311
+ },
312
+ "validators": {
313
+ "type": "array",
314
+ "items": {"type": "FrontendConfigValidator", "title": "FrontendConfigValidator"},
315
+ "title": "Validators",
316
+ },
317
+ "asyncValidators": {
318
+ "type": "array",
319
+ "items": {"type": "FrontendConfigAsyncValidator", "title": "FrontendConfigAsyncValidator"},
320
+ "title": "Async Validators",
321
+ },
322
+ "activators": {
323
+ "type": "array",
324
+ "items": {"type": "FrontendActivatorConfig", "title": "FrontendActivatorConfig"},
325
+ "title": "Activators",
326
+ },
327
+ "additionalText": {"type": "string", "title": "Additional Text"},
328
+ "value": {"type": "anything", "title": "Value"},
329
+ "placeholder": {"type": "string", "title": "Placeholder"},
330
+ "options": {
331
+ "type": "array",
332
+ "items": {"type": "FrontendConfigOption", "title": "FrontendConfigOption"},
333
+ "title": "Options",
334
+ },
335
+ "mask": {"type": "FrontendConfigTextMask", "title": "Mask"},
336
+ "controls": {
337
+ "type": "array",
338
+ "items": {"type": "FrontendControlConfig", "title": "FrontendControlConfig"},
339
+ "title": "Controls",
340
+ },
341
+ "showSearch": {"type": "boolean", "title": "Show Search"},
342
+ "sliderOptions": {"type": "FrontendConfigSliderOption", "title": "Slider Option"},
343
+ "customLabel": {"type": "array", "items": {"type": "string"}, "title": "Custom Label"},
344
+ "control": {"type": "FrontendControlConfig", "title": "Control"},
345
+ "entityType": {"type": "string", "title": "Entity Type"},
346
+ "condition": {"type": "Condition", "title": "Condition"},
347
+ },
348
+ "meta_class": "TypeMeta",
349
+ "storage_metadata": {"table_name": "FrontendControlConfig", "db_fields": {}, "foreign_keys": {}},
350
+ },
351
+ ),
352
+ ]