django-cfg 1.1.81__tar.gz → 1.1.82__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. {django_cfg-1.1.81 → django_cfg-1.1.82}/MANIFEST.in +5 -6
  2. {django_cfg-1.1.81 → django_cfg-1.1.82}/PKG-INFO +1 -1
  3. {django_cfg-1.1.81 → django_cfg-1.1.82}/pyproject.toml +3 -9
  4. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/__init__.py +1 -1
  5. django_cfg-1.1.82/src/django_cfg/modules/django_twilio/templates/guide.md +266 -0
  6. django_cfg-1.1.81/@docs/dramatiq/README.md +0 -153
  7. django_cfg-1.1.81/@sources/django_dramatiq/CHANGELOG.md +0 -354
  8. django_cfg-1.1.81/@sources/django_dramatiq/README.md +0 -385
  9. django_cfg-1.1.81/@sources/django_dramatiq/examples/basic/README.md +0 -9
  10. django_cfg-1.1.81/@sources/dramatiq/README.md +0 -88
  11. django_cfg-1.1.81/@sources/dramatiq/benchmarks/README.md +0 -27
  12. django_cfg-1.1.81/@sources/dramatiq/examples/basic/README.md +0 -17
  13. django_cfg-1.1.81/@sources/dramatiq/examples/composition/README.md +0 -17
  14. django_cfg-1.1.81/@sources/dramatiq/examples/crawler/README.md +0 -20
  15. django_cfg-1.1.81/@sources/dramatiq/examples/long_running/README.md +0 -16
  16. django_cfg-1.1.81/@sources/dramatiq/examples/persistent/README.md +0 -19
  17. django_cfg-1.1.81/@sources/dramatiq/examples/results/README.md +0 -17
  18. django_cfg-1.1.81/@sources/dramatiq/examples/scheduling/README.md +0 -19
  19. django_cfg-1.1.81/@sources/dramatiq/examples/time_limit/README.md +0 -16
  20. django_cfg-1.1.81/django_sample/README.md +0 -374
  21. django_cfg-1.1.81/django_sample/devops/README.md +0 -287
  22. django_cfg-1.1.81/django_sample/docker/README.md +0 -190
  23. django_cfg-1.1.81/django_sample/node_modules/.ignored/@hey-api/openapi-ts/README.md +0 -347
  24. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@hey-api/json-schema-ref-parser/README.md +0 -138
  25. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@jsdevtools/ono/CHANGELOG.md +0 -122
  26. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@jsdevtools/ono/README.md +0 -392
  27. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@types/json-schema/README.md +0 -15
  28. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/js-yaml/CHANGELOG.md +0 -616
  29. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/js-yaml/README.md +0 -246
  30. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/lodash/README.md +0 -39
  31. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/@hey-api/openapi-ts/README.md +0 -347
  32. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/ansi-colors/README.md +0 -315
  33. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/c12/README.md +0 -471
  34. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/color-support/README.md +0 -129
  35. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/semver/README.md +0 -664
  36. django_cfg-1.1.81/django_sample/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/typescript/README.md +0 -50
  37. django_cfg-1.1.81/django_sample/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/CHANGELOG.md +0 -954
  38. django_cfg-1.1.81/django_sample/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/README.md +0 -282
  39. django_cfg-1.1.81/django_sample/node_modules/.pnpm/argparse@2.0.1/node_modules/argparse/CHANGELOG.md +0 -216
  40. django_cfg-1.1.81/django_sample/node_modules/.pnpm/argparse@2.0.1/node_modules/argparse/README.md +0 -84
  41. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/chokidar/README.md +0 -305
  42. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/confbox/README.md +0 -191
  43. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/defu/README.md +0 -171
  44. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/dotenv/CHANGELOG.md +0 -520
  45. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/dotenv/README.md +0 -645
  46. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/giget/README.md +0 -248
  47. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/jiti/README.md +0 -243
  48. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/mlly/README.md +0 -561
  49. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/ohash/README.md +0 -173
  50. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/pathe/README.md +0 -69
  51. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/perfect-debounce/README.md +0 -92
  52. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/pkg-types/README.md +0 -167
  53. django_cfg-1.1.81/django_sample/node_modules/.pnpm/c12@2.0.1/node_modules/rc9/README.md +0 -201
  54. django_cfg-1.1.81/django_sample/node_modules/.pnpm/chokidar@4.0.3/node_modules/readdirp/README.md +0 -120
  55. django_cfg-1.1.81/django_sample/node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/README.md +0 -3
  56. django_cfg-1.1.81/django_sample/node_modules/.pnpm/citty@0.1.6/node_modules/citty/README.md +0 -134
  57. django_cfg-1.1.81/django_sample/node_modules/.pnpm/citty@0.1.6/node_modules/consola/README.md +0 -352
  58. django_cfg-1.1.81/django_sample/node_modules/.pnpm/destr@2.0.5/node_modules/destr/README.md +0 -132
  59. django_cfg-1.1.81/django_sample/node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/README.md +0 -70
  60. django_cfg-1.1.81/django_sample/node_modules/.pnpm/fs-minipass@2.1.0/node_modules/minipass/README.md +0 -728
  61. django_cfg-1.1.81/django_sample/node_modules/.pnpm/giget@1.2.5/node_modules/node-fetch-native/README.md +0 -225
  62. django_cfg-1.1.81/django_sample/node_modules/.pnpm/giget@1.2.5/node_modules/nypm/README.md +0 -147
  63. django_cfg-1.1.81/django_sample/node_modules/.pnpm/giget@1.2.5/node_modules/pathe/README.md +0 -73
  64. django_cfg-1.1.81/django_sample/node_modules/.pnpm/giget@1.2.5/node_modules/tar/README.md +0 -1080
  65. django_cfg-1.1.81/django_sample/node_modules/.pnpm/handlebars@4.7.8/node_modules/minimist/CHANGELOG.md +0 -298
  66. django_cfg-1.1.81/django_sample/node_modules/.pnpm/handlebars@4.7.8/node_modules/minimist/README.md +0 -121
  67. django_cfg-1.1.81/django_sample/node_modules/.pnpm/handlebars@4.7.8/node_modules/neo-async/README.md +0 -273
  68. django_cfg-1.1.81/django_sample/node_modules/.pnpm/handlebars@4.7.8/node_modules/source-map/CHANGELOG.md +0 -301
  69. django_cfg-1.1.81/django_sample/node_modules/.pnpm/handlebars@4.7.8/node_modules/source-map/README.md +0 -742
  70. django_cfg-1.1.81/django_sample/node_modules/.pnpm/handlebars@4.7.8/node_modules/uglify-js/README.md +0 -1479
  71. django_cfg-1.1.81/django_sample/node_modules/.pnpm/minipass@3.3.6/node_modules/yallist/README.md +0 -204
  72. django_cfg-1.1.81/django_sample/node_modules/.pnpm/minipass@5.0.0/node_modules/minipass/README.md +0 -769
  73. django_cfg-1.1.81/django_sample/node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/README.md +0 -60
  74. django_cfg-1.1.81/django_sample/node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/CHANGELOG.md +0 -15
  75. django_cfg-1.1.81/django_sample/node_modules/.pnpm/mlly@1.8.0/node_modules/ufo/README.md +0 -466
  76. django_cfg-1.1.81/django_sample/node_modules/.pnpm/node_modules/tinyexec/README.md +0 -256
  77. django_cfg-1.1.81/django_sample/node_modules/@hey-api/json-schema-ref-parser/README.md +0 -138
  78. django_cfg-1.1.81/django_sample/node_modules/@jsdevtools/ono/CHANGELOG.md +0 -122
  79. django_cfg-1.1.81/django_sample/node_modules/@jsdevtools/ono/README.md +0 -392
  80. django_cfg-1.1.81/django_sample/node_modules/@types/json-schema/README.md +0 -15
  81. django_cfg-1.1.81/django_sample/node_modules/acorn/CHANGELOG.md +0 -954
  82. django_cfg-1.1.81/django_sample/node_modules/acorn/README.md +0 -282
  83. django_cfg-1.1.81/django_sample/node_modules/ansi-colors/README.md +0 -315
  84. django_cfg-1.1.81/django_sample/node_modules/argparse/CHANGELOG.md +0 -216
  85. django_cfg-1.1.81/django_sample/node_modules/argparse/README.md +0 -84
  86. django_cfg-1.1.81/django_sample/node_modules/c12/README.md +0 -471
  87. django_cfg-1.1.81/django_sample/node_modules/chokidar/README.md +0 -305
  88. django_cfg-1.1.81/django_sample/node_modules/chownr/README.md +0 -3
  89. django_cfg-1.1.81/django_sample/node_modules/citty/README.md +0 -134
  90. django_cfg-1.1.81/django_sample/node_modules/color-support/README.md +0 -129
  91. django_cfg-1.1.81/django_sample/node_modules/confbox/README.md +0 -191
  92. django_cfg-1.1.81/django_sample/node_modules/consola/README.md +0 -352
  93. django_cfg-1.1.81/django_sample/node_modules/defu/README.md +0 -171
  94. django_cfg-1.1.81/django_sample/node_modules/destr/README.md +0 -132
  95. django_cfg-1.1.81/django_sample/node_modules/dotenv/CHANGELOG.md +0 -520
  96. django_cfg-1.1.81/django_sample/node_modules/dotenv/README.md +0 -645
  97. django_cfg-1.1.81/django_sample/node_modules/fs-minipass/README.md +0 -70
  98. django_cfg-1.1.81/django_sample/node_modules/fs-minipass/node_modules/minipass/README.md +0 -728
  99. django_cfg-1.1.81/django_sample/node_modules/giget/README.md +0 -248
  100. django_cfg-1.1.81/django_sample/node_modules/giget/node_modules/pathe/README.md +0 -73
  101. django_cfg-1.1.81/django_sample/node_modules/jiti/README.md +0 -243
  102. django_cfg-1.1.81/django_sample/node_modules/js-yaml/CHANGELOG.md +0 -616
  103. django_cfg-1.1.81/django_sample/node_modules/js-yaml/README.md +0 -246
  104. django_cfg-1.1.81/django_sample/node_modules/lodash/README.md +0 -39
  105. django_cfg-1.1.81/django_sample/node_modules/minimist/CHANGELOG.md +0 -298
  106. django_cfg-1.1.81/django_sample/node_modules/minimist/README.md +0 -121
  107. django_cfg-1.1.81/django_sample/node_modules/minipass/README.md +0 -769
  108. django_cfg-1.1.81/django_sample/node_modules/minizlib/README.md +0 -60
  109. django_cfg-1.1.81/django_sample/node_modules/minizlib/node_modules/minipass/README.md +0 -728
  110. django_cfg-1.1.81/django_sample/node_modules/mkdirp/CHANGELOG.md +0 -15
  111. django_cfg-1.1.81/django_sample/node_modules/mlly/README.md +0 -561
  112. django_cfg-1.1.81/django_sample/node_modules/mlly/node_modules/pathe/README.md +0 -73
  113. django_cfg-1.1.81/django_sample/node_modules/neo-async/README.md +0 -273
  114. django_cfg-1.1.81/django_sample/node_modules/node-fetch-native/README.md +0 -225
  115. django_cfg-1.1.81/django_sample/node_modules/nypm/README.md +0 -147
  116. django_cfg-1.1.81/django_sample/node_modules/nypm/node_modules/pathe/README.md +0 -73
  117. django_cfg-1.1.81/django_sample/node_modules/ohash/README.md +0 -173
  118. django_cfg-1.1.81/django_sample/node_modules/pathe/README.md +0 -69
  119. django_cfg-1.1.81/django_sample/node_modules/perfect-debounce/README.md +0 -92
  120. django_cfg-1.1.81/django_sample/node_modules/pkg-types/README.md +0 -167
  121. django_cfg-1.1.81/django_sample/node_modules/pkg-types/node_modules/pathe/README.md +0 -73
  122. django_cfg-1.1.81/django_sample/node_modules/rc9/README.md +0 -201
  123. django_cfg-1.1.81/django_sample/node_modules/readdirp/README.md +0 -120
  124. django_cfg-1.1.81/django_sample/node_modules/semver/README.md +0 -664
  125. django_cfg-1.1.81/django_sample/node_modules/source-map/CHANGELOG.md +0 -301
  126. django_cfg-1.1.81/django_sample/node_modules/source-map/README.md +0 -742
  127. django_cfg-1.1.81/django_sample/node_modules/tar/README.md +0 -1080
  128. django_cfg-1.1.81/django_sample/node_modules/tinyexec/README.md +0 -256
  129. django_cfg-1.1.81/django_sample/node_modules/typescript/README.md +0 -50
  130. django_cfg-1.1.81/django_sample/node_modules/ufo/README.md +0 -466
  131. django_cfg-1.1.81/django_sample/node_modules/uglify-js/README.md +0 -1479
  132. django_cfg-1.1.81/django_sample/node_modules/yallist/README.md +0 -204
  133. django_cfg-1.1.81/node_modules/.ignored/@hey-api/openapi-ts/README.md +0 -347
  134. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@hey-api/json-schema-ref-parser/README.md +0 -138
  135. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@jsdevtools/ono/CHANGELOG.md +0 -122
  136. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@jsdevtools/ono/README.md +0 -392
  137. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/@types/json-schema/README.md +0 -15
  138. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/js-yaml/CHANGELOG.md +0 -616
  139. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/js-yaml/README.md +0 -246
  140. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+json-schema-ref-parser@1.0.6/node_modules/lodash/README.md +0 -39
  141. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/@hey-api/openapi-ts/README.md +0 -347
  142. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/ansi-colors/README.md +0 -315
  143. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/c12/README.md +0 -471
  144. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/color-support/README.md +0 -129
  145. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/semver/README.md +0 -664
  146. django_cfg-1.1.81/node_modules/.pnpm/@hey-api+openapi-ts@0.80.18_typescript@5.9.2/node_modules/typescript/README.md +0 -50
  147. django_cfg-1.1.81/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/CHANGELOG.md +0 -954
  148. django_cfg-1.1.81/node_modules/.pnpm/acorn@8.15.0/node_modules/acorn/README.md +0 -282
  149. django_cfg-1.1.81/node_modules/.pnpm/argparse@2.0.1/node_modules/argparse/CHANGELOG.md +0 -216
  150. django_cfg-1.1.81/node_modules/.pnpm/argparse@2.0.1/node_modules/argparse/README.md +0 -84
  151. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/chokidar/README.md +0 -305
  152. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/confbox/README.md +0 -191
  153. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/defu/README.md +0 -171
  154. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/dotenv/CHANGELOG.md +0 -520
  155. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/dotenv/README.md +0 -645
  156. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/giget/README.md +0 -248
  157. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/jiti/README.md +0 -243
  158. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/mlly/README.md +0 -561
  159. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/ohash/README.md +0 -173
  160. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/pathe/README.md +0 -69
  161. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/perfect-debounce/README.md +0 -92
  162. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/pkg-types/README.md +0 -167
  163. django_cfg-1.1.81/node_modules/.pnpm/c12@2.0.1/node_modules/rc9/README.md +0 -201
  164. django_cfg-1.1.81/node_modules/.pnpm/chokidar@4.0.3/node_modules/readdirp/README.md +0 -120
  165. django_cfg-1.1.81/node_modules/.pnpm/chownr@2.0.0/node_modules/chownr/README.md +0 -3
  166. django_cfg-1.1.81/node_modules/.pnpm/citty@0.1.6/node_modules/citty/README.md +0 -134
  167. django_cfg-1.1.81/node_modules/.pnpm/citty@0.1.6/node_modules/consola/README.md +0 -352
  168. django_cfg-1.1.81/node_modules/.pnpm/destr@2.0.5/node_modules/destr/README.md +0 -132
  169. django_cfg-1.1.81/node_modules/.pnpm/fs-minipass@2.1.0/node_modules/fs-minipass/README.md +0 -70
  170. django_cfg-1.1.81/node_modules/.pnpm/fs-minipass@2.1.0/node_modules/minipass/README.md +0 -728
  171. django_cfg-1.1.81/node_modules/.pnpm/giget@1.2.5/node_modules/node-fetch-native/README.md +0 -225
  172. django_cfg-1.1.81/node_modules/.pnpm/giget@1.2.5/node_modules/nypm/README.md +0 -147
  173. django_cfg-1.1.81/node_modules/.pnpm/giget@1.2.5/node_modules/pathe/README.md +0 -73
  174. django_cfg-1.1.81/node_modules/.pnpm/giget@1.2.5/node_modules/tar/README.md +0 -1080
  175. django_cfg-1.1.81/node_modules/.pnpm/handlebars@4.7.8/node_modules/minimist/CHANGELOG.md +0 -298
  176. django_cfg-1.1.81/node_modules/.pnpm/handlebars@4.7.8/node_modules/minimist/README.md +0 -121
  177. django_cfg-1.1.81/node_modules/.pnpm/handlebars@4.7.8/node_modules/neo-async/README.md +0 -273
  178. django_cfg-1.1.81/node_modules/.pnpm/handlebars@4.7.8/node_modules/source-map/CHANGELOG.md +0 -301
  179. django_cfg-1.1.81/node_modules/.pnpm/handlebars@4.7.8/node_modules/source-map/README.md +0 -742
  180. django_cfg-1.1.81/node_modules/.pnpm/handlebars@4.7.8/node_modules/uglify-js/README.md +0 -1479
  181. django_cfg-1.1.81/node_modules/.pnpm/minipass@3.3.6/node_modules/yallist/README.md +0 -204
  182. django_cfg-1.1.81/node_modules/.pnpm/minipass@5.0.0/node_modules/minipass/README.md +0 -769
  183. django_cfg-1.1.81/node_modules/.pnpm/minizlib@2.1.2/node_modules/minizlib/README.md +0 -60
  184. django_cfg-1.1.81/node_modules/.pnpm/mkdirp@1.0.4/node_modules/mkdirp/CHANGELOG.md +0 -15
  185. django_cfg-1.1.81/node_modules/.pnpm/mlly@1.8.0/node_modules/ufo/README.md +0 -466
  186. django_cfg-1.1.81/node_modules/.pnpm/node_modules/tinyexec/README.md +0 -256
  187. django_cfg-1.1.81/node_modules/@hey-api/json-schema-ref-parser/README.md +0 -138
  188. django_cfg-1.1.81/node_modules/@jsdevtools/ono/CHANGELOG.md +0 -122
  189. django_cfg-1.1.81/node_modules/@jsdevtools/ono/README.md +0 -392
  190. django_cfg-1.1.81/node_modules/@types/json-schema/README.md +0 -15
  191. django_cfg-1.1.81/node_modules/acorn/CHANGELOG.md +0 -954
  192. django_cfg-1.1.81/node_modules/acorn/README.md +0 -282
  193. django_cfg-1.1.81/node_modules/ansi-colors/README.md +0 -315
  194. django_cfg-1.1.81/node_modules/argparse/CHANGELOG.md +0 -216
  195. django_cfg-1.1.81/node_modules/argparse/README.md +0 -84
  196. django_cfg-1.1.81/node_modules/c12/README.md +0 -471
  197. django_cfg-1.1.81/node_modules/chokidar/README.md +0 -305
  198. django_cfg-1.1.81/node_modules/chownr/README.md +0 -3
  199. django_cfg-1.1.81/node_modules/citty/README.md +0 -134
  200. django_cfg-1.1.81/node_modules/color-support/README.md +0 -129
  201. django_cfg-1.1.81/node_modules/confbox/README.md +0 -191
  202. django_cfg-1.1.81/node_modules/consola/README.md +0 -352
  203. django_cfg-1.1.81/node_modules/defu/README.md +0 -171
  204. django_cfg-1.1.81/node_modules/destr/README.md +0 -132
  205. django_cfg-1.1.81/node_modules/dotenv/CHANGELOG.md +0 -520
  206. django_cfg-1.1.81/node_modules/dotenv/README.md +0 -645
  207. django_cfg-1.1.81/node_modules/fs-minipass/README.md +0 -70
  208. django_cfg-1.1.81/node_modules/fs-minipass/node_modules/minipass/README.md +0 -728
  209. django_cfg-1.1.81/node_modules/giget/README.md +0 -248
  210. django_cfg-1.1.81/node_modules/giget/node_modules/pathe/README.md +0 -73
  211. django_cfg-1.1.81/node_modules/jiti/README.md +0 -243
  212. django_cfg-1.1.81/node_modules/js-yaml/CHANGELOG.md +0 -616
  213. django_cfg-1.1.81/node_modules/js-yaml/README.md +0 -246
  214. django_cfg-1.1.81/node_modules/lodash/README.md +0 -39
  215. django_cfg-1.1.81/node_modules/minimist/CHANGELOG.md +0 -298
  216. django_cfg-1.1.81/node_modules/minimist/README.md +0 -121
  217. django_cfg-1.1.81/node_modules/minipass/README.md +0 -769
  218. django_cfg-1.1.81/node_modules/minizlib/README.md +0 -60
  219. django_cfg-1.1.81/node_modules/minizlib/node_modules/minipass/README.md +0 -728
  220. django_cfg-1.1.81/node_modules/mkdirp/CHANGELOG.md +0 -15
  221. django_cfg-1.1.81/node_modules/mlly/README.md +0 -561
  222. django_cfg-1.1.81/node_modules/mlly/node_modules/pathe/README.md +0 -73
  223. django_cfg-1.1.81/node_modules/neo-async/README.md +0 -273
  224. django_cfg-1.1.81/node_modules/node-fetch-native/README.md +0 -225
  225. django_cfg-1.1.81/node_modules/nypm/README.md +0 -147
  226. django_cfg-1.1.81/node_modules/nypm/node_modules/pathe/README.md +0 -73
  227. django_cfg-1.1.81/node_modules/ohash/README.md +0 -173
  228. django_cfg-1.1.81/node_modules/pathe/README.md +0 -69
  229. django_cfg-1.1.81/node_modules/perfect-debounce/README.md +0 -92
  230. django_cfg-1.1.81/node_modules/pkg-types/README.md +0 -167
  231. django_cfg-1.1.81/node_modules/pkg-types/node_modules/pathe/README.md +0 -73
  232. django_cfg-1.1.81/node_modules/rc9/README.md +0 -201
  233. django_cfg-1.1.81/node_modules/readdirp/README.md +0 -120
  234. django_cfg-1.1.81/node_modules/semver/README.md +0 -664
  235. django_cfg-1.1.81/node_modules/source-map/CHANGELOG.md +0 -301
  236. django_cfg-1.1.81/node_modules/source-map/README.md +0 -742
  237. django_cfg-1.1.81/node_modules/tar/README.md +0 -1080
  238. django_cfg-1.1.81/node_modules/tinyexec/README.md +0 -256
  239. django_cfg-1.1.81/node_modules/typescript/README.md +0 -50
  240. django_cfg-1.1.81/node_modules/ufo/README.md +0 -466
  241. django_cfg-1.1.81/node_modules/uglify-js/README.md +0 -1479
  242. django_cfg-1.1.81/node_modules/yallist/README.md +0 -204
  243. django_cfg-1.1.81/scripts/README.md +0 -136
  244. django_cfg-1.1.81/src/django_cfg/apps/tasks/@docs/README.md +0 -195
  245. {django_cfg-1.1.81 → django_cfg-1.1.82}/.gitignore +0 -0
  246. {django_cfg-1.1.81 → django_cfg-1.1.82}/LICENSE +0 -0
  247. {django_cfg-1.1.81 → django_cfg-1.1.82}/README.md +0 -0
  248. {django_cfg-1.1.81 → django_cfg-1.1.82}/requirements-dev.txt +0 -0
  249. {django_cfg-1.1.81 → django_cfg-1.1.82}/requirements-test.txt +0 -0
  250. {django_cfg-1.1.81 → django_cfg-1.1.82}/requirements.txt +0 -0
  251. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/README.md +0 -0
  252. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/__init__.py +0 -0
  253. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/README.md +0 -0
  254. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/__init__.py +0 -0
  255. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/__init__.py +0 -0
  256. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/activity.py +0 -0
  257. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/filters.py +0 -0
  258. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/group.py +0 -0
  259. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/inlines.py +0 -0
  260. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/otp.py +0 -0
  261. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/registration_source.py +0 -0
  262. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/resources.py +0 -0
  263. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/twilio_response.py +0 -0
  264. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/admin/user.py +0 -0
  265. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/apps.py +0 -0
  266. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/management/commands/test_otp.py +0 -0
  267. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/managers/__init__.py +0 -0
  268. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/managers/user_manager.py +0 -0
  269. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/migrations/0001_initial.py +0 -0
  270. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/migrations/0002_add_phone_otp_clean.py +0 -0
  271. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/migrations/0003_twilioresponse.py +0 -0
  272. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/migrations/0004_delete_twilioresponse.py +0 -0
  273. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/migrations/0005_twilioresponse.py +0 -0
  274. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/migrations/__init__.py +0 -0
  275. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/models.py +0 -0
  276. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/serializers/__init__.py +0 -0
  277. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/serializers/otp.py +0 -0
  278. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/serializers/profile.py +0 -0
  279. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/serializers/webhook.py +0 -0
  280. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/services/__init__.py +0 -0
  281. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/services/activity_service.py +0 -0
  282. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/services/otp_service.py +0 -0
  283. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/signals.py +0 -0
  284. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/templates/emails/base_email.html +0 -0
  285. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/templates/emails/base_email.txt +0 -0
  286. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/templates/emails/otp_email.html +0 -0
  287. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt +0 -0
  288. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/templates/emails/welcome_email.html +0 -0
  289. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/templates/emails/welcome_email.txt +0 -0
  290. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/urls.py +0 -0
  291. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/utils/notifications.py +0 -0
  292. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/views/__init__.py +0 -0
  293. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/views/otp.py +0 -0
  294. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/views/profile.py +0 -0
  295. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/accounts/views/webhook.py +0 -0
  296. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/__init__.py +0 -0
  297. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/commands/__init__.py +0 -0
  298. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/commands/urls.py +0 -0
  299. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/commands/views.py +0 -0
  300. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/health/__init__.py +0 -0
  301. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/health/urls.py +0 -0
  302. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/api/health/views.py +0 -0
  303. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/README.md +0 -0
  304. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/__init__.py +0 -0
  305. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/admin/__init__.py +0 -0
  306. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/admin/leads_admin.py +0 -0
  307. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/admin/resources.py +0 -0
  308. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/apps.py +0 -0
  309. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/migrations/0001_initial.py +0 -0
  310. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/migrations/__init__.py +0 -0
  311. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/models.py +0 -0
  312. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/serializers.py +0 -0
  313. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/signals.py +0 -0
  314. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/tests.py +0 -0
  315. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/urls.py +0 -0
  316. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/leads/views.py +0 -0
  317. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/README.md +0 -0
  318. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/__init__.py +0 -0
  319. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/admin/__init__.py +0 -0
  320. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/admin/filters.py +0 -0
  321. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -0
  322. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/admin/resources.py +0 -0
  323. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/apps.py +0 -0
  324. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/management/__init__.py +0 -0
  325. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/management/commands/__init__.py +0 -0
  326. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -0
  327. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/managers/README.md +0 -0
  328. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/managers/__init__.py +0 -0
  329. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/migrations/0001_initial.py +0 -0
  330. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/migrations/__init__.py +0 -0
  331. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/models.py +0 -0
  332. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/serializers.py +0 -0
  333. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/services/email_service.py +0 -0
  334. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/signals.py +0 -0
  335. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/urls.py +0 -0
  336. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/utils/__init__.py +0 -0
  337. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/views/__init__.py +0 -0
  338. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/views/campaigns.py +0 -0
  339. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/views/emails.py +0 -0
  340. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/views/newsletters.py +0 -0
  341. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/views/subscriptions.py +0 -0
  342. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/newsletter/views/tracking.py +0 -0
  343. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/__init__.py +0 -0
  344. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/admin/__init__.py +0 -0
  345. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/admin/filters.py +0 -0
  346. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/admin/resources.py +0 -0
  347. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/admin/support_admin.py +0 -0
  348. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/apps.py +0 -0
  349. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/managers/message_manager.py +0 -0
  350. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/managers/ticket_manager.py +0 -0
  351. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/migrations/0001_initial.py +0 -0
  352. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -0
  353. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/migrations/__init__.py +0 -0
  354. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/models.py +0 -0
  355. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/serializers.py +0 -0
  356. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/signals.py +0 -0
  357. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/templates/support/chat/access_denied.html +0 -0
  358. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -0
  359. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/urls.py +0 -0
  360. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/utils/__init__.py +0 -0
  361. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/utils/support_email_service.py +0 -0
  362. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/views/__init__.py +0 -0
  363. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/views/admin.py +0 -0
  364. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/views/api.py +0 -0
  365. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/support/views/chat.py +0 -0
  366. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/__init__.py +0 -0
  367. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/admin.py +0 -0
  368. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/apps.py +0 -0
  369. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/serializers.py +0 -0
  370. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -0
  371. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/js/api.js +0 -0
  372. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -0
  373. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/js/modals.js +0 -0
  374. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -0
  375. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -0
  376. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/static/tasks/js/theme.js +0 -0
  377. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/base.html +0 -0
  378. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -0
  379. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -0
  380. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -0
  381. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -0
  382. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/status_cards.html +0 -0
  383. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -0
  384. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -0
  385. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -0
  386. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -0
  387. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -0
  388. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/urls.py +0 -0
  389. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/tasks/views.py +0 -0
  390. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps/urls.py +0 -0
  391. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/apps.py +0 -0
  392. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/archive/django_sample.zip +0 -0
  393. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/README.md +0 -0
  394. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/__init__.py +0 -0
  395. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/commands/__init__.py +0 -0
  396. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/commands/create_project.py +0 -0
  397. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/commands/info.py +0 -0
  398. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/main.py +0 -0
  399. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/cli/utils.py +0 -0
  400. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/core/__init__.py +0 -0
  401. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/core/config.py +0 -0
  402. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/core/environment.py +0 -0
  403. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/core/generation.py +0 -0
  404. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/core/validation.py +0 -0
  405. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/exceptions.py +0 -0
  406. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/integration.py +0 -0
  407. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/__init__.py +0 -0
  408. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/__init__.py +0 -0
  409. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/check_settings.py +0 -0
  410. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/clear_constance.py +0 -0
  411. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/create_token.py +0 -0
  412. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/generate.py +0 -0
  413. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/list_urls.py +0 -0
  414. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/migrate_all.py +0 -0
  415. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/migrator.py +0 -0
  416. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/rundramatiq.py +0 -0
  417. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/runserver_ngrok.py +0 -0
  418. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/script.py +0 -0
  419. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/show_config.py +0 -0
  420. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/show_urls.py +0 -0
  421. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/superuser.py +0 -0
  422. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/task_clear.py +0 -0
  423. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/task_status.py +0 -0
  424. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/test_email.py +0 -0
  425. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/test_telegram.py +0 -0
  426. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/test_twilio.py +0 -0
  427. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/tree.py +0 -0
  428. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/management/commands/validate_config.py +0 -0
  429. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/middleware/README.md +0 -0
  430. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/middleware/__init__.py +0 -0
  431. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/middleware/public_endpoints.py +0 -0
  432. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/middleware/user_activity.py +0 -0
  433. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/__init__.py +0 -0
  434. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/cache.py +0 -0
  435. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/constance.py +0 -0
  436. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/database.py +0 -0
  437. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/drf.py +0 -0
  438. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/jwt.py +0 -0
  439. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/limits.py +0 -0
  440. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/ngrok.py +0 -0
  441. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/revolution.py +0 -0
  442. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/services.py +0 -0
  443. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/tasks.py +0 -0
  444. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/models/unfold.py +0 -0
  445. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/__init__.py +0 -0
  446. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/base.py +0 -0
  447. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_currency/README.md +0 -0
  448. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_currency/__init__.py +0 -0
  449. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_currency/cache.py +0 -0
  450. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_currency/converter.py +0 -0
  451. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_currency/service.py +0 -0
  452. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_email.py +0 -0
  453. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/README.md +0 -0
  454. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/__init__.py +0 -0
  455. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/example.py +0 -0
  456. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/__init__.py +0 -0
  457. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/cache.py +0 -0
  458. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/client.py +0 -0
  459. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/costs.py +0 -0
  460. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/extractor.py +0 -0
  461. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/models.py +0 -0
  462. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/models_cache.py +0 -0
  463. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/llm/tokenizer.py +0 -0
  464. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/translator/__init__.py +0 -0
  465. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/translator/cache.py +0 -0
  466. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_llm/translator/translator.py +0 -0
  467. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_logger.py +0 -0
  468. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_ngrok.py +0 -0
  469. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_tasks.py +0 -0
  470. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_telegram.py +0 -0
  471. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/README.md +0 -0
  472. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/__init__.py +0 -0
  473. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/exceptions.py +0 -0
  474. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/models.py +0 -0
  475. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/sendgrid_service.py +0 -0
  476. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/service.py +0 -0
  477. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/simple_service.py +0 -0
  478. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -0
  479. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -0
  480. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/django_twilio/twilio_service.py +0 -0
  481. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/dramatiq_setup.py +0 -0
  482. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/logger.py +0 -0
  483. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/unfold/__init__.py +0 -0
  484. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/unfold/callbacks.py +0 -0
  485. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/unfold/dashboard.py +0 -0
  486. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/unfold/models.py +0 -0
  487. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/unfold/system_monitor.py +0 -0
  488. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/modules/unfold/tailwind.py +0 -0
  489. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/pyproject.toml +0 -0
  490. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/routers.py +0 -0
  491. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/__init__.py +0 -0
  492. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/constance/change_list.html +0 -0
  493. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/constance/includes/default_value.html +0 -0
  494. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -0
  495. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/constance/includes/results_list.html +0 -0
  496. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/constance/includes/setting_row.html +0 -0
  497. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/constance/includes/table_headers.html +0 -0
  498. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/index.html +0 -0
  499. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -0
  500. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -0
  501. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/charts_section.html +0 -0
  502. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/django_commands.html +0 -0
  503. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/quick_actions.html +0 -0
  504. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/recent_activity.html +0 -0
  505. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -0
  506. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/stats_cards.html +0 -0
  507. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -0
  508. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/system_health.html +0 -0
  509. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/system_metrics.html +0 -0
  510. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/components/user_permissions.html +0 -0
  511. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -0
  512. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -0
  513. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -0
  514. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -0
  515. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -0
  516. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/admin/snippets/zones/zones_table.html +0 -0
  517. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/templates/emails/base_email.html +0 -0
  518. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/utils/__init__.py +0 -0
  519. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/utils/path_resolution.py +0 -0
  520. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/utils/smart_defaults.py +0 -0
  521. {django_cfg-1.1.81 → django_cfg-1.1.82}/src/django_cfg/version_check.py +0 -0
