SimpleDomControl 0.55.4__tar.gz → 0.56.0__tar.gz

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 (131) hide show
  1. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/PKG-INFO +5 -2
  2. simpledomcontrol-0.56.0/README.md +5 -0
  3. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/pyproject.toml +4 -1
  4. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/consumers.py +8 -8
  5. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/add_model_manager.py +15 -12
  6. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_get_model_infos.py +8 -8
  7. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/models.py +42 -7
  8. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/response.py +6 -8
  9. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/gulpfile.jsx +13 -2
  10. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/controller/template_controller.js.txt +16 -2
  11. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/package.json +1 -1
  12. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigator/sdc_navigator.js +0 -4
  13. simpledomcontrol-0.55.4/README.md +0 -1
  14. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/__init__.py +0 -0
  15. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/apps.py +0 -0
  16. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/__init__.py +0 -0
  17. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/__init__.py +0 -0
  18. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/_private.py +0 -0
  19. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/__init__.py +0 -0
  20. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/add_controller_manager.py +0 -0
  21. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/options.py +0 -0
  22. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/sdc_core_manager.py +0 -0
  23. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/settings_manager.py +0 -0
  24. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/init_add/utils.py +0 -0
  25. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_cc.py +0 -0
  26. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_get_controller_infos.py +0 -0
  27. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_get_controller_url.py +0 -0
  28. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_init.py +0 -0
  29. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_is_installed.py +0 -0
  30. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_new_model.py +0 -0
  31. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_shell_execute_script.py +0 -0
  32. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_update_links.py +0 -0
  33. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/management/commands/sdc_update_url.py +0 -0
  34. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/__init__.py +0 -0
  35. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/forms.py +0 -0
  36. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/import_manager.py +0 -0
  37. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/search.py +0 -0
  38. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/sdc_extentions/views.py +0 -0
  39. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/.babelrc +0 -0
  40. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/src/index.organizer.js +0 -0
  41. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/src/index.style.scss +0 -0
  42. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/tests/config/post-test-teardown.js +0 -0
  43. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/tests/config/pre-test-setup.js +0 -0
  44. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/tests/config/test-setup.js +0 -0
  45. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/webpack.config/webpack.default.config.jsx +0 -0
  46. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/webpack.config/webpack.development.config.jsx +0 -0
  47. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/Assets/webpack.config/webpack.production.config.jsx +0 -0
  48. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/apps/sdc_examples/Add_SDCUser.txt +0 -0
  49. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/apps/sdc_examples/index.html +0 -0
  50. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/apps/sdc_examples/server_call.txt +0 -0
  51. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/asgi.py.txt +0 -0
  52. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/controller/templade_view.html +0 -0
  53. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/controller/template_css.scss +0 -0
  54. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/controller/template_test.js.text +0 -0
  55. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/js_test.js.txt +0 -0
  56. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/models/detail.html +0 -0
  57. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/models/list.html +0 -0
  58. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/routing.py.txt +0 -0
  59. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/sdc_urls.py.txt +0 -0
  60. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/sdc_views.py.txt +0 -0
  61. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/settings_extension.py.txt +0 -0
  62. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/templates/base.html +0 -0
  63. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/templates/index.html +0 -0
  64. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_core/template_files/urls.py.txt +0 -0
  65. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.js +0 -0
  66. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.scss +0 -0
  67. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_auto_submit/sdc_auto_submit.js +0 -0
  68. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_detail_view/sdc_detail_view.js +0 -0
  69. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_detail_view/sdc_detail_view.scss +0 -0
  70. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_dummy/sdc_dummy.js +0 -0
  71. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_dummy/sdc_dummy.scss +0 -0
  72. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_error/sdc_error.js +0 -0
  73. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_error/sdc_error.scss +0 -0
  74. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_list_view/sdc_list_view.js +0 -0
  75. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_list_view/sdc_list_view.scss +0 -0
  76. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_model_form/sdc_model_form.js +0 -0
  77. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_model_form/sdc_model_form.scss +0 -0
  78. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigation_client/sdc_navigation_client.js +0 -0
  79. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigator/sdc_navigator.scss +0 -0
  80. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_view/sdc_search_view.js +0 -0
  81. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_view/sdc_search_view.scss +0 -0
  82. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_update_on_change/sdc_update_on_change.js +0 -0
  83. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/sdc_tools.organizer.js +0 -0
  84. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/src/sdc_tools/sdc_tools.style.scss +0 -0
  85. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/Assets/tests/sdc_tools.test.js +0 -0
  86. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/__init__.py +0 -0
  87. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/admin.py +0 -0
  88. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/apps.py +0 -0
  89. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/migrations/__init__.py +0 -0
  90. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/models.py +0 -0
  91. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/sdc_urls.py +0 -0
  92. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/sdc_views.py +0 -0
  93. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/elements/form.html +0 -0
  94. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/elements/inline_form.html +0 -0
  95. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/email/base.html +0 -0
  96. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/dummy_sdc.html +0 -0
  97. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_alert_messenger.html +0 -0
  98. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_detail_view.html +0 -0
  99. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_dummy.html +0 -0
  100. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_error.html +0 -0
  101. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_list_view.html +0 -0
  102. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_model_form.html +0 -0
  103. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_navigator.html +0 -0
  104. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templates/sdc_tools/sdc/sdc_search_view.html +0 -0
  105. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templatetags/__init__.py +0 -0
  106. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templatetags/addclass.py +0 -0
  107. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templatetags/indexfilter.py +0 -0
  108. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/templatetags/sdc_filter.py +0 -0
  109. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/tests.py +0 -0
  110. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_tools/views.py +0 -0
  111. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/controller/sdc_login/sdc_login.js +0 -0
  112. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/controller/sdc_login/sdc_login.scss +0 -0
  113. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/controller/sdc_logout/sdc_logout.js +0 -0
  114. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/controller/sdc_logout/sdc_logout.scss +0 -0
  115. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.js +0 -0
  116. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.scss +0 -0
  117. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/sdc_user.organizer.js +0 -0
  118. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/src/sdc_user/sdc_user.style.scss +0 -0
  119. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/Assets/tests/sdc_user.test.js +0 -0
  120. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/__init__.py +0 -0
  121. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/admin.py +0 -0
  122. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/apps.py +0 -0
  123. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/migrations/__init__.py +0 -0
  124. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/models.py +0 -0
  125. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/sdc_urls.py +0 -0
  126. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/sdc_views.py +0 -0
  127. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/templates/sdc_user/sdc/sdc_login.html +0 -0
  128. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/templates/sdc_user/sdc/sdc_logout.html +0 -0
  129. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/templates/sdc_user/sdc/sdc_user_nav_btn.html +0 -0
  130. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/tests.py +0 -0
  131. {simpledomcontrol-0.55.4 → simpledomcontrol-0.56.0}/sdc_user/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: SimpleDomControl
