django-cfg 1.4.46__py3-none-any.whl → 1.5.181__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1516) hide show
  1. django_cfg/__init__.py +14 -1
  2. django_cfg/apps/api/commands/serializers.py +152 -0
  3. django_cfg/apps/api/commands/views.py +32 -0
  4. django_cfg/apps/api/dashboard/TRANSACTION_FIX.md +73 -0
  5. django_cfg/apps/api/dashboard/__init__.py +8 -0
  6. django_cfg/apps/api/dashboard/apps.py +23 -0
  7. django_cfg/apps/api/dashboard/serializers/__init__.py +73 -0
  8. django_cfg/apps/api/dashboard/serializers/activity.py +38 -0
  9. django_cfg/apps/api/dashboard/serializers/apizones.py +35 -0
  10. django_cfg/apps/api/dashboard/serializers/base.py +16 -0
  11. django_cfg/apps/api/dashboard/serializers/charts.py +44 -0
  12. django_cfg/apps/api/dashboard/serializers/commands.py +85 -0
  13. django_cfg/apps/api/dashboard/serializers/config.py +317 -0
  14. django_cfg/apps/api/dashboard/serializers/metrics.py +66 -0
  15. django_cfg/apps/api/dashboard/serializers/overview.py +59 -0
  16. django_cfg/apps/api/dashboard/serializers/statistics.py +65 -0
  17. django_cfg/apps/api/dashboard/serializers/system.py +58 -0
  18. django_cfg/apps/api/dashboard/services/__init__.py +24 -0
  19. django_cfg/apps/api/dashboard/services/apizones_service.py +137 -0
  20. django_cfg/apps/api/dashboard/services/charts_service.py +267 -0
  21. django_cfg/apps/api/dashboard/services/commands_security.py +228 -0
  22. django_cfg/apps/api/dashboard/services/commands_service.py +361 -0
  23. django_cfg/apps/api/dashboard/services/config_service.py +334 -0
  24. django_cfg/apps/api/dashboard/services/metrics_service.py +262 -0
  25. django_cfg/apps/api/dashboard/services/overview_service.py +205 -0
  26. django_cfg/apps/api/dashboard/services/statistics_service.py +404 -0
  27. django_cfg/apps/api/dashboard/services/system_health_service.py +328 -0
  28. django_cfg/apps/api/dashboard/urls.py +48 -0
  29. django_cfg/apps/api/dashboard/views/__init__.py +27 -0
  30. django_cfg/apps/api/dashboard/views/activity_views.py +81 -0
  31. django_cfg/apps/api/dashboard/views/apizones_views.py +72 -0
  32. django_cfg/apps/api/dashboard/views/charts_views.py +158 -0
  33. django_cfg/apps/api/dashboard/views/commands_views.py +158 -0
  34. django_cfg/apps/api/dashboard/views/config_views.py +69 -0
  35. django_cfg/apps/api/dashboard/views/metrics_views.py +190 -0
  36. django_cfg/apps/api/dashboard/views/overview_views.py +131 -0
  37. django_cfg/apps/api/dashboard/views/statistics_views.py +105 -0
  38. django_cfg/apps/api/dashboard/views/system_views.py +72 -0
  39. django_cfg/apps/api/endpoints/README.md +144 -0
  40. django_cfg/apps/api/endpoints/endpoints_status/__init__.py +13 -0
  41. django_cfg/apps/api/endpoints/endpoints_status/drf_views.py +58 -0
  42. django_cfg/apps/api/endpoints/urls.py +13 -6
  43. django_cfg/apps/api/endpoints/urls_list/__init__.py +10 -0
  44. django_cfg/apps/api/endpoints/urls_list/serializers.py +74 -0
  45. django_cfg/apps/api/endpoints/urls_list/views.py +279 -0
  46. django_cfg/apps/api/health/drf_views.py +36 -0
  47. django_cfg/apps/api/health/serializers.py +7 -0
  48. django_cfg/apps/integrations/centrifugo/__init__.py +74 -0
  49. django_cfg/apps/integrations/centrifugo/_cfg/README_DEPENDENCIES.md +260 -0
  50. django_cfg/apps/integrations/centrifugo/_cfg/__init__.py +25 -0
  51. django_cfg/apps/integrations/centrifugo/_cfg/check_deps.py +34 -0
  52. django_cfg/apps/integrations/centrifugo/_cfg/dependencies.py +309 -0
  53. django_cfg/apps/integrations/centrifugo/admin/__init__.py +13 -0
  54. django_cfg/apps/integrations/centrifugo/admin/centrifugo_log.py +211 -0
  55. django_cfg/apps/integrations/centrifugo/admin/config.py +82 -0
  56. django_cfg/apps/integrations/centrifugo/apps.py +109 -0
  57. django_cfg/apps/integrations/centrifugo/codegen/IMPLEMENTATION_SUMMARY.md +475 -0
  58. django_cfg/apps/integrations/centrifugo/codegen/README.md +242 -0
  59. django_cfg/apps/integrations/centrifugo/codegen/USAGE.md +616 -0
  60. django_cfg/apps/integrations/centrifugo/codegen/__init__.py +24 -0
  61. django_cfg/apps/integrations/centrifugo/codegen/discovery.py +467 -0
  62. django_cfg/apps/integrations/centrifugo/codegen/generators/__init__.py +12 -0
  63. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/__init__.py +5 -0
  64. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/generator.py +217 -0
  65. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/CLAUDE.md.j2 +106 -0
  66. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/README.md.j2 +182 -0
  67. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/client.go.j2 +64 -0
  68. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/go.mod.j2 +10 -0
  69. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2 +300 -0
  70. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2.old +267 -0
  71. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/types.go.j2 +16 -0
  72. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/__init__.py +7 -0
  73. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/generator.py +278 -0
  74. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/CLAUDE.md.j2 +100 -0
  75. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/README.md.j2 +128 -0
  76. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/__init__.py.j2 +22 -0
  77. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/client.py.j2 +73 -0
  78. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/models.py.j2 +19 -0
  79. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/requirements.txt.j2 +8 -0
  80. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/rpc_client.py.j2 +193 -0
  81. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/__init__.py +5 -0
  82. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/generator.py +415 -0
  83. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/AnyCodable.swift.j2 +219 -0
  84. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/CLAUDE.md.j2 +364 -0
  85. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/CentrifugoClient.swift.j2 +223 -0
  86. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/Package.swift.j2 +30 -0
  87. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/README.md.j2 +141 -0
  88. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/RPCClient.swift.j2 +465 -0
  89. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/Subscriptions.swift.j2 +59 -0
  90. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/Types.swift.j2 +73 -0
  91. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/__init__.py +5 -0
  92. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/generator.py +422 -0
  93. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/CLAUDE.md.j2 +123 -0
  94. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/README.md.j2 +38 -0
  95. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/client.ts.j2 +106 -0
  96. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/index.ts.j2 +23 -0
  97. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/package.json.j2 +13 -0
  98. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/rpc-client.ts.j2 +276 -0
  99. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/subscriptions.ts.j2 +43 -0
  100. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/tsconfig.json.j2 +14 -0
  101. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/types.ts.j2 +19 -0
  102. django_cfg/apps/integrations/centrifugo/codegen/utils/__init__.py +90 -0
  103. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/__init__.py +75 -0
  104. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/base.py +128 -0
  105. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/go.py +157 -0
  106. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/python.py +125 -0
  107. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/swift.py +423 -0
  108. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/typescript.py +286 -0
  109. django_cfg/apps/integrations/centrifugo/codegen/utils/naming.py +287 -0
  110. django_cfg/apps/integrations/centrifugo/codegen/utils/prefix.py +167 -0
  111. django_cfg/apps/integrations/centrifugo/decorators.py +205 -0
  112. django_cfg/apps/integrations/centrifugo/handlers/__init__.py +11 -0
  113. django_cfg/apps/integrations/centrifugo/handlers/system.py +68 -0
  114. django_cfg/apps/integrations/centrifugo/management/__init__.py +1 -0
  115. django_cfg/apps/integrations/centrifugo/management/commands/README.md +131 -0
  116. django_cfg/apps/integrations/centrifugo/management/commands/__init__.py +1 -0
  117. django_cfg/apps/integrations/centrifugo/management/commands/centrifugo_publish.py +147 -0
  118. django_cfg/apps/integrations/centrifugo/management/commands/generate_centrifugo_clients.py +361 -0
  119. django_cfg/apps/integrations/centrifugo/managers/__init__.py +12 -0
  120. django_cfg/apps/integrations/centrifugo/managers/centrifugo_log.py +264 -0
  121. django_cfg/apps/integrations/centrifugo/migrations/0001_initial.py +164 -0
  122. django_cfg/apps/integrations/centrifugo/migrations/__init__.py +3 -0
  123. django_cfg/apps/integrations/centrifugo/models/__init__.py +11 -0
  124. django_cfg/apps/integrations/centrifugo/models/centrifugo_log.py +210 -0
  125. django_cfg/apps/integrations/centrifugo/registry.py +316 -0
  126. django_cfg/apps/integrations/centrifugo/router.py +125 -0
  127. django_cfg/apps/integrations/centrifugo/serializers/__init__.py +48 -0
  128. django_cfg/apps/integrations/centrifugo/serializers/admin_api.py +264 -0
  129. django_cfg/apps/integrations/centrifugo/serializers/channels.py +27 -0
  130. django_cfg/apps/integrations/centrifugo/serializers/health.py +20 -0
  131. django_cfg/apps/integrations/centrifugo/serializers/publishes.py +61 -0
  132. django_cfg/apps/integrations/centrifugo/serializers/stats.py +21 -0
  133. django_cfg/apps/integrations/centrifugo/services/__init__.py +18 -0
  134. django_cfg/apps/integrations/centrifugo/services/channel_validator.py +153 -0
  135. django_cfg/apps/integrations/centrifugo/services/client/__init__.py +34 -0
  136. django_cfg/apps/integrations/centrifugo/services/client/client.py +590 -0
  137. django_cfg/apps/integrations/centrifugo/services/client/config.py +236 -0
  138. django_cfg/apps/integrations/centrifugo/services/client/direct_client.py +296 -0
  139. django_cfg/apps/integrations/centrifugo/services/client/direct_client.py.backup +286 -0
  140. django_cfg/apps/integrations/centrifugo/services/client/exceptions.py +212 -0
  141. django_cfg/apps/integrations/centrifugo/services/config_helper.py +63 -0
  142. django_cfg/apps/integrations/centrifugo/services/dashboard_notifier.py +157 -0
  143. django_cfg/apps/integrations/centrifugo/services/logging.py +753 -0
  144. django_cfg/apps/integrations/centrifugo/services/publisher.py +379 -0
  145. django_cfg/apps/integrations/centrifugo/services/token_generator.py +122 -0
  146. django_cfg/apps/integrations/centrifugo/urls.py +44 -0
  147. django_cfg/apps/integrations/centrifugo/views/__init__.py +15 -0
  148. django_cfg/apps/integrations/centrifugo/views/admin_api.py +374 -0
  149. django_cfg/apps/integrations/centrifugo/views/monitoring.py +385 -0
  150. django_cfg/apps/integrations/centrifugo/views/rpc_proxy.py +199 -0
  151. django_cfg/apps/integrations/centrifugo/views/testing_api.py +406 -0
  152. django_cfg/apps/integrations/centrifugo/views/token_api.py +101 -0
  153. django_cfg/apps/integrations/centrifugo/views/wrapper.py +269 -0
  154. django_cfg/apps/integrations/grpc/__init__.py +9 -0
  155. django_cfg/apps/integrations/grpc/_cfg/README_DEPENDENCIES.md +307 -0
  156. django_cfg/apps/integrations/grpc/_cfg/__init__.py +25 -0
  157. django_cfg/apps/integrations/grpc/_cfg/check_deps.py +34 -0
  158. django_cfg/apps/integrations/grpc/_cfg/dependencies.py +484 -0
  159. django_cfg/apps/integrations/grpc/admin/__init__.py +38 -0
  160. django_cfg/apps/integrations/grpc/admin/config.py +496 -0
  161. django_cfg/apps/integrations/grpc/admin/connection_state.py +257 -0
  162. django_cfg/apps/integrations/grpc/admin/grpc_api_key.py +204 -0
  163. django_cfg/apps/integrations/grpc/admin/grpc_request_log.py +171 -0
  164. django_cfg/apps/integrations/grpc/admin/grpc_server_status.py +211 -0
  165. django_cfg/apps/integrations/grpc/apps.py +108 -0
  166. django_cfg/apps/integrations/grpc/auth/__init__.py +17 -0
  167. django_cfg/apps/integrations/grpc/auth/api_key_auth.py +366 -0
  168. django_cfg/apps/integrations/grpc/configs/__init__.py +90 -0
  169. django_cfg/apps/integrations/grpc/configs/channels.py +324 -0
  170. django_cfg/apps/integrations/grpc/configs/commands.py +126 -0
  171. django_cfg/apps/integrations/grpc/configs/constants.py +403 -0
  172. django_cfg/apps/integrations/grpc/configs/tls.py +297 -0
  173. django_cfg/apps/integrations/grpc/management/__init__.py +1 -0
  174. django_cfg/apps/integrations/grpc/management/commands/compile_proto.py +105 -0
  175. django_cfg/apps/integrations/grpc/management/commands/generate_protos.py +185 -0
  176. django_cfg/apps/integrations/grpc/management/commands/rungrpc.py +844 -0
  177. django_cfg/apps/integrations/grpc/management/commands/test_grpc_integration.py +75 -0
  178. django_cfg/apps/integrations/grpc/management/proto/__init__.py +3 -0
  179. django_cfg/apps/integrations/grpc/management/proto/compiler.py +194 -0
  180. django_cfg/apps/integrations/grpc/managers/__init__.py +26 -0
  181. django_cfg/apps/integrations/grpc/managers/connection_state/__init__.py +22 -0
  182. django_cfg/apps/integrations/grpc/managers/connection_state/event.py +225 -0
  183. django_cfg/apps/integrations/grpc/managers/connection_state/metric.py +235 -0
  184. django_cfg/apps/integrations/grpc/managers/connection_state/state.py +456 -0
  185. django_cfg/apps/integrations/grpc/managers/grpc_api_key.py +186 -0
  186. django_cfg/apps/integrations/grpc/managers/grpc_request_log.py +357 -0
  187. django_cfg/apps/integrations/grpc/managers/grpc_server_status.py +393 -0
  188. django_cfg/apps/integrations/grpc/migrations/0001_initial.py +69 -0
  189. django_cfg/apps/integrations/grpc/migrations/0002_rename_django_cfg__service_4c4a8e_idx_django_cfg__service_584308_idx_and_more.py +38 -0
  190. django_cfg/apps/integrations/grpc/migrations/0003_grpcserverstatus.py +119 -0
  191. django_cfg/apps/integrations/grpc/migrations/0004_grpcserverstatus_registered_services.py +22 -0
  192. django_cfg/apps/integrations/grpc/migrations/0005_grpcapikey.py +143 -0
  193. django_cfg/apps/integrations/grpc/migrations/0006_grpcrequestlog_api_key_and_more.py +34 -0
  194. django_cfg/apps/integrations/grpc/migrations/0007_simplify_grpc_models.py +330 -0
  195. django_cfg/apps/integrations/grpc/migrations/0008_grpcrequestlog_error_details.py +18 -0
  196. django_cfg/apps/integrations/grpc/migrations/0009_grpcagentconnectionstate_grpcagentconnectionmetric_and_more.py +349 -0
  197. django_cfg/apps/integrations/grpc/migrations/0010_grpcapikey_hash_security.py +102 -0
  198. django_cfg/apps/integrations/grpc/migrations/0011_alter_grpcapikey_key.py +27 -0
  199. django_cfg/apps/integrations/grpc/models/__init__.py +23 -0
  200. django_cfg/apps/integrations/grpc/models/connection_state/__init__.py +18 -0
  201. django_cfg/apps/integrations/grpc/models/connection_state/event.py +123 -0
  202. django_cfg/apps/integrations/grpc/models/connection_state/metric.py +200 -0
  203. django_cfg/apps/integrations/grpc/models/connection_state/state.py +275 -0
  204. django_cfg/apps/integrations/grpc/models/grpc_api_key.py +346 -0
  205. django_cfg/apps/integrations/grpc/models/grpc_request_log.py +94 -0
  206. django_cfg/apps/integrations/grpc/models/grpc_server_status.py +136 -0
  207. django_cfg/apps/integrations/grpc/resilience/__init__.py +99 -0
  208. django_cfg/apps/integrations/grpc/resilience/circuit.py +495 -0
  209. django_cfg/apps/integrations/grpc/resilience/config.py +117 -0
  210. django_cfg/apps/integrations/grpc/resilience/logging.py +325 -0
  211. django_cfg/apps/integrations/grpc/resilience/retry.py +273 -0
  212. django_cfg/apps/integrations/grpc/serializers/__init__.py +42 -0
  213. django_cfg/apps/integrations/grpc/serializers/api_keys.py +54 -0
  214. django_cfg/apps/integrations/grpc/serializers/config.py +120 -0
  215. django_cfg/apps/integrations/grpc/serializers/health.py +18 -0
  216. django_cfg/apps/integrations/grpc/serializers/requests.py +24 -0
  217. django_cfg/apps/integrations/grpc/serializers/service_registry.py +271 -0
  218. django_cfg/apps/integrations/grpc/serializers/stats.py +56 -0
  219. django_cfg/apps/integrations/grpc/services/__init__.py +121 -0
  220. django_cfg/apps/integrations/grpc/services/base.py +375 -0
  221. django_cfg/apps/integrations/grpc/services/centrifugo/__init__.py +29 -0
  222. django_cfg/apps/integrations/grpc/services/centrifugo/bridge.py +506 -0
  223. django_cfg/apps/integrations/grpc/services/centrifugo/config.py +167 -0
  224. django_cfg/apps/integrations/grpc/services/centrifugo/demo.py +630 -0
  225. django_cfg/apps/integrations/grpc/services/centrifugo/test_publish.py +229 -0
  226. django_cfg/apps/integrations/grpc/services/centrifugo/transformers.py +89 -0
  227. django_cfg/apps/integrations/grpc/services/client/__init__.py +102 -0
  228. django_cfg/apps/integrations/grpc/services/client/betterproto_client.py +841 -0
  229. django_cfg/apps/integrations/grpc/services/client/client.py +619 -0
  230. django_cfg/apps/integrations/grpc/services/client/pool.py +632 -0
  231. django_cfg/apps/integrations/grpc/services/client/resilient.py +717 -0
  232. django_cfg/apps/integrations/grpc/services/commands/IMPLEMENTATION.md +456 -0
  233. django_cfg/apps/integrations/grpc/services/commands/README.md +252 -0
  234. django_cfg/apps/integrations/grpc/services/commands/__init__.py +114 -0
  235. django_cfg/apps/integrations/grpc/services/commands/base.py +561 -0
  236. django_cfg/apps/integrations/grpc/services/commands/examples/__init__.py +22 -0
  237. django_cfg/apps/integrations/grpc/services/commands/examples/base_client.py +166 -0
  238. django_cfg/apps/integrations/grpc/services/commands/examples/client.py +272 -0
  239. django_cfg/apps/integrations/grpc/services/commands/examples/config.py +177 -0
  240. django_cfg/apps/integrations/grpc/services/commands/examples/start.py +125 -0
  241. django_cfg/apps/integrations/grpc/services/commands/examples/stop.py +101 -0
  242. django_cfg/apps/integrations/grpc/services/commands/helpers/README.md +253 -0
  243. django_cfg/apps/integrations/grpc/services/commands/helpers/__init__.py +43 -0
  244. django_cfg/apps/integrations/grpc/services/commands/helpers/builders.py +114 -0
  245. django_cfg/apps/integrations/grpc/services/commands/helpers/decorators.py +219 -0
  246. django_cfg/apps/integrations/grpc/services/commands/helpers/protocols.py +138 -0
  247. django_cfg/apps/integrations/grpc/services/commands/registry.py +170 -0
  248. django_cfg/apps/integrations/grpc/services/commands/viewset_mixin.py +311 -0
  249. django_cfg/apps/integrations/grpc/services/discovery/__init__.py +70 -0
  250. django_cfg/apps/integrations/grpc/services/discovery/registration.py +127 -0
  251. django_cfg/apps/integrations/grpc/services/discovery/service_discovery.py +274 -0
  252. django_cfg/apps/integrations/grpc/services/discovery/service_registry.py +201 -0
  253. django_cfg/apps/integrations/grpc/services/discovery/statistics.py +215 -0
  254. django_cfg/apps/integrations/grpc/services/discovery/utils.py +166 -0
  255. django_cfg/apps/integrations/grpc/services/interceptors/__init__.py +47 -0
  256. django_cfg/apps/integrations/grpc/services/interceptors/db_logger.py +113 -0
  257. django_cfg/apps/integrations/grpc/services/interceptors/errors.py +248 -0
  258. django_cfg/apps/integrations/grpc/services/interceptors/metrics.py +80 -0
  259. django_cfg/apps/integrations/grpc/services/interceptors/observability.py +578 -0
  260. django_cfg/apps/integrations/grpc/services/interceptors/publishers.py +190 -0
  261. django_cfg/apps/integrations/grpc/services/interceptors/utils.py +107 -0
  262. django_cfg/apps/integrations/grpc/services/interceptors/wrapped_handler.py +29 -0
  263. django_cfg/apps/integrations/grpc/services/management/__init__.py +37 -0
  264. django_cfg/apps/integrations/grpc/services/management/config_helper.py +152 -0
  265. django_cfg/apps/integrations/grpc/services/management/proto_manager.py +268 -0
  266. django_cfg/apps/integrations/grpc/services/monitoring/__init__.py +17 -0
  267. django_cfg/apps/integrations/grpc/services/monitoring/monitoring.py +395 -0
  268. django_cfg/apps/integrations/grpc/services/routing/__init__.py +59 -0
  269. django_cfg/apps/integrations/grpc/services/routing/config.py +83 -0
  270. django_cfg/apps/integrations/grpc/services/routing/router.py +430 -0
  271. django_cfg/apps/integrations/grpc/services/streaming/README.md +463 -0
  272. django_cfg/apps/integrations/grpc/services/streaming/__init__.py +115 -0
  273. django_cfg/apps/integrations/grpc/services/streaming/config.py +487 -0
  274. django_cfg/apps/integrations/grpc/services/streaming/core/__init__.py +21 -0
  275. django_cfg/apps/integrations/grpc/services/streaming/core/connection.py +199 -0
  276. django_cfg/apps/integrations/grpc/services/streaming/core/queue.py +104 -0
  277. django_cfg/apps/integrations/grpc/services/streaming/core/registry.py +299 -0
  278. django_cfg/apps/integrations/grpc/services/streaming/integrations/__init__.py +18 -0
  279. django_cfg/apps/integrations/grpc/services/streaming/integrations/centrifugo.py +228 -0
  280. django_cfg/apps/integrations/grpc/services/streaming/integrations/circuit_breaker.py +247 -0
  281. django_cfg/apps/integrations/grpc/services/streaming/processors/__init__.py +18 -0
  282. django_cfg/apps/integrations/grpc/services/streaming/processors/input.py +390 -0
  283. django_cfg/apps/integrations/grpc/services/streaming/processors/output.py +199 -0
  284. django_cfg/apps/integrations/grpc/services/streaming/service.py +474 -0
  285. django_cfg/apps/integrations/grpc/services/streaming/types.py +316 -0
  286. django_cfg/apps/integrations/grpc/testing/__init__.py +12 -0
  287. django_cfg/apps/integrations/grpc/testing/examples.py +263 -0
  288. django_cfg/apps/integrations/grpc/urls.py +36 -0
  289. django_cfg/apps/integrations/grpc/utils/SERVER_LOGGING.md +164 -0
  290. django_cfg/apps/integrations/grpc/utils/__init__.py +108 -0
  291. django_cfg/apps/integrations/grpc/utils/betterproto_compiler.py +576 -0
  292. django_cfg/apps/integrations/grpc/utils/converters.py +565 -0
  293. django_cfg/apps/integrations/grpc/utils/handlers.py +242 -0
  294. django_cfg/apps/integrations/grpc/utils/integration_test.py +334 -0
  295. django_cfg/apps/integrations/grpc/utils/proto_gen.py +463 -0
  296. django_cfg/apps/integrations/grpc/utils/streaming_logger.py +425 -0
  297. django_cfg/apps/integrations/grpc/views/__init__.py +15 -0
  298. django_cfg/apps/integrations/grpc/views/api_keys.py +235 -0
  299. django_cfg/apps/integrations/grpc/views/config.py +193 -0
  300. django_cfg/apps/integrations/grpc/views/monitoring.py +360 -0
  301. django_cfg/apps/integrations/grpc/views/services.py +298 -0
  302. django_cfg/apps/integrations/rq/__init__.py +9 -0
  303. django_cfg/apps/integrations/rq/_cfg/__init__.py +28 -0
  304. django_cfg/apps/integrations/rq/_cfg/dependencies.py +313 -0
  305. django_cfg/apps/integrations/rq/apps.py +157 -0
  306. django_cfg/apps/integrations/rq/management/__init__.py +1 -0
  307. django_cfg/apps/integrations/rq/management/commands/__init__.py +1 -0
  308. django_cfg/apps/integrations/rq/management/commands/rqscheduler.py +31 -0
  309. django_cfg/apps/integrations/rq/management/commands/rqstats.py +33 -0
  310. django_cfg/apps/integrations/rq/management/commands/rqworker.py +31 -0
  311. django_cfg/apps/integrations/rq/management/commands/rqworker_pool.py +27 -0
  312. django_cfg/apps/integrations/rq/serializers/__init__.py +40 -0
  313. django_cfg/apps/integrations/rq/serializers/health.py +77 -0
  314. django_cfg/apps/integrations/rq/serializers/job.py +104 -0
  315. django_cfg/apps/integrations/rq/serializers/queue.py +80 -0
  316. django_cfg/apps/integrations/rq/serializers/schedule.py +183 -0
  317. django_cfg/apps/integrations/rq/serializers/testing.py +139 -0
  318. django_cfg/apps/integrations/rq/serializers/worker.py +58 -0
  319. django_cfg/apps/integrations/rq/services/__init__.py +25 -0
  320. django_cfg/apps/integrations/rq/services/config_helper.py +323 -0
  321. django_cfg/apps/integrations/rq/services/models/README.md +417 -0
  322. django_cfg/apps/integrations/rq/services/models/__init__.py +30 -0
  323. django_cfg/apps/integrations/rq/services/models/event.py +123 -0
  324. django_cfg/apps/integrations/rq/services/models/job.py +99 -0
  325. django_cfg/apps/integrations/rq/services/models/queue.py +92 -0
  326. django_cfg/apps/integrations/rq/services/models/worker.py +106 -0
  327. django_cfg/apps/integrations/rq/services/rq_converters.py +188 -0
  328. django_cfg/apps/integrations/rq/tasks/__init__.py +21 -0
  329. django_cfg/apps/integrations/rq/tasks/demo_tasks.py +55 -0
  330. django_cfg/apps/integrations/rq/tasks/maintenance.py +259 -0
  331. django_cfg/apps/integrations/rq/urls.py +54 -0
  332. django_cfg/apps/integrations/rq/views/__init__.py +19 -0
  333. django_cfg/apps/integrations/rq/views/jobs.py +900 -0
  334. django_cfg/apps/integrations/rq/views/monitoring.py +248 -0
  335. django_cfg/apps/integrations/rq/views/queues.py +261 -0
  336. django_cfg/apps/integrations/rq/views/schedule.py +408 -0
  337. django_cfg/apps/integrations/rq/views/testing.py +698 -0
  338. django_cfg/apps/integrations/rq/views/workers.py +198 -0
  339. django_cfg/apps/integrations/webpush/__init__.py +18 -0
  340. django_cfg/apps/integrations/webpush/_cfg.py +35 -0
  341. django_cfg/apps/integrations/webpush/admin/__init__.py +13 -0
  342. django_cfg/apps/integrations/webpush/admin/config.py +76 -0
  343. django_cfg/apps/integrations/webpush/admin/push_subscription.py +115 -0
  344. django_cfg/apps/integrations/webpush/apps.py +98 -0
  345. django_cfg/apps/integrations/webpush/management/commands/test_push.py +85 -0
  346. django_cfg/apps/integrations/webpush/migrations/0001_initial.py +73 -0
  347. django_cfg/apps/integrations/webpush/models/__init__.py +5 -0
  348. django_cfg/apps/integrations/webpush/models/push_subscription.py +80 -0
  349. django_cfg/apps/integrations/webpush/serializers/__init__.py +19 -0
  350. django_cfg/apps/integrations/webpush/serializers/subscription.py +78 -0
  351. django_cfg/apps/integrations/webpush/services/__init__.py +33 -0
  352. django_cfg/apps/integrations/webpush/services/exceptions.py +61 -0
  353. django_cfg/apps/integrations/webpush/services/models.py +64 -0
  354. django_cfg/apps/integrations/webpush/services/push_service.py +270 -0
  355. django_cfg/apps/integrations/webpush/urls.py +23 -0
  356. django_cfg/apps/integrations/webpush/views/__init__.py +7 -0
  357. django_cfg/apps/integrations/webpush/views/api.py +175 -0
  358. django_cfg/apps/system/accounts/README.md +333 -0
  359. django_cfg/apps/system/accounts/admin/__init__.py +45 -0
  360. django_cfg/apps/system/accounts/admin/filters.py +128 -0
  361. django_cfg/apps/system/accounts/admin/inlines.py +177 -0
  362. django_cfg/apps/system/accounts/admin/oauth_admin.py +170 -0
  363. django_cfg/apps/system/accounts/admin/resources.py +270 -0
  364. django_cfg/apps/system/accounts/admin/user_admin.py +375 -0
  365. django_cfg/apps/system/accounts/apps.py +19 -0
  366. django_cfg/apps/system/accounts/management/commands/otp_test.py +206 -0
  367. django_cfg/apps/system/accounts/managers/user_manager.py +299 -0
  368. django_cfg/apps/system/accounts/migrations/0001_initial.py +119 -0
  369. django_cfg/apps/system/accounts/migrations/0008_oauth_models.py +180 -0
  370. django_cfg/apps/system/accounts/migrations/0009_delete_twilioresponse.py +22 -0
  371. django_cfg/apps/system/accounts/migrations/0010_twofactorsettings.py +100 -0
  372. django_cfg/apps/system/accounts/migrations/0011_delete_twofactorsettings.py +16 -0
  373. django_cfg/apps/system/accounts/migrations/0012_customuser_is_test_account.py +21 -0
  374. django_cfg/apps/system/accounts/migrations/0013_add_deleted_at.py +22 -0
  375. django_cfg/apps/system/accounts/models/__init__.py +68 -0
  376. django_cfg/apps/system/accounts/models/choices.py +15 -0
  377. django_cfg/apps/system/accounts/models/oauth.py +263 -0
  378. django_cfg/apps/system/accounts/models/settings.py +133 -0
  379. django_cfg/apps/system/accounts/models/user.py +254 -0
  380. django_cfg/apps/system/accounts/serializers/__init__.py +25 -0
  381. django_cfg/apps/system/accounts/serializers/oauth.py +171 -0
  382. django_cfg/apps/system/accounts/serializers/otp.py +171 -0
  383. django_cfg/apps/system/accounts/serializers/profile.py +236 -0
  384. django_cfg/apps/system/accounts/services/github_service.py +418 -0
  385. django_cfg/apps/system/accounts/services/otp_service.py +305 -0
  386. django_cfg/apps/system/accounts/signals.py +162 -0
  387. django_cfg/apps/system/accounts/urls.py +70 -0
  388. django_cfg/apps/system/accounts/utils/notifications.py +346 -0
  389. django_cfg/apps/system/accounts/views/oauth.py +368 -0
  390. django_cfg/apps/system/accounts/views/otp.py +205 -0
  391. django_cfg/apps/system/accounts/views/profile.py +250 -0
  392. django_cfg/apps/system/frontend/JWT_AUTO_INJECTION.md +224 -0
  393. django_cfg/apps/system/frontend/__init__.py +18 -0
  394. django_cfg/apps/system/frontend/apps.py +15 -0
  395. django_cfg/apps/system/frontend/management/commands/download_admin.py +111 -0
  396. django_cfg/apps/system/frontend/setup.py +105 -0
  397. django_cfg/apps/system/frontend/templates/frontend/404.html +23 -0
  398. django_cfg/apps/system/frontend/templates/frontend/route_not_found.html +33 -0
  399. django_cfg/apps/system/frontend/test_routing.py +134 -0
  400. django_cfg/apps/system/frontend/urls.py +12 -0
  401. django_cfg/apps/system/frontend/utils/__init__.py +24 -0
  402. django_cfg/apps/system/frontend/utils/compression.py +75 -0
  403. django_cfg/apps/system/frontend/utils/downloader.py +342 -0
  404. django_cfg/apps/system/frontend/utils/html_link_fixer.py +203 -0
  405. django_cfg/apps/system/frontend/utils/jwt_injection.py +134 -0
  406. django_cfg/apps/system/frontend/utils/spa_path_resolver.py +94 -0
  407. django_cfg/apps/system/frontend/views.py +270 -0
  408. django_cfg/apps/system/totp/README.md +292 -0
  409. django_cfg/apps/system/totp/__init__.py +38 -0
  410. django_cfg/apps/system/totp/admin/__init__.py +22 -0
  411. django_cfg/apps/system/totp/admin/backup_admin.py +44 -0
  412. django_cfg/apps/system/totp/admin/config.py +143 -0
  413. django_cfg/apps/system/totp/admin/device_admin.py +72 -0
  414. django_cfg/apps/system/totp/admin/session_admin.py +58 -0
  415. django_cfg/apps/system/totp/apps.py +20 -0
  416. django_cfg/apps/system/totp/decorators/__init__.py +101 -0
  417. django_cfg/apps/system/totp/middleware/__init__.py +74 -0
  418. django_cfg/apps/system/totp/migrations/0001_initial.py +79 -0
  419. django_cfg/apps/system/totp/migrations/__init__.py +5 -0
  420. django_cfg/apps/system/totp/models/__init__.py +18 -0
  421. django_cfg/apps/system/totp/models/backup_code.py +82 -0
  422. django_cfg/apps/system/totp/models/choices.py +20 -0
  423. django_cfg/apps/system/totp/models/device.py +146 -0
  424. django_cfg/apps/system/totp/models/session.py +172 -0
  425. django_cfg/apps/system/totp/serializers/__init__.py +20 -0
  426. django_cfg/apps/system/totp/serializers/backup.py +51 -0
  427. django_cfg/apps/system/totp/serializers/device.py +66 -0
  428. django_cfg/apps/system/totp/serializers/setup.py +72 -0
  429. django_cfg/apps/system/totp/serializers/verify.py +79 -0
  430. django_cfg/apps/system/totp/services/__init__.py +15 -0
  431. django_cfg/apps/system/totp/services/backup_service.py +181 -0
  432. django_cfg/apps/system/totp/services/session_service.py +267 -0
  433. django_cfg/apps/system/totp/services/totp_service.py +289 -0
  434. django_cfg/apps/system/totp/signals.py +125 -0
  435. django_cfg/apps/system/totp/urls.py +77 -0
  436. django_cfg/apps/system/totp/views/__init__.py +17 -0
  437. django_cfg/apps/system/totp/views/backup.py +134 -0
  438. django_cfg/apps/system/totp/views/device.py +171 -0
  439. django_cfg/apps/system/totp/views/setup.py +171 -0
  440. django_cfg/apps/system/totp/views/verify.py +228 -0
  441. django_cfg/apps/tools/currency/__init__.py +5 -0
  442. django_cfg/apps/tools/currency/admin/__init__.py +23 -0
  443. django_cfg/apps/tools/currency/admin/currency_admin.py +114 -0
  444. django_cfg/apps/tools/currency/admin/currency_rate_admin.py +183 -0
  445. django_cfg/apps/tools/currency/apps.py +37 -0
  446. django_cfg/apps/tools/currency/migrations/0001_initial.py +131 -0
  447. django_cfg/apps/tools/currency/migrations/0002_populate_currencies.py +86 -0
  448. django_cfg/apps/tools/currency/models.py +248 -0
  449. django_cfg/apps/tools/currency/services/__init__.py +36 -0
  450. django_cfg/apps/tools/currency/services/clients/__init__.py +6 -0
  451. django_cfg/apps/tools/currency/services/clients/coinpaprika.py +149 -0
  452. django_cfg/apps/tools/currency/services/clients/hybrid.py +237 -0
  453. django_cfg/apps/tools/currency/services/converter.py +226 -0
  454. django_cfg/apps/tools/currency/services/exceptions.py +21 -0
  455. django_cfg/apps/tools/currency/services/schemas.py +33 -0
  456. django_cfg/apps/tools/currency/services/update.py +166 -0
  457. django_cfg/apps/tools/currency/tasks.py +83 -0
  458. django_cfg/apps/urls.py +65 -119
  459. django_cfg/cli/README.md +2 -2
  460. django_cfg/cli/commands/create_project.py +324 -101
  461. django_cfg/cli/commands/info.py +3 -3
  462. django_cfg/cli/commands/search.py +80 -0
  463. django_cfg/cli/main.py +2 -0
  464. django_cfg/cli/utils.py +1 -3
  465. django_cfg/config.py +60 -5
  466. django_cfg/core/__init__.py +3 -0
  467. django_cfg/core/backends/__init__.py +1 -0
  468. django_cfg/core/backends/smtp.py +69 -0
  469. django_cfg/core/base/config_model.py +310 -270
  470. django_cfg/core/builders/apps_builder.py +58 -88
  471. django_cfg/core/builders/middleware_builder.py +33 -6
  472. django_cfg/core/builders/security_builder.py +404 -16
  473. django_cfg/core/constants.py +8 -0
  474. django_cfg/core/debug/README.md +116 -0
  475. django_cfg/core/debug/__init__.py +7 -0
  476. django_cfg/core/debug/example_config.py +63 -0
  477. django_cfg/core/debug/warnings_helper.py +155 -0
  478. django_cfg/core/decorators/__init__.py +28 -0
  479. django_cfg/core/decorators/cors.py +172 -0
  480. django_cfg/core/decorators/rate_limit.py +525 -0
  481. django_cfg/core/decorators/rate_limit_test.py +188 -0
  482. django_cfg/core/generation/core_generators/settings.py +3 -6
  483. django_cfg/core/generation/core_generators/static.py +7 -2
  484. django_cfg/core/generation/core_generators/templates.py +38 -23
  485. django_cfg/core/generation/data_generators/cache.py +28 -2
  486. django_cfg/core/generation/data_generators/database.py +70 -0
  487. django_cfg/core/generation/integration_generators/__init__.py +7 -3
  488. django_cfg/core/generation/integration_generators/api.py +12 -0
  489. django_cfg/core/generation/integration_generators/django_rq.py +80 -0
  490. django_cfg/core/generation/integration_generators/grpc_generator.py +335 -0
  491. django_cfg/core/generation/integration_generators/oauth.py +64 -0
  492. django_cfg/core/generation/integration_generators/third_party.py +8 -8
  493. django_cfg/core/generation/orchestrator.py +49 -6
  494. django_cfg/core/generation/security_generators/crypto_fields.py +72 -0
  495. django_cfg/core/generation/utility_generators/__init__.py +3 -0
  496. django_cfg/core/generation/utility_generators/i18n.py +1 -1
  497. django_cfg/core/generation/utility_generators/testing.py +79 -0
  498. django_cfg/core/integration/__init__.py +17 -0
  499. django_cfg/core/integration/display/__init__.py +10 -0
  500. django_cfg/core/integration/display/ai_hints.py +182 -0
  501. django_cfg/core/integration/display/banner.py +91 -0
  502. django_cfg/core/integration/display/base.py +73 -0
  503. django_cfg/core/integration/display/grpc_display.py +172 -0
  504. django_cfg/core/integration/display/startup.py +192 -112
  505. django_cfg/core/integration/timing.py +151 -0
  506. django_cfg/core/integration/url_integration.py +123 -9
  507. django_cfg/core/integration/version_checker.py +3 -3
  508. django_cfg/core/middleware/__init__.py +9 -0
  509. django_cfg/core/middleware/noindex.py +71 -0
  510. django_cfg/core/middleware/public_api_cors.py +132 -0
  511. django_cfg/core/utils/__init__.py +5 -0
  512. django_cfg/core/utils/url_helpers.py +73 -0
  513. django_cfg/core/validation.py +4 -6
  514. django_cfg/extensions/__init__.py +80 -0
  515. django_cfg/extensions/configs/__init__.py +9 -0
  516. django_cfg/extensions/configs/apps/__init__.py +39 -0
  517. django_cfg/extensions/configs/apps/agents.py +79 -0
  518. django_cfg/extensions/configs/apps/backup.py +175 -0
  519. django_cfg/extensions/configs/apps/base/__init__.py +18 -0
  520. django_cfg/extensions/configs/apps/base/constants.py +6 -0
  521. django_cfg/extensions/configs/apps/base/navigation.py +57 -0
  522. django_cfg/extensions/configs/apps/base/schedule.py +99 -0
  523. django_cfg/extensions/configs/apps/base/settings.py +208 -0
  524. django_cfg/extensions/configs/apps/currency.py +182 -0
  525. django_cfg/extensions/configs/apps/knowbase.py +103 -0
  526. django_cfg/extensions/configs/apps/leads.py +80 -0
  527. django_cfg/extensions/configs/apps/maintenance.py +68 -0
  528. django_cfg/extensions/configs/apps/newsletter.py +67 -0
  529. django_cfg/extensions/configs/apps/payments.py +138 -0
  530. django_cfg/extensions/configs/apps/support.py +89 -0
  531. django_cfg/extensions/configs/modules/__init__.py +11 -0
  532. django_cfg/extensions/configs/modules/base.py +83 -0
  533. django_cfg/extensions/constance.py +80 -0
  534. django_cfg/extensions/loader.py +284 -0
  535. django_cfg/extensions/manifest.py +57 -0
  536. django_cfg/extensions/mixin.py +157 -0
  537. django_cfg/extensions/module_loader.py +253 -0
  538. django_cfg/extensions/scanner.py +323 -0
  539. django_cfg/extensions/schedules.py +88 -0
  540. django_cfg/extensions/urls.py +214 -0
  541. django_cfg/management/commands/check_endpoints.py +3 -3
  542. django_cfg/management/commands/check_settings.py +3 -10
  543. django_cfg/management/commands/clear_constance.py +3 -10
  544. django_cfg/management/commands/create_token.py +4 -11
  545. django_cfg/management/commands/list_urls.py +6 -72
  546. django_cfg/management/commands/migrate_all.py +22 -103
  547. django_cfg/management/commands/migrator.py +29 -254
  548. django_cfg/management/commands/pool_status.py +153 -0
  549. django_cfg/management/commands/script.py +4 -10
  550. django_cfg/management/commands/show_config.py +8 -16
  551. django_cfg/management/commands/show_urls.py +5 -11
  552. django_cfg/management/commands/superuser.py +4 -43
  553. django_cfg/management/commands/test_db.py +448 -0
  554. django_cfg/management/commands/tree.py +5 -10
  555. django_cfg/management/utils/README.md +402 -0
  556. django_cfg/management/utils/__init__.py +37 -0
  557. django_cfg/management/utils/migration_manager.py +499 -0
  558. django_cfg/management/utils/mixins.py +176 -0
  559. django_cfg/management/utils/postgresql.py +228 -0
  560. django_cfg/middleware/README.md +372 -0
  561. django_cfg/middleware/__init__.py +6 -0
  562. django_cfg/middleware/admin_notifications.py +214 -0
  563. django_cfg/middleware/authentication.py +216 -0
  564. django_cfg/middleware/pagination.py +53 -54
  565. django_cfg/middleware/pool_cleanup.py +261 -0
  566. django_cfg/middleware/public_endpoints.py +0 -1
  567. django_cfg/middleware/user_activity.py +0 -5
  568. django_cfg/mixins/__init__.py +17 -0
  569. django_cfg/mixins/admin_api.py +37 -0
  570. django_cfg/mixins/client_api.py +39 -0
  571. django_cfg/mixins/public_api.py +31 -0
  572. django_cfg/mixins/superadmin_api.py +59 -0
  573. django_cfg/models/__init__.py +30 -2
  574. django_cfg/models/api/__init__.py +10 -0
  575. django_cfg/models/api/config.py +2 -2
  576. django_cfg/models/api/drf/config.py +4 -2
  577. django_cfg/models/api/grpc/__init__.py +75 -0
  578. django_cfg/models/api/grpc/config.py +732 -0
  579. django_cfg/models/api/oauth.py +222 -0
  580. django_cfg/models/api/rate_limiting.py +278 -0
  581. django_cfg/models/api/twofactor.py +110 -0
  582. django_cfg/models/api/webpush/__init__.py +9 -0
  583. django_cfg/models/api/webpush/config.py +68 -0
  584. django_cfg/models/django/__init__.py +7 -0
  585. django_cfg/models/django/axes.py +187 -0
  586. django_cfg/models/django/constance.py +10 -17
  587. django_cfg/models/django/crypto_fields.py +135 -0
  588. django_cfg/models/django/currency.py +69 -0
  589. django_cfg/models/django/django_rq.py +780 -0
  590. django_cfg/models/django/openapi.py +53 -3
  591. django_cfg/models/infrastructure/__init__.py +14 -2
  592. django_cfg/models/infrastructure/backup.py +413 -0
  593. django_cfg/models/infrastructure/database/config.py +16 -0
  594. django_cfg/models/infrastructure/database/converters.py +2 -0
  595. django_cfg/models/ngrok/config.py +7 -6
  596. django_cfg/models/services/email.py +13 -13
  597. django_cfg/modules/base.py +124 -61
  598. django_cfg/modules/django_admin/README.md +1165 -0
  599. django_cfg/modules/django_admin/__init__.py +86 -29
  600. django_cfg/modules/django_admin/apps.py +19 -0
  601. django_cfg/modules/django_admin/base/__init__.py +3 -1
  602. django_cfg/modules/django_admin/base/pydantic_admin/__init__.py +90 -0
  603. django_cfg/modules/django_admin/base/pydantic_admin/actions.py +90 -0
  604. django_cfg/modules/django_admin/base/pydantic_admin/base_class.py +44 -0
  605. django_cfg/modules/django_admin/base/pydantic_admin/display_methods.py +420 -0
  606. django_cfg/modules/django_admin/base/pydantic_admin/import_export.py +111 -0
  607. django_cfg/modules/django_admin/base/pydantic_admin/list_display.py +156 -0
  608. django_cfg/modules/django_admin/base/pydantic_admin/mixin.py +276 -0
  609. django_cfg/modules/django_admin/base/pydantic_admin/views.py +285 -0
  610. django_cfg/modules/django_admin/config/__init__.py +41 -2
  611. django_cfg/modules/django_admin/config/action_config.py +16 -2
  612. django_cfg/modules/django_admin/config/admin_config.py +76 -5
  613. django_cfg/modules/django_admin/config/background_task_config.py +76 -0
  614. django_cfg/modules/django_admin/config/documentation_config.py +529 -0
  615. django_cfg/modules/django_admin/config/field_config/__init__.py +48 -0
  616. django_cfg/modules/django_admin/config/field_config/avatar.py +89 -0
  617. django_cfg/modules/django_admin/config/field_config/badge.py +37 -0
  618. django_cfg/modules/django_admin/config/field_config/base.py +54 -0
  619. django_cfg/modules/django_admin/config/field_config/boolean.py +32 -0
  620. django_cfg/modules/django_admin/config/field_config/counter_badge.py +116 -0
  621. django_cfg/modules/django_admin/config/field_config/currency.py +55 -0
  622. django_cfg/modules/django_admin/config/field_config/datetime.py +34 -0
  623. django_cfg/modules/django_admin/config/field_config/decimal.py +38 -0
  624. django_cfg/modules/django_admin/config/field_config/foreignkey.py +104 -0
  625. django_cfg/modules/django_admin/config/field_config/image.py +66 -0
  626. django_cfg/modules/django_admin/config/field_config/image_preview.py +223 -0
  627. django_cfg/modules/django_admin/config/field_config/link.py +95 -0
  628. django_cfg/modules/django_admin/config/field_config/markdown.py +97 -0
  629. django_cfg/modules/django_admin/config/field_config/money.py +117 -0
  630. django_cfg/modules/django_admin/config/field_config/short_uuid.py +31 -0
  631. django_cfg/modules/django_admin/config/field_config/status_badges.py +151 -0
  632. django_cfg/modules/django_admin/config/field_config/text.py +38 -0
  633. django_cfg/modules/django_admin/config/field_config/user.py +31 -0
  634. django_cfg/modules/django_admin/config/field_config/video.py +84 -0
  635. django_cfg/modules/django_admin/config/fieldset_config.py +24 -0
  636. django_cfg/modules/django_admin/config/resource_config.py +129 -0
  637. django_cfg/modules/django_admin/config/widget_config.py +192 -0
  638. django_cfg/modules/django_admin/models/badge_models.py +16 -2
  639. django_cfg/modules/django_admin/models/display_models.py +1 -0
  640. django_cfg/modules/django_admin/static/django_admin/css/documentation-modal.css +349 -0
  641. django_cfg/modules/django_admin/static/django_admin/css/image_preview.css +129 -0
  642. django_cfg/modules/django_admin/static/django_admin/css/json_editor_theme.css +100 -0
  643. django_cfg/modules/django_admin/templates/django_admin/change_form_docs.html +11 -0
  644. django_cfg/modules/django_admin/templates/django_admin/change_list_docs.html +11 -0
  645. django_cfg/modules/django_admin/templates/django_admin/documentation_block.html +15 -0
  646. django_cfg/modules/django_admin/templates/django_admin/documentation_modal.html +317 -0
  647. django_cfg/modules/django_admin/templates/django_admin/documentation_tree_node.html +124 -0
  648. django_cfg/modules/django_admin/templates/django_admin/markdown_docs_block.html +37 -0
  649. django_cfg/modules/django_admin/templates/django_admin/widgets/avatar_display.html +56 -0
  650. django_cfg/modules/django_admin/templates/django_admin/widgets/counter_badge_display.html +21 -0
  651. django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_field.html +80 -0
  652. django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_password.html +62 -0
  653. django_cfg/modules/django_admin/templates/django_admin/widgets/image_display.html +14 -0
  654. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview.html +340 -0
  655. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview_card.html +70 -0
  656. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview_modal.html +286 -0
  657. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview_thumbnail.html +38 -0
  658. django_cfg/modules/django_admin/templates/django_admin/widgets/json_display.html +17 -0
  659. django_cfg/modules/django_admin/templates/django_admin/widgets/json_editor.html +153 -0
  660. django_cfg/modules/django_admin/templates/django_admin/widgets/link_display.html +29 -0
  661. django_cfg/modules/django_admin/templates/django_admin/widgets/money_field_input.html +157 -0
  662. django_cfg/modules/django_admin/templates/django_admin/widgets/short_uuid_display.html +13 -0
  663. django_cfg/modules/django_admin/templates/django_admin/widgets/status_badges_display.html +21 -0
  664. django_cfg/modules/django_admin/templates/django_admin/widgets/video_display.html +69 -0
  665. django_cfg/modules/django_admin/utils/__init__.py +70 -3
  666. django_cfg/modules/django_admin/utils/badges/__init__.py +13 -0
  667. django_cfg/modules/django_admin/utils/badges/status_badges.py +179 -0
  668. django_cfg/modules/django_admin/utils/decorators.py +30 -4
  669. django_cfg/modules/django_admin/utils/displays/__init__.py +34 -0
  670. django_cfg/modules/django_admin/utils/displays/avatar_display.py +158 -0
  671. django_cfg/modules/django_admin/utils/displays/counter_badge_display.py +138 -0
  672. django_cfg/modules/django_admin/utils/displays/data_displays.py +316 -0
  673. django_cfg/modules/django_admin/utils/displays/image_display.py +124 -0
  674. django_cfg/modules/django_admin/utils/displays/image_preview.py +225 -0
  675. django_cfg/modules/django_admin/utils/displays/json_display.py +155 -0
  676. django_cfg/modules/django_admin/utils/displays/link_display.py +133 -0
  677. django_cfg/modules/django_admin/utils/displays/short_uuid_display.py +95 -0
  678. django_cfg/modules/django_admin/utils/displays/status_badges_display.py +118 -0
  679. django_cfg/modules/django_admin/utils/displays/text_display.py +136 -0
  680. django_cfg/modules/django_admin/utils/displays/video_display.py +149 -0
  681. django_cfg/modules/django_admin/utils/html/__init__.py +26 -0
  682. django_cfg/modules/django_admin/utils/html/badges.py +55 -0
  683. django_cfg/modules/django_admin/utils/html/base.py +198 -0
  684. django_cfg/modules/django_admin/utils/html/code.py +87 -0
  685. django_cfg/modules/django_admin/utils/html/composition.py +265 -0
  686. django_cfg/modules/django_admin/utils/html/formatting.py +274 -0
  687. django_cfg/modules/django_admin/utils/html/keyvalue.py +219 -0
  688. django_cfg/modules/django_admin/utils/html/markdown_integration.py +108 -0
  689. django_cfg/modules/django_admin/utils/html/progress.py +127 -0
  690. django_cfg/modules/django_admin/utils/html_builder.py +58 -194
  691. django_cfg/modules/django_admin/utils/markdown/__init__.py +21 -0
  692. django_cfg/modules/django_admin/utils/markdown/mermaid_plugin.py +277 -0
  693. django_cfg/modules/django_admin/utils/markdown/renderer.py +366 -0
  694. django_cfg/modules/django_admin/widgets/README.md +148 -0
  695. django_cfg/modules/django_admin/widgets/__init__.py +38 -0
  696. django_cfg/modules/django_admin/widgets/encrypted_field_widget.py +66 -0
  697. django_cfg/modules/django_admin/widgets/image_preview_widget.py +131 -0
  698. django_cfg/modules/django_admin/widgets/json_editor_widget.py +91 -0
  699. django_cfg/modules/django_admin/widgets/money_widget.py +452 -0
  700. django_cfg/modules/django_admin/widgets/registry.py +144 -9
  701. django_cfg/modules/django_ai/__init__.py +50 -0
  702. django_cfg/modules/django_ai/client.py +237 -0
  703. django_cfg/modules/django_client/core/__init__.py +19 -7
  704. django_cfg/modules/django_client/core/archiver/manager.py +148 -0
  705. django_cfg/modules/django_client/core/config/config.py +8 -0
  706. django_cfg/modules/django_client/core/config/service.py +1 -1
  707. django_cfg/modules/django_client/core/external/__init__.py +131 -0
  708. django_cfg/modules/django_client/core/external/base.py +388 -0
  709. django_cfg/modules/django_client/core/external/go.py +179 -0
  710. django_cfg/modules/django_client/core/external/python.py +244 -0
  711. django_cfg/modules/django_client/core/external/swift.py +158 -0
  712. django_cfg/modules/django_client/core/generator/__init__.py +120 -2
  713. django_cfg/modules/django_client/core/generator/base.py +3 -0
  714. django_cfg/modules/django_client/core/generator/claude_generator.py +345 -0
  715. django_cfg/modules/django_client/core/generator/go/__init__.py +14 -0
  716. django_cfg/modules/django_client/core/generator/go/client_generator.py +124 -0
  717. django_cfg/modules/django_client/core/generator/go/files_generator.py +133 -0
  718. django_cfg/modules/django_client/core/generator/go/generator.py +207 -0
  719. django_cfg/modules/django_client/core/generator/go/models_generator.py +304 -0
  720. django_cfg/modules/django_client/core/generator/go/naming.py +193 -0
  721. django_cfg/modules/django_client/core/generator/go/operations_generator.py +134 -0
  722. django_cfg/modules/django_client/core/generator/go/templates/Makefile.j2 +38 -0
  723. django_cfg/modules/django_client/core/generator/go/templates/README.md.j2 +55 -0
  724. django_cfg/modules/django_client/core/generator/go/templates/_header.jinja +1 -0
  725. django_cfg/modules/django_client/core/generator/go/templates/client.go.j2 +122 -0
  726. django_cfg/modules/django_client/core/generator/go/templates/enums.go.j2 +49 -0
  727. django_cfg/modules/django_client/core/generator/go/templates/errors.go.j2 +182 -0
  728. django_cfg/modules/django_client/core/generator/go/templates/go.mod.j2 +6 -0
  729. django_cfg/modules/django_client/core/generator/go/templates/main_client.go.j2 +60 -0
  730. django_cfg/modules/django_client/core/generator/go/templates/middleware.go.j2 +388 -0
  731. django_cfg/modules/django_client/core/generator/go/templates/models.go.j2 +28 -0
  732. django_cfg/modules/django_client/core/generator/go/templates/operations_client.go.j2 +142 -0
  733. django_cfg/modules/django_client/core/generator/go/templates/validation.go.j2 +217 -0
  734. django_cfg/modules/django_client/core/generator/go/type_mapper.py +380 -0
  735. django_cfg/modules/django_client/core/generator/proto/ENUM_NAMING_FIX.md +149 -0
  736. django_cfg/modules/django_client/core/generator/proto/__init__.py +19 -0
  737. django_cfg/modules/django_client/core/generator/proto/generator.py +511 -0
  738. django_cfg/modules/django_client/core/generator/proto/messages_generator.py +326 -0
  739. django_cfg/modules/django_client/core/generator/proto/naming.py +216 -0
  740. django_cfg/modules/django_client/core/generator/proto/services_generator.py +299 -0
  741. django_cfg/modules/django_client/core/generator/proto/test_proto_generator.py +262 -0
  742. django_cfg/modules/django_client/core/generator/proto/type_mapper.py +154 -0
  743. django_cfg/modules/django_client/core/generator/python/files_generator.py +5 -13
  744. django_cfg/modules/django_client/core/generator/python/generator.py +34 -1
  745. django_cfg/modules/django_client/core/generator/python/models_generator.py +76 -50
  746. django_cfg/modules/django_client/core/generator/python/operations_generator.py +6 -8
  747. django_cfg/modules/django_client/core/generator/python/templates/__init__.py.jinja +2 -0
  748. django_cfg/modules/django_client/core/generator/python/templates/_header.jinja +1 -0
  749. django_cfg/modules/django_client/core/generator/python/templates/api_wrapper.py.jinja +18 -4
  750. django_cfg/modules/django_client/core/generator/python/templates/app_init.py.jinja +2 -0
  751. django_cfg/modules/django_client/core/generator/python/templates/client/main_client.py.jinja +0 -2
  752. django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja +0 -1
  753. django_cfg/modules/django_client/core/generator/python/templates/client_file.py.jinja +2 -0
  754. django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja +6 -4
  755. django_cfg/modules/django_client/core/generator/python/templates/models/app_models.py.jinja +2 -0
  756. django_cfg/modules/django_client/core/generator/python/templates/models/enums.py.jinja +9 -1
  757. django_cfg/modules/django_client/core/generator/python/templates/models/models.py.jinja +2 -0
  758. django_cfg/modules/django_client/core/generator/python/templates/models/schema_class.py.jinja +1 -1
  759. django_cfg/modules/django_client/core/generator/python/templates/pyproject.toml.jinja +2 -0
  760. django_cfg/modules/django_client/core/generator/python/templates/utils/logger.py.jinja +2 -0
  761. django_cfg/modules/django_client/core/generator/python/templates/utils/retry.py.jinja +2 -0
  762. django_cfg/modules/django_client/core/generator/python/templates/utils/schema.py.jinja +2 -0
  763. django_cfg/modules/django_client/core/generator/swift_codable/__init__.py +30 -0
  764. django_cfg/modules/django_client/core/generator/swift_codable/endpoints_generator.py +284 -0
  765. django_cfg/modules/django_client/core/generator/swift_codable/generator.py +398 -0
  766. django_cfg/modules/django_client/core/generator/swift_codable/models_generator.py +299 -0
  767. django_cfg/modules/django_client/core/generator/swift_codable/naming.py +114 -0
  768. django_cfg/modules/django_client/core/generator/swift_codable/type_mapper.py +120 -0
  769. django_cfg/modules/django_client/core/generator/typescript/client_generator.py +36 -2
  770. django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +11 -1
  771. django_cfg/modules/django_client/core/generator/typescript/files_generator.py +18 -5
  772. django_cfg/modules/django_client/core/generator/typescript/generator.py +43 -0
  773. django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +7 -1
  774. django_cfg/modules/django_client/core/generator/typescript/models_generator.py +16 -0
  775. django_cfg/modules/django_client/core/generator/typescript/naming.py +6 -4
  776. django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +169 -6
  777. django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py +41 -7
  778. django_cfg/modules/django_client/core/generator/typescript/templates/_header.jinja +1 -0
  779. django_cfg/modules/django_client/core/generator/typescript/templates/api_instance.ts.jinja +63 -13
  780. django_cfg/modules/django_client/core/generator/typescript/templates/app_index.ts.jinja +2 -0
  781. django_cfg/modules/django_client/core/generator/typescript/templates/client/client.ts.jinja +284 -25
  782. django_cfg/modules/django_client/core/generator/typescript/templates/client/flat_client.ts.jinja +10 -3
  783. django_cfg/modules/django_client/core/generator/typescript/templates/client_file.ts.jinja +2 -0
  784. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja +3 -1
  785. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/function.ts.jinja +45 -2
  786. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/index.ts.jinja +2 -0
  787. django_cfg/modules/django_client/core/generator/typescript/templates/hooks/hooks.ts.jinja +8 -0
  788. django_cfg/modules/django_client/core/generator/typescript/templates/hooks/index.ts.jinja +4 -0
  789. django_cfg/modules/django_client/core/generator/typescript/templates/index.ts.jinja +2 -0
  790. django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +36 -22
  791. django_cfg/modules/django_client/core/generator/typescript/templates/models/app_models.ts.jinja +9 -1
  792. django_cfg/modules/django_client/core/generator/typescript/templates/models/enums.ts.jinja +2 -0
  793. django_cfg/modules/django_client/core/generator/typescript/templates/models/models.ts.jinja +2 -0
  794. django_cfg/modules/django_client/core/generator/typescript/templates/package.json.jinja +5 -1
  795. django_cfg/modules/django_client/core/generator/typescript/templates/schemas/index.ts.jinja +2 -0
  796. django_cfg/modules/django_client/core/generator/typescript/templates/utils/errors.ts.jinja +2 -0
  797. django_cfg/modules/django_client/core/generator/typescript/templates/utils/http.ts.jinja +18 -5
  798. django_cfg/modules/django_client/core/generator/typescript/templates/utils/logger.ts.jinja +2 -0
  799. django_cfg/modules/django_client/core/generator/typescript/templates/utils/retry.ts.jinja +2 -0
  800. django_cfg/modules/django_client/core/generator/typescript/templates/utils/schema.ts.jinja +2 -0
  801. django_cfg/modules/django_client/core/generator/typescript/templates/utils/storage.ts.jinja +5 -0
  802. django_cfg/modules/django_client/core/generator/typescript/templates/utils/validation-events.ts.jinja +135 -0
  803. django_cfg/modules/django_client/core/groups/manager.py +113 -22
  804. django_cfg/modules/django_client/core/ir/context.py +14 -0
  805. django_cfg/modules/django_client/core/ir/schema.py +81 -2
  806. django_cfg/modules/django_client/core/parser/base.py +249 -15
  807. django_cfg/modules/django_client/core/parser/openapi30.py +26 -1
  808. django_cfg/modules/django_client/core/parser/openapi31.py +26 -1
  809. django_cfg/modules/django_client/core/validation/checker.py +23 -1
  810. django_cfg/modules/django_client/core/validation/rules/__init__.py +2 -0
  811. django_cfg/modules/django_client/core/validation/rules/dict_field.py +283 -0
  812. django_cfg/modules/django_client/core/validation/safety.py +4 -4
  813. django_cfg/modules/django_client/generate_client/__init__.py +52 -0
  814. django_cfg/modules/django_client/generate_client/config.py +120 -0
  815. django_cfg/modules/django_client/generate_client/generators/__init__.py +12 -0
  816. django_cfg/modules/django_client/generate_client/generators/external.py +246 -0
  817. django_cfg/modules/django_client/generate_client/generators/internal.py +200 -0
  818. django_cfg/modules/django_client/generate_client/orchestrator.py +566 -0
  819. django_cfg/modules/django_client/generate_client/utils/__init__.py +9 -0
  820. django_cfg/modules/django_client/generate_client/utils/nextjs.py +214 -0
  821. django_cfg/modules/django_client/generate_client/utils/schema.py +97 -0
  822. django_cfg/modules/django_client/generate_client/utils/typescript.py +104 -0
  823. django_cfg/modules/django_client/management/commands/generate_client.py +164 -291
  824. django_cfg/modules/django_client/management/commands/validate_openapi.py +5 -2
  825. django_cfg/modules/django_client/urls.py +38 -5
  826. django_cfg/modules/django_currency/__init__.py +8 -102
  827. django_cfg/modules/django_currency/admin.py +97 -0
  828. django_cfg/modules/django_currency/fields.py +145 -0
  829. django_cfg/modules/django_email/__init__.py +9 -1
  830. django_cfg/modules/django_email/management/commands/test_email.py +4 -10
  831. django_cfg/modules/django_email/service.py +117 -54
  832. django_cfg/modules/django_email/utils.py +167 -1
  833. django_cfg/modules/django_health/service.py +2 -1
  834. django_cfg/modules/django_import_export/README.md +19 -1
  835. django_cfg/modules/django_import_export/__init__.py +8 -0
  836. django_cfg/modules/django_import_export/apps.py +16 -0
  837. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_export.html +6 -0
  838. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_export_item.html +7 -0
  839. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import.html +6 -0
  840. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import_export.html +39 -0
  841. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import_item.html +7 -0
  842. django_cfg/modules/django_llm/llm/__init__.py +33 -2
  843. django_cfg/modules/django_llm/llm/cache_dirs.py +119 -0
  844. django_cfg/modules/django_llm/llm/client.py +8 -0
  845. django_cfg/modules/django_llm/llm/models_cache.py +5 -22
  846. django_cfg/modules/django_llm/llm/vision/__init__.py +21 -0
  847. django_cfg/modules/django_llm/llm/vision/client.py +572 -0
  848. django_cfg/modules/django_llm/llm/vision/image_encoder.py +198 -0
  849. django_cfg/modules/django_llm/llm/vision/models.py +103 -0
  850. django_cfg/modules/django_llm/llm/vision/vision_models.py +370 -0
  851. django_cfg/modules/django_llm_monitoring/README.md +872 -0
  852. django_cfg/modules/django_llm_monitoring/__init__.py +24 -0
  853. django_cfg/modules/django_llm_monitoring/apps.py +11 -0
  854. django_cfg/modules/django_llm_monitoring/balance_checker.py +90 -0
  855. django_cfg/modules/django_llm_monitoring/management/__init__.py +1 -0
  856. django_cfg/modules/django_llm_monitoring/management/commands/__init__.py +1 -0
  857. django_cfg/modules/django_llm_monitoring/management/commands/check_llm_balance.py +143 -0
  858. django_cfg/modules/django_llm_monitoring/models.py +64 -0
  859. django_cfg/modules/django_llm_monitoring/notifier.py +285 -0
  860. django_cfg/modules/django_llm_monitoring/providers/__init__.py +15 -0
  861. django_cfg/modules/django_llm_monitoring/providers/base.py +109 -0
  862. django_cfg/modules/django_llm_monitoring/providers/openai.py +126 -0
  863. django_cfg/modules/django_llm_monitoring/providers/openrouter.py +128 -0
  864. django_cfg/modules/django_logging/__init__.py +2 -0
  865. django_cfg/modules/django_logging/django_logger.py +238 -58
  866. django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py +17 -14
  867. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +26 -11
  868. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +2 -2
  869. django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +10 -4
  870. django_cfg/modules/django_telegram/__init__.py +2 -0
  871. django_cfg/modules/django_telegram/management/commands/test_telegram.py +4 -11
  872. django_cfg/modules/django_telegram/service.py +289 -42
  873. django_cfg/modules/django_unfold/__init__.py +5 -24
  874. django_cfg/modules/django_unfold/forms/EXAMPLE.md +48 -0
  875. django_cfg/modules/django_unfold/forms/__init__.py +5 -0
  876. django_cfg/modules/django_unfold/forms/auth.py +48 -0
  877. django_cfg/modules/django_unfold/models/__init__.py +0 -23
  878. django_cfg/modules/django_unfold/models/config.py +149 -136
  879. django_cfg/modules/django_unfold/models/navigation.py +1 -1
  880. django_cfg/modules/django_unfold/navigation.py +338 -0
  881. django_cfg/modules/django_unfold/tailwind.py +29 -79
  882. django_cfg/modules/nextjs_admin/__init__.py +12 -0
  883. django_cfg/modules/nextjs_admin/apps.py +12 -0
  884. django_cfg/modules/nextjs_admin/models/__init__.py +5 -0
  885. django_cfg/modules/nextjs_admin/models/config.py +191 -0
  886. django_cfg/modules/nextjs_admin/templatetags/__init__.py +1 -0
  887. django_cfg/modules/nextjs_admin/templatetags/nextjs_admin.py +164 -0
  888. django_cfg/modules/nextjs_admin/urls.py +19 -0
  889. django_cfg/modules/nextjs_admin/views.py +283 -0
  890. django_cfg/pyproject.toml +394 -41
  891. django_cfg/registry/core.py +26 -3
  892. django_cfg/registry/modules.py +19 -2
  893. django_cfg/registry/services.py +10 -6
  894. django_cfg/registry/third_party.py +0 -9
  895. django_cfg/requirements.txt +52 -0
  896. django_cfg/routing/callbacks.py +1 -43
  897. django_cfg/static/admin/css/constance.css +44 -0
  898. django_cfg/static/admin/css/dashboard.css +6 -170
  899. django_cfg/static/admin/css/layout.css +21 -0
  900. django_cfg/static/admin/css/tabs.css +95 -0
  901. django_cfg/static/admin/css/theme.css +110 -0
  902. django_cfg/templates/TAILWIND.md +170 -0
  903. django_cfg/templates/admin/DUAL_TAB_ARCHITECTURE.md +561 -0
  904. django_cfg/templates/admin/base_site.html +8 -0
  905. django_cfg/templates/admin/constance/includes/results_list.html +68 -11
  906. django_cfg/templates/admin/index.html +813 -61
  907. django_cfg/templates/unfold/layouts/skeleton.html +27 -0
  908. django_cfg/templatetags/django_cfg.py +380 -0
  909. django_cfg/testing/README.md +278 -0
  910. django_cfg/testing/SMART_MIGRATION_MANAGER.md +396 -0
  911. django_cfg/testing/TEST_DB_COMMAND.md +331 -0
  912. django_cfg/testing/__init__.py +14 -0
  913. django_cfg/testing/runners.py +320 -0
  914. django_cfg/utils/__init__.py +5 -1
  915. django_cfg/utils/pool_monitor.py +320 -0
  916. django_cfg/utils/smart_defaults.py +235 -9
  917. django_cfg-1.5.181.dist-info/METADATA +388 -0
  918. django_cfg-1.5.181.dist-info/RECORD +1182 -0
  919. django_cfg-1.5.181.dist-info/WHEEL +4 -0
  920. django_cfg/apps/accounts/README.md +0 -333
  921. django_cfg/apps/accounts/__models.py +0 -286
  922. django_cfg/apps/accounts/admin/__init__.py +0 -45
  923. django_cfg/apps/accounts/admin/filters.py +0 -175
  924. django_cfg/apps/accounts/admin/inlines.py +0 -177
  925. django_cfg/apps/accounts/admin/resources.py +0 -376
  926. django_cfg/apps/accounts/admin/twilio_admin.py +0 -270
  927. django_cfg/apps/accounts/admin/user_admin.py +0 -308
  928. django_cfg/apps/accounts/apps.py +0 -19
  929. django_cfg/apps/accounts/management/commands/otp_test.py +0 -203
  930. django_cfg/apps/accounts/managers/user_manager.py +0 -299
  931. django_cfg/apps/accounts/migrations/0001_initial.py +0 -119
  932. django_cfg/apps/accounts/models/__init__.py +0 -67
  933. django_cfg/apps/accounts/models/choices.py +0 -32
  934. django_cfg/apps/accounts/models/integrations.py +0 -75
  935. django_cfg/apps/accounts/models/user.py +0 -81
  936. django_cfg/apps/accounts/serializers/__init__.py +0 -20
  937. django_cfg/apps/accounts/serializers/otp.py +0 -134
  938. django_cfg/apps/accounts/serializers/profile.py +0 -169
  939. django_cfg/apps/accounts/serializers/webhook.py +0 -94
  940. django_cfg/apps/accounts/services/otp_service.py +0 -205
  941. django_cfg/apps/accounts/signals.py +0 -147
  942. django_cfg/apps/accounts/urls.py +0 -49
  943. django_cfg/apps/accounts/utils/notifications.py +0 -381
  944. django_cfg/apps/accounts/views/otp.py +0 -168
  945. django_cfg/apps/accounts/views/profile.py +0 -165
  946. django_cfg/apps/accounts/views/webhook.py +0 -263
  947. django_cfg/apps/agents/README.md +0 -129
  948. django_cfg/apps/agents/__init__.py +0 -68
  949. django_cfg/apps/agents/admin/__init__.py +0 -29
  950. django_cfg/apps/agents/admin/execution_admin.py +0 -692
  951. django_cfg/apps/agents/admin/registry_admin.py +0 -462
  952. django_cfg/apps/agents/admin/toolsets_admin.py +0 -633
  953. django_cfg/apps/agents/apps.py +0 -29
  954. django_cfg/apps/agents/core/__init__.py +0 -20
  955. django_cfg/apps/agents/core/dependencies.py +0 -155
  956. django_cfg/apps/agents/core/django_agent.py +0 -223
  957. django_cfg/apps/agents/core/exceptions.py +0 -80
  958. django_cfg/apps/agents/core/models.py +0 -107
  959. django_cfg/apps/agents/core/orchestrator.py +0 -406
  960. django_cfg/apps/agents/examples/__init__.py +0 -3
  961. django_cfg/apps/agents/examples/simple_example.py +0 -166
  962. django_cfg/apps/agents/integration/__init__.py +0 -14
  963. django_cfg/apps/agents/integration/middleware.py +0 -81
  964. django_cfg/apps/agents/integration/registry.py +0 -348
  965. django_cfg/apps/agents/integration/signals.py +0 -50
  966. django_cfg/apps/agents/management/__init__.py +0 -3
  967. django_cfg/apps/agents/management/commands/__init__.py +0 -3
  968. django_cfg/apps/agents/management/commands/create_agent.py +0 -366
  969. django_cfg/apps/agents/management/commands/orchestrator_status.py +0 -192
  970. django_cfg/apps/agents/managers/__init__.py +0 -28
  971. django_cfg/apps/agents/managers/execution.py +0 -237
  972. django_cfg/apps/agents/managers/registry.py +0 -255
  973. django_cfg/apps/agents/managers/toolsets.py +0 -497
  974. django_cfg/apps/agents/migrations/0001_initial.py +0 -287
  975. django_cfg/apps/agents/migrations/__init__.py +0 -5
  976. django_cfg/apps/agents/models/__init__.py +0 -15
  977. django_cfg/apps/agents/models/execution.py +0 -216
  978. django_cfg/apps/agents/models/registry.py +0 -221
  979. django_cfg/apps/agents/models/toolsets.py +0 -306
  980. django_cfg/apps/agents/patterns/__init__.py +0 -24
  981. django_cfg/apps/agents/patterns/content_agents.py +0 -235
  982. django_cfg/apps/agents/toolsets/__init__.py +0 -15
  983. django_cfg/apps/agents/toolsets/cache_toolset.py +0 -286
  984. django_cfg/apps/agents/toolsets/django_toolset.py +0 -221
  985. django_cfg/apps/agents/toolsets/file_toolset.py +0 -325
  986. django_cfg/apps/agents/toolsets/orm_toolset.py +0 -320
  987. django_cfg/apps/agents/urls.py +0 -47
  988. django_cfg/apps/agents/urls_admin.py +0 -12
  989. django_cfg/apps/api/endpoints/drf_views.py +0 -55
  990. django_cfg/apps/ipc/README.md +0 -346
  991. django_cfg/apps/ipc/__init__.py +0 -51
  992. django_cfg/apps/ipc/apps.py +0 -28
  993. django_cfg/apps/ipc/serializers/__init__.py +0 -19
  994. django_cfg/apps/ipc/serializers/serializers.py +0 -229
  995. django_cfg/apps/ipc/services/__init__.py +0 -7
  996. django_cfg/apps/ipc/services/client/__init__.py +0 -23
  997. django_cfg/apps/ipc/services/client/client.py +0 -542
  998. django_cfg/apps/ipc/services/client/config.py +0 -214
  999. django_cfg/apps/ipc/services/client/exceptions.py +0 -201
  1000. django_cfg/apps/ipc/services/monitor.py +0 -464
  1001. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard.mjs +0 -441
  1002. django_cfg/apps/ipc/templates/django_cfg_ipc/base.html +0 -71
  1003. django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html +0 -202
  1004. django_cfg/apps/ipc/urls.py +0 -21
  1005. django_cfg/apps/ipc/urls_admin.py +0 -20
  1006. django_cfg/apps/ipc/views/__init__.py +0 -8
  1007. django_cfg/apps/ipc/views/dashboard.py +0 -15
  1008. django_cfg/apps/ipc/views/viewsets.py +0 -245
  1009. django_cfg/apps/knowbase/README.md +0 -150
  1010. django_cfg/apps/knowbase/__init__.py +0 -27
  1011. django_cfg/apps/knowbase/admin/__init__.py +0 -37
  1012. django_cfg/apps/knowbase/admin/archive_admin.py +0 -767
  1013. django_cfg/apps/knowbase/admin/chat_admin.py +0 -604
  1014. django_cfg/apps/knowbase/admin/document_admin.py +0 -699
  1015. django_cfg/apps/knowbase/admin/external_data_admin.py +0 -543
  1016. django_cfg/apps/knowbase/apps.py +0 -81
  1017. django_cfg/apps/knowbase/config/README.md +0 -176
  1018. django_cfg/apps/knowbase/config/__init__.py +0 -52
  1019. django_cfg/apps/knowbase/config/constance_fields.py +0 -188
  1020. django_cfg/apps/knowbase/config/constance_settings.py +0 -201
  1021. django_cfg/apps/knowbase/config/settings.py +0 -468
  1022. django_cfg/apps/knowbase/examples/__init__.py +0 -3
  1023. django_cfg/apps/knowbase/examples/external_data_usage.py +0 -194
  1024. django_cfg/apps/knowbase/management/commands/knowbase_stats.py +0 -159
  1025. django_cfg/apps/knowbase/management/commands/setup_knowbase.py +0 -57
  1026. django_cfg/apps/knowbase/managers/__init__.py +0 -22
  1027. django_cfg/apps/knowbase/managers/archive.py +0 -427
  1028. django_cfg/apps/knowbase/managers/base.py +0 -32
  1029. django_cfg/apps/knowbase/managers/chat.py +0 -142
  1030. django_cfg/apps/knowbase/managers/document.py +0 -203
  1031. django_cfg/apps/knowbase/managers/external_data.py +0 -472
  1032. django_cfg/apps/knowbase/migrations/0001_initial.py +0 -428
  1033. django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -435
  1034. django_cfg/apps/knowbase/migrations/0003_alter_documentarchive_archive_type.py +0 -29
  1035. django_cfg/apps/knowbase/migrations/__init__.py +0 -5
  1036. django_cfg/apps/knowbase/mixins/__init__.py +0 -32
  1037. django_cfg/apps/knowbase/mixins/config/__init__.py +0 -14
  1038. django_cfg/apps/knowbase/mixins/config/defaults.py +0 -75
  1039. django_cfg/apps/knowbase/mixins/config/meta_config.py +0 -120
  1040. django_cfg/apps/knowbase/mixins/config.py +0 -109
  1041. django_cfg/apps/knowbase/mixins/creator.py +0 -81
  1042. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -200
  1043. django_cfg/apps/knowbase/mixins/external_data_mixin.py +0 -516
  1044. django_cfg/apps/knowbase/mixins/generators/__init__.py +0 -16
  1045. django_cfg/apps/knowbase/mixins/generators/content_generator.py +0 -218
  1046. django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +0 -76
  1047. django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +0 -124
  1048. django_cfg/apps/knowbase/mixins/service.py +0 -364
  1049. django_cfg/apps/knowbase/models/__init__.py +0 -41
  1050. django_cfg/apps/knowbase/models/archive.py +0 -599
  1051. django_cfg/apps/knowbase/models/base.py +0 -57
  1052. django_cfg/apps/knowbase/models/chat.py +0 -158
  1053. django_cfg/apps/knowbase/models/document.py +0 -269
  1054. django_cfg/apps/knowbase/models/external_data.py +0 -370
  1055. django_cfg/apps/knowbase/serializers/__init__.py +0 -68
  1056. django_cfg/apps/knowbase/serializers/archive_serializers.py +0 -394
  1057. django_cfg/apps/knowbase/serializers/chat_serializers.py +0 -138
  1058. django_cfg/apps/knowbase/serializers/document_serializers.py +0 -95
  1059. django_cfg/apps/knowbase/serializers/external_data_serializers.py +0 -256
  1060. django_cfg/apps/knowbase/serializers/public_serializers.py +0 -75
  1061. django_cfg/apps/knowbase/services/__init__.py +0 -40
  1062. django_cfg/apps/knowbase/services/archive/__init__.py +0 -43
  1063. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +0 -17
  1064. django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +0 -33
  1065. django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +0 -36
  1066. django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +0 -39
  1067. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +0 -103
  1068. django_cfg/apps/knowbase/services/archive/archive_service.py +0 -538
  1069. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +0 -19
  1070. django_cfg/apps/knowbase/services/archive/chunking/base.py +0 -82
  1071. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +0 -63
  1072. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +0 -108
  1073. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +0 -249
  1074. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +0 -71
  1075. django_cfg/apps/knowbase/services/archive/chunking_service.py +0 -168
  1076. django_cfg/apps/knowbase/services/archive/context/__init__.py +0 -14
  1077. django_cfg/apps/knowbase/services/archive/context/builders.py +0 -221
  1078. django_cfg/apps/knowbase/services/archive/context/models.py +0 -39
  1079. django_cfg/apps/knowbase/services/archive/exceptions.py +0 -52
  1080. django_cfg/apps/knowbase/services/archive/extraction_service.py +0 -509
  1081. django_cfg/apps/knowbase/services/archive/vectorization_service.py +0 -365
  1082. django_cfg/apps/knowbase/services/base.py +0 -55
  1083. django_cfg/apps/knowbase/services/chat_service.py +0 -240
  1084. django_cfg/apps/knowbase/services/document_service.py +0 -145
  1085. django_cfg/apps/knowbase/services/embedding/__init__.py +0 -43
  1086. django_cfg/apps/knowbase/services/embedding/async_processor.py +0 -242
  1087. django_cfg/apps/knowbase/services/embedding/batch_processor.py +0 -253
  1088. django_cfg/apps/knowbase/services/embedding/batch_result.py +0 -62
  1089. django_cfg/apps/knowbase/services/embedding/models.py +0 -234
  1090. django_cfg/apps/knowbase/services/embedding/processors.py +0 -152
  1091. django_cfg/apps/knowbase/services/embedding/utils.py +0 -176
  1092. django_cfg/apps/knowbase/services/prompt_builder.py +0 -192
  1093. django_cfg/apps/knowbase/services/search_service.py +0 -374
  1094. django_cfg/apps/knowbase/signals/__init__.py +0 -18
  1095. django_cfg/apps/knowbase/signals/archive_signals.py +0 -212
  1096. django_cfg/apps/knowbase/signals/chat_signals.py +0 -38
  1097. django_cfg/apps/knowbase/signals/document_signals.py +0 -143
  1098. django_cfg/apps/knowbase/signals/external_data_signals.py +0 -157
  1099. django_cfg/apps/knowbase/tasks/__init__.py +0 -38
  1100. django_cfg/apps/knowbase/tasks/archive_tasks.py +0 -316
  1101. django_cfg/apps/knowbase/tasks/document_processing.py +0 -354
  1102. django_cfg/apps/knowbase/tasks/external_data_tasks.py +0 -343
  1103. django_cfg/apps/knowbase/tasks/maintenance.py +0 -197
  1104. django_cfg/apps/knowbase/urls.py +0 -23
  1105. django_cfg/apps/knowbase/urls_admin.py +0 -26
  1106. django_cfg/apps/knowbase/urls_system.py +0 -25
  1107. django_cfg/apps/knowbase/utils/__init__.py +0 -12
  1108. django_cfg/apps/knowbase/utils/chunk_settings.py +0 -263
  1109. django_cfg/apps/knowbase/utils/text_processing.py +0 -376
  1110. django_cfg/apps/knowbase/utils/validation.py +0 -99
  1111. django_cfg/apps/knowbase/views/__init__.py +0 -28
  1112. django_cfg/apps/knowbase/views/archive_views.py +0 -472
  1113. django_cfg/apps/knowbase/views/base.py +0 -46
  1114. django_cfg/apps/knowbase/views/chat_views.py +0 -197
  1115. django_cfg/apps/knowbase/views/document_views.py +0 -183
  1116. django_cfg/apps/knowbase/views/public_views.py +0 -129
  1117. django_cfg/apps/leads/README.md +0 -113
  1118. django_cfg/apps/leads/admin/__init__.py +0 -11
  1119. django_cfg/apps/leads/admin/actions.py +0 -29
  1120. django_cfg/apps/leads/admin/leads_admin.py +0 -255
  1121. django_cfg/apps/leads/admin/resources.py +0 -119
  1122. django_cfg/apps/leads/admin.py +0 -68
  1123. django_cfg/apps/leads/apps.py +0 -16
  1124. django_cfg/apps/leads/migrations/0001_initial.py +0 -127
  1125. django_cfg/apps/leads/models.py +0 -86
  1126. django_cfg/apps/leads/serializers.py +0 -48
  1127. django_cfg/apps/leads/signals.py +0 -67
  1128. django_cfg/apps/leads/tests.py +0 -271
  1129. django_cfg/apps/leads/urls.py +0 -19
  1130. django_cfg/apps/leads/urls_admin.py +0 -12
  1131. django_cfg/apps/leads/views.py +0 -91
  1132. django_cfg/apps/maintenance/__init__.py +0 -56
  1133. django_cfg/apps/maintenance/admin/__init__.py +0 -17
  1134. django_cfg/apps/maintenance/admin/actions.py +0 -159
  1135. django_cfg/apps/maintenance/admin/api_key_admin.py +0 -211
  1136. django_cfg/apps/maintenance/admin/log_admin.py +0 -208
  1137. django_cfg/apps/maintenance/admin/scheduled_admin.py +0 -226
  1138. django_cfg/apps/maintenance/admin/site_admin.py +0 -286
  1139. django_cfg/apps/maintenance/apps.py +0 -18
  1140. django_cfg/apps/maintenance/management/commands/maintenance.py +0 -262
  1141. django_cfg/apps/maintenance/management/commands/process_scheduled_maintenance.py +0 -241
  1142. django_cfg/apps/maintenance/management/commands/sync_cloudflare.py +0 -209
  1143. django_cfg/apps/maintenance/managers/__init__.py +0 -15
  1144. django_cfg/apps/maintenance/managers/cloudflare_site_manager.py +0 -193
  1145. django_cfg/apps/maintenance/managers/maintenance_log_manager.py +0 -152
  1146. django_cfg/apps/maintenance/migrations/0001_initial.py +0 -380
  1147. django_cfg/apps/maintenance/migrations/0002_cloudflaresite_maintenance_url.py +0 -21
  1148. django_cfg/apps/maintenance/migrations/0003_cloudflaresite_include_subdomains_and_more.py +0 -27
  1149. django_cfg/apps/maintenance/models/__init__.py +0 -29
  1150. django_cfg/apps/maintenance/models/cloudflare_api_key.py +0 -109
  1151. django_cfg/apps/maintenance/models/cloudflare_site.py +0 -168
  1152. django_cfg/apps/maintenance/models/maintenance_log.py +0 -132
  1153. django_cfg/apps/maintenance/models/scheduled_maintenance.py +0 -308
  1154. django_cfg/apps/maintenance/services/__init__.py +0 -42
  1155. django_cfg/apps/maintenance/services/bulk_operations_service.py +0 -400
  1156. django_cfg/apps/maintenance/services/maintenance_service.py +0 -320
  1157. django_cfg/apps/maintenance/services/scheduled_maintenance_service.py +0 -381
  1158. django_cfg/apps/maintenance/services/site_sync_service.py +0 -434
  1159. django_cfg/apps/maintenance/urls.py +0 -12
  1160. django_cfg/apps/maintenance/urls_admin.py +0 -12
  1161. django_cfg/apps/maintenance/utils/__init__.py +0 -12
  1162. django_cfg/apps/maintenance/utils/retry_utils.py +0 -109
  1163. django_cfg/apps/newsletter/README.md +0 -92
  1164. django_cfg/apps/newsletter/admin/__init__.py +0 -35
  1165. django_cfg/apps/newsletter/admin/filters.py +0 -124
  1166. django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -814
  1167. django_cfg/apps/newsletter/admin/resources.py +0 -241
  1168. django_cfg/apps/newsletter/admin.py +0 -241
  1169. django_cfg/apps/newsletter/admin_filters.py +0 -124
  1170. django_cfg/apps/newsletter/apps.py +0 -22
  1171. django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -139
  1172. django_cfg/apps/newsletter/managers/README.md +0 -120
  1173. django_cfg/apps/newsletter/managers/__init__.py +0 -1
  1174. django_cfg/apps/newsletter/migrations/0001_initial.py +0 -100
  1175. django_cfg/apps/newsletter/migrations/__init__.py +0 -0
  1176. django_cfg/apps/newsletter/models.py +0 -260
  1177. django_cfg/apps/newsletter/serializers.py +0 -154
  1178. django_cfg/apps/newsletter/services/email_service.py +0 -392
  1179. django_cfg/apps/newsletter/signals.py +0 -76
  1180. django_cfg/apps/newsletter/urls.py +0 -41
  1181. django_cfg/apps/newsletter/urls_admin.py +0 -12
  1182. django_cfg/apps/newsletter/utils/__init__.py +0 -1
  1183. django_cfg/apps/newsletter/views/__init__.py +0 -42
  1184. django_cfg/apps/newsletter/views/campaigns.py +0 -138
  1185. django_cfg/apps/newsletter/views/emails.py +0 -129
  1186. django_cfg/apps/newsletter/views/newsletters.py +0 -44
  1187. django_cfg/apps/newsletter/views/subscriptions.py +0 -146
  1188. django_cfg/apps/newsletter/views/tracking.py +0 -75
  1189. django_cfg/apps/payments/CONFIGURATION.md +0 -280
  1190. django_cfg/apps/payments/__init__.py +0 -14
  1191. django_cfg/apps/payments/admin/__init__.py +0 -35
  1192. django_cfg/apps/payments/admin/actions.py +0 -17
  1193. django_cfg/apps/payments/admin/balance_actions.py +0 -18
  1194. django_cfg/apps/payments/admin/balance_admin.py +0 -385
  1195. django_cfg/apps/payments/admin/currency_admin.py +0 -130
  1196. django_cfg/apps/payments/admin/filters.py +0 -196
  1197. django_cfg/apps/payments/admin/payment_actions.py +0 -65
  1198. django_cfg/apps/payments/admin/payment_admin.py +0 -313
  1199. django_cfg/apps/payments/admin/withdrawal_actions.py +0 -61
  1200. django_cfg/apps/payments/admin/withdrawal_admin.py +0 -355
  1201. django_cfg/apps/payments/api/__init__.py +0 -5
  1202. django_cfg/apps/payments/api/serializers.py +0 -223
  1203. django_cfg/apps/payments/api/urls.py +0 -38
  1204. django_cfg/apps/payments/api/views.py +0 -397
  1205. django_cfg/apps/payments/apps.py +0 -23
  1206. django_cfg/apps/payments/config.py +0 -104
  1207. django_cfg/apps/payments/management/README.md +0 -375
  1208. django_cfg/apps/payments/management/__init__.py +0 -0
  1209. django_cfg/apps/payments/management/commands/__init__.py +0 -0
  1210. django_cfg/apps/payments/management/commands/check_payment_status.py +0 -290
  1211. django_cfg/apps/payments/management/commands/create_payment.py +0 -346
  1212. django_cfg/apps/payments/management/commands/sync_currencies.py +0 -254
  1213. django_cfg/apps/payments/migrations/0001_initial.py +0 -159
  1214. django_cfg/apps/payments/migrations/__init__.py +0 -0
  1215. django_cfg/apps/payments/models/__init__.py +0 -23
  1216. django_cfg/apps/payments/models/balance.py +0 -255
  1217. django_cfg/apps/payments/models/base.py +0 -84
  1218. django_cfg/apps/payments/models/currency.py +0 -123
  1219. django_cfg/apps/payments/models/managers/__init__.py +0 -25
  1220. django_cfg/apps/payments/models/managers/balance_managers.py +0 -421
  1221. django_cfg/apps/payments/models/managers/payment_managers.py +0 -412
  1222. django_cfg/apps/payments/models/payment.py +0 -362
  1223. django_cfg/apps/payments/models/withdrawal.py +0 -331
  1224. django_cfg/apps/payments/services/__init__.py +0 -41
  1225. django_cfg/apps/payments/services/balance_service.py +0 -214
  1226. django_cfg/apps/payments/services/payment_service.py +0 -514
  1227. django_cfg/apps/payments/services/providers/__init__.py +0 -17
  1228. django_cfg/apps/payments/services/providers/models.py +0 -86
  1229. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +0 -16
  1230. django_cfg/apps/payments/services/providers/nowpayments/config.py +0 -135
  1231. django_cfg/apps/payments/services/providers/nowpayments/parser.py +0 -206
  1232. django_cfg/apps/payments/services/providers/nowpayments/provider.py +0 -347
  1233. django_cfg/apps/payments/urls.py +0 -14
  1234. django_cfg/apps/support/__init__.py +0 -0
  1235. django_cfg/apps/support/admin/__init__.py +0 -19
  1236. django_cfg/apps/support/admin/actions.py +0 -35
  1237. django_cfg/apps/support/admin/filters.py +0 -71
  1238. django_cfg/apps/support/admin/resources.py +0 -183
  1239. django_cfg/apps/support/admin/support_admin.py +0 -396
  1240. django_cfg/apps/support/admin.py +0 -197
  1241. django_cfg/apps/support/admin_filters.py +0 -71
  1242. django_cfg/apps/support/apps.py +0 -11
  1243. django_cfg/apps/support/managers/message_manager.py +0 -34
  1244. django_cfg/apps/support/managers/ticket_manager.py +0 -68
  1245. django_cfg/apps/support/migrations/0001_initial.py +0 -94
  1246. django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -23
  1247. django_cfg/apps/support/migrations/__init__.py +0 -0
  1248. django_cfg/apps/support/models.py +0 -68
  1249. django_cfg/apps/support/serializers.py +0 -43
  1250. django_cfg/apps/support/signals.py +0 -86
  1251. django_cfg/apps/support/templates/support/chat/access_denied.html +0 -21
  1252. django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -210
  1253. django_cfg/apps/support/urls.py +0 -24
  1254. django_cfg/apps/support/urls_admin.py +0 -12
  1255. django_cfg/apps/support/utils/__init__.py +0 -0
  1256. django_cfg/apps/support/utils/support_email_service.py +0 -124
  1257. django_cfg/apps/support/views/__init__.py +0 -20
  1258. django_cfg/apps/support/views/admin.py +0 -50
  1259. django_cfg/apps/support/views/api.py +0 -169
  1260. django_cfg/apps/support/views/chat.py +0 -108
  1261. django_cfg/apps/tasks/__init__.py +0 -5
  1262. django_cfg/apps/tasks/admin/__init__.py +0 -11
  1263. django_cfg/apps/tasks/admin/actions.py +0 -29
  1264. django_cfg/apps/tasks/admin/tasks_admin.py +0 -154
  1265. django_cfg/apps/tasks/apps.py +0 -17
  1266. django_cfg/apps/tasks/serializers.py +0 -82
  1267. django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -120
  1268. django_cfg/apps/tasks/static/tasks/js/api.js +0 -100
  1269. django_cfg/apps/tasks/static/tasks/js/components/DataManager.js +0 -24
  1270. django_cfg/apps/tasks/static/tasks/js/components/TabManager.js +0 -85
  1271. django_cfg/apps/tasks/static/tasks/js/components/TaskRenderer.js +0 -216
  1272. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +0 -269
  1273. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +0 -125
  1274. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +0 -122
  1275. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +0 -352
  1276. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +0 -171
  1277. django_cfg/apps/tasks/tasks/__init__.py +0 -10
  1278. django_cfg/apps/tasks/tasks/demo_tasks.py +0 -134
  1279. django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -50
  1280. django_cfg/apps/tasks/templates/tasks/components/overview_content.html +0 -69
  1281. django_cfg/apps/tasks/templates/tasks/components/queues_content.html +0 -19
  1282. django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -33
  1283. django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +0 -51
  1284. django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html +0 -269
  1285. django_cfg/apps/tasks/templates/tasks/components/workers_content.html +0 -30
  1286. django_cfg/apps/tasks/templates/tasks/layout/base.html +0 -22
  1287. django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html +0 -168
  1288. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +0 -101
  1289. django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +0 -40
  1290. django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +0 -37
  1291. django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +0 -41
  1292. django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +0 -50
  1293. django_cfg/apps/tasks/urls.py +0 -22
  1294. django_cfg/apps/tasks/urls_admin.py +0 -15
  1295. django_cfg/apps/tasks/utils/__init__.py +0 -1
  1296. django_cfg/apps/tasks/utils/simulator.py +0 -353
  1297. django_cfg/apps/tasks/views/__init__.py +0 -16
  1298. django_cfg/apps/tasks/views/api.py +0 -571
  1299. django_cfg/apps/tasks/views/dashboard.py +0 -89
  1300. django_cfg/core/generation/integration_generators/tasks.py +0 -92
  1301. django_cfg/management/commands/rundramatiq.py +0 -24
  1302. django_cfg/management/commands/rundramatiq_simulator.py +0 -22
  1303. django_cfg/management/commands/task_clear.py +0 -25
  1304. django_cfg/management/commands/task_status.py +0 -24
  1305. django_cfg/management/commands/test_twilio.py +0 -24
  1306. django_cfg/models/django/revolution_legacy.py +0 -223
  1307. django_cfg/models/tasks/__init__.py +0 -51
  1308. django_cfg/models/tasks/backends.py +0 -251
  1309. django_cfg/models/tasks/config.py +0 -316
  1310. django_cfg/models/tasks/utils.py +0 -174
  1311. django_cfg/modules/django_admin/base/pydantic_admin.py +0 -274
  1312. django_cfg/modules/django_admin/config/field_config.py +0 -197
  1313. django_cfg/modules/django_admin/utils/badges.py +0 -171
  1314. django_cfg/modules/django_admin/utils/displays.py +0 -203
  1315. django_cfg/modules/django_client/core/archive/manager.py +0 -134
  1316. django_cfg/modules/django_client/system/__init__.py +0 -24
  1317. django_cfg/modules/django_client/system/base_generator.py +0 -123
  1318. django_cfg/modules/django_client/system/generate_mjs_clients.py +0 -174
  1319. django_cfg/modules/django_client/system/mjs_generator.py +0 -219
  1320. django_cfg/modules/django_client/system/schema_parser.py +0 -195
  1321. django_cfg/modules/django_client/system/templates/api_client.js.j2 +0 -87
  1322. django_cfg/modules/django_client/system/templates/app_index.js.j2 +0 -13
  1323. django_cfg/modules/django_client/system/templates/base_client.js.j2 +0 -166
  1324. django_cfg/modules/django_client/system/templates/main_index.js.j2 +0 -80
  1325. django_cfg/modules/django_client/system/templates/types.js.j2 +0 -24
  1326. django_cfg/modules/django_currency/README.md +0 -169
  1327. django_cfg/modules/django_currency/clients/__init__.py +0 -11
  1328. django_cfg/modules/django_currency/clients/coinpaprika_client.py +0 -289
  1329. django_cfg/modules/django_currency/clients/hybrid_client.py +0 -588
  1330. django_cfg/modules/django_currency/core/__init__.py +0 -30
  1331. django_cfg/modules/django_currency/core/converter.py +0 -165
  1332. django_cfg/modules/django_currency/core/exceptions.py +0 -28
  1333. django_cfg/modules/django_currency/core/models.py +0 -166
  1334. django_cfg/modules/django_currency/database/__init__.py +0 -25
  1335. django_cfg/modules/django_currency/database/database_loader.py +0 -438
  1336. django_cfg/modules/django_currency/examples/__init__.py +0 -3
  1337. django_cfg/modules/django_currency/examples/example_database_usage.py +0 -145
  1338. django_cfg/modules/django_currency/utils/__init__.py +0 -9
  1339. django_cfg/modules/django_currency/utils/cache.py +0 -91
  1340. django_cfg/modules/django_dashboard/__init__.py +0 -23
  1341. django_cfg/modules/django_dashboard/components.py +0 -312
  1342. django_cfg/modules/django_dashboard/debug.py +0 -174
  1343. django_cfg/modules/django_dashboard/management/__init__.py +0 -0
  1344. django_cfg/modules/django_dashboard/management/commands/__init__.py +0 -0
  1345. django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +0 -109
  1346. django_cfg/modules/django_dashboard/sections/__init__.py +0 -1
  1347. django_cfg/modules/django_dashboard/sections/base.py +0 -129
  1348. django_cfg/modules/django_dashboard/sections/commands.py +0 -33
  1349. django_cfg/modules/django_dashboard/sections/documentation.py +0 -393
  1350. django_cfg/modules/django_dashboard/sections/overview.py +0 -398
  1351. django_cfg/modules/django_dashboard/sections/stats.py +0 -48
  1352. django_cfg/modules/django_dashboard/sections/system.py +0 -74
  1353. django_cfg/modules/django_logging/FIXES_SUMMARY.md +0 -276
  1354. django_cfg/modules/django_logging/LOGGING_GUIDE.md +0 -504
  1355. django_cfg/modules/django_tasks/__init__.py +0 -29
  1356. django_cfg/modules/django_tasks/dramatiq_setup.py +0 -20
  1357. django_cfg/modules/django_tasks/factory.py +0 -127
  1358. django_cfg/modules/django_tasks/management/__init__.py +0 -0
  1359. django_cfg/modules/django_tasks/management/commands/__init__.py +0 -0
  1360. django_cfg/modules/django_tasks/management/commands/rundramatiq.py +0 -253
  1361. django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +0 -436
  1362. django_cfg/modules/django_tasks/management/commands/task_clear.py +0 -226
  1363. django_cfg/modules/django_tasks/management/commands/task_status.py +0 -257
  1364. django_cfg/modules/django_tasks/service.py +0 -281
  1365. django_cfg/modules/django_tasks/settings.py +0 -107
  1366. django_cfg/modules/django_twilio/README.md +0 -501
  1367. django_cfg/modules/django_twilio/__init__.py +0 -92
  1368. django_cfg/modules/django_twilio/_imports.py +0 -30
  1369. django_cfg/modules/django_twilio/base.py +0 -196
  1370. django_cfg/modules/django_twilio/email_otp.py +0 -228
  1371. django_cfg/modules/django_twilio/exceptions.py +0 -337
  1372. django_cfg/modules/django_twilio/management/__init__.py +0 -0
  1373. django_cfg/modules/django_twilio/management/commands/__init__.py +0 -0
  1374. django_cfg/modules/django_twilio/management/commands/test_twilio.py +0 -111
  1375. django_cfg/modules/django_twilio/models.py +0 -409
  1376. django_cfg/modules/django_twilio/sendgrid_service.py +0 -502
  1377. django_cfg/modules/django_twilio/simple_service.py +0 -290
  1378. django_cfg/modules/django_twilio/sms.py +0 -95
  1379. django_cfg/modules/django_twilio/templates/guide.md +0 -266
  1380. django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -213
  1381. django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -14
  1382. django_cfg/modules/django_twilio/twilio_service.py +0 -544
  1383. django_cfg/modules/django_twilio/unified.py +0 -311
  1384. django_cfg/modules/django_twilio/utils.py +0 -189
  1385. django_cfg/modules/django_twilio/whatsapp.py +0 -138
  1386. django_cfg/modules/django_unfold/callbacks/__init__.py +0 -9
  1387. django_cfg/modules/django_unfold/callbacks/actions.py +0 -51
  1388. django_cfg/modules/django_unfold/callbacks/apizones.py +0 -122
  1389. django_cfg/modules/django_unfold/callbacks/base.py +0 -290
  1390. django_cfg/modules/django_unfold/callbacks/charts.py +0 -223
  1391. django_cfg/modules/django_unfold/callbacks/commands.py +0 -40
  1392. django_cfg/modules/django_unfold/callbacks/main.py +0 -294
  1393. django_cfg/modules/django_unfold/callbacks/statistics.py +0 -240
  1394. django_cfg/modules/django_unfold/callbacks/system.py +0 -180
  1395. django_cfg/modules/django_unfold/callbacks/users.py +0 -65
  1396. django_cfg/modules/django_unfold/dashboard.py +0 -338
  1397. django_cfg/modules/django_unfold/models/dashboard.py +0 -207
  1398. django_cfg/modules/django_unfold/models/tabs.py +0 -26
  1399. django_cfg/modules/django_unfold/models.py +0 -98
  1400. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +0 -102
  1401. django_cfg/static/admin/js/commands.js +0 -171
  1402. django_cfg/static/admin/js/dashboard.js +0 -126
  1403. django_cfg/static/js/api/accounts/client.mjs +0 -69
  1404. django_cfg/static/js/api/accounts/index.mjs +0 -13
  1405. django_cfg/static/js/api/base.mjs +0 -166
  1406. django_cfg/static/js/api/index.mjs +0 -100
  1407. django_cfg/static/js/api/ipc/client.mjs +0 -74
  1408. django_cfg/static/js/api/ipc/index.mjs +0 -13
  1409. django_cfg/static/js/api/leads/client.mjs +0 -71
  1410. django_cfg/static/js/api/leads/index.mjs +0 -13
  1411. django_cfg/static/js/api/newsletter/client.mjs +0 -109
  1412. django_cfg/static/js/api/newsletter/index.mjs +0 -13
  1413. django_cfg/static/js/api/payments/client.mjs +0 -1264
  1414. django_cfg/static/js/api/payments/index.mjs +0 -13
  1415. django_cfg/static/js/api/support/client.mjs +0 -84
  1416. django_cfg/static/js/api/support/index.mjs +0 -13
  1417. django_cfg/static/js/api/tasks/client.mjs +0 -74
  1418. django_cfg/static/js/api/tasks/index.mjs +0 -13
  1419. django_cfg/static/js/api/types.mjs +0 -729
  1420. django_cfg/static/js/api-loader.mjs +0 -169
  1421. django_cfg/templates/admin/components/action_grid.html +0 -49
  1422. django_cfg/templates/admin/components/card.html +0 -50
  1423. django_cfg/templates/admin/components/data_table.html +0 -67
  1424. django_cfg/templates/admin/components/management_commands.js +0 -375
  1425. django_cfg/templates/admin/components/metric_card.html +0 -39
  1426. django_cfg/templates/admin/components/modal.html +0 -58
  1427. django_cfg/templates/admin/components/progress_bar.html +0 -20
  1428. django_cfg/templates/admin/components/section_header.html +0 -26
  1429. django_cfg/templates/admin/components/stat_item.html +0 -32
  1430. django_cfg/templates/admin/components/stats_grid.html +0 -72
  1431. django_cfg/templates/admin/components/status_badge.html +0 -28
  1432. django_cfg/templates/admin/components/user_avatar.html +0 -27
  1433. django_cfg/templates/admin/constance/change_list.html +0 -113
  1434. django_cfg/templates/admin/constance/includes/default_value.html +0 -24
  1435. django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -15
  1436. django_cfg/templates/admin/constance/includes/setting_row.html +0 -50
  1437. django_cfg/templates/admin/constance/includes/table_headers.html +0 -10
  1438. django_cfg/templates/admin/examples/component_class_example.html +0 -156
  1439. django_cfg/templates/admin/import_export/change_list_export.html +0 -24
  1440. django_cfg/templates/admin/import_export/change_list_import.html +0 -24
  1441. django_cfg/templates/admin/import_export/change_list_import_export.html +0 -34
  1442. django_cfg/templates/admin/index_new.html +0 -119
  1443. django_cfg/templates/admin/layouts/base_dashboard.html +0 -60
  1444. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -565
  1445. django_cfg/templates/admin/sections/commands_section.html +0 -626
  1446. django_cfg/templates/admin/sections/documentation_section.html +0 -172
  1447. django_cfg/templates/admin/sections/overview_section.html +0 -112
  1448. django_cfg/templates/admin/sections/stats_section.html +0 -35
  1449. django_cfg/templates/admin/sections/system_section.html +0 -99
  1450. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +0 -322
  1451. django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -92
  1452. django_cfg/templates/admin/snippets/components/charts_section.html +0 -179
  1453. django_cfg/templates/admin/snippets/components/django_commands.html +0 -357
  1454. django_cfg/templates/admin/snippets/components/quick_actions.html +0 -66
  1455. django_cfg/templates/admin/snippets/components/recent_activity.html +0 -35
  1456. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +0 -25
  1457. django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -102
  1458. django_cfg/templates/admin/snippets/components/stats_cards.html +0 -4
  1459. django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -92
  1460. django_cfg/templates/admin/snippets/components/system_health.html +0 -22
  1461. django_cfg/templates/admin/snippets/components/system_metrics.html +0 -191
  1462. django_cfg/templates/admin/snippets/components/user_permissions.html +0 -57
  1463. django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -201
  1464. django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -66
  1465. django_cfg/templates/admin/snippets/tabs/documentation_tab.html +0 -231
  1466. django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -116
  1467. django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -89
  1468. django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -51
  1469. django_cfg/templates/admin/snippets/zones/zones_table.html +0 -176
  1470. django_cfg-1.4.46.dist-info/METADATA +0 -533
  1471. django_cfg-1.4.46.dist-info/RECORD +0 -1000
  1472. django_cfg-1.4.46.dist-info/WHEEL +0 -4
  1473. /django_cfg/apps/api/endpoints/{checker.py → endpoints_status/checker.py} +0 -0
  1474. /django_cfg/apps/api/endpoints/{serializers.py → endpoints_status/serializers.py} +0 -0
  1475. /django_cfg/apps/api/endpoints/{tests.py → endpoints_status/tests.py} +0 -0
  1476. /django_cfg/apps/api/endpoints/{views.py → endpoints_status/views.py} +0 -0
  1477. /django_cfg/apps/{accounts/migrations → integrations}/__init__.py +0 -0
  1478. /django_cfg/apps/{knowbase/management → integrations/grpc/management/commands}/__init__.py +0 -0
  1479. /django_cfg/apps/{knowbase/management/commands → integrations/grpc/migrations}/__init__.py +0 -0
  1480. /django_cfg/apps/{leads → integrations/webpush/management}/__init__.py +0 -0
  1481. /django_cfg/apps/{leads/migrations → integrations/webpush/management/commands}/__init__.py +0 -0
  1482. /django_cfg/apps/{maintenance/management → integrations/webpush/migrations}/__init__.py +0 -0
  1483. /django_cfg/apps/{maintenance/management/commands → system}/__init__.py +0 -0
  1484. /django_cfg/apps/{accounts → system/accounts}/__init__.py +0 -0
  1485. /django_cfg/apps/{accounts → system/accounts}/admin/activity_admin.py +0 -0
  1486. /django_cfg/apps/{accounts → system/accounts}/admin/group_admin.py +0 -0
  1487. /django_cfg/apps/{accounts → system/accounts}/admin/otp_admin.py +0 -0
  1488. /django_cfg/apps/{accounts → system/accounts}/admin/registration_admin.py +0 -0
  1489. /django_cfg/apps/{accounts → system/accounts}/managers/__init__.py +0 -0
  1490. /django_cfg/apps/{accounts → system/accounts}/migrations/0002_add_phone_otp_clean.py +0 -0
  1491. /django_cfg/apps/{accounts → system/accounts}/migrations/0003_twilioresponse.py +0 -0
  1492. /django_cfg/apps/{accounts → system/accounts}/migrations/0004_delete_twilioresponse.py +0 -0
  1493. /django_cfg/apps/{accounts → system/accounts}/migrations/0005_twilioresponse.py +0 -0
  1494. /django_cfg/apps/{accounts → system/accounts}/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
  1495. /django_cfg/apps/{accounts → system/accounts}/migrations/0007_twilioresponse.py +0 -0
  1496. /django_cfg/apps/{maintenance → system/accounts}/migrations/__init__.py +0 -0
  1497. /django_cfg/apps/{accounts → system/accounts}/models/activity.py +0 -0
  1498. /django_cfg/apps/{accounts → system/accounts}/models/auth.py +0 -0
  1499. /django_cfg/apps/{accounts → system/accounts}/models/base.py +0 -0
  1500. /django_cfg/apps/{accounts → system/accounts}/models/registration.py +0 -0
  1501. /django_cfg/apps/{accounts → system/accounts}/services/__init__.py +0 -0
  1502. /django_cfg/apps/{accounts → system/accounts}/services/activity_service.py +0 -0
  1503. /django_cfg/apps/{accounts → system/accounts}/templates/emails/base_email.html +0 -0
  1504. /django_cfg/apps/{accounts → system/accounts}/templates/emails/base_email.txt +0 -0
  1505. /django_cfg/apps/{accounts → system/accounts}/templates/emails/otp_email.html +0 -0
  1506. /django_cfg/apps/{accounts → system/accounts}/templates/emails/otp_email.txt +0 -0
  1507. /django_cfg/apps/{accounts → system/accounts}/templates/emails/welcome_email.html +0 -0
  1508. /django_cfg/apps/{accounts → system/accounts}/templates/emails/welcome_email.txt +0 -0
  1509. /django_cfg/apps/{accounts → system/accounts}/urls_admin.py +0 -0
  1510. /django_cfg/apps/{accounts → system/accounts}/views/__init__.py +0 -0
  1511. /django_cfg/apps/{newsletter → system/frontend/management}/__init__.py +0 -0
  1512. /django_cfg/apps/{newsletter/management → system/frontend/management/commands}/__init__.py +0 -0
  1513. /django_cfg/apps/{newsletter/management/commands → tools/currency/migrations}/__init__.py +0 -0
  1514. /django_cfg/modules/django_client/core/{archive → archiver}/__init__.py +0 -0
  1515. {django_cfg-1.4.46.dist-info → django_cfg-1.5.181.dist-info}/entry_points.txt +0 -0
  1516. {django_cfg-1.4.46.dist-info → django_cfg-1.5.181.dist-info}/licenses/LICENSE +0 -0