@@ -1,3 +1,7 @@
1
+ # Exclude all markdown files except main README.md and CHANGELOG.md
2
+ recursive-exclude * *.md
3
+ include README.md
4
+ include CHANGELOG.md
1
5
  include LICENSE
2
6
  include MANIFEST.in
3
7
  include requirements*.txt
@@ -37,9 +41,4 @@ exclude .gitignore
37
41
  # Exclude Node.js files
38
42
  exclude package*.json
39
43
  exclude yarn*.lock
40
- recursive-exclude node_modules *
41
-
42
- # Exclude all markdown files except main README.md and CHANGELOG.md
43
- recursive-exclude * *.md
44
- include README.md
45
- include CHANGELOG.md
44
+ recursive-exclude node_modules *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.1.81
3
+ Version: 1.1.82
4
4
  Summary: 🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience
5
5
  Project-URL: Homepage, https://github.com/markolofsen/django-cfg
6
6
  Project-URL: Documentation, https://django-cfg.readthedocs.io
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "django-cfg"
7
- version = "1.1.81"
7
+ version = "1.1.82"
8
8
  description = "🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -194,10 +194,7 @@ django-cfg = "django_cfg.cli.main:main"
194
194
  packages = ["src/django_cfg"]
195
195
  exclude = [
196
196
  "django_sample", # Exclude django_sample directory (use archive instead)
197
- "scripts/", # Exclude scripts from wheel package
198
- "**/*.md", # Exclude all markdown files from wheel
199
- "!README.md", # But include main README.md
200
- "!CHANGELOG.md", # But include CHANGELOG.md
197
+ "scripts/", # Exclude scripts from wheel package
201
198
  ]
