django-pfx 1.4.dev148__tar.gz → 1.4.dev152__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 (198) hide show
  1. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/PKG-INFO +1 -1
  2. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/django_pfx.egg-info/PKG-INFO +1 -1
  3. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/decorator/rest.py +2 -1
  4. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +5 -5
  5. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/fields.py +9 -3
  6. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/rest_views.py +8 -1
  7. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/.gitignore +0 -0
  8. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/.gitlab-ci.yml +0 -0
  9. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/.pre-commit-config.yaml +0 -0
  10. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/LICENSE +0 -0
  11. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/MANIFEST.in +0 -0
  12. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/README.md +0 -0
  13. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/django_pfx.egg-info/SOURCES.txt +0 -0
  14. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/django_pfx.egg-info/dependency_links.txt +0 -0
  15. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/django_pfx.egg-info/requires.txt +0 -0
  16. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/django_pfx.egg-info/top_level.txt +0 -0
  17. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/Makefile +0 -0
  18. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/conf.py +0 -0
  19. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/index.rst +0 -0
  20. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/api.views.rst +0 -0
  21. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/authentication.md +0 -0
  22. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/decorator.md +0 -0
  23. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/generate_openapi.md +0 -0
  24. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/getting_started.md +0 -0
  25. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/internationalisation.md +0 -0
  26. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/model.md +0 -0
  27. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/pfx_views.md +0 -0
  28. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/profiling.md +0 -0
  29. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/settings.md +0 -0
  30. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/doc/source/testing.md +0 -0
  31. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/img/pfx.png +0 -0
  32. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/img/pfx.svg +0 -0
  33. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/make_messages +0 -0
  34. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/manage.py +0 -0
  35. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/__init__.py +0 -0
  36. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/__init__.py +0 -0
  37. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/apidoc/__init__.py +0 -0
  38. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/apidoc/parameters.py +0 -0
  39. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/apidoc/schema.py +0 -0
  40. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/apidoc/tags.py +0 -0
  41. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/apps.py +0 -0
  42. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/decorator/__init__.py +0 -0
  43. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/default_settings.py +0 -0
  44. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/exceptions.py +0 -0
  45. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/fields/__init__.py +0 -0
  46. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/fields/decimal_field.py +0 -0
  47. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/fields/media_field.py +0 -0
  48. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
  49. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/fields/nh3_field.py +0 -0
  50. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/http/__init__.py +0 -0
  51. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/http/json_response.py +0 -0
  52. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  53. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/management/__init__.py +0 -0
  54. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/management/commands/__init__.py +0 -0
  55. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
  56. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/management/commands/profile.py +0 -0
  57. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/middleware/__init__.py +0 -0
  58. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/middleware/authentication.py +0 -0
  59. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/middleware/locale.py +0 -0
  60. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/middleware/profiling.py +0 -0
  61. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/migrations/0001_initial.py +0 -0
  62. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
  63. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
  64. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/migrations/__init__.py +0 -0
  65. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
  66. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
  67. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/__init__.py +0 -0
  68. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
  69. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/cache_mixins.py +0 -0
  70. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/login_ban.py +0 -0
  71. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/not_null_fields.py +0 -0
  72. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
  73. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
  74. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/pfx_models.py +0 -0
  75. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/pfx_user.py +0 -0
  76. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
  77. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/serializers/__init__.py +0 -0
  78. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/serializers/json.py +0 -0
  79. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/settings.py +0 -0
  80. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/shortcuts.py +0 -0
  81. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/storage/__init__.py +0 -0
  82. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/storage/exceptions.py +0 -0
  83. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/storage/local_storage.py +0 -0
  84. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/storage/s3_storage.py +0 -0
  85. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
  86. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
  87. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
  88. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
  89. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
  90. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
  91. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/test.py +0 -0
  92. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/urls.py +0 -0
  93. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/__init__.py +0 -0
  94. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/authentication_views.py +0 -0
  95. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/filters_views.py +0 -0
  96. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/locale_views.py +0 -0
  97. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
  98. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
  99. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/__init__.py +0 -0
  100. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/date_format.py +0 -0
  101. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/groups.py +0 -0
  102. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/list_count.py +0 -0
  103. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/list_items.py +0 -0
  104. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
  105. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/list_order.py +0 -0
  106. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/list_search.py +0 -0
  107. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
  108. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
  109. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
  110. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
  111. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/subset.py +0 -0
  112. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
  113. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
  114. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
  115. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
  116. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
  117. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/settings/__init__.py +0 -0
  118. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pfx/settings/dev.py +0 -0
  119. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/pyproject.toml +0 -0
  120. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/requirements.txt +0 -0
  121. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/serve-doc +0 -0
  122. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/setup.cfg +0 -0
  123. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/setup.py +0 -0
  124. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/__init__.py +0 -0
  125. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/apps.py +0 -0
  126. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
  127. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/migrations/0001_initial.py +0 -0
  128. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/migrations/0002_alter_book_cover.py +0 -0
  129. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/migrations/0003_book_local_file.py +0 -0
  130. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/migrations/__init__.py +0 -0
  131. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/models.py +0 -0
  132. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/settings/__init__.py +0 -0
  133. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/settings/ci.py +0 -0
  134. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/settings/common.py +0 -0
  135. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/settings/dev.py +0 -0
  136. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/settings/dev_custom_example.py +0 -0
  137. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/settings/dev_default.py +0 -0
  138. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/__init__.py +0 -0
  139. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/basic_api_errors.py +0 -0
  140. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/basic_api_test.py +0 -0
  141. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_api_doc.py +0 -0
  142. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_api_doc_search.py +0 -0
  143. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_auth_api.py +0 -0
  144. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_body_mixin.py +0 -0
  145. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_cache.py +0 -0
  146. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_client.py +0 -0
  147. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_fields_choices.py +0 -0
  148. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_fields_date.py +0 -0
  149. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_fields_decimal.py +0 -0
  150. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_fields_minutes_duration.py +0 -0
  151. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_fields_nh3.py +0 -0
  152. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_fields_one2many.py +0 -0
  153. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_filters.py +0 -0
  154. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_locale_api.py +0 -0
  155. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
  156. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_perm_tests.py +0 -0
  157. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_permissions.py +0 -0
  158. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_perms_api.py +0 -0
  159. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_post_migrate_groups_update.py +0 -0
  160. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_profiling_middleware.py +0 -0
  161. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_settings.py +0 -0
  162. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_shortcuts.py +0 -0
  163. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_timezone_middleware.py +0 -0
  164. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_tools.py +0 -0
  165. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_user_queryset.py +0 -0
  166. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_view_decorators.py +0 -0
  167. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/tests/test_view_fields.py +0 -0
  168. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/urls.py +0 -0
  169. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests/views.py +0 -0
  170. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/__init__.py +0 -0
  171. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/migrations/0001_initial.py +0 -0
  172. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/migrations/__init__.py +0 -0
  173. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/settings/__init__.py +0 -0
  174. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/settings/ci.py +0 -0
  175. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/settings/common.py +0 -0
  176. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/settings/dev.py +0 -0
  177. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/settings/dev_custom_example.py +0 -0
  178. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/settings/dev_default.py +0 -0
  179. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/tests/__init__.py +0 -0
  180. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/tests/test_api.py +0 -0
  181. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/tests/test_auth_api.py +0 -0
  182. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/urls.py +0 -0
  183. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_base_user/views.py +0 -0
  184. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/__init__.py +0 -0
  185. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/migrations/0001_initial.py +0 -0
  186. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/migrations/__init__.py +0 -0
  187. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/models.py +0 -0
  188. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/settings/__init__.py +0 -0
  189. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/settings/ci.py +0 -0
  190. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/settings/common.py +0 -0
  191. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/settings/dev.py +0 -0
  192. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/settings/dev_custom_example.py +0 -0
  193. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/settings/dev_default.py +0 -0
  194. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/tests/__init__.py +0 -0
  195. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/tests/test_api.py +0 -0
  196. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/tests/test_auth_api.py +0 -0
  197. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/urls.py +0 -0
  198. {django_pfx-1.4.dev148 → django_pfx-1.4.dev152}/tests_custom_user/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-pfx