@@ -1,299 +0,0 @@
1
- import logging
2
- import random
3
- import re
4
- import traceback
5
- from urllib.parse import urlparse
6
-
7
- from coolname import generate_slug
8
- from django.contrib.auth.models import UserManager
9
- from django.utils import timezone
10
-
11
- logger = logging.getLogger(__name__)
12
-
13
-
14
- class UserManager(UserManager):
15
- """
16
- Custom manager for user statistics and data calculations.
17
- """
18
-
19
- def create_user(self, email, password=None, **extra_fields):
20
- """
21
- Create and save a regular user with the given email and password.
22
- """
23
- if not email:
24
- raise ValueError("The email must be set")
25
-
26
- email = self.normalize_email(email)
27
-
28
- # Generate username if not provided
29
- if "username" not in extra_fields:
30
- extra_fields["username"] = self._generate_unique_username()
31
-
32
- user = self.model(email=email, **extra_fields)
33
- user.set_password(password)
34
- user.save(using=self._db)
35
- return user
36
-
37
- def create_superuser(self, email, password=None, **extra_fields):
38
- """
39
- Create a superuser with the given email and password
40
- """
41
- extra_fields.setdefault("is_staff", True)
42
- extra_fields.setdefault("is_superuser", True)
43
- extra_fields.setdefault("is_active", True)
44
-
45
- if extra_fields.get("is_staff") is not True:
46
- raise ValueError("Superuser must have is_staff=True.")
47
- if extra_fields.get("is_superuser") is not True:
48
- raise ValueError("Superuser must have is_superuser=True.")
49
-
50
- return self.create_user(email, password, **extra_fields)
51
-
52
- def register_user(self, email, username=None, source_url=None, **extra_fields):
53
- """
54
- Register a new user with OTP authentication.
55
-
56
- Args:
57
- email: User's email address
58
- username: Optional username (will be generated if not provided)
59
- source_url: Optional source URL for tracking registration
60
- **extra_fields: Additional fields for user creation
61
-
62
- Returns:
63
- tuple: (user, created) where created is True if user was created
64
- """
65
- try:
66
- # Clean email
67
- email = email.strip().lower()
68
-
69
- # Generate username if not provided
70
- if not username:
71
- username = self._generate_unique_username()
72
-
73
- # Set default values
74
- defaults = {
75
- "username": username,
76
- "is_active": True,
77
- "date_joined": timezone.now(),
78
- **extra_fields,
79
- }
80
-
81
- logger.info(
82
- f"Attempting to get_or_create user with email: {email}, username: {username}"
83
- )
84
-
85
- # Create or get user using self.model instead of importing CustomUser
86
- user, created = self.model.objects.get_or_create(
87
- email=email, defaults=defaults
88
- )
89
-
90
- # Handle source tracking
91
- if source_url:
92
- self._link_user_to_source(user, source_url, created)
93
-
94
- logger.info(
95
- f"User {'created' if created else 'found'} successfully: {email}"
96
- )
97
- return user, created
98
-
99
- except Exception as e:
100
- logger.error(f"Error in register_user for email {email}: {str(e)}")
101
- logger.error(f"Full traceback: {traceback.format_exc()}")
102
- raise
103
-
104
- def _link_user_to_source(self, user, source_url, is_new_user=False):
105
- """
106
- Link user to a source, creating the source if it doesn't exist.
107
-
108
- Args:
109
- user: User instance
110
- source_url: Source URL
111
- is_new_user: Whether this is a new user registration
112
- """
113
- try:
114
- from django_cfg.apps.accounts.models import RegistrationSource, UserRegistrationSource
115
-
116
- # Get or create source
117
- source, source_created = RegistrationSource.objects.get_or_create(
118
- url=source_url,
119
- defaults={
120
- "name": self._extract_domain_name(source_url),
121
- "is_active": True,
122
- },
123
- )
124
-
125
- # Check if user is already linked to this source
126
- user_source, user_source_created = (
127
- UserRegistrationSource.objects.get_or_create(
128
- user=user,
129
- source=source,
130
- defaults={"first_registration": is_new_user},
131
- )
132
- )
133
-
134
- if user_source_created:
135
- logger.info(f"Linked user {user.email} to source {source.url}")
136
- else:
137
- logger.info(f"User {user.email} already linked to source {source.url}")
138
-
139
- except Exception as e:
140
- logger.error(f"Error linking user to source: {e}")
141
- # Don't raise exception to avoid breaking user registration
142
-
143
- def _extract_domain_name(self, url):
144
- """Extract full hostname from URL including subdomains."""
145
- try:
146
- hostname = urlparse(url).netloc
147
-
148
- # Remove www. prefix if present (but keep other subdomains)
149
- if hostname.startswith("www."):
150
- hostname = hostname[4:]
151
-
152
- return hostname
153
- except:
154
- return url
155
-
156
- def _generate_unique_username(self):
157
- """
158
- Generate a unique username.
159
- """
160
- try:
161
- # Use self.model instead of importing CustomUser
162
- # Try different username generation strategies
163
- strategies = [
164
- self._generate_coolname_username,
165
- self._generate_timestamp_username,
166
- ]
167
-
168
- for strategy in strategies:
169
- try:
170
- username = strategy()
171
- if (
172
- username
173
- and not self.model.objects.filter(username=username).exists()
174
- ):
175
- return username
176
- except Exception as e:
177
- logger.warning(
178
- f"Username generation strategy {strategy.__name__} failed: {e}"
179
- )
180
- continue
181
-
182
- # Final fallback
183
- return f"user{timezone.now().strftime('%m%d%H%M%S')}"
184
- except Exception as e:
185
- logger.error(f"Error in _generate_unique_username: {str(e)}")
186
- logger.error(f"Full traceback: {traceback.format_exc()}")
187
- # Return a simple fallback
188
- return f"user{timezone.now().strftime('%m%d%H%M%S')}"
189
-
190
- def _generate_coolname_username(self):
191
- """Generate username using coolname library."""
192
- try:
193
-
194
- # Generate and clean
195
- raw_username = generate_slug()
196
- username = re.sub(r"[^a-zA-Z0-9_]", "", raw_username)
197
-
198
- # Shorten if too long
199
- if len(username) > 12:
200
- username = username[:8] + str(random.randint(10, 99))
201
-
202
- return username if len(username) <= 12 else None
203
-
204
- except ImportError:
205
- logger.warning(
206
- "coolname library not available, skipping coolname username generation"
207
- )
208
- return None
209
- except Exception as e:
210
- logger.warning(f"Error generating coolname username: {e}")
211
- return None
212
-
213
- def _generate_timestamp_username(self):
214
- """Generate username with timestamp."""
215
- try:
216
- timestamp = timezone.now().strftime("%m%d%H%M")
217
- return f"user{timestamp}"
218
- except Exception as e:
219
- logger.warning(f"Error generating timestamp username: {e}")
220
- return None
221
-
222
- def get_unanswered_messages_count(self, user) -> int:
223
- """
224
- Get the count of unanswered messages for the user.
225
- Args:
226
- user: User instance to get count for
227
- Returns:
228
- int: Count of unanswered messages
229
- """
230
- from django_cfg.modules.base import BaseCfgModule
231
-
232
- # Get config and check if support app is enabled
233
- config = BaseCfgModule.get_config()
234
- if not config or not getattr(config, 'enable_support', False):
235
- return 0
236
-
237
- try:
238
- from django_cfg.apps.support.models import Ticket
239
- count = Ticket.objects.get_unanswered_messages_count(user)
240
- return count
241
- except (ImportError, Exception):
242
- # If support app is not installed or any error occurs, return 0
243
- return 0
244
-
245
- def get_full_name(self, user) -> str:
246
- """
247
- Get user's full name.
248
- Args:
249
- user: User instance
250
- Returns:
251
- str: User's full name
252
- """
253
- if user.first_name and user.last_name:
254
- return f"{user.first_name} {user.last_name}"
255
- elif user.first_name:
256
- return user.first_name
257
- elif user.last_name:
258
- return user.last_name
259
- return user.email
260
-
261
- def get_initials(self, user) -> str:
262
- """
263
- Get user's initials for avatar fallback.
264
- Args:
265
- user: User instance
266
- Returns:
267
- str: User's initials
268
- """
269
- if user.first_name and user.last_name:
270
- return f"{user.first_name[0]}{user.last_name[0]}".upper()
271
- elif user.first_name:
272
- return user.first_name[0].upper()
273
- elif user.last_name:
274
- return user.last_name[0].upper()
275
- return user.email[0].upper()
276
-
277
- def get_display_username(self, user) -> str:
278
- """
279
- Get formatted username for display.
280
- Args:
281
- user: User instance
282
- Returns:
283
- str: Formatted display username
284
- """
285
- if user.username:
286
- # Remove special characters and format nicely
287
- clean_username = (
288
- user.username.replace("_", " ").replace("-", " ").replace(".", " ")
289
- )
290
- # Capitalize first letter of each word
291
- formatted = " ".join(word.capitalize() for word in clean_username.split())
292
- return formatted
293
- elif user.first_name and user.last_name:
294
- return f"{user.first_name} {user.last_name}"
295
- elif user.first_name:
296
- return user.first_name
297
- elif user.last_name:
298
- return user.last_name
299
- return user.email.split("@")[0].capitalize()
@@ -1,119 +0,0 @@
1
- # Generated by Django 5.2.5 on 2025-09-07 05:09
2
-
3
- import django.contrib.auth.validators
4
- import django.db.models.deletion
5
- import django.utils.timezone
6
- from django.conf import settings
7
- from django.db import migrations, models
8
-
9
- import django_cfg.apps.accounts.managers.user_manager
10
- import django_cfg.apps.accounts.models
11
-
12
-
13
- class Migration(migrations.Migration):
14
-
15
- initial = True
16
-
17
- dependencies = [
18
- ('auth', '0012_alter_user_first_name_max_length'),
19
- ]
20
-
21
- operations = [
22
- migrations.CreateModel(
23
- name='RegistrationSource',
24
- fields=[
25
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
26
- ('url', models.URLField(help_text='Source URL (e.g., https://unrealon.com)', unique=True)),
27
- ('name', models.CharField(blank=True, help_text='Display name for the source', max_length=100)),
28
- ('description', models.TextField(blank=True, help_text='Optional description')),
29
- ('is_active', models.BooleanField(default=True, help_text='Whether this source is active')),
30
- ('created_at', models.DateTimeField(auto_now_add=True)),
31
- ('updated_at', models.DateTimeField(auto_now=True)),
32
- ],
33
- options={
34
- 'verbose_name': 'Registration Source',
35
- 'verbose_name_plural': 'Registration Sources',
36
- 'ordering': ['-created_at'],
37
- },
38
- ),
39
- migrations.CreateModel(
40
- name='CustomUser',
41
- fields=[
42
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
43
- ('password', models.CharField(max_length=128, verbose_name='password')),
44
- ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
45
- ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
46
- ('username', models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], verbose_name='username')),
47
- ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')),
48
- ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')),
49
- ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')),
50
- ('email', models.EmailField(max_length=254, unique=True)),
51
- ('first_name', models.CharField(blank=True, max_length=50)),
52
- ('last_name', models.CharField(blank=True, max_length=50)),
53
- ('company', models.CharField(blank=True, max_length=100)),
54
- ('phone', models.CharField(blank=True, max_length=20)),
55
- ('position', models.CharField(blank=True, max_length=100)),
56
- ('avatar', models.ImageField(blank=True, null=True, upload_to=django_cfg.apps.accounts.models.user_avatar_path)),
57
- ('updated_at', models.DateTimeField(auto_now=True)),
58
- ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
59
- ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
60
- ],
61
- options={
62
- 'verbose_name': 'User',
63
- 'verbose_name_plural': 'Users',
64
- },
65
- managers=[
66
- ('objects', django_cfg.apps.accounts.managers.user_manager.UserManager()),
67
- ],
68
- ),
69
- migrations.CreateModel(
70
- name='OTPSecret',
71
- fields=[
72
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
73
- ('email', models.EmailField(db_index=True, max_length=254)),
74
- ('secret', models.CharField(max_length=6)),
75
- ('created_at', models.DateTimeField(auto_now_add=True)),
76
- ('expires_at', models.DateTimeField()),
77
- ('is_used', models.BooleanField(default=False)),
78
- ],
79
- options={
80
- 'ordering': ['-created_at'],
81
- 'indexes': [models.Index(fields=['email', 'is_used', 'expires_at'], name='django_cfg__email_f595c8_idx')],
82
- },
83
- ),
84
- migrations.CreateModel(
85
- name='UserActivity',
86
- fields=[
87
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
88
- ('activity_type', models.CharField(choices=[('login', 'Login'), ('logout', 'Logout'), ('otp_requested', 'OTP Requested'), ('otp_verified', 'OTP Verified'), ('profile_updated', 'Profile Updated'), ('registration', 'Registration')], max_length=20)),
89
- ('description', models.TextField(blank=True)),
90
- ('ip_address', models.GenericIPAddressField(blank=True, null=True)),
91
- ('user_agent', models.TextField(blank=True)),
92
- ('object_id', models.PositiveIntegerField(blank=True, null=True)),
93
- ('object_type', models.CharField(blank=True, max_length=50)),
94
- ('created_at', models.DateTimeField(auto_now_add=True)),
95
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='activities', to=settings.AUTH_USER_MODEL)),
96
- ],
97
- options={
98
- 'verbose_name': 'User Activity',
99
- 'verbose_name_plural': 'User Activities',
100
- 'ordering': ['-created_at'],
101
- },
102
- ),
103
- migrations.CreateModel(
104
- name='UserRegistrationSource',
105
- fields=[
106
- ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
107
- ('first_registration', models.BooleanField(default=True, help_text='Whether this was the first registration from this source')),
108
- ('registration_date', models.DateTimeField(auto_now_add=True)),
109
- ('source', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_registration_sources', to='django_cfg_accounts.registrationsource')),
110
- ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_registration_sources', to=settings.AUTH_USER_MODEL)),
111
- ],
112
- options={
113
- 'verbose_name': 'User Registration Source',
114
- 'verbose_name_plural': 'User Registration Sources',
115
- 'ordering': ['-registration_date'],
116
- 'unique_together': {('user', 'source')},
117
- },
118
- ),
119
- ]
@@ -1,67 +0,0 @@
1
- """
2
- Django CFG Accounts Models
3
-
4
- This module provides all the models for the accounts app.
5
- Models are organized by functionality:
6
-
7
- - base: Base utilities and functions
8
- - user: User model and related functionality
9
- - registration: Registration and source tracking models
10
- - auth: Authentication models (OTP, etc.)
11
- - activity: User activity tracking models
12
- - integrations: Third-party integrations models (Twilio, etc.)
13
- """
14
-
15
- # Import base utilities
16
- # Import activity models
17
- from .activity import UserActivity
18
-
19
- # Import authentication models
20
- from .auth import OTPSecret
21
- from .base import user_avatar_path
22
-
23
- # Import choices
24
- from .choices import (
25
- ActivityType,
26
- TwilioResponseType,
27
- TwilioServiceType,
28
- )
29
-
30
- # Import integration models
31
- from .integrations import TwilioResponse
32
-
33
- # Import registration models
34
- from .registration import (
35
- RegistrationSource,
36
- UserRegistrationSource,
37
- )
38
-
39
- # Import user models
40
- from .user import CustomUser
41
-
42
- # Export all models
43
- __all__ = [
44
- # Base utilities
45
- 'user_avatar_path',
46
-
47
- # Choices
48
- 'ActivityType',
49
- 'TwilioResponseType',
50
- 'TwilioServiceType',
51
-
52
- # User models
53
- 'CustomUser',
54
-
55
- # Registration models
56
- 'RegistrationSource',
57
- 'UserRegistrationSource',
58
-
59
- # Authentication models
60
- 'OTPSecret',
61
-
62
- # Activity models
63
- 'UserActivity',
64
-
65
- # Integration models
66
- 'TwilioResponse',
67
- ]
@@ -1,32 +0,0 @@
1
- """
2
- Model choices constants for accounts app.
3
- """
4
-
5
- from django.db import models
6
-
7
-
8
- class ActivityType(models.TextChoices):
9
- """User activity types."""
10
- LOGIN = 'login', 'Login'
11
- LOGOUT = 'logout', 'Logout'
12
- OTP_REQUESTED = 'otp_requested', 'OTP Requested'
13
- OTP_VERIFIED = 'otp_verified', 'OTP Verified'
14
- PROFILE_UPDATED = 'profile_updated', 'Profile Updated'
15
- REGISTRATION = 'registration', 'Registration'
16
-
17
-
18
- class TwilioResponseType(models.TextChoices):
19
- """Twilio response types."""
20
- API_SEND = 'api_send', 'API Send Request'
21
- API_VERIFY = 'api_verify', 'API Verify Request'
22
- WEBHOOK_STATUS = 'webhook_status', 'Webhook Status Update'
23
- WEBHOOK_DELIVERY = 'webhook_delivery', 'Webhook Delivery Report'
24
-
25
-
26
- class TwilioServiceType(models.TextChoices):
27
- """Twilio service types."""
28
- WHATSAPP = 'whatsapp', 'WhatsApp'
29
- SMS = 'sms', 'SMS'
30
- VOICE = 'voice', 'Voice'
31
- EMAIL = 'email', 'Email'
32
- VERIFY = 'verify', 'Verify API'
@@ -1,75 +0,0 @@
1
- """
2
- Third-party integrations models (Twilio, etc.).
3
- """
4
-
5
- from django.db import models
6
-
7
- from .choices import TwilioResponseType, TwilioServiceType
8
-
9
-
10
- class TwilioResponse(models.Model):
11
- """Model for storing Twilio API responses and webhook data."""
12
-
13
- response_type = models.CharField(max_length=20, choices=TwilioResponseType.choices)
14
- service_type = models.CharField(max_length=10, choices=TwilioServiceType.choices)
15
-
16
- # Twilio identifiers
17
- message_sid = models.CharField(max_length=34, blank=True, help_text="Twilio Message SID")
18
- verification_sid = models.CharField(max_length=34, blank=True, help_text="Twilio Verification SID")
19
-
20
- # Request/Response data
21
- request_data = models.JSONField(default=dict, help_text="Original request parameters")
22
- response_data = models.JSONField(default=dict, help_text="Twilio API response")
23
-
24
- # Status and error handling
25
- status = models.CharField(max_length=20, blank=True, help_text="Message/Verification status")
26
- error_code = models.CharField(max_length=10, blank=True, help_text="Twilio error code")
27
- error_message = models.TextField(blank=True, help_text="Error description")
28
-
29
- # Contact information
30
- to_number = models.CharField(max_length=20, blank=True, help_text="Recipient phone/email")
31
- from_number = models.CharField(max_length=20, blank=True, help_text="Sender phone/email")
32
-
33
- # Pricing
34
- price = models.DecimalField(max_digits=10, decimal_places=6, null=True, blank=True)
35
- price_unit = models.CharField(max_length=3, blank=True, help_text="Currency code")
36
-
37
- # Timestamps
38
- created_at = models.DateTimeField(auto_now_add=True)
39
- updated_at = models.DateTimeField(auto_now=True)
40
- twilio_created_at = models.DateTimeField(null=True, blank=True, help_text="Timestamp from Twilio")
41
-
42
- # Relations
43
- otp_secret = models.ForeignKey(
44
- 'OTPSecret',
45
- on_delete=models.SET_NULL,
46
- null=True,
47
- blank=True,
48
- related_name='twilio_responses',
49
- help_text="Related OTP if applicable"
50
- )
51
-
52
- class Meta:
53
- app_label = 'django_cfg_accounts'
54
- verbose_name = 'Twilio Response'
55
- verbose_name_plural = 'Twilio Responses'
56
- ordering = ['-created_at']
57
- indexes = [
58
- models.Index(fields=['message_sid']),
59
- models.Index(fields=['verification_sid']),
60
- models.Index(fields=['status', 'created_at']),
61
- models.Index(fields=['response_type', 'service_type']),
62
- ]
63
-
64
- def __str__(self):
65
- return f"{self.get_response_type_display()} - {self.get_service_type_display()}"
66
-
67
- @property
68
- def has_error(self):
69
- """Check if response has error."""
70
- return bool(self.error_code or self.error_message)
71
-
72
- @property
73
- def is_successful(self):
74
- """Check if response is successful."""
75
- return not self.has_error and self.status in ['sent', 'delivered', 'approved']
@@ -1,81 +0,0 @@
1
- """
2
- User model and related functionality.
3
- """
4
-
5
- from typing import List, Optional
6
-
7
- from django.contrib.auth.models import AbstractUser
8
- from django.db import models
9
-
10
- from ..managers.user_manager import UserManager
11
- from .base import user_avatar_path
12
-
13
-
14
- class CustomUser(AbstractUser):
15
- """Simplified user model for OTP-only authentication."""
16
-
17
- email = models.EmailField(unique=True)
18
-
19
- # Profile fields
20
- first_name = models.CharField(max_length=50, blank=True)
21
- last_name = models.CharField(max_length=50, blank=True)
22
- company = models.CharField(max_length=100, blank=True)
23
- phone = models.CharField(max_length=20, blank=True)
24
- position = models.CharField(max_length=100, blank=True)
25
- avatar = models.ImageField(upload_to=user_avatar_path, blank=True, null=True)
26
-
27
- # Profile metadata
28
- updated_at = models.DateTimeField(auto_now=True)
29
-
30
- # Managers
31
- objects: UserManager = UserManager()
32
-
33
- USERNAME_FIELD = "email"
34
- REQUIRED_FIELDS = ["username"]
35
-
36
- def __str__(self):
37
- return self.email
38
-
39
- @property
40
- def is_admin(self) -> bool:
41
- return self.is_superuser
42
-
43
- @property
44
- def full_name(self) -> str:
45
- """Get user's full name."""
46
- return self.__class__.objects.get_full_name(self)
47
-
48
- @property
49
- def initials(self) -> str:
50
- """Get user's initials for avatar fallback."""
51
- return self.__class__.objects.get_initials(self)
52
-
53
- @property
54
- def display_username(self) -> str:
55
- """Get formatted username for display."""
56
- return self.__class__.objects.get_display_username(self)
57
-
58
- @property
59
- def unanswered_messages_count(self) -> int:
60
- """Get count of unanswered messages for the user."""
61
- return self.__class__.objects.get_unanswered_messages_count(self)
62
-
63
- def get_sources(self) -> List['RegistrationSource']:
64
- """Get all sources associated with this user."""
65
- from .registration import RegistrationSource
66
- return RegistrationSource.objects.filter(user_registration_sources__user=self)
67
-
68
- @property
69
- def primary_source(self) -> Optional['RegistrationSource']:
70
- """Get the first source where user registered."""
71
- from .registration import UserRegistrationSource
72
- user_source = UserRegistrationSource.objects.filter(
73
- user=self,
74
- first_registration=True
75
- ).first()
76
- return user_source.source if user_source else None
77
-
78
- class Meta:
79
- app_label = 'django_cfg_accounts'
80
- verbose_name = "User"
81
- verbose_name_plural = "Users"