djresttoolkit 0.17.0__tar.gz → 0.17.2__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 (244) hide show
  1. djresttoolkit-0.17.2/.python-version +1 -0
  2. djresttoolkit-0.17.2/.vscode/settings.json +12 -0
  3. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/PKG-INFO +2 -2
  4. djresttoolkit-0.17.2/demo/apps/todos/admin.py +48 -0
  5. djresttoolkit-0.17.2/demo/apps/todos/apps.py +7 -0
  6. djresttoolkit-0.17.2/demo/apps/todos/dbseed/tag_seed.py +13 -0
  7. djresttoolkit-0.17.2/demo/apps/todos/dbseed/todo_seed.py +44 -0
  8. djresttoolkit-0.17.2/demo/apps/todos/dbseed/todo_tag_seed.py +22 -0
  9. djresttoolkit-0.17.2/demo/apps/todos/migrations/0001_initial.py +131 -0
  10. djresttoolkit-0.17.2/demo/apps/todos/models.py +118 -0
  11. djresttoolkit-0.17.2/demo/apps/todos/tests.py +3 -0
  12. djresttoolkit-0.17.2/demo/apps/todos/urls.py +7 -0
  13. djresttoolkit-0.17.2/demo/apps_config/asgi.py +10 -0
  14. djresttoolkit-0.17.2/demo/apps_config/serializers.py +7 -0
  15. djresttoolkit-0.17.2/demo/apps_config/settings.py +248 -0
  16. djresttoolkit-0.17.2/demo/apps_config/urls.py +17 -0
  17. djresttoolkit-0.17.2/demo/apps_config/views.py +40 -0
  18. djresttoolkit-0.17.2/demo/apps_config/wsgi.py +9 -0
  19. djresttoolkit-0.17.2/demo/env_config/__init__.py +3 -0
  20. djresttoolkit-0.17.2/demo/env_config/env_settings.py +54 -0
  21. djresttoolkit-0.17.2/demo/manage.py +22 -0
  22. djresttoolkit-0.17.2/demo/staticfiles/admin/css/autocomplete.css +279 -0
  23. djresttoolkit-0.17.2/demo/staticfiles/admin/css/base.css +1180 -0
  24. djresttoolkit-0.17.2/demo/staticfiles/admin/css/changelists.css +343 -0
  25. djresttoolkit-0.17.2/demo/staticfiles/admin/css/dark_mode.css +130 -0
  26. djresttoolkit-0.17.2/demo/staticfiles/admin/css/dashboard.css +29 -0
  27. djresttoolkit-0.17.2/demo/staticfiles/admin/css/forms.css +498 -0
  28. djresttoolkit-0.17.2/demo/staticfiles/admin/css/login.css +61 -0
  29. djresttoolkit-0.17.2/demo/staticfiles/admin/css/nav_sidebar.css +150 -0
  30. djresttoolkit-0.17.2/demo/staticfiles/admin/css/responsive.css +904 -0
  31. djresttoolkit-0.17.2/demo/staticfiles/admin/css/responsive_rtl.css +89 -0
  32. djresttoolkit-0.17.2/demo/staticfiles/admin/css/rtl.css +293 -0
  33. djresttoolkit-0.17.2/demo/staticfiles/admin/css/unusable_password_field.css +19 -0
  34. djresttoolkit-0.17.2/demo/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md +21 -0
  35. djresttoolkit-0.17.2/demo/staticfiles/admin/css/vendor/select2/select2.css +481 -0
  36. djresttoolkit-0.17.2/demo/staticfiles/admin/css/vendor/select2/select2.min.css +1 -0
  37. djresttoolkit-0.17.2/demo/staticfiles/admin/css/widgets.css +613 -0
  38. djresttoolkit-0.17.2/demo/staticfiles/admin/img/README.txt +7 -0
  39. djresttoolkit-0.17.2/demo/staticfiles/admin/img/calendar-icons.svg +63 -0
  40. djresttoolkit-0.17.2/demo/staticfiles/admin/img/gis/move_vertex_off.svg +1 -0
  41. djresttoolkit-0.17.2/demo/staticfiles/admin/img/gis/move_vertex_on.svg +1 -0
  42. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-addlink.svg +3 -0
  43. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-alert.svg +3 -0
  44. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-calendar.svg +9 -0
  45. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-changelink.svg +3 -0
  46. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-clock.svg +9 -0
  47. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-deletelink.svg +3 -0
  48. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-hidelink.svg +3 -0
  49. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-no.svg +3 -0
  50. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-unknown-alt.svg +3 -0
  51. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-unknown.svg +3 -0
  52. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-viewlink.svg +3 -0
  53. djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-yes.svg +3 -0
  54. djresttoolkit-0.17.2/demo/staticfiles/admin/img/inline-delete.svg +3 -0
  55. djresttoolkit-0.17.2/demo/staticfiles/admin/img/search.svg +3 -0
  56. djresttoolkit-0.17.2/demo/staticfiles/admin/img/selector-icons.svg +34 -0
  57. djresttoolkit-0.17.2/demo/staticfiles/admin/img/sorting-icons.svg +19 -0
  58. djresttoolkit-0.17.2/demo/staticfiles/admin/img/tooltag-add.svg +3 -0
  59. djresttoolkit-0.17.2/demo/staticfiles/admin/img/tooltag-arrowright.svg +3 -0
  60. djresttoolkit-0.17.2/demo/staticfiles/admin/js/SelectBox.js +116 -0
  61. djresttoolkit-0.17.2/demo/staticfiles/admin/js/SelectFilter2.js +311 -0
  62. djresttoolkit-0.17.2/demo/staticfiles/admin/js/actions.js +204 -0
  63. djresttoolkit-0.17.2/demo/staticfiles/admin/js/admin/DateTimeShortcuts.js +408 -0
  64. djresttoolkit-0.17.2/demo/staticfiles/admin/js/admin/RelatedObjectLookups.js +252 -0
  65. djresttoolkit-0.17.2/demo/staticfiles/admin/js/autocomplete.js +33 -0
  66. djresttoolkit-0.17.2/demo/staticfiles/admin/js/calendar.js +239 -0
  67. djresttoolkit-0.17.2/demo/staticfiles/admin/js/cancel.js +29 -0
  68. djresttoolkit-0.17.2/demo/staticfiles/admin/js/change_form.js +16 -0
  69. djresttoolkit-0.17.2/demo/staticfiles/admin/js/core.js +184 -0
  70. djresttoolkit-0.17.2/demo/staticfiles/admin/js/filters.js +30 -0
  71. djresttoolkit-0.17.2/demo/staticfiles/admin/js/inlines.js +359 -0
  72. djresttoolkit-0.17.2/demo/staticfiles/admin/js/jquery.init.js +8 -0
  73. djresttoolkit-0.17.2/demo/staticfiles/admin/js/nav_sidebar.js +79 -0
  74. djresttoolkit-0.17.2/demo/staticfiles/admin/js/popup_response.js +15 -0
  75. djresttoolkit-0.17.2/demo/staticfiles/admin/js/prepopulate.js +43 -0
  76. djresttoolkit-0.17.2/demo/staticfiles/admin/js/prepopulate_init.js +15 -0
  77. djresttoolkit-0.17.2/demo/staticfiles/admin/js/theme.js +51 -0
  78. djresttoolkit-0.17.2/demo/staticfiles/admin/js/unusable_password_field.js +29 -0
  79. djresttoolkit-0.17.2/demo/staticfiles/admin/js/urlify.js +169 -0
  80. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/jquery/LICENSE.txt +20 -0
  81. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/jquery/jquery.js +10716 -0
  82. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/jquery/jquery.min.js +2 -0
  83. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/LICENSE.md +21 -0
  84. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/af.js +3 -0
  85. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ar.js +3 -0
  86. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/az.js +3 -0
  87. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/bg.js +3 -0
  88. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/bn.js +3 -0
  89. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/bs.js +3 -0
  90. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ca.js +3 -0
  91. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/cs.js +3 -0
  92. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/da.js +3 -0
  93. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/de.js +3 -0
  94. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/dsb.js +3 -0
  95. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/el.js +3 -0
  96. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/en.js +3 -0
  97. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/es.js +3 -0
  98. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/et.js +3 -0
  99. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/eu.js +3 -0
  100. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/fa.js +3 -0
  101. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/fi.js +3 -0
  102. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/fr.js +3 -0
  103. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/gl.js +3 -0
  104. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/he.js +3 -0
  105. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hi.js +3 -0
  106. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hr.js +3 -0
  107. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hsb.js +3 -0
  108. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hu.js +3 -0
  109. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hy.js +3 -0
  110. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/id.js +3 -0
  111. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/is.js +3 -0
  112. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/it.js +3 -0
  113. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ja.js +3 -0
  114. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ka.js +3 -0
  115. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/km.js +3 -0
  116. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ko.js +3 -0
  117. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/lt.js +3 -0
  118. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/lv.js +3 -0
  119. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/mk.js +3 -0
  120. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ms.js +3 -0
  121. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/nb.js +3 -0
  122. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ne.js +3 -0
  123. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/nl.js +3 -0
  124. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/pl.js +3 -0
  125. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ps.js +3 -0
  126. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/pt-BR.js +3 -0
  127. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/pt.js +3 -0
  128. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ro.js +3 -0
  129. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ru.js +3 -0
  130. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sk.js +3 -0
  131. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sl.js +3 -0
  132. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sq.js +3 -0
  133. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js +3 -0
  134. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sr.js +3 -0
  135. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sv.js +3 -0
  136. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/th.js +3 -0
  137. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/tk.js +3 -0
  138. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/tr.js +3 -0
  139. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/uk.js +3 -0
  140. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/vi.js +3 -0
  141. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/zh-CN.js +3 -0
  142. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/zh-TW.js +3 -0
  143. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/select2.full.js +6820 -0
  144. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/select2.full.min.js +2 -0
  145. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/xregexp/LICENSE.txt +21 -0
  146. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/xregexp/xregexp.js +6126 -0
  147. djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/xregexp/xregexp.min.js +17 -0
  148. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap-theme.min.css +6 -0
  149. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap-theme.min.css.map +1 -0
  150. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap-tweaks.css +237 -0
  151. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap.min.css +6 -0
  152. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap.min.css.map +1 -0
  153. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/default.css +82 -0
  154. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/font-awesome-4.0.3.css +1338 -0
  155. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/prettify.css +30 -0
  156. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/css/base.css +359 -0
  157. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/css/highlight.css +125 -0
  158. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/css/jquery.json-view.min.css +11 -0
  159. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/img/favicon.ico +0 -0
  160. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/img/grid.png +0 -0
  161. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/js/api.js +315 -0
  162. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/js/highlight.pack.js +2 -0
  163. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/js/jquery.json-view.min.js +7 -0
  164. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.eot +0 -0
  165. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.svg +414 -0
  166. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.ttf +0 -0
  167. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.woff +0 -0
  168. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.eot +0 -0
  169. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.svg +288 -0
  170. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.ttf +0 -0
  171. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.woff +0 -0
  172. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.woff2 +0 -0
  173. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/img/glyphicons-halflings-white.png +0 -0
  174. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/img/glyphicons-halflings.png +0 -0
  175. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/img/grid.png +0 -0
  176. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/ajax-form.js +133 -0
  177. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/bootstrap.min.js +6 -0
  178. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/coreapi-0.1.1.js +2043 -0
  179. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/csrf.js +53 -0
  180. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/default.js +47 -0
  181. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/jquery-3.7.1.min.js +2 -0
  182. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/load-ajax-form.js +3 -0
  183. djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/prettify-min.js +28 -0
  184. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/pyproject.toml +2 -9
  185. djresttoolkit-0.17.2/src/djresttoolkit/migrations/__init__.py +0 -0
  186. djresttoolkit-0.17.2/src/djresttoolkit/models/__init__.py +0 -0
  187. djresttoolkit-0.17.2/src/djresttoolkit/py.typed +0 -0
  188. djresttoolkit-0.17.2/src/djresttoolkit/serializers/__init__.py +0 -0
  189. djresttoolkit-0.17.2/src/djresttoolkit/views/_api_views/__init__.py +0 -0
  190. djresttoolkit-0.17.2/uv.lock +864 -0
  191. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/.gitignore +0 -0
  192. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/LICENSE +0 -0
  193. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/README.md +0 -0
  194. {djresttoolkit-0.17.0/src/djresttoolkit → djresttoolkit-0.17.2/demo/apps/todos}/__init__.py +0 -0
  195. {djresttoolkit-0.17.0/src/djresttoolkit → djresttoolkit-0.17.2/demo/apps/todos}/dbseed/__init__.py +0 -0
  196. {djresttoolkit-0.17.0/src/djresttoolkit/management → djresttoolkit-0.17.2/demo/apps/todos/migrations}/__init__.py +0 -0
  197. /djresttoolkit-0.17.0/src/djresttoolkit/admin.py → /djresttoolkit-0.17.2/demo/apps/todos/views.py +0 -0
  198. {djresttoolkit-0.17.0/src/djresttoolkit/management/commands → djresttoolkit-0.17.2/demo/apps_config}/__init__.py +0 -0
  199. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/demo/staticfiles/admin/img/LICENSE +0 -0
  200. {djresttoolkit-0.17.0/src/djresttoolkit/migrations → djresttoolkit-0.17.2/src/djresttoolkit}/__init__.py +0 -0
  201. /djresttoolkit-0.17.0/src/djresttoolkit/models/__init__.py → /djresttoolkit-0.17.2/src/djresttoolkit/admin.py +0 -0
  202. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/apps.py +0 -0
  203. {djresttoolkit-0.17.0/src/djresttoolkit/serializers → djresttoolkit-0.17.2/src/djresttoolkit/dbseed}/__init__.py +0 -0
  204. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/__init__.py +0 -0
  205. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/_choice_field.py +0 -0
  206. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/_gen.py +0 -0
  207. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/_seed_model.py +0 -0
  208. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/envconfig/__init__.py +0 -0
  209. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/envconfig/_env_settings.py +0 -0
  210. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/__init__.py +0 -0
  211. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/_email_sender.py +0 -0
  212. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/_models.py +0 -0
  213. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/_types.py +0 -0
  214. {djresttoolkit-0.17.0/src/djresttoolkit/views/_api_views → djresttoolkit-0.17.2/src/djresttoolkit/management}/__init__.py +0 -0
  215. /djresttoolkit-0.17.0/src/djresttoolkit/py.typed → /djresttoolkit-0.17.2/src/djresttoolkit/management/commands/__init__.py +0 -0
  216. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/management/commands/dbflush.py +0 -0
  217. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/management/commands/dbseed.py +0 -0
  218. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/middlewares/__init__.py +0 -0
  219. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/middlewares/_response_time_middleware.py +0 -0
  220. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/models/mixins/__init__.py +0 -0
  221. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/models/mixins/_model_choice_fields_mixin.py +0 -0
  222. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/pagination/__init__.py +0 -0
  223. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/pagination/_page_number_pagination.py +0 -0
  224. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/pagination/_paginated_data_builder.py +0 -0
  225. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/renderers/__init__.py +0 -0
  226. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/renderers/_throttle_info_json_renderer.py +0 -0
  227. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/serializers/mixins/__init__.py +0 -0
  228. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/serializers/mixins/_absolute_url_file_mixin.py +0 -0
  229. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/serializers/mixins/_bulk_create_mixin.py +0 -0
  230. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/throttling/__init__.py +0 -0
  231. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/throttling/_throttle_inspector.py +0 -0
  232. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/urls/__init__.py +0 -0
  233. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/urls/_build_absolute_uri.py +0 -0
  234. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/__init__.py +0 -0
  235. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/_api_views/_choice_fields_apiview.py +0 -0
  236. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/_exceptions/__init__.py +0 -0
  237. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/_exceptions/_exception_handler.py +0 -0
  238. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/__init__.py +0 -0
  239. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_action_mixin.py +0 -0
  240. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_invalidate_mixin.py +0 -0
  241. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_key_mixin.py +0 -0
  242. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_list_retrieve_mixin.py +0 -0
  243. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_ops_mixin.py +0 -0
  244. {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_retrieve_object_mixin.py +0 -0
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,12 @@
1
+ {
2
+ "files.exclude": {
3
+ "**/.git": true,
4
+ "**/.svn": true,
5
+ "**/.hg": true,
6
+ "**/.DS_Store": true,
7
+ "**/Thumbs.db": true,
8
+ "**/__pycache__": true,
9
+ "**/.pytest_cache": true,
10
+ "**/.ruff_cache": true
11
+ }
12
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: djresttoolkit
3
- Version: 0.17.0
3
+ Version: 0.17.2
4
4
  Summary: A collection of Django and DRF utilities to simplify API development.
5
5
  Project-URL: Homepage, https://github.com/shaileshpandit141/djresttoolkit
6
6
  Project-URL: Documentation, https://shaileshpandit141.github.io/djresttoolkit
@@ -33,7 +33,7 @@ License: # MIT License
33
33
  OTHER DEALINGS IN THE SOFTWARE.
34
34
  License-File: LICENSE
35
35
  Keywords: api-development,django,django-authentication,django-email,django-helpers,django-mixins,django-pagination,django-rest,django-rest-framework-utilities,django-rest-utilities,django-serializers,django-shortcuts,django-utilities,djangorestframework,drf,python-package,rest-api
36
- Classifier: Development Status :: 3 - Alpha
36
+ Classifier: Development Status :: 4 - Beta
37
37
  Classifier: Framework :: Django
38
38
  Classifier: Framework :: Django :: 4.0
39
39
  Classifier: Intended Audience :: Developers
@@ -0,0 +1,48 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from django.contrib import admin
6
+ from django.contrib.admin import ModelAdmin
7
+
8
+ from .models import Tag, Todo, TodoTag
9
+
10
+ if TYPE_CHECKING:
11
+ class TodoAdminBase(ModelAdmin[Todo]): ...
12
+ class TagAdminBase(ModelAdmin[Todo]): ...
13
+ class TodoTagAdminBase(ModelAdmin[Todo]): ...
14
+ else:
15
+ class TodoAdminBase(ModelAdmin): ...
16
+ class TagAdminBase(ModelAdmin): ...
17
+ class TodoTagAdminBase(ModelAdmin): ...
18
+
19
+
20
+ @admin.register(Todo)
21
+ class TodoAdmin(TodoAdminBase):
22
+ list_display = [
23
+ "id",
24
+ "user",
25
+ "title",
26
+ "due_date",
27
+ "priority",
28
+ "status",
29
+ ]
30
+ list_display_links = list_display
31
+ ordering = ("-id",)
32
+ list_filter = ["priority", "status"]
33
+ search_fields = ["title"]
34
+
35
+
36
+ @admin.register(Tag)
37
+ class TagAdmin(TagAdminBase):
38
+ list_display = ["id", "name"]
39
+ list_display_links = list_display
40
+ ordering = ("-id",)
41
+ search_fields = ["name"]
42
+
43
+
44
+ @admin.register(TodoTag)
45
+ class TodoTagAdmin(TodoTagAdminBase):
46
+ list_display = ["id", "todo", "tag"]
47
+ list_display_links = list_display
48
+ ordering = ("-id",)
@@ -0,0 +1,7 @@
1
+ from django.apps import AppConfig
2
+
3
+
4
+ class TodosConfig(AppConfig):
5
+ default_auto_field = "django.db.models.BigAutoField"
6
+ name = "apps.todos"
7
+ label = "todos"
@@ -0,0 +1,13 @@
1
+ from djresttoolkit.dbseed.models import ( # type: ignore[import-not-found]
2
+ Field,
3
+ Gen,
4
+ SeedModel,
5
+ )
6
+
7
+ from ..models import Tag
8
+
9
+
10
+ class TagSeedModel(SeedModel):
11
+ __model__ = Tag
12
+
13
+ name: str = Field(default_factory=Gen.word)
@@ -0,0 +1,44 @@
1
+ from django.utils import timezone
2
+
3
+ from djresttoolkit.dbseed.models import ( # type: ignore[import-not-found]
4
+ Field,
5
+ Gen,
6
+ SeedModel,
7
+ )
8
+
9
+ from ..models import Todo, TodoPriority, TodoStatus
10
+
11
+
12
+ class TodoSeedModel(SeedModel):
13
+ __model__ = Todo
14
+
15
+ title: str = Field(
16
+ default_factory=lambda: Gen.sentence(nb_words=4),
17
+ )
18
+ description: str = Field(
19
+ default_factory=lambda: Gen.sentence(nb_words=20),
20
+ )
21
+ due_date: str | None = Field(
22
+ default_factory=lambda: Gen.date_time_this_year(
23
+ before_now=False, after_now=True
24
+ )
25
+ .replace(tzinfo=timezone.get_current_timezone())
26
+ .isoformat(),
27
+ )
28
+ priority: str = Field(
29
+ default_factory=lambda: Gen.random_element(
30
+ elements=[choice[0] for choice in TodoPriority.choices]
31
+ ),
32
+ )
33
+ status: str = Field(
34
+ default_factory=lambda: Gen.random_element(
35
+ elements=[choice[0] for choice in TodoStatus.choices]
36
+ ),
37
+ )
38
+ completed_at: str | None = Field(
39
+ default_factory=lambda: Gen.date_time_this_year(
40
+ before_now=False, after_now=True
41
+ )
42
+ .replace(tzinfo=timezone.get_current_timezone())
43
+ .isoformat(),
44
+ )
@@ -0,0 +1,22 @@
1
+ from djresttoolkit.dbseed.models import ( # type: ignore[import-not-found]
2
+ Field,
3
+ Gen,
4
+ SeedModel,
5
+ )
6
+
7
+ from ..models import Tag, Todo, TodoTag
8
+
9
+
10
+ class TodoTagSeedModel(SeedModel):
11
+ __model__ = TodoTag
12
+
13
+ todo: int = Field(
14
+ default_factory=lambda: Gen.random_element(
15
+ list(Todo.objects.all().values_list("id", flat=True))
16
+ )
17
+ )
18
+ tag: int = Field(
19
+ default_factory=lambda: Gen.random_element(
20
+ list(Tag.objects.all().values_list("id", flat=True))
21
+ )
22
+ )
@@ -0,0 +1,131 @@
1
+ # Generated by Django 5.2.5 on 2025-08-18 05:32
2
+
3
+ import django.db.models.deletion
4
+ import uuid
5
+ from django.conf import settings
6
+ from django.db import migrations, models
7
+
8
+
9
+ class Migration(migrations.Migration):
10
+
11
+ initial = True
12
+
13
+ dependencies = [
14
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
15
+ ]
16
+
17
+ operations = [
18
+ migrations.CreateModel(
19
+ name="Tag",
20
+ fields=[
21
+ (
22
+ "id",
23
+ models.BigAutoField(
24
+ editable=False, primary_key=True, serialize=False
25
+ ),
26
+ ),
27
+ (
28
+ "uuid",
29
+ models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
30
+ ),
31
+ ("created_at", models.DateTimeField(auto_now_add=True)),
32
+ ("updated_at", models.DateTimeField(auto_now=True)),
33
+ ("name", models.CharField(max_length=50, unique=True)),
34
+ ],
35
+ options={
36
+ "abstract": False,
37
+ },
38
+ ),
39
+ migrations.CreateModel(
40
+ name="Todo",
41
+ fields=[
42
+ (
43
+ "id",
44
+ models.BigAutoField(
45
+ editable=False, primary_key=True, serialize=False
46
+ ),
47
+ ),
48
+ (
49
+ "uuid",
50
+ models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
51
+ ),
52
+ ("created_at", models.DateTimeField(auto_now_add=True)),
53
+ ("updated_at", models.DateTimeField(auto_now=True)),
54
+ ("title", models.CharField(max_length=255)),
55
+ ("description", models.TextField(blank=True, default="")),
56
+ ("due_date", models.DateTimeField(blank=True, null=True)),
57
+ (
58
+ "priority",
59
+ models.CharField(
60
+ choices=[
61
+ ("low", "Low"),
62
+ ("medium", "Medium"),
63
+ ("high", "High"),
64
+ ("critical", "Critical"),
65
+ ],
66
+ default="medium",
67
+ max_length=20,
68
+ ),
69
+ ),
70
+ (
71
+ "status",
72
+ models.CharField(
73
+ choices=[
74
+ ("pending", "Pending"),
75
+ ("in_progress", "In Progress"),
76
+ ("completed", "Completed"),
77
+ ("archived", "Archived"),
78
+ ],
79
+ default="pending",
80
+ max_length=20,
81
+ ),
82
+ ),
83
+ ("completed_at", models.DateTimeField(blank=True, null=True)),
84
+ (
85
+ "user",
86
+ models.ForeignKey(
87
+ help_text="Owner of this todo",
88
+ on_delete=django.db.models.deletion.CASCADE,
89
+ related_name="todos",
90
+ to=settings.AUTH_USER_MODEL,
91
+ ),
92
+ ),
93
+ ],
94
+ options={
95
+ "abstract": False,
96
+ },
97
+ ),
98
+ migrations.CreateModel(
99
+ name="TodoTag",
100
+ fields=[
101
+ (
102
+ "id",
103
+ models.BigAutoField(
104
+ auto_created=True,
105
+ primary_key=True,
106
+ serialize=False,
107
+ verbose_name="ID",
108
+ ),
109
+ ),
110
+ (
111
+ "tag",
112
+ models.ForeignKey(
113
+ on_delete=django.db.models.deletion.CASCADE,
114
+ related_name="tag_todos",
115
+ to="todos.tag",
116
+ ),
117
+ ),
118
+ (
119
+ "todo",
120
+ models.ForeignKey(
121
+ on_delete=django.db.models.deletion.CASCADE,
122
+ related_name="todo_tags",
123
+ to="todos.todo",
124
+ ),
125
+ ),
126
+ ],
127
+ options={
128
+ "unique_together": {("todo", "tag")},
129
+ },
130
+ ),
131
+ ]
@@ -0,0 +1,118 @@
1
+ from __future__ import annotations
2
+
3
+ import uuid
4
+ from uuid import UUID
5
+
6
+ from django.conf import settings
7
+ from django.contrib.auth.models import AbstractUser
8
+ from django.db.models import (
9
+ CASCADE,
10
+ BigAutoField,
11
+ CharField,
12
+ DateTimeField,
13
+ ForeignKey,
14
+ Model,
15
+ TextChoices,
16
+ TextField,
17
+ UUIDField,
18
+ )
19
+ from django.utils import timezone
20
+
21
+
22
+ class TodoPriority(TextChoices):
23
+ LOW = "low", "Low"
24
+ MEDIUM = "medium", "Medium"
25
+ HIGH = "high", "High"
26
+ CRITICAL = "critical", "Critical"
27
+
28
+
29
+ class TodoStatus(TextChoices):
30
+ PENDING = "pending", "Pending"
31
+ IN_PROGRESS = "in_progress", "In Progress"
32
+ COMPLETED = "completed", "Completed"
33
+ ARCHIVED = "archived", "Archived"
34
+
35
+
36
+ class BaseModel(Model):
37
+ """Abstract base with UUID PK and timestamps."""
38
+
39
+ id: BigAutoField[int, int] = BigAutoField(primary_key=True, editable=False)
40
+ uuid: UUIDField[UUID, str] = UUIDField(
41
+ unique=True,
42
+ default=uuid.uuid4,
43
+ editable=False,
44
+ )
45
+ created_at: DateTimeField[str, str] = DateTimeField(auto_now_add=True)
46
+ updated_at: DateTimeField[str, str] = DateTimeField(auto_now=True)
47
+
48
+ class Meta:
49
+ abstract = True
50
+
51
+
52
+ class Todo(BaseModel):
53
+ """Main Todo model."""
54
+
55
+ user: ForeignKey[int, AbstractUser] = ForeignKey(
56
+ settings.AUTH_USER_MODEL,
57
+ on_delete=CASCADE,
58
+ related_name="todos",
59
+ help_text="Owner of this todo",
60
+ )
61
+ title: CharField[str, str] = CharField(max_length=255)
62
+ description: TextField[str, str] = TextField(blank=True, default="")
63
+ due_date: DateTimeField[str | None, str | None] = DateTimeField(
64
+ null=True,
65
+ blank=True,
66
+ )
67
+
68
+ priority: CharField[str, str] = CharField(
69
+ max_length=20,
70
+ choices=TodoPriority.choices,
71
+ default=TodoPriority.MEDIUM,
72
+ )
73
+ status: CharField[str, str] = CharField(
74
+ max_length=20,
75
+ choices=TodoStatus.choices,
76
+ default=TodoStatus.PENDING,
77
+ )
78
+
79
+ completed_at: DateTimeField[str | None, str | None] = DateTimeField(
80
+ null=True,
81
+ blank=True,
82
+ )
83
+
84
+ def mark_completed(self) -> None:
85
+ """Mark todo as completed safely."""
86
+ self.status = TodoStatus.COMPLETED
87
+ self.completed_at = str(timezone.now())
88
+ self.save(update_fields=["status", "completed_at", "updated_at"])
89
+
90
+ def __str__(self) -> str:
91
+ return f"Todo({self.id}, {self.title})"
92
+
93
+
94
+ class Tag(BaseModel):
95
+ """Simple tags for todos."""
96
+
97
+ name: CharField[str, str] = CharField(max_length=50, unique=True)
98
+
99
+ def __str__(self) -> str:
100
+ return f"Tag({self.id}, {self.name})"
101
+
102
+
103
+ class TodoTag(Model):
104
+ """Many-to-many through model for tagging."""
105
+
106
+ todo: ForeignKey[int, Todo] = ForeignKey(
107
+ Todo,
108
+ on_delete=CASCADE,
109
+ related_name="todo_tags",
110
+ )
111
+ tag: ForeignKey[int, Tag] = ForeignKey(
112
+ Tag,
113
+ on_delete=CASCADE,
114
+ related_name="tag_todos",
115
+ )
116
+
117
+ class Meta:
118
+ unique_together = ("todo", "tag")
@@ -0,0 +1,3 @@
1
+ from django.test import TestCase
2
+
3
+ # Create your tests here.
@@ -0,0 +1,7 @@
1
+ """
2
+ URL configuration for todos app.
3
+ """
4
+
5
+ from django.urls import path
6
+
7
+ urlpatterns = []
@@ -0,0 +1,10 @@
1
+ import os
2
+
3
+ # Import Django's ASGI handler
4
+ from django.core.asgi import get_asgi_application
5
+
6
+ # Configure Django settings module path
7
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apps_config.settings")
8
+
9
+ # Create ASGI application instance
10
+ application = get_asgi_application()
@@ -0,0 +1,7 @@
1
+ from django.contrib.auth.models import User
2
+ from rest_framework.serializers import CharField, Serializer
3
+
4
+
5
+ class RetrieveTokenSerializer(Serializer[User]):
6
+ username = CharField(required=True)
7
+ password = CharField(write_only=True, required=True)