3
- Version: 1.4.dev148
3
+ Version: 1.4.dev152
4
4
  Summary: Django PFX is a toolkit designed to streamline the development of RESTful APIs using the Django framework.
5
5
  Author: Hervé Martinet
6
6
  Author-email: herve.martinet@gmail.com
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-pfx
3
- Version: 1.4.dev148
3
+ Version: 1.4.dev152
4
4
  Summary: Django PFX is a toolkit designed to streamline the development of RESTful APIs using the Django framework.
5
5
  Author: Hervé Martinet
6
6
  Author-email: herve.martinet@gmail.com
@@ -54,11 +54,12 @@ def rest_api(
54
54
  return decorator
55
55
 
56
56
 
57
- def rest_property(string=None, type="CharField", field=None):
57
+ def rest_property(string=None, type="CharField", field=None, order=None):
58
58
  def decorator(func):
59
59
  func.short_description = string
60
60
  func.field_type = type
61
61
  func.field = field
62
+ func.order = order
62
63
  return property(func)
63
64
  return decorator
64
65
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: \n"
9
9
  "Report-Msgid-Bugs-To: \n"
10
- "POT-Creation-Date: 2025-09-15 14:06+0200\n"
10
+ "POT-Creation-Date: 2025-09-16 10:41+0200\n"
11
11
  "PO-Revision-Date: 2021-06-22 23:31+0200\n"
12
12
  "Last-Translator: \n"
13
13
  "Language-Team: \n"
@@ -286,23 +286,23 @@ msgstr "Le paramètre object est requis pour move={move}."
286
286
  msgid "object {pk} does not exists in this move context."
287
287
  msgstr "object {pk} n'existe pas dans ce contexte de déplacement."
288
288
 
289
- #: views/rest_views.py:220
289
+ #: views/rest_views.py:220 views/rest_views.py:381
290
290
  #, python-brace-format
291
291
  msgid "{obj} cannot be deleted because it is referenced by other objects."
292
292
  msgstr ""
293
293
  "{obj} ne peut pas être supprimé car il est référencé par d’autres objets."
294
294
 
295
- #: views/rest_views.py:344
295
+ #: views/rest_views.py:345
296
296
  #, python-brace-format
297
297
  msgid "{model} {obj} created."
298
298
  msgstr "{model} {obj} créé."
299
299
 
300
- #: views/rest_views.py:345
300
+ #: views/rest_views.py:346
301
301
  #, python-brace-format
302
302
  msgid "{model} {obj} updated."
303
303
  msgstr "{model} {obj} modifié."
304
304
 
305
- #: views/rest_views.py:1217
305
+ #: views/rest_views.py:1224
306
306
  #, python-brace-format
307
307
  msgid "{model} {obj} deleted."
308
308
  msgstr "{model} {obj} supprimé."
@@ -106,7 +106,7 @@ def get_db_type(field):
106
106
  class ViewField:
107
107
  def __init__(
108
108
  self, name, verbose_name=None, alias=None,
109
- field_type=None, db_type=None,
109
+ field_type=None, db_type=None, order=None,
110
110
  readonly=False, readonly_create=False, readonly_update=False,
111
111
  choices=None, json_repr=None, media_field_api=None,
112
112
  related_model=None, related_model_api=None, related_fields=None,
@@ -118,6 +118,7 @@ class ViewField:
118
118
  self.verbose_name = verbose_name or name
119
119
  self.field_type = field_type
120
120
  self.db_type = db_type
121
+ self.order = order
121
122
  self.choices = dict(choices or [])
122
123
  self.json_repr = json_repr
123
124
  self.media_field_api = media_field_api
@@ -150,6 +151,7 @@ class ViewField:
150
151
  res['readonly'] = dict(
151
152
  post=self.readonly_create,
152
153
  put=self.readonly_update)
154
+ res['order'] = self.order
153
155
  return res
154
156
 
155
157
  def get_value(self, obj):
@@ -213,6 +215,7 @@ class ViewField:
213
215
  def from_property(cls, name, prop, **kwargs):
214
216
  kwargs['readonly'] = True
215
217
  if hasattr(prop, 'fget'):
218
+ setifnone(kwargs, 'order', getattr(prop.fget, 'order', None))
216
219
  field = getattr(prop.fget, 'field', None)
217
220
  if field:
218
221
  return cls.from_model_field(name, field, **kwargs)
@@ -237,6 +240,8 @@ class ViewField:
237
240
  kwargs, 'field_type', FieldType.from_model_field(field.__class__))
238
241
  setifnone(
239
242
  kwargs, 'db_type', get_db_type(field))
243
+ if kwargs.get('order') == '__auto__':
244
+ kwargs['order'] = name
240
245
  return ViewModelField(
241
246
  name, model_field=field, **kwargs)
242
247
 
@@ -254,6 +259,7 @@ class ViewField:
254
259
  if isinstance(attr, (property, cached_property)):
255
260
  return cls.from_property(name, attr, **kwargs)
256
261
  field = field or attr_model._meta.get_field(attr_name)
262
+ kwargs['order'] = '__auto__'
257
263
  if LOOKUP_SEP in name:
258
264
  kwargs['readonly'] = True
259
265
  return cls.from_model_field(name, field, **kwargs)
@@ -446,7 +452,7 @@ class VF:
446
452
  choices=None, select_related=None, prefetch_related=None,
447
453
  json_repr=None, related_model=None, related_model_api=None,
448
454
  field=None, related_fields=None, media_field_api=None,
449
- db_type=None):
455
+ db_type=None, order=None):
450
456
  self.kwargs = dict(
451
457
  name=name, verbose_name=verbose_name, field_type=field_type,
452
458
  alias=alias,
@@ -456,7 +462,7 @@ class VF:
456
462
  json_repr=json_repr, related_model=related_model,
457
463
  related_model_api=related_model_api, field=field,
458
464
  related_fields=related_fields, media_field_api=media_field_api,
459
- db_type=db_type)
465
+ db_type=db_type, order=order)
460
466
 
461
467
  def to_field(self, model):
462
468
  return ViewField.from_name(model, **self.kwargs)
@@ -314,6 +314,7 @@ class ModelResponseMixin(ModelMixin):
314
314
  save_field = getattr(o, '_save_related', False)
315
315
  if save_field:
316
316
  try:
317
+ setattr(o, save_field, obj)
317
318
  o.full_clean(exclude={save_field})
318
319
  except ValidationError as e:
319
320
  for mk, ms in e.error_dict.items():
@@ -373,7 +374,13 @@ class ModelResponseMixin(ModelMixin):
373
374
  if isinstance(obj._meta.get_field(k), ManyToOneRel):
374
375
  for cur in getattr(obj, k).all():
375
376
  if cur not in v:
376
- cur.delete()
377
+ try:
378
+ cur.delete()
379
+ except IntegrityError:
380
+ raise APIError(f(_(
381
+ "{obj} cannot be deleted because "
382
+ "it is referenced by other "
383
+ "objects."), obj=str(cur)))
377
384
  for o in v:
378
385
  save_field = getattr(o, '_save_related', False)
379
386
  if save_field:
File without changes