202
199
 
203
200
  [tool.hatch.metadata]
@@ -218,10 +215,7 @@ exclude = [
218
215
  "scripts", # Exclude development scripts
219
216
  "*.log",
220
217
  ".env*",
221
- "django_sample", # Exclude django_sample directory (use archive instead)
222
- "**/*.md", # Exclude all markdown files
223
- "!README.md", # But include main README.md
224
- "!CHANGELOG.md", # But include CHANGELOG.md
218
+ "django_sample", # Exclude django_sample directory (use archive instead)
225
219
  ]
226
220
 
227
221
  # Black configuration
@@ -38,7 +38,7 @@ default_app_config = "django_cfg.apps.DjangoCfgConfig"
38
38
  from typing import TYPE_CHECKING
39
39
 
40
40
  # Version information
41
- __version__ = "1.1.81"
41
+ __version__ = "1.1.82"
42
42
  __author__ = "Unrealos Team"
43
43
  __email__ = "info@unrealos.com"
44
44
  __license__ = "MIT"
@@ -0,0 +1,266 @@
1
+ # 🚀 Django CFG Twilio Integration - Complete Setup Guide
2
+
3
+ ## 📋 Overview
4
+
5
+ Django CFG Twilio provides seamless integration for:
6
+ - 📱 **WhatsApp OTP** via Twilio Verify API
7
+ - 📱 **SMS OTP** via Twilio Verify API
8
+ - 📧 **Email OTP** via SendGrid
9
+ - 🔧 **Testing Suite** with management commands
10
+ - 📧 **HTML Email Templates** with customization
11
+
12
+ ## 🛠️ Quick Setup (5 minutes)
13
+
14
+ ### 1. Install Dependencies
15
+ ```bash
16
+ pip install django-cfg[twilio]
17
+ # or
18
+ poetry add django-cfg[twilio]
19
+ ```
20
+
21
+ ### 2. Configure Twilio Services
22
+
23
+ #### A. Create Twilio Verify Service
24
+ 1. Go to [Twilio Console > Verify > Services](https://console.twilio.com/us1/develop/verify/services)
25
+ 2. Click **Create new Service**
26
+ 3. Name: `YourApp OTP Service`
27
+ 4. **Enable channels**: WhatsApp ✅, SMS ✅
28
+ 5. Copy the **Service SID** (starts with `VA...`)
29
+
30
+ #### B. Get SendGrid API Key (Optional)
31
+ 1. Go to [SendGrid Console > API Keys](https://app.sendgrid.com/settings/api_keys)
32
+ 2. Create new API key with **Mail Send** permissions
33
+ 3. Copy the API key (starts with `SG.`)
34
+
35
+ ### 3. Update Configuration Files
36
+
37
+ #### `config.dev.yaml`
38
+ ```yaml
39
+ twilio:
40
+ account_sid: "AC_YOUR_ACCOUNT_SID"
41
+ auth_token: "YOUR_AUTH_TOKEN"
42
+ whatsapp_from: "+14155238886" # Twilio sandbox
43
+ sms_from: "+YOUR_SMS_NUMBER"
44
+ sendgrid_api_key: "SG.YOUR_SENDGRID_API_KEY"
45
+ verify_service_sid: "VA_YOUR_VERIFY_SERVICE_SID"
46
+ ```
47
+
48
+ #### `config.py`
49
+ ```python
50
+ from django_cfg.modules.django_twilio.models import SendGridConfig, TwilioVerifyConfig, TwilioChannelType
51
+
52
+ class YourProjectConfig(DjangoConfig):
53
+ # Admin emails for testing
54
+ admin_emails: List[str] = ["admin@yourdomain.com"]
55
+
56
+ # Twilio configuration
57
+ twilio: Optional[TwilioConfig] = TwilioConfig(
58
+ account_sid=env.twilio.account_sid,
59
+ auth_token=SecretStr(env.twilio.auth_token),
60
+
61
+ # Verify API for OTP
62
+ verify=TwilioVerifyConfig(
63
+ service_sid=env.twilio.verify_service_sid,
64
+ service_name=env.app.name,
65
+ default_channel=TwilioChannelType.WHATSAPP,
66
+ fallback_channels=[TwilioChannelType.SMS],
67
+ code_length=6,
68
+ ttl_seconds=600, # 10 minutes
69
+ max_attempts=5,
70
+ ) if env.twilio.verify_service_sid else None,
71
+
72
+ # SendGrid for email
73
+ sendgrid=SendGridConfig(
74
+ api_key=SecretStr(env.twilio.sendgrid_api_key),
75
+ from_email="noreply@yourdomain.com",
76
+ from_name=env.app.name,
77
+ default_subject=f"Your {env.app.name} verification code",
78
+ ) if env.twilio.sendgrid_api_key else None,
79
+ ) if env.twilio.account_sid and env.twilio.auth_token else None
80
+ ```
81
+
82
+ ## 🧪 Testing Everything
83
+
84
+ ### Quick Test Command
85
+ ```bash
86
+ # Test all services
87
+ python manage.py test_twilio --mode=all
88
+
89
+ # Test OTP only
90
+ python manage.py test_twilio --mode=test-otp --phone="+1234567890"
91
+
92
+ # Interactive mode
93
+ python manage.py test_twilio --interactive
94
+
95
+ # Check configuration
96
+ python manage.py test_twilio --mode=setup
97
+ ```
98
+
99
+ ### Expected Output
100
+ ```
101
+ 🚀 Django CFG Twilio Test Suite
102
+ ==================================================
103
+ 📧 Using admin email from config: admin@yourdomain.com
104
+
105
+ 🔧 Configuration Check
106
+ ------------------------------
107
+ ✅ Admin emails configured
108
+ ✅ Twilio configuration found
109
+ ✅ Verify API configured
110
+ ✅ SendGrid configured
111
+ ✅ Email configuration found
112
+
113
+ 🔐 Testing OTP Functionality
114
+ ------------------------------
115
+ 📱 Testing WhatsApp OTP to +1234567890...
116
+ ✅ OTP sent via WhatsApp to ***7890
117
+
118
+ 📧 Testing Email OTP to admin@yourdomain.com...
119
+ ✅ Email OTP sent (code: 123456)
120
+
121
+ 🎉 All tests completed!
122
+ ```
123
+
124
+ ## 🔌 API Usage
125
+
126
+ ### Basic OTP Request
127
+ ```python
128
+ from django_cfg.modules.django_twilio import send_whatsapp_otp, verify_otp
129
+
130
+ # Send WhatsApp OTP
131
+ success, message = send_whatsapp_otp("+1234567890")
132
+
133
+ # Verify OTP
134
+ is_valid, message = verify_otp("+1234567890", "123456")
135
+ ```
136
+
137
+ ### Email OTP
138
+ ```python
139
+ from django_cfg.modules.django_twilio import send_otp_email
140
+
141
+ # Send email OTP
142
+ success, message, otp_code = send_otp_email("user@example.com")
143
+ ```
144
+
145
+ ### REST API Endpoints
146
+ ```bash
147
+ # Request OTP
148
+ curl -X POST http://localhost:8000/api/accounts/otp/request/ \
149
+ -H "Content-Type: application/json" \
150
+ -d '{"identifier": "+1234567890", "channel": "phone"}'
151
+
152
+ # Verify OTP
153
+ curl -X POST http://localhost:8000/api/accounts/otp/verify/ \
154
+ -H "Content-Type: application/json" \
155
+ -d '{"identifier": "+1234567890", "otp": "123456", "channel": "phone"}'
156
+ ```
157
+
158
+ ## 📧 Email Templates
159
+
160
+ ### Template Structure
161
+ ```
162
+ django_cfg/modules/django_twilio/templates/
163
+ ├── email_otp_template.html # Main HTML template
164
+ ├── email_otp_test_data.json # Test data
165
+ └── email_otp_rendered.html # Generated preview
166
+ ```
167
+
168
+ ### Template Variables
169
+ - `{{app_name}}` - Your app name
170
+ - `{{user_name}}` - User's name
171
+ - `{{otp_code}}` - 6-digit OTP code
172
+ - `{{otp_link}}` - Verification link
173
+ - `{{expires_minutes}}` - Expiry time
174
+
175
+ ### Generate Templates
176
+ ```bash
177
+ python manage.py test_twilio --mode=generate-templates
178
+ ```
179
+
180
+ ## 🚨 Troubleshooting
181
+
182
+ ### Common Issues
183
+
184
+ #### 1. WhatsApp Not Working
185
+ ```
186
+ ❌ Error: Unable to create record: Delivery channel disabled: WHATSAPP
187
+ ```
188
+ **Solution**: Enable WhatsApp channel in [Twilio Console > Verify > Services](https://console.twilio.com/us1/develop/verify/services)
189
+
190
+ #### 2. SMS to International Numbers
191
+ ```
192
+ ❌ Error: Message cannot be sent with current 'To' and 'From' parameters
193
+ ```
194
+ **Solution**: Use Verify API (automatic) or upgrade Twilio account for international SMS
195
+
196
+ #### 3. SendGrid Not Working
197
+ ```
198
+ ❌ Error: SendGrid configuration not found
199
+ ```
200
+ **Solution**: Add `sendgrid_api_key` to your YAML config and enable in `config.py`
201
+
202
+ #### 4. Email Not Sending
203
+ ```
204
+ ❌ Error: Email backend not configured
205
+ ```
206
+ **Solution**: Check email configuration in `config.py` and ensure SMTP settings are correct
207
+
208
+ ### Debug Mode
209
+ ```python
210
+ # Enable detailed logging
211
+ twilio: TwilioConfig = TwilioConfig(
212
+ debug_logging=True, # Shows all API requests/responses
213
+ test_mode=True, # Uses test credentials
214
+ )
215
+ ```
216
+
217
+ ## 📱 Production Checklist
218
+
219
+ ### Before Going Live:
220
+
221
+ #### Twilio Setup
222
+ - [ ] **Account verified** and upgraded from trial
223
+ - [ ] **Phone numbers verified** for SMS
224
+ - [ ] **WhatsApp Business approved** (if using production WhatsApp)
225
+ - [ ] **Verify Service** created and channels enabled
226
+ - [ ] **Webhook URLs** configured (optional)
227
+
228
+ #### SendGrid Setup
229
+ - [ ] **Domain authentication** completed
230
+ - [ ] **Sender identity** verified
231
+ - [ ] **API key** with proper permissions
232
+ - [ ] **Email templates** tested and approved
233
+
234
+ #### Security
235
+ - [ ] **Environment variables** for sensitive data
236
+ - [ ] **Rate limiting** configured
237
+ - [ ] **Admin emails** updated for production
238
+ - [ ] **Error monitoring** setup (Sentry, etc.)
239
+
240
+ #### Testing
241
+ - [ ] **All OTP channels** tested with real numbers
242
+ - [ ] **Email delivery** tested with real addresses
243
+ - [ ] **Error handling** tested with invalid inputs
244
+ - [ ] **Load testing** completed for expected volume
245
+
246
+ ## 🔗 Useful Links
247
+
248
+ - [Twilio Console](https://console.twilio.com/)
249
+ - [Twilio Verify API Docs](https://www.twilio.com/docs/verify/api)
250
+ - [SendGrid Console](https://app.sendgrid.com/)
251
+ - [Django CFG Documentation](https://github.com/your-repo/django-cfg)
252
+
253
+ ## 💡 Pro Tips
254
+
255
+ 1. **Use Verify API** for professional OTP instead of custom solutions
256
+ 2. **Enable both WhatsApp and SMS** for better delivery rates
257
+ 3. **Test with real numbers** in different countries
258
+ 4. **Monitor delivery rates** in Twilio Console
259
+ 5. **Use admin_emails** for easy testing configuration
260
+ 6. **Keep templates simple** for better email client compatibility
261
+
262
+ ---
263
+
264
+ 🎉 **You're all set!** Your Django CFG Twilio integration is ready for production use.
265
+
266
+ For support, check the troubleshooting section or create an issue on GitHub.
@@ -1,153 +0,0 @@
1
- # 🎭 Dramatiq Integration for Django-CFG
2
-
3
- ## 📚 Documentation Index
4
-
5
- This directory contains comprehensive documentation for Dramatiq integration in Django-CFG.
6
-
7
- ### 📖 Available Documents
8
-
9
- | Document | Description | Target Audience |
10
- |----------|-------------|-----------------|
11
- | **[DRAMATIQ_INTEGRATION.md](./DRAMATIQ_INTEGRATION.md)** | Complete technical documentation following @DOCS_MODULE.md methodology | Developers, Architects |
12
- | **[IMPLEMENTATION_PLAN.md](./IMPLEMENTATION_PLAN.md)** | Detailed 6-week implementation roadmap | Project Managers, Developers |
13
- | **[EXAMPLES.md](./EXAMPLES.md)** | Real-world usage examples and patterns | Developers, DevOps |
14
-
15
- ## 🎯 Quick Navigation
16
-
17
- ### For Developers
18
- - **Getting Started** → [DRAMATIQ_INTEGRATION.md#usage-examples](./DRAMATIQ_INTEGRATION.md#-usage-examples)
19
- - **Configuration** → [DRAMATIQ_INTEGRATION.md#data-models](./DRAMATIQ_INTEGRATION.md#-data-models-pydantic-2--typescript)
20
- - **Task Patterns** → [EXAMPLES.md#task-definition-examples](./EXAMPLES.md#-task-definition-examples)
21
- - **Error Handling** → [EXAMPLES.md#error-handling-examples](./EXAMPLES.md#-error-handling-examples)
22
-
23
- ### For Project Managers
24
- - **Implementation Timeline** → [IMPLEMENTATION_PLAN.md#timeline](./IMPLEMENTATION_PLAN.md#-timeline)
25
- - **Resource Requirements** → [IMPLEMENTATION_PLAN.md#technical-implementation-details](./IMPLEMENTATION_PLAN.md#-technical-implementation-details)
26
- - **Risk Assessment** → [IMPLEMENTATION_PLAN.md#risk-mitigation](./IMPLEMENTATION_PLAN.md#-risk-mitigation)
27
-
28
- ### For DevOps Engineers
29
- - **Production Setup** → [EXAMPLES.md#management-commands-usage](./EXAMPLES.md#-management-commands-usage)
30
- - **Monitoring** → [EXAMPLES.md#monitoring-and-observability](./EXAMPLES.md#-monitoring-and-observability)
31
- - **Deployment** → [DRAMATIQ_INTEGRATION.md#production-considerations](./DRAMATIQ_INTEGRATION.md#priority-high-production-considerations)
32
-
33
- ## 🚀 Key Features
34
-
35
- ### ✅ What's Included
36
- - **Zero Configuration** - Works out of the box with Redis
37
- - **Type Safety** - Full Pydantic v2 validation
38
- - **Production Ready** - Comprehensive middleware stack
39
- - **Redis Reuse** - Leverages existing cache configuration
40
- - **Optional Dependency** - Install only when needed
41
-
42
- ### 🎯 Use Cases
43
- - **Background Tasks** - Email sending, report generation
44
- - **Async Processing** - File uploads, data processing
45
- - **Scheduled Jobs** - Cleanup tasks, periodic reports
46
- - **High Reliability** - Payment processing, critical operations
47
-
48
- ## 📋 Implementation Status
49
-
50
- | Component | Status | Documentation |
51
- |-----------|--------|---------------|
52
- | **Core Models** | 📝 Designed | [DRAMATIQ_INTEGRATION.md](./DRAMATIQ_INTEGRATION.md) |
53
- | **Service Layer** | 📝 Designed | [DRAMATIQ_INTEGRATION.md](./DRAMATIQ_INTEGRATION.md) |
54
- | **Django Integration** | 📝 Designed | [IMPLEMENTATION_PLAN.md](./IMPLEMENTATION_PLAN.md) |
55
- | **Management Commands** | 📝 Designed | [EXAMPLES.md](./EXAMPLES.md) |
56
- | **Testing Strategy** | 📝 Planned | [IMPLEMENTATION_PLAN.md](./IMPLEMENTATION_PLAN.md) |
57
- | **Production Examples** | ✅ Complete | [EXAMPLES.md](./EXAMPLES.md) |
58
-
59
- ## 🔧 Quick Start
60
-
61
- ### 1. Installation
62
- ```bash
63
- # Install Django-CFG with task support
64
- pip install django-cfg[tasks]
65
- ```
66
-
67
- ### 2. Configuration
68
- ```python
69
- # config.py
70
- from django_cfg import DjangoConfig
71
- from django_cfg.models.tasks import TaskConfig
72
-
73
- class MyConfig(DjangoConfig):
74
- project_name: str = "MyApp"
75
-
76
- # Redis for cache + tasks
77
- cache_default: CacheBackend = CacheBackend(redis_url="redis://localhost:6379/0")
78
-
79
- # Enable tasks with zero configuration
80
- tasks: TaskConfig = TaskConfig()
81
-
82
- config = MyConfig()
83
- ```
84
-
85
- ### 3. Define Tasks
86
- ```python
87
- # tasks.py
88
- import dramatiq
89
-
90
- @dramatiq.actor
91
- def send_email(user_id: int):
92
- # Task implementation
93
- pass
94
- ```
95
-
96
- ### 4. Use Tasks
97
- ```python
98
- # views.py
99
- send_email.send(user.id) # Queue task
100
- ```
101
-
102
- ### 5. Run Workers
103
- ```bash
104
- python manage.py rundramatiq
105
- ```
106
-
107
- ## 📊 Architecture Overview
108
-
109
- ```
110
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
111
- │ Django-CFG │ │ Redis │ │ Dramatiq │
112
- │ TaskConfig │───▶│ Message │◀───│ Workers │
113
- │ │ │ Broker │ │ │
114
- └─────────────────┘ └─────────────────┘ └─────────────────┘
115
- │ │ │
116
- ▼ ▼ ▼
117
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
118
- │ Pydantic │ │ Queue │ │ Task │
119
- │ Validation │ │ Management │ │ Execution │
120
- └─────────────────┘ └─────────────────┘ └─────────────────┘
121
- ```
122
-
123
- ## 🤝 Contributing
124
-
125
- ### Documentation Standards
126
- - Follow [@DOCS_MODULE.md](../@docs.ai/DOCS_MODULE.md) methodology
127
- - Keep files under 1000 lines
128
- - Include working code examples
129
- - Use AI-friendly markers (%%PRIORITY:HIGH%%, etc.)
130
-
131
- ### Code Standards
132
- - Type hints for all functions
133
- - Pydantic v2 for configuration
134
- - Comprehensive error handling
135
- - Production-ready defaults
136
-
137
- ## 📞 Support
138
-
139
- ### Issues and Questions
140
- - **Technical Issues** → Create GitHub issue with `dramatiq` label
141
- - **Configuration Help** → Check [EXAMPLES.md](./EXAMPLES.md)
142
- - **Performance Issues** → See [Production Considerations](./DRAMATIQ_INTEGRATION.md#priority-high-production-considerations)
143
-
144
- ### Community Resources
145
- - **Django-CFG Discussions** → GitHub Discussions
146
- - **Dramatiq Documentation** → https://dramatiq.io/
147
- - **Redis Documentation** → https://redis.io/documentation
148
-
149
- ---
150
-
151
- **Made with ❤️ by the Django-CFG Team**
152
-
153
- *Dramatiq Integration: Because background tasks should be simple, safe, and powerful.*