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.
- djresttoolkit-0.17.2/.python-version +1 -0
- djresttoolkit-0.17.2/.vscode/settings.json +12 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/PKG-INFO +2 -2
- djresttoolkit-0.17.2/demo/apps/todos/admin.py +48 -0
- djresttoolkit-0.17.2/demo/apps/todos/apps.py +7 -0
- djresttoolkit-0.17.2/demo/apps/todos/dbseed/tag_seed.py +13 -0
- djresttoolkit-0.17.2/demo/apps/todos/dbseed/todo_seed.py +44 -0
- djresttoolkit-0.17.2/demo/apps/todos/dbseed/todo_tag_seed.py +22 -0
- djresttoolkit-0.17.2/demo/apps/todos/migrations/0001_initial.py +131 -0
- djresttoolkit-0.17.2/demo/apps/todos/models.py +118 -0
- djresttoolkit-0.17.2/demo/apps/todos/tests.py +3 -0
- djresttoolkit-0.17.2/demo/apps/todos/urls.py +7 -0
- djresttoolkit-0.17.2/demo/apps_config/asgi.py +10 -0
- djresttoolkit-0.17.2/demo/apps_config/serializers.py +7 -0
- djresttoolkit-0.17.2/demo/apps_config/settings.py +248 -0
- djresttoolkit-0.17.2/demo/apps_config/urls.py +17 -0
- djresttoolkit-0.17.2/demo/apps_config/views.py +40 -0
- djresttoolkit-0.17.2/demo/apps_config/wsgi.py +9 -0
- djresttoolkit-0.17.2/demo/env_config/__init__.py +3 -0
- djresttoolkit-0.17.2/demo/env_config/env_settings.py +54 -0
- djresttoolkit-0.17.2/demo/manage.py +22 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/autocomplete.css +279 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/base.css +1180 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/changelists.css +343 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/dark_mode.css +130 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/dashboard.css +29 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/forms.css +498 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/login.css +61 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/nav_sidebar.css +150 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/responsive.css +904 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/responsive_rtl.css +89 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/rtl.css +293 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/unusable_password_field.css +19 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md +21 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/vendor/select2/select2.css +481 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/vendor/select2/select2.min.css +1 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/css/widgets.css +613 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/README.txt +7 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/calendar-icons.svg +63 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/gis/move_vertex_off.svg +1 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/gis/move_vertex_on.svg +1 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-addlink.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-alert.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-calendar.svg +9 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-changelink.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-clock.svg +9 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-deletelink.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-hidelink.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-no.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-unknown-alt.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-unknown.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-viewlink.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/icon-yes.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/inline-delete.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/search.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/selector-icons.svg +34 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/sorting-icons.svg +19 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/tooltag-add.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/img/tooltag-arrowright.svg +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/SelectBox.js +116 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/SelectFilter2.js +311 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/actions.js +204 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/admin/DateTimeShortcuts.js +408 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/admin/RelatedObjectLookups.js +252 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/autocomplete.js +33 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/calendar.js +239 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/cancel.js +29 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/change_form.js +16 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/core.js +184 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/filters.js +30 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/inlines.js +359 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/jquery.init.js +8 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/nav_sidebar.js +79 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/popup_response.js +15 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/prepopulate.js +43 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/prepopulate_init.js +15 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/theme.js +51 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/unusable_password_field.js +29 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/urlify.js +169 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/jquery/LICENSE.txt +20 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/jquery/jquery.js +10716 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/jquery/jquery.min.js +2 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/LICENSE.md +21 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/af.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ar.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/az.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/bg.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/bn.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/bs.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ca.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/cs.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/da.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/de.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/dsb.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/el.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/en.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/es.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/et.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/eu.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/fa.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/fi.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/fr.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/gl.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/he.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hi.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hr.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hsb.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hu.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/hy.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/id.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/is.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/it.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ja.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ka.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/km.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ko.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/lt.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/lv.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/mk.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ms.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/nb.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ne.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/nl.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/pl.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ps.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/pt-BR.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/pt.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ro.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/ru.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sk.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sl.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sq.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sr.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/sv.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/th.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/tk.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/tr.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/uk.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/vi.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/zh-CN.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/i18n/zh-TW.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/select2.full.js +6820 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/select2/select2.full.min.js +2 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/xregexp/LICENSE.txt +21 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/xregexp/xregexp.js +6126 -0
- djresttoolkit-0.17.2/demo/staticfiles/admin/js/vendor/xregexp/xregexp.min.js +17 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap-theme.min.css +6 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap-theme.min.css.map +1 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap-tweaks.css +237 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap.min.css +6 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/bootstrap.min.css.map +1 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/default.css +82 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/font-awesome-4.0.3.css +1338 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/css/prettify.css +30 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/css/base.css +359 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/css/highlight.css +125 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/css/jquery.json-view.min.css +11 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/img/favicon.ico +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/img/grid.png +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/js/api.js +315 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/js/highlight.pack.js +2 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/docs/js/jquery.json-view.min.js +7 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.eot +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.svg +414 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.ttf +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/fontawesome-webfont.woff +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.eot +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.svg +288 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.ttf +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.woff +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/fonts/glyphicons-halflings-regular.woff2 +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/img/glyphicons-halflings-white.png +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/img/glyphicons-halflings.png +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/img/grid.png +0 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/ajax-form.js +133 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/bootstrap.min.js +6 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/coreapi-0.1.1.js +2043 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/csrf.js +53 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/default.js +47 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/jquery-3.7.1.min.js +2 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/load-ajax-form.js +3 -0
- djresttoolkit-0.17.2/demo/staticfiles/rest_framework/js/prettify-min.js +28 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/pyproject.toml +2 -9
- djresttoolkit-0.17.2/src/djresttoolkit/migrations/__init__.py +0 -0
- djresttoolkit-0.17.2/src/djresttoolkit/models/__init__.py +0 -0
- djresttoolkit-0.17.2/src/djresttoolkit/py.typed +0 -0
- djresttoolkit-0.17.2/src/djresttoolkit/serializers/__init__.py +0 -0
- djresttoolkit-0.17.2/src/djresttoolkit/views/_api_views/__init__.py +0 -0
- djresttoolkit-0.17.2/uv.lock +864 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/.gitignore +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/LICENSE +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/README.md +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit → djresttoolkit-0.17.2/demo/apps/todos}/__init__.py +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit → djresttoolkit-0.17.2/demo/apps/todos}/dbseed/__init__.py +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit/management → djresttoolkit-0.17.2/demo/apps/todos/migrations}/__init__.py +0 -0
- /djresttoolkit-0.17.0/src/djresttoolkit/admin.py → /djresttoolkit-0.17.2/demo/apps/todos/views.py +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit/management/commands → djresttoolkit-0.17.2/demo/apps_config}/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/demo/staticfiles/admin/img/LICENSE +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit/migrations → djresttoolkit-0.17.2/src/djresttoolkit}/__init__.py +0 -0
- /djresttoolkit-0.17.0/src/djresttoolkit/models/__init__.py → /djresttoolkit-0.17.2/src/djresttoolkit/admin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/apps.py +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit/serializers → djresttoolkit-0.17.2/src/djresttoolkit/dbseed}/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/_choice_field.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/_gen.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/dbseed/models/_seed_model.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/envconfig/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/envconfig/_env_settings.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/_email_sender.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/_models.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/mail/_types.py +0 -0
- {djresttoolkit-0.17.0/src/djresttoolkit/views/_api_views → djresttoolkit-0.17.2/src/djresttoolkit/management}/__init__.py +0 -0
- /djresttoolkit-0.17.0/src/djresttoolkit/py.typed → /djresttoolkit-0.17.2/src/djresttoolkit/management/commands/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/management/commands/dbflush.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/management/commands/dbseed.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/middlewares/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/middlewares/_response_time_middleware.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/models/mixins/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/models/mixins/_model_choice_fields_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/pagination/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/pagination/_page_number_pagination.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/pagination/_paginated_data_builder.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/renderers/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/renderers/_throttle_info_json_renderer.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/serializers/mixins/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/serializers/mixins/_absolute_url_file_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/serializers/mixins/_bulk_create_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/throttling/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/throttling/_throttle_inspector.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/urls/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/urls/_build_absolute_uri.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/_api_views/_choice_fields_apiview.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/_exceptions/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/_exceptions/_exception_handler.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/__init__.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_action_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_invalidate_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_key_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_list_retrieve_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_cache_ops_mixin.py +0 -0
- {djresttoolkit-0.17.0 → djresttoolkit-0.17.2}/src/djresttoolkit/views/mixins/_retrieve_object_mixin.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
3.13
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: djresttoolkit
|
3
|
-
Version: 0.17.
|
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 ::
|
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,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,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()
|