3
- Version: 0.55.4
3
+ Version: 0.56.0
4
4
  Summary: Simple DOM control -> a django MVC framework
5
5
  Home-page: https://github.com/StarmanMartin/sdc
6
6
  License: Apache-2.0
@@ -26,5 +26,8 @@ Requires-Dist: psycopg2-binary (>=2.9.9,<3.0.0)
26
26
  Requires-Dist: regex (>=2024.5.15,<2025.0.0)
27
27
  Description-Content-Type: text/markdown
28
28
 
29
- simpleDomControl
29
+ # Simple Dom Control (SDC)
30
30
 
31
+ SDC is a framework that combines elements of both the MVC (Model-View-Controller) and MVT (Model-View-Template) patterns. Its main goal is to provide a tool for simple and efficient web development. The name ‘SDC’ is an abbreviation for ‘Simple DOM Control,’ indicating its focus on controlling and manipulating the Document Object Model (DOM), which is crucial for web development, particularly in dynamic web pages.
32
+
33
+ For detailed docs go to [rtd](https://simpledomcontrol.readthedocs.io/en/latest/)
@@ -0,0 +1,5 @@
1
+ # Simple Dom Control (SDC)
2
+
3
+ SDC is a framework that combines elements of both the MVC (Model-View-Controller) and MVT (Model-View-Template) patterns. Its main goal is to provide a tool for simple and efficient web development. The name ‘SDC’ is an abbreviation for ‘Simple DOM Control,’ indicating its focus on controlling and manipulating the Document Object Model (DOM), which is crucial for web development, particularly in dynamic web pages.
4
+
5
+ For detailed docs go to [rtd](https://simpledomcontrol.readthedocs.io/en/latest/)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "SimpleDomControl"
3
- version = "0.55.4"
3
+ version = "0.56.0"
4
4
  authors = [ "Martin Starman <private@martin-starman.com>", ]
5
5
  description = "Simple DOM control -> a django MVC framework"
6
6
  readme = "README.md"
@@ -38,6 +38,9 @@ testpaths = [
38
38
  [tool.poetry.group.dev.dependencies]
39
39
  pytest = "^7.2.2"
40
40
  pillow = "^10.1.0"
41
+ sphinx-toolbox = "^3.6.0"
42
+ sphinx-rtd-theme = "^2.0.0"
43
+ sphinx-markdown-builder = "^0.6.6"
41
44
 
42
45
  [build-system]
43
46
  requires = ["poetry-core"]
@@ -317,12 +317,12 @@ class SDCModelConsumer(WebsocketConsumer):
317
317
  def _load_create_form(self, json_data):
318
318
  instance: SdcModel = self.model()
319
319
  instance.scope = self.scope
320
- return self._load_form(json_data, self.model.create_form, instance)
320
+ return self._load_form(json_data, self.model.SdcMeta.create_form, instance)
321
321
 
322
322
  def _load_edit_form(self, json_data):
323
323
  instance = self._load_model().get(pk=json_data['args']['pk'])
324
324
  instance.scope = self.scope
325
- return self._load_form(json_data, self.model.edit_form, instance)
325
+ return self._load_form(json_data, self.model.SdcMeta.edit_form, instance)
326
326
 
327
327
  def _load_named_form(self, json_data):
328
328
  instance = self._load_model().get(pk=json_data['args']['pk'])
@@ -347,7 +347,7 @@ class SDCModelConsumer(WebsocketConsumer):
347
347
  self.send(text_data=json.dumps({
348
348
  'type': json_data['event_type'],
349
349
  'event_id': json_data['event_id'],
350
- 'html': self._render(self.model.html_form_template, {'instance': instance, 'form': form(instance=instance)},
350
+ 'html': self._render(self.model.SdcMeta.html_form_template, {'instance': instance, 'form': form(instance=instance)},
351
351
  json_data),
352
352
  'is_error': False
353
353
  }))
@@ -355,12 +355,12 @@ class SDCModelConsumer(WebsocketConsumer):
355
355
  def _create_element(self, json_data):
356
356
  instance: SdcModel = self.model()
357
357
  instance.scope = self.scope
358
- return self._submit_element(json_data, self.model.create_form, instance)
358
+ return self._submit_element(json_data, self.model.SdcMeta.create_form, instance)
359
359
 
360
360
  def _save_element(self, json_data):
361
361
  instance = self._load_model().get(pk=json_data['args']['data']['pk'])
362
362
  instance.scope = self.scope
363
- return self._submit_element(json_data, self.model.edit_form, instance)
363
+ return self._submit_element(json_data, self.model.SdcMeta.edit_form, instance)
364
364
 
365
365
  def _upload_file(self, json_data):
366
366
  file_data = json_data['args']
@@ -418,20 +418,20 @@ class SDCModelConsumer(WebsocketConsumer):
418
418
  'type': json_data['event_type'],
419
419
  'event_id': json_data['event_id'],
420
420
  'data': {'instance': new_instance},
421
- 'html': self._render(self.model.html_form_template,
421
+ 'html': self._render(self.model.SdcMeta.html_form_template,
422
422
  {'instance': form_instance.instance, 'form': form_instance},
423
423
  json_data),
424
424
  'is_error': not is_valid
425
425
  }))
426
426
 
427
427
  def _load_list_view(self, json_data):
428
- if self.model.html_list_template is None:
428
+ if self.model.SdcMeta.html_list_template is None:
429
429
  raise NotImplemented()
430
430
 
431
431
  self.send(text_data=json.dumps({
432
432
  'type': json_data['event_type'],
433
433
  'event_id': json_data['event_id'],
434
- 'html': self._render(self.model.html_list_template, {'instances': self._load_model()}, json_data),
434
+ 'html': self._render(self.model.SdcMeta.html_list_template, {'instances': self._load_model()}, json_data),
435
435
  'is_error': False
436
436
  }))
437
437
 
@@ -49,22 +49,25 @@ class AddModelManager():
49
49
  self._check_if_sdcmodel_imported(model_path)
50
50
  f = open(model_path, 'a')
51
51
 
52
- search_form_def = "\n".join([
53
- 'class {2}SearchForm(AbstractSearchForm):',
54
- '{0}CHOICES = (("id", "Id"),)',
55
- '{0}PLACEHOLDER = ""',
56
- '{0}DEFAULT_CHOICES = CHOICES[0][0]',
57
- '{0}SEARCH_FIELDS = ("id",)',
58
- ]).format(options.SEP, self.app_name, self.model_name)
52
+ search_form_def = "\n".join([]).format(options.SEP, self.app_name, self.model_name)
59
53
 
60
54
  class_def = "\n".join([
61
55
  'class {2}(models.Model, SdcModel):',
62
- '{0}edit_form = "{1}.forms.{2}Form"',
63
- '{0}create_form = "{1}.forms.{2}Form"',
64
- '{0}html_list_template = "{1}/models/{2}/{2}_list.html"',
65
- '{0}html_detail_template = "{1}/models/{2}/{2}_details.html"',
56
+ '{0}class SearchForm(AbstractSearchForm):',
57
+ '{0}{0}"""A default search form used in the list view. You can delete it if you dont need it"""',
58
+ '{0}{0}CHOICES = (("id", "Id"),)',
59
+ '{0}{0}PLACEHOLDER = ""',
60
+ '{0}{0}DEFAULT_CHOICES = CHOICES[0][0]',
61
+ '{0}{0}SEARCH_FIELDS = ("id",)',
62
+ '',
63
+ '{0}class _SdcMeta:',
64
+ '{0}{0}"""Meta data information needed to manage all SDC operations."""',
65
+ '{0}{0}edit_form = "{1}.forms.{2}Form"',
66
+ '{0}{0}create_form = "{1}.forms.{2}Form"',
67
+ '{0}{0}html_list_template = "{1}/models/{2}/{2}_list.html"',
68
+ '{0}{0}html_detail_template = "{1}/models/{2}/{2}_details.html"',
66
69
  '',
67
- '{0}@classmethod\n{0}def render(cls, template_name, context=None, request=None, using=None):\n{0}{0}if template_name == cls.html_list_template:\n{0}{0}{0}sf = {2}SearchForm(data=context.get("filter", {{}}))\n{0}{0}{0}context = context | handle_search_form(context["instances"], sf, range=10)\n{0}{0}return render_to_string(template_name=template_name, context=context, request=request, using=using)',
70
+ '{0}@classmethod\n{0}def render(cls, template_name, context=None, request=None, using=None):\n{0}{0}if template_name == cls.SdcMeta.html_list_template:\n{0}{0}{0}sf = cls.SearchForm(data=context.get("filter", {{}}))\n{0}{0}{0}context = context | handle_search_form(context["instances"], sf, range=10)\n{0}{0}return render_to_string(template_name=template_name, context=context, request=request, using=using)',
68
71
  '',
69
72
  '{0}@classmethod\n{0}def is_authorised(cls, user, action, obj):\n{0}{0}return True',
70
73
  '',
@@ -44,26 +44,26 @@ class Command(BaseCommand):
44
44
  'model_file': os.path.join(options.PROJECT_ROOT, model.__module__.replace('.', os.path.sep) + '.py'),
45
45
  'model_file_line': self._get_class_line_number(
46
46
  os.path.join(options.PROJECT_ROOT, model.__module__.replace('.', os.path.sep) + '.py'), model.__name__),
47
- 'create_form': self._separate_file_class(model.create_form),
48
- 'edit_form': self._separate_file_class(model.edit_form)
47
+ 'create_form': self._separate_file_class(model.SdcMeta.create_form),
48
+ 'edit_form': self._separate_file_class(model.SdcMeta.edit_form)
49
49
 
50
50
  }
51
51
 
52
- if model.html_detail_template:
52
+ if model.SdcMeta.html_detail_template:
53
53
  try:
54
- mi['html_detail_template'] = get_template(model.html_detail_template).origin.name
54
+ mi['html_detail_template'] = get_template(model.SdcMeta.html_detail_template).origin.name
55
55
  except:
56
56
  pass
57
57
 
58
- if model.html_list_template:
58
+ if model.SdcMeta.html_list_template:
59
59
  try:
60
- mi['html_list_template'] = get_template(model.html_list_template).origin.name
60
+ mi['html_list_template'] = get_template(model.SdcMeta.html_list_template).origin.name
61
61
  except:
62
62
  pass
63
63
 
64
- if model.html_form_template:
64
+ if model.SdcMeta.html_form_template:
65
65
  try:
66
- mi['html_form_template'] = get_template(model.html_form_template).origin.name
66
+ mi['html_form_template'] = get_template(model.SdcMeta.html_form_template).origin.name
67
67
  except:
68
68
  pass
69
69
 
@@ -11,10 +11,13 @@ from django.apps import apps
11
11
  from channels.layers import get_channel_layer
12
12
  from django.contrib.auth import get_user_model
13
13
 
14
+ from sdc_core.sdc_extentions.forms import AbstractSearchForm
15
+
14
16
  User = get_user_model()
15
17
 
16
18
  _ALL_MODELS = None
17
19
 
20
+
18
21
  def all_models():
19
22
  global _ALL_MODELS
20
23
  if _ALL_MODELS is None:
@@ -23,6 +26,7 @@ def all_models():
23
26
  }
24
27
  return _ALL_MODELS
25
28
 
29
+
26
30
  class ConsumerSerializer(Serializer):
27
31
 
28
32
  def handle_m2m_field(self, obj, field):
@@ -42,16 +46,47 @@ class ConsumerSerializer(Serializer):
42
46
  return field.value_from_object(obj).url
43
47
  return super()._value_from_field(obj, field)
44
48
 
49
+
50
+ _SDC_META_DEFAULT = {'edit_form': None,
51
+ 'create_form': None,
52
+ 'html_list_template': None,
53
+ 'html_detail_template': None,
54
+ 'html_form_template': getattr(settings, 'MODEL_FORM_TEMPLATE', "elements/form.html")
55
+ }
56
+
57
+ class classproperty(property):
58
+ def __get__(self, obj, objtype=None):
59
+ return super().__get__(objtype)
60
+ def __set__(self, obj, value):
61
+ super().__set__(type(obj), value)
62
+
63
+ class _SdcMetaDummy:
64
+ _sdc_checked = False
65
+
45
66
  class SdcModel():
46
67
  __is_sdc_model__ = True
47
- edit_form = None
48
- create_form = None
49
- html_list_template = None
50
- html_detail_template = None
51
- html_form_template = getattr(settings, 'MODEL_FORM_TEMPLATE', "elements/form.html")
52
- apply_filter = None
53
68
  _scope = None
54
69
 
70
+ class SearchForm(AbstractSearchForm):
71
+ CHOICES = (("id", "Id"),)
72
+ PLACEHOLDER = ""
73
+ DEFAULT_CHOICES = CHOICES[0][0]
74
+ SEARCH_FIELDS = ("id",)
75
+
76
+ @classproperty
77
+ def SdcMeta(cls):
78
+ if not hasattr(cls, '_SdcMeta'):
79
+ setattr(cls, '_SdcMeta', _SdcMetaDummy())
80
+
81
+ sdc_meta = getattr(cls, '_SdcMeta')
82
+
83
+ if not getattr(sdc_meta, '_sdc_checked', False):
84
+ setattr(sdc_meta,'_sdc_checked', True)
85
+ for k, v in _SDC_META_DEFAULT.items():
86
+ if not hasattr(sdc_meta, k):
87
+ setattr(sdc_meta, k, getattr(cls, k, v))
88
+ return sdc_meta
89
+
55
90
  @property
56
91
  def scope(self) -> dict[str: any]:
57
92
  return self._scope
@@ -73,7 +108,7 @@ class SdcModel():
73
108
  raise NotImplemented
74
109
 
75
110
  @classmethod
76
- def data_load(cls, user: User, action: str, obj: dict[str: any]) -> QuerySet|None:
111
+ def data_load(cls, user: User, action: str, obj: dict[str: any]) -> QuerySet | None:
77
112
  return None
78
113
 
79
114
 
@@ -5,13 +5,12 @@ from django.http import HttpResponse
5
5
  from django.template.loader import render_to_string
6
6
  from django.core.serializers.json import DjangoJSONEncoder
7
7
 
8
-
9
8
  NEXT = 'next_controller'
10
9
 
11
10
 
12
-
13
- def sdc_link_factory(controller: str = None, link_data: dict = None, add_sdc_index : bool = True) -> str:
11
+ def sdc_link_factory(controller: str = None, link_data: dict = None, add_sdc_index: bool = True) -> str:
14
12
  """
13
+
15
14
  :param controller: path to controller
16
15
  :type controller: str, optional
17
16
  :param link_data: arguments passed to the new redirected controller
@@ -51,16 +50,14 @@ def send_redirect(controller: str = None, back: bool = False, link_data: dict =
51
50
  send_redirect is a simple way to redirect a client to another SDC controller. Set the controller argument according to
52
51
  the rules of the sdc_tools.sdc_navigator. Following you see some examples:
53
52
 
54
-
55
53
  - /view-a/view-b -> view-b as subview of view-a
56
54
  - */view-b -> keeps first view as it is and view-b as subview
57
55
  - ../view-b -> replaces current latest subview by view-b
58
56
  - ./view-b -> adds view-b as next latest subview to the current path
59
57
 
60
-
61
58
  :param controller: path to controller
62
59
  :type controller: str, optional
63
- :param back: if 'True' the redirect url is equal to '..', default is 'False'
60
+ :param back: if ``True`` the redirect url is equal to ``..``, default is ``False``
64
61
  :type back: boolean, optional
65
62
  :param link_data: arguments passed to the new redirected controller
66
63
  :type link_data: dict, optional
@@ -86,7 +83,7 @@ def send_redirect(controller: str = None, back: bool = False, link_data: dict =
86
83
  return HttpResponse(json.dumps(kwargs, cls=DjangoJSONEncoder), status=301, content_type="application/json")
87
84
 
88
85
 
89
- def send_success(template_name: str = None, context: dict = None, request = None, status= 'success', **kwargs):
86
+ def send_success(template_name: str = None, context: dict = None, request=None, status='success', **kwargs):
90
87
  """
91
88
 
92
89
  :param template_name: HTML template name
@@ -110,5 +107,6 @@ def send_error(template_name: str = None, context: dict = None, request=None, st
110
107
  kwargs['html'] = render_to_string(template_name, request=request, context=context)
111
108
  return HttpResponse(json.dumps(kwargs, cls=DjangoJSONEncoder), status=status, content_type="application/json")
112
109
 
110
+
113
111
  def send_controller(controller_name: str):
114
- return HttpResponse('<%s></%s>' % (controller_name,controller_name), content_type="text/html")
112
+ return HttpResponse('<%s></%s>' % (controller_name, controller_name), content_type="text/html")
@@ -1,8 +1,10 @@
1
1
  'use strict'
2
2
 
3
3
  const {src, dest, series, parallel} = require('gulp');
4
- const path = require("path");
5
4
  const webpack = require('webpack-stream');
5
+ const copy = require('gulp-copy');
6
+
7
+ process.env.JS_CILENT_FILE_EXTENTIONS = ['.js', '.json'];
6
8
 
7
9
  const {
8
10
  sdc_scss,
@@ -20,11 +22,20 @@ function webpack_javascript() {
20
22
  .pipe(dest('../static'));
21
23
  }
22
24
 
25
+ function copy_statics() {
26
+ return src('./static/**/*')
27
+ .pipe(copy('../static', { prefix: 1 }))
28
+ .on('end', () => {
29
+ console.log('Contents copied successfully!');
30
+ });
31
+ }
32
+
23
33
  exports.webpack = webpack_javascript;
24
34
  exports.scss = sdc_scss;
25
35
  exports.link_files = sdc_link_files;
26
36
  exports.clean = sdc_clean;
27
- exports.default = sdc_default_build_factory(webpack_javascript);
37
+ exports.copy_statics = copy_statics;
38
+ exports.default = series(copy_statics, sdc_default_build_factory(webpack_javascript));
28
39
  exports.watch_scss = sdc_watch_scss;
29
40
  exports.watch_webpack = sdc_watch_webpack_factory(webpack_javascript);
30
41
 
@@ -7,12 +7,26 @@ class §CONTROLLERNAMETITLE§Controller extends AbstractSDC {
7
7
  super();
8
8
  this.contentUrl = "§TEMPLATEURL§"; //§TAGNAME§
9
9
 
10
+ /**
11
+ * Uncomment the following line to make sure the HTML template
12
+ * of this controller is not cached and reloaded for every instance
13
+ * of this controller.
14
+ */
15
+ // this.contentReload = true;
16
+
17
+ /**
18
+ * Uncomment the following line to make this controller asynchronous.
19
+ * This means that the parent controller finishes loading without
20
+ * waiting for this controller
21
+ */
22
+ // this.load_async = true;
23
+
10
24
  /**
11
25
  * Events is an array of dom events.
12
26
  * The pattern is {'event': {'dom_selector': handler}}
13
- * Uncommend the following line to add events;
27
+ * Uncomment the following line to add events;
14
28
  */
15
- // this.events.unshift({'click': {'.header-sample': (ev, $elem)=> $elem.css('border', '2px solid black')}}});
29
+ // this.events.unshift({'click': {'.header-sample': (ev, $elem)=> $elem.css('border', '2px solid black')}});
16
30
  }
17
31
 
18
32
  //-------------------------------------------------//
@@ -75,6 +75,6 @@
75
75
  "esm": "^3.2.25",
76
76
  "jquery": "^3.7.0",
77
77
  "lodash": "^4.17.21",
78
- "sdc_client": "^0.55.4"
78
+ "sdc_client": "^0.56.0"
79
79
  }
80
80
  }
@@ -549,10 +549,6 @@ export class SdcNavigatorController extends AbstractSDC {
549
549
  }
550
550
 
551
551
  login() {
552
- window.addEventListener("beforeunload", function(e){
553
- // Do something
554
- e.preventDefault();
555
- }, false);
556
552
  location.reload();
557
553
  }
558
554
 
@@ -1 +0,0 @@
1
- simpleDomControl