simpledomcontrol 0.158.9__tar.gz → 0.160.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 (227) hide show
  1. simpledomcontrol-0.160.0/LICENSE +21 -0
  2. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/PKG-INFO +21 -11
  3. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/README.md +3 -0
  4. simpledomcontrol-0.160.0/pyproject.toml +70 -0
  5. simpledomcontrol-0.160.0/sdc/__main__.py +92 -0
  6. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/apps.py +1 -1
  7. simpledomcontrol-0.160.0/sdc_core/consumers.py +1328 -0
  8. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/jwt_utils.py +3 -0
  9. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/sdc_core_manager.py +2 -1
  10. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_cc.py +0 -1
  11. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_db_tools.py +27 -24
  12. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_get_controller_infos.py +1 -1
  13. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_get_model_infos.py +1 -1
  14. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_init.py +1 -1
  15. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_make_model_js.py +3 -2
  16. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_new_model.py +1 -0
  17. simpledomcontrol-0.160.0/sdc_core/management/commands/sdc_open_api.py +437 -0
  18. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_overwrite_lib_file.py +10 -3
  19. simpledomcontrol-0.160.0/sdc_core/management/commands/sdc_prepare_teaching.py +129 -0
  20. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_shell_execute_script.py +2 -1
  21. simpledomcontrol-0.160.0/sdc_core/management/commands/sdc_teach.py +316 -0
  22. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/utils/__init__.py +2 -2
  23. simpledomcontrol-0.160.0/sdc_core/management/commands/utils/teach_apps.py +73 -0
  24. simpledomcontrol-0.160.0/sdc_core/management/commands/utils/teach_controllers.py +113 -0
  25. simpledomcontrol-0.160.0/sdc_core/management/commands/utils/teach_crawler.py +629 -0
  26. simpledomcontrol-0.160.0/sdc_core/management/commands/utils/teach_markdown.py +274 -0
  27. simpledomcontrol-0.160.0/sdc_core/management/commands/utils/teach_models.py +104 -0
  28. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/rest_api.py +80 -68
  29. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/sdc_extentions/forms.py +4 -2
  30. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/sdc_extentions/models.py +64 -30
  31. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/sdc_extentions/search.py +8 -7
  32. simpledomcontrol-0.160.0/sdc_core/sdc_extentions/test_utils.py +17 -0
  33. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/sdc_extentions/views.py +40 -6
  34. simpledomcontrol-0.160.0/sdc_core/signals.py +46 -0
  35. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/gulpfile.jsx +7 -0
  36. simpledomcontrol-0.160.0/sdc_core/template_files/Assets/tests/config/pre-test-setup.js +132 -0
  37. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/tests/config/test-setup.js +10 -6
  38. simpledomcontrol-0.160.0/sdc_core/template_files/Assets/webpack.config/webpack.default.config.jsx +63 -0
  39. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/asgi.py.txt +9 -4
  40. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/package.json +1 -1
  41. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/routing.py.txt +1 -0
  42. simpledomcontrol-0.160.0/sdc_core/template_files/settings_extension.py.txt +182 -0
  43. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/templates/base.html +2 -0
  44. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.js +5 -0
  45. {simpledomcontrol-0.158.9/sdc_tools/Assets/src → simpledomcontrol-0.160.0/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_detail_view/sdc_detail_view.js +7 -0
  46. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_dummy/sdc_dummy.js +3 -0
  47. {simpledomcontrol-0.158.9/sdc_tools/Assets/src → simpledomcontrol-0.160.0/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_error/sdc_error.js +7 -0
  48. {simpledomcontrol-0.158.9/sdc_tools/Assets/src → simpledomcontrol-0.160.0/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_list_view/sdc_list_view.js +9 -0
  49. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_model_form/sdc_model_form.js +11 -0
  50. {simpledomcontrol-0.158.9/sdc_tools/Assets/src → simpledomcontrol-0.160.0/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_navigator/sdc_navigator.js +10 -0
  51. {simpledomcontrol-0.158.9/sdc_tools/Assets/src → simpledomcontrol-0.160.0/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_search_select/sdc_search_select.js +5 -0
  52. {simpledomcontrol-0.158.9/sdc_tools/Assets/src → simpledomcontrol-0.160.0/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_search_view/sdc_search_view.js +5 -0
  53. simpledomcontrol-0.160.0/sdc_tools/Assets/bin/sdc_tools/sdc_tools.organizer.js +1 -0
  54. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/sdc_tools.style.css +219 -0
  55. simpledomcontrol-0.160.0/sdc_tools/Assets/src/sdc_tools/controller/sdc_ai_assistant/markdown.js +278 -0
  56. simpledomcontrol-0.160.0/sdc_tools/Assets/src/sdc_tools/controller/sdc_ai_assistant/sdc_ai_assistant.js +855 -0
  57. simpledomcontrol-0.160.0/sdc_tools/Assets/src/sdc_tools/controller/sdc_ai_assistant/sdc_ai_assistant.scss +229 -0
  58. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.js +5 -0
  59. {simpledomcontrol-0.158.9/sdc_tools/Assets/bin → simpledomcontrol-0.160.0/sdc_tools/Assets/src}/sdc_tools/controller/sdc_detail_view/sdc_detail_view.js +7 -0
  60. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_dummy/sdc_dummy.js +3 -0
  61. {simpledomcontrol-0.158.9/sdc_tools/Assets/bin → simpledomcontrol-0.160.0/sdc_tools/Assets/src}/sdc_tools/controller/sdc_error/sdc_error.js +7 -0
  62. {simpledomcontrol-0.158.9/sdc_tools/Assets/bin → simpledomcontrol-0.160.0/sdc_tools/Assets/src}/sdc_tools/controller/sdc_list_view/sdc_list_view.js +9 -0
  63. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_model_form/sdc_model_form.js +11 -0
  64. {simpledomcontrol-0.158.9/sdc_tools/Assets/bin → simpledomcontrol-0.160.0/sdc_tools/Assets/src}/sdc_tools/controller/sdc_navigator/sdc_navigator.js +10 -0
  65. {simpledomcontrol-0.158.9/sdc_tools/Assets/bin → simpledomcontrol-0.160.0/sdc_tools/Assets/src}/sdc_tools/controller/sdc_search_select/sdc_search_select.js +5 -0
  66. {simpledomcontrol-0.158.9/sdc_tools/Assets/bin → simpledomcontrol-0.160.0/sdc_tools/Assets/src}/sdc_tools/controller/sdc_search_view/sdc_search_view.js +5 -0
  67. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/sdc_tools.organizer.js +1 -0
  68. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/sdc_tools.style.scss +1 -0
  69. simpledomcontrol-0.160.0/sdc_tools/Assets/tests/sdc_tools.test.js +456 -0
  70. simpledomcontrol-0.160.0/sdc_tools/SDC_SKILL.json +69 -0
  71. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/sdc_urls.py +1 -0
  72. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/sdc_views.py +14 -1
  73. simpledomcontrol-0.160.0/sdc_tools/templates/sdc_tools/sdc/sdc_ai_assistant.html +70 -0
  74. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/widgets/searchable_select.html +2 -1
  75. {simpledomcontrol-0.158.9/sdc_user/Assets/src → simpledomcontrol-0.160.0/sdc_user/Assets/bin}/sdc_user/controller/register/register.js +9 -0
  76. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/bin/sdc_user/controller/sdc_change_password/sdc_change_password.js +7 -0
  77. {simpledomcontrol-0.158.9/sdc_user/Assets/src → simpledomcontrol-0.160.0/sdc_user/Assets/bin}/sdc_user/controller/sdc_confirm_email/sdc_confirm_email.js +7 -0
  78. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/bin/sdc_user/controller/sdc_login/sdc_login.js +14 -5
  79. {simpledomcontrol-0.158.9/sdc_user/Assets/src → simpledomcontrol-0.160.0/sdc_user/Assets/bin}/sdc_user/controller/sdc_logout/sdc_logout.js +5 -0
  80. {simpledomcontrol-0.158.9/sdc_user/Assets/src → simpledomcontrol-0.160.0/sdc_user/Assets/bin}/sdc_user/controller/sdc_password_forgotten/sdc_password_forgotten.js +13 -1
  81. {simpledomcontrol-0.158.9/sdc_user/Assets/src → simpledomcontrol-0.160.0/sdc_user/Assets/bin}/sdc_user/controller/sdc_reset_password/sdc_reset_password.js +8 -0
  82. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/bin/sdc_user/controller/sdc_user/sdc_user.js +13 -7
  83. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/bin/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.js +3 -0
  84. simpledomcontrol-0.160.0/sdc_user/Assets/bin/sdc_user/sdc_user.organizer.js +1 -0
  85. {simpledomcontrol-0.158.9/sdc_user/Assets/bin → simpledomcontrol-0.160.0/sdc_user/Assets/src}/sdc_user/controller/register/register.js +9 -0
  86. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_change_password/sdc_change_password.js +7 -0
  87. {simpledomcontrol-0.158.9/sdc_user/Assets/bin → simpledomcontrol-0.160.0/sdc_user/Assets/src}/sdc_user/controller/sdc_confirm_email/sdc_confirm_email.js +7 -0
  88. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_login/sdc_login.js +14 -5
  89. {simpledomcontrol-0.158.9/sdc_user/Assets/bin → simpledomcontrol-0.160.0/sdc_user/Assets/src}/sdc_user/controller/sdc_logout/sdc_logout.js +5 -0
  90. {simpledomcontrol-0.158.9/sdc_user/Assets/bin → simpledomcontrol-0.160.0/sdc_user/Assets/src}/sdc_user/controller/sdc_password_forgotten/sdc_password_forgotten.js +13 -1
  91. {simpledomcontrol-0.158.9/sdc_user/Assets/bin → simpledomcontrol-0.160.0/sdc_user/Assets/src}/sdc_user/controller/sdc_reset_password/sdc_reset_password.js +8 -0
  92. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_user/sdc_user.js +13 -7
  93. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.js +3 -0
  94. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/tests/sdc_user.test.js +2 -2
  95. simpledomcontrol-0.160.0/sdc_user/SDC_SKILL.json +134 -0
  96. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/forms.py +17 -0
  97. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/mails.py +37 -10
  98. simpledomcontrol-0.160.0/sdc_user/migrations/__init__.py +0 -0
  99. simpledomcontrol-0.160.0/sdc_user/models.py +134 -0
  100. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/sdc_views.py +54 -12
  101. simpledomcontrol-0.160.0/sdc_user/templates/sdc_user/sdc/sdc_change_password.html +7 -0
  102. simpledomcontrol-0.160.0/sdc_user/tests.py +32 -0
  103. simpledomcontrol-0.158.9/pyproject.toml +0 -53
  104. simpledomcontrol-0.158.9/sdc_core/consumers.py +0 -516
  105. simpledomcontrol-0.158.9/sdc_core/management/commands/sdc_open_api.py +0 -445
  106. simpledomcontrol-0.158.9/sdc_core/signals.py +0 -39
  107. simpledomcontrol-0.158.9/sdc_core/template_files/Assets/tests/config/pre-test-setup.js +0 -94
  108. simpledomcontrol-0.158.9/sdc_core/template_files/Assets/webpack.config/webpack.default.config.jsx +0 -56
  109. simpledomcontrol-0.158.9/sdc_core/template_files/settings_extension.py.txt +0 -123
  110. simpledomcontrol-0.158.9/sdc_tools/Assets/bin/sdc_tools/sdc_tools.organizer.js +0 -1
  111. simpledomcontrol-0.158.9/sdc_tools/Assets/tests/sdc_tools.test.js +0 -192
  112. simpledomcontrol-0.158.9/sdc_user/Assets/bin/sdc_user/sdc_user.organizer.js +0 -1
  113. simpledomcontrol-0.158.9/sdc_user/models.py +0 -73
  114. simpledomcontrol-0.158.9/sdc_user/templates/sdc_user/sdc/sdc_change_password.html +0 -2
  115. simpledomcontrol-0.158.9/sdc_user/tests.py +0 -3
  116. {simpledomcontrol-0.158.9/sdc_core → simpledomcontrol-0.160.0/sdc}/__init__.py +0 -0
  117. {simpledomcontrol-0.158.9/sdc_core/management → simpledomcontrol-0.160.0/sdc_core}/__init__.py +0 -0
  118. {simpledomcontrol-0.158.9/sdc_core/management/commands → simpledomcontrol-0.160.0/sdc_core/management}/__init__.py +0 -0
  119. {simpledomcontrol-0.158.9/sdc_core/sdc_extentions → simpledomcontrol-0.160.0/sdc_core/management/commands}/__init__.py +0 -0
  120. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/_private.py +0 -0
  121. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/__init__.py +0 -0
  122. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/add_controller_manager.py +0 -0
  123. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/add_model_manager.py +0 -0
  124. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/options.py +0 -0
  125. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/settings_manager.py +0 -0
  126. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/init_add/utils.py +0 -0
  127. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_get_controller_url.py +0 -0
  128. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_is_installed.py +0 -0
  129. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_update_links.py +0 -0
  130. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/management/commands/sdc_update_url.py +0 -0
  131. {simpledomcontrol-0.158.9/sdc_core/templatetags → simpledomcontrol-0.160.0/sdc_core/sdc_extentions}/__init__.py +0 -0
  132. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/sdc_extentions/import_manager.py +0 -0
  133. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/sdc_extentions/response.py +0 -0
  134. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/.devcontainer/Dockerfile +0 -0
  135. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/.devcontainer/devcontainer.json +0 -0
  136. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/.devcontainer/on_create.sh +0 -0
  137. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/.devcontainer/on_startup.sh +0 -0
  138. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/babel.config.json +0 -0
  139. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/src/index.organizer.js +0 -0
  140. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/src/index.style.scss +0 -0
  141. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/static/img/favicon.png +0 -0
  142. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/tests/config/post-test-teardown.js +0 -0
  143. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/webpack.config/webpack.bundle.config.jsx +0 -0
  144. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/webpack.config/webpack.development.config.jsx +0 -0
  145. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/Assets/webpack.config/webpack.production.config.jsx +0 -0
  146. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/controller/template_controller.js.txt +0 -0
  147. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/controller/template_css.scss +0 -0
  148. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/controller/template_test.js.txt +0 -0
  149. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/controller/template_view.html +0 -0
  150. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/js_test.js.txt +0 -0
  151. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/models/detail.html +0 -0
  152. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/models/list.html +0 -0
  153. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/sdc_urls.py.txt +0 -0
  154. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/sdc_views.py.txt +0 -0
  155. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/templates/elements/form.html +0 -0
  156. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/templates/elements/inline_form.html +0 -0
  157. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/templates/index.html +0 -0
  158. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/template_files/urls.py.txt +0 -0
  159. {simpledomcontrol-0.158.9/sdc_tools → simpledomcontrol-0.160.0/sdc_core/templatetags}/__init__.py +0 -0
  160. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/templatetags/addclass.py +0 -0
  161. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/templatetags/indexfilter.py +0 -0
  162. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_core/templatetags/sdc_filter.py +0 -0
  163. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_auto_submit/sdc_auto_submit.js +0 -0
  164. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_navigation_client/sdc_navigation_client.js +0 -0
  165. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_update_on_change/sdc_update_on_change.js +0 -0
  166. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.scss +0 -0
  167. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_auto_submit/sdc_auto_submit.js +0 -0
  168. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_detail_view/sdc_detail_view.scss +0 -0
  169. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_dummy/sdc_dummy.scss +0 -0
  170. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_error/sdc_error.scss +0 -0
  171. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_list_view/sdc_list_view.scss +0 -0
  172. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_model_form/sdc_model_form.scss +0 -0
  173. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigation_client/sdc_navigation_client.js +0 -0
  174. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigator/sdc_navigator.scss +0 -0
  175. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_select/sdc_search_select.scss +0 -0
  176. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_view/sdc_search_view.scss +0 -0
  177. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/Assets/src/sdc_tools/controller/sdc_update_on_change/sdc_update_on_change.js +0 -0
  178. {simpledomcontrol-0.158.9/sdc_tools/migrations → simpledomcontrol-0.160.0/sdc_tools}/__init__.py +0 -0
  179. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/admin.py +0 -0
  180. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/apps.py +0 -0
  181. {simpledomcontrol-0.158.9/sdc_user → simpledomcontrol-0.160.0/sdc_tools/migrations}/__init__.py +0 -0
  182. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/models.py +0 -0
  183. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/email/base.html +0 -0
  184. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/dummy_sdc.html +0 -0
  185. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_alert_messenger.html +0 -0
  186. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_detail_view.html +0 -0
  187. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_dummy.html +0 -0
  188. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_error.html +0 -0
  189. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_list_view.html +0 -0
  190. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_model_form.html +0 -0
  191. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_navigator.html +0 -0
  192. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_search_select.html +0 -0
  193. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/templates/sdc_tools/sdc/sdc_search_view.html +0 -0
  194. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/tests.py +0 -0
  195. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/views.py +0 -0
  196. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_tools/widgets.py +0 -0
  197. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/bin/sdc_user/sdc_user.style.css +0 -0
  198. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/register/register.scss +0 -0
  199. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_change_password/sdc_change_password.scss +0 -0
  200. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_confirm_email/sdc_confirm_email.scss +0 -0
  201. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_login/sdc_login.scss +0 -0
  202. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_logout/sdc_logout.scss +0 -0
  203. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_password_forgotten/sdc_password_forgotten.scss +0 -0
  204. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_reset_password/sdc_reset_password.scss +0 -0
  205. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_user/sdc_user.scss +0 -0
  206. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.scss +0 -0
  207. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/sdc_user.organizer.js +0 -0
  208. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/Assets/src/sdc_user/sdc_user.style.scss +0 -0
  209. {simpledomcontrol-0.158.9/sdc_user/migrations → simpledomcontrol-0.160.0/sdc_user}/__init__.py +0 -0
  210. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/admin.py +0 -0
  211. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/apps.py +0 -0
  212. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/migrations/0001_initial.py +0 -0
  213. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/sdc_urls.py +0 -0
  214. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/email/confirm.html +0 -0
  215. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/email/reset_password.html +0 -0
  216. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/models/SdcUser/SdcUser_details.html +0 -0
  217. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/models/SdcUser/SdcUser_list.html +0 -0
  218. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/register.html +0 -0
  219. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/sdc_confirm_email.html +0 -0
  220. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/sdc_login.html +0 -0
  221. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/sdc_logout.html +0 -0
  222. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/sdc_password_forgotten.html +0 -0
  223. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/sdc_reset_password.html +0 -0
  224. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/sdc_user/sdc/sdc_user_nav_btn.html +0 -0
  225. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/templates/widgets/read_only_password_hash.html +0 -0
  226. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/views.py +0 -0
  227. {simpledomcontrol-0.158.9 → simpledomcontrol-0.160.0}/sdc_user/widgets.py +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-2026 Martin Starman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,20 +1,23 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SimpleDomControl
3
- Version: 0.158.9
3
+ Version: 0.160.0
4
4
  Summary: Simple DOM control -> a django MVC framework
5
- License: Apache-2.0
5
+ License-Expression: MIT
6
+ License-File: LICENSE
6
7
  Keywords: django,MVC
7
8
  Author: Martin Starman
8
9
  Author-email: private@martin-starman.com
9
10
  Requires-Python: >=3.13,<4.0
10
- Classifier: Environment :: Web Environment
11
- Classifier: License :: OSI Approved :: Apache Software License
12
- Classifier: Operating System :: OS Independent
13
11
  Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.13
15
- Classifier: Programming Language :: Python :: 3.14
16
- Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
12
+ Classifier: Framework :: Django
17
13
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
14
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
15
+ Classifier: Environment :: Web Environment
16
+ Classifier: Operating System :: OS Independent
17
+ Provides-Extra: ai
18
+ Provides-Extra: postgres
19
+ Provides-Extra: teach
20
+ Requires-Dist: anthropic (>=2.3.0,<3.0.0) ; extra == "ai"
18
21
  Requires-Dist: attrs (>=25.4.0,<26.0.0)
19
22
  Requires-Dist: channels (>=4.3.2,<5.0.0)
20
23
  Requires-Dist: channels-redis (>=4.3.0,<5.0.0)
@@ -22,16 +25,23 @@ Requires-Dist: click (>=8.1.0)
22
25
  Requires-Dist: daphne (>=4.2.1,<5.0.0)
23
26
  Requires-Dist: django (>=6.0.2,<7.0.0)
24
27
  Requires-Dist: inquirerpy (>=0.3.4,<0.4.0)
25
- Requires-Dist: poetry-core (>=2.3.1,<3.0.0)
26
- Requires-Dist: psycopg2-binary (>=2.9.11,<3.0.0)
28
+ Requires-Dist: openai (>=3.41.0,<4.0.0) ; extra == "ai"
29
+ Requires-Dist: playwright (>=1.64.0,<2.0.0) ; extra == "teach"
30
+ Requires-Dist: psycopg2-binary (>=2.9.11,<3.0.0) ; extra == "postgres"
27
31
  Requires-Dist: pyjwt (>=2.11.0,<3.0.0)
28
32
  Requires-Dist: pyyaml (>=6.0.3,<7.0.0)
29
33
  Requires-Dist: regex (>=2026.1.15,<2027.0.0)
30
- Project-URL: Homepage, https://github.com/StarmanMartin/sdc
34
+ Project-URL: Documentation, https://simpledomcontrol.readthedocs.io/en/latest/
35
+ Project-URL: Homepage, https://github.com/StarmanMartin/SimpleDomControl
36
+ Project-URL: Repository, https://github.com/StarmanMartin/SimpleDomControl
37
+ Project-URL: changelog, https://github.com/StarmanMartin/SimpleDomControl/blob/master/CHANGELOG.md
31
38
  Description-Content-Type: text/markdown
32
39
 
33
40
  # Simple Dom Control (SDC)
34
41
 
35
42
  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.
36
43
 
44
+ SDC can also describe your UI for AI agents (`manage.py sdc_teach` writes a skill file) and ships an optional
45
+ AI assistant (`<sdc-ai-assistant>`, `pip install "simpledomcontrol[ai]"`) that helps users to use your site.
46
+
37
47
  For detailed docs go to [rtd](https://simpledomcontrol.readthedocs.io/en/latest/)
@@ -2,4 +2,7 @@
2
2
 
3
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
4
 
5
+ SDC can also describe your UI for AI agents (`manage.py sdc_teach` writes a skill file) and ships an optional
6
+ AI assistant (`<sdc-ai-assistant>`, `pip install "simpledomcontrol[ai]"`) that helps users to use your site.
7
+
5
8
  For detailed docs go to [rtd](https://simpledomcontrol.readthedocs.io/en/latest/)
@@ -0,0 +1,70 @@
1
+ [project]
2
+ name = "SimpleDomControl"
3
+ version = "0.160.0"
4
+ description = "Simple DOM control -> a django MVC framework"
5
+ authors = [{ name = "Martin Starman", email = "private@martin-starman.com" }]
6
+ readme = "README.md"
7
+ license = "MIT"
8
+ license-files = ["LICENSE"]
9
+ requires-python = ">=3.13,<4.0"
10
+ keywords = ["django", "MVC"]
11
+ classifiers = [
12
+ "Programming Language :: Python :: 3",
13
+ "Framework :: Django",
14
+ "Topic :: Software Development :: Libraries :: Python Modules",
15
+ "Topic :: Software Development :: Libraries :: Application Frameworks",
16
+ "Environment :: Web Environment",
17
+ "Operating System :: OS Independent",
18
+ ]
19
+ dependencies = [
20
+ "daphne (>=4.2.1,<5.0.0)",
21
+ "channels (>=4.3.2,<5.0.0)",
22
+ "channels-redis (>=4.3.0,<5.0.0)",
23
+ "django (>=6.0.2,<7.0.0)",
24
+ "attrs (>=25.4.0,<26.0.0)",
25
+ "regex (>=2026.1.15,<2027.0.0)",
26
+ "click (>=8.1.0)",
27
+ "pyjwt (>=2.11.0,<3.0.0)",
28
+ "inquirerpy (>=0.3.4,<0.4.0)",
29
+ "pyyaml (>=6.0.3,<7.0.0)",
30
+ ]
31
+
32
+ [project.optional-dependencies]
33
+ # PostgreSQL driver: pip install "simpledomcontrol[postgres]"
34
+ postgres = ["psycopg2-binary (>=2.9.11,<3.0.0)"]
35
+ # AI assistant (<sdc-ai-assistant>, SDCAiConsumer): pip install "simpledomcontrol[ai]"
36
+ ai = ["anthropic (>=2.3.0,<3.0.0)", "openai (>=3.41.0,<4.0.0)"]
37
+ # sdc_teach (crawls the UI to write the AI skill file; development only): pip install "simpledomcontrol[teach]"
38
+ teach = ["playwright (>=1.64.0,<2.0.0)"]
39
+
40
+ [project.urls]
41
+ homepage = "https://github.com/StarmanMartin/SimpleDomControl"
42
+ repository = "https://github.com/StarmanMartin/SimpleDomControl"
43
+ documentation = "https://simpledomcontrol.readthedocs.io/en/latest/"
44
+ changelog = "https://github.com/StarmanMartin/SimpleDomControl/blob/master/CHANGELOG.md"
45
+
46
+ [project.scripts]
47
+ sdc = "sdc.__main__:cli"
48
+
49
+ [tool.poetry]
50
+ packages = [{include = "sdc_core"}, {include = "sdc_user"}, {include = "sdc_tools"}, {include = "sdc"}]
51
+
52
+ [tool.poetry.group.dev.dependencies]
53
+ pytest = "^9.0.2"
54
+ pillow = "^12.1.0"
55
+ sphinx = "^9.1.0"
56
+ sphinx-toolbox = "^4.1.2"
57
+ sphinx-markdown-builder = "^0.6.9"
58
+ sphinx-rtd-theme = "^3.1.0"
59
+
60
+ [tool.pytest.ini_options]
61
+ pythonpath = [
62
+ "."
63
+ ]
64
+ testpaths = [
65
+ "pytests",
66
+ ]
67
+
68
+ [build-system]
69
+ requires = ["poetry-core>=2.0.0,<3.0.0"]
70
+ build-backend = "poetry.core.masonry.api"
@@ -0,0 +1,92 @@
1
+ """
2
+ Command line tool of SDC: ``sdc new --name <project>`` creates a new Django project with SDC.
3
+
4
+ Installed as the console script ``sdc`` (also ``python -m sdc``).
5
+ """
6
+ import os
7
+ import re
8
+ import shutil
9
+ import subprocess
10
+ import sys
11
+ import venv
12
+ from importlib import metadata
13
+ from pathlib import Path
14
+
15
+ import click
16
+
17
+
18
+ def _default_package():
19
+ """The simpledomcontrol version of this installation, so the new project uses the same one."""
20
+ try:
21
+ return f"simpledomcontrol=={metadata.version('SimpleDomControl')}"
22
+ except metadata.PackageNotFoundError:
23
+ return "simpledomcontrol"
24
+
25
+
26
+ def _run(cmd, cwd):
27
+ click.echo(f"$ {' '.join(str(c) for c in cmd)}")
28
+ result = subprocess.run(cmd, cwd=cwd)
29
+ if result.returncode != 0:
30
+ raise click.ClickException(f"Command failed with exit code {result.returncode}: {' '.join(map(str, cmd))}")
31
+
32
+
33
+ def _venv_python(venv_dir: Path) -> Path:
34
+ if os.name == "nt":
35
+ return venv_dir / "Scripts" / "python.exe"
36
+ return venv_dir / "bin" / "python"
37
+
38
+
39
+ def _add_sdc_core(settings_path: Path):
40
+ text = settings_path.read_text()
41
+ if "'sdc_core'" in text or '"sdc_core"' in text:
42
+ return
43
+ new_text, count = re.subn(r"INSTALLED_APPS\s*=\s*\[", "INSTALLED_APPS = [\n 'sdc_core',", text, count=1)
44
+ if count != 1:
45
+ raise click.ClickException(f"INSTALLED_APPS not found in {settings_path}")
46
+ settings_path.write_text(new_text)
47
+
48
+
49
+ @click.group()
50
+ def cli():
51
+ pass
52
+
53
+
54
+ @cli.command(help="Creates a new SDC project in the subdirectory NAME of the current directory.")
55
+ @click.option("--name", prompt="Project name", help="Name of the new project (a valid Python identifier).")
56
+ @click.option("--package", default=None,
57
+ help="pip requirement used to install SDC into the project's virtualenv "
58
+ "(default: the installed version, e.g. simpledomcontrol==0.160.0).")
59
+ @click.option("--skip-npm", is_flag=True, help="Do not run 'npm install'.")
60
+ def new(name, package, skip_npm):
61
+ if not name.isidentifier():
62
+ raise click.BadParameter("The project name must be a valid Python identifier.", param_hint="--name")
63
+ target = Path.cwd() / name
64
+ if target.exists() and any(target.iterdir()):
65
+ raise click.ClickException(f"{target} already exists and is not empty.")
66
+ target.mkdir(parents=True, exist_ok=True)
67
+
68
+ # The virtualenv is created in its final location; moving a virtualenv breaks it.
69
+ venv_dir = target / "venv"
70
+ click.echo(f"Creating virtualenv in {venv_dir}")
71
+ venv.EnvBuilder(with_pip=True).create(venv_dir)
72
+ python = _venv_python(venv_dir)
73
+
74
+ _run([python, "-m", "pip", "install", "--upgrade", "pip"], target)
75
+ _run([python, "-m", "pip", "install", package or _default_package()], target)
76
+ _run([python, "-m", "django", "startproject", name, "."], target)
77
+ _add_sdc_core(target / name / "settings.py")
78
+ _run([python, "manage.py", "sdc_init", "-y"], target)
79
+
80
+ if skip_npm:
81
+ click.echo("Skipped 'npm install'.")
82
+ elif shutil.which("npm"):
83
+ _run(["npm", "install"], target)
84
+ else:
85
+ click.echo("npm was not found; run 'npm install' in the project directory to install the client.")
86
+
87
+ click.echo(f"\nDone. Next steps:\n cd {name}\n source venv/bin/activate\n"
88
+ f" python manage.py migrate\n npm run develop # in a second terminal: python manage.py runserver")
89
+
90
+
91
+ if __name__ == '__main__':
92
+ cli()
@@ -8,7 +8,7 @@ class SdcCoreConfig(AppConfig):
8
8
  def ready(self):
9
9
  import sys
10
10
  from django.conf import settings
11
- from sdc_core.signals import set_winner
11
+ import sdc_core.signals # noqa: F401 (registers the signal receivers)
12
12
 
13
13
  if settings.DEBUG and os.path.exists('./Assets'):
14
14
  env_vars = {}