django-pfx 1.4.dev158__tar.gz → 1.4.dev160__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.dev158 → django_pfx-1.4.dev160}/PKG-INFO +1 -1
  2. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/django_pfx.egg-info/PKG-INFO +1 -1
  3. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +2 -2
  4. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/rest_views.py +16 -12
  5. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/basic_api_test.py +7 -1
  6. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/.gitignore +0 -0
  7. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/.gitlab-ci.yml +0 -0
  8. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/.pre-commit-config.yaml +0 -0
  9. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/LICENSE +0 -0
  10. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/MANIFEST.in +0 -0
  11. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/README.md +0 -0
  12. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/django_pfx.egg-info/SOURCES.txt +0 -0
  13. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/django_pfx.egg-info/dependency_links.txt +0 -0
  14. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/django_pfx.egg-info/requires.txt +0 -0
  15. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/django_pfx.egg-info/top_level.txt +0 -0
  16. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/Makefile +0 -0
  17. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/conf.py +0 -0
  18. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/index.rst +0 -0
  19. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/api.views.rst +0 -0
  20. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/authentication.md +0 -0
  21. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/decorator.md +0 -0
  22. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/generate_openapi.md +0 -0
  23. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/getting_started.md +0 -0
  24. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/internationalisation.md +0 -0
  25. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/model.md +0 -0
  26. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/pfx_views.md +0 -0
  27. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/profiling.md +0 -0
  28. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/settings.md +0 -0
  29. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/doc/source/testing.md +0 -0
  30. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/img/pfx.png +0 -0
  31. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/img/pfx.svg +0 -0
  32. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/make_messages +0 -0
  33. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/manage.py +0 -0
  34. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/__init__.py +0 -0
  35. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/__init__.py +0 -0
  36. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/apidoc/__init__.py +0 -0
  37. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/apidoc/parameters.py +0 -0
  38. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/apidoc/schema.py +0 -0
  39. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/apidoc/tags.py +0 -0
  40. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/apps.py +0 -0
  41. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/decorator/__init__.py +0 -0
  42. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/decorator/rest.py +0 -0
  43. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/default_settings.py +0 -0
  44. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/exceptions.py +0 -0
  45. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/fields/__init__.py +0 -0
  46. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/fields/decimal_field.py +0 -0
  47. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/fields/media_field.py +0 -0
  48. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
  49. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/fields/rich_text_field.py +0 -0
  50. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/http/__init__.py +0 -0
  51. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/http/json_response.py +0 -0
  52. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  53. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/management/__init__.py +0 -0
  54. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/management/commands/__init__.py +0 -0
  55. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
  56. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/management/commands/profile.py +0 -0
  57. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/middleware/__init__.py +0 -0
  58. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/middleware/authentication.py +0 -0
  59. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/middleware/locale.py +0 -0
  60. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/middleware/profiling.py +0 -0
  61. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/migrations/0001_initial.py +0 -0
  62. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
  63. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
  64. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/migrations/__init__.py +0 -0
  65. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
  66. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
  67. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/__init__.py +0 -0
  68. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
  69. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/cache_mixins.py +0 -0
  70. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/login_ban.py +0 -0
  71. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/not_null_fields.py +0 -0
  72. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
  73. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
  74. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/pfx_models.py +0 -0
  75. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/pfx_user.py +0 -0
  76. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
  77. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/serializers/__init__.py +0 -0
  78. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/serializers/json.py +0 -0
  79. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/settings.py +0 -0
  80. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/shortcuts.py +0 -0
  81. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/storage/__init__.py +0 -0
  82. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/storage/exceptions.py +0 -0
  83. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/storage/local_storage.py +0 -0
  84. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/storage/s3_storage.py +0 -0
  85. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
  86. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
  87. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
  88. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
  89. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
  90. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
  91. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/test.py +0 -0
  92. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/urls.py +0 -0
  93. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/__init__.py +0 -0
  94. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/authentication_views.py +0 -0
  95. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/fields.py +0 -0
  96. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/filters_views.py +0 -0
  97. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/locale_views.py +0 -0
  98. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
  99. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
  100. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/__init__.py +0 -0
  101. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/date_format.py +0 -0
  102. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/groups.py +0 -0
  103. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/list_count.py +0 -0
  104. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/list_items.py +0 -0
  105. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
  106. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/list_order.py +0 -0
  107. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/list_search.py +0 -0
  108. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
  109. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
  110. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
  111. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
  112. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/subset.py +0 -0
  113. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
  114. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
  115. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
  116. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
  117. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
  118. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/settings/__init__.py +0 -0
  119. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pfx/settings/dev.py +0 -0
  120. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/pyproject.toml +0 -0
  121. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/requirements.txt +0 -0
  122. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/serve-doc +0 -0
  123. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/setup.cfg +0 -0
  124. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/setup.py +0 -0
  125. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/__init__.py +0 -0
  126. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/apps.py +0 -0
  127. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
  128. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/migrations/0001_initial.py +0 -0
  129. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/migrations/0002_alter_book_cover.py +0 -0
  130. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/migrations/0003_book_local_file.py +0 -0
  131. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/migrations/__init__.py +0 -0
  132. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/models.py +0 -0
  133. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/settings/__init__.py +0 -0
  134. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/settings/ci.py +0 -0
  135. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/settings/common.py +0 -0
  136. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/settings/dev.py +0 -0
  137. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/settings/dev_custom_example.py +0 -0
  138. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/settings/dev_default.py +0 -0
  139. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/__init__.py +0 -0
  140. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/basic_api_errors.py +0 -0
  141. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_api_doc.py +0 -0
  142. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_api_doc_search.py +0 -0
  143. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_auth_api.py +0 -0
  144. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_body_mixin.py +0 -0
  145. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_cache.py +0 -0
  146. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_client.py +0 -0
  147. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_fields_choices.py +0 -0
  148. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_fields_date.py +0 -0
  149. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_fields_decimal.py +0 -0
  150. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_fields_minutes_duration.py +0 -0
  151. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_fields_one2many.py +0 -0
  152. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_fields_rich_text.py +0 -0
  153. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_filters.py +0 -0
  154. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_locale_api.py +0 -0
  155. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
  156. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_perm_tests.py +0 -0
  157. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_permissions.py +0 -0
  158. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_perms_api.py +0 -0
  159. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_post_migrate_groups_update.py +0 -0
  160. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_profiling_middleware.py +0 -0
  161. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_settings.py +0 -0
  162. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_shortcuts.py +0 -0
  163. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_timezone_middleware.py +0 -0
  164. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_tools.py +0 -0
  165. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_user_queryset.py +0 -0
  166. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_view_decorators.py +0 -0
  167. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/tests/test_view_fields.py +0 -0
  168. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/urls.py +0 -0
  169. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests/views.py +0 -0
  170. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/__init__.py +0 -0
  171. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/migrations/0001_initial.py +0 -0
  172. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/migrations/__init__.py +0 -0
  173. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/settings/__init__.py +0 -0
  174. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/settings/ci.py +0 -0
  175. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/settings/common.py +0 -0
  176. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/settings/dev.py +0 -0
  177. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/settings/dev_custom_example.py +0 -0
  178. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/settings/dev_default.py +0 -0
  179. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/tests/__init__.py +0 -0
  180. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/tests/test_api.py +0 -0
  181. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/tests/test_auth_api.py +0 -0
  182. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/urls.py +0 -0
  183. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_base_user/views.py +0 -0
  184. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/__init__.py +0 -0
  185. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/migrations/0001_initial.py +0 -0
  186. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/migrations/__init__.py +0 -0
  187. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/models.py +0 -0
  188. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/settings/__init__.py +0 -0
  189. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/settings/ci.py +0 -0
  190. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/settings/common.py +0 -0
  191. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/settings/dev.py +0 -0
  192. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/settings/dev_custom_example.py +0 -0
  193. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/settings/dev_default.py +0 -0
  194. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/tests/__init__.py +0 -0
  195. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/tests/test_api.py +0 -0
  196. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/tests/test_auth_api.py +0 -0
  197. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/tests_custom_user/urls.py +0 -0
  198. {django_pfx-1.4.dev158 → django_pfx-1.4.dev160}/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.dev158
3
+ Version: 1.4.dev160
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.dev158
3
+ Version: 1.4.dev160
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
@@ -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-10-22 12:44+0200\n"
10
+ "POT-Creation-Date: 2025-10-22 16:49+0200\n"
11
11
  "PO-Revision-Date: 2021-06-22 23:31+0200\n"
12
12
  "Last-Translator: \n"
13
13
  "Language-Team: \n"
@@ -302,7 +302,7 @@ msgstr "{model} {obj} créé."
302
302
  msgid "{model} {obj} updated."
303
303
  msgstr "{model} {obj} modifié."
304
304
 
305
- #: views/rest_views.py:1257
305
+ #: views/rest_views.py:1261
306
306
  #, python-brace-format
307
307
  msgid "{model} {obj} deleted."
308
308
  msgstr "{model} {obj} supprimé."
@@ -7,9 +7,9 @@ from django.conf import settings
7
7
  from django.core.cache import cache
8
8
  from django.core.exceptions import FieldError, ValidationError
9
9
  from django.db import IntegrityError, connection, transaction
10
- from django.db.models import ForeignKey, ManyToOneRel, Model, Q, Window
10
+ from django.db.models import F, ForeignKey, ManyToOneRel, Model, Q, Window
11
11
  from django.db.models.fields import AutoFieldMixin
12
- from django.db.models.functions import Lag, Lead
12
+ from django.db.models.functions import Lag, Lead, RowNumber
13
13
  from django.urls import path
14
14
  from django.utils.translation import gettext_lazy as _
15
15
  from django.views import View
@@ -953,22 +953,26 @@ class ListRestViewMixin(ModelResponseMixin):
953
953
  order = qs.query.order_by
954
954
  qs_window = qs.annotate(
955
955
  prev_id=Window(Lag('id'), order_by=order),
956
- next_id=Window(Lead('id'), order_by=order))
956
+ next_id=Window(Lead('id'), order_by=order),
957
+ index=Window(RowNumber(), order_by=order)).values(
958
+ 'prev_id', 'next_id', 'index', obj_id=F('id'))
959
+ compiler = qs_window.query.get_compiler(connection=connection)
960
+ inner_sql, params = compiler.as_sql()
957
961
  sql = f"""
958
- WITH annotated AS (
959
- {qs_window.values('id', 'prev_id', 'next_id').query}
960
- )
961
- SELECT prev_id, next_id
962
+ WITH annotated AS ({inner_sql})
963
+ SELECT prev_id, next_id, index
962
964
  FROM annotated
963
- WHERE id = %s;
965
+ WHERE obj_id = %s;
964
966
  """
965
967
 
966
968
  with connection.cursor() as cursor:
967
- cursor.execute(sql, [obj.pk])
968
- prev_id, next_id = cursor.fetchone() or (None, None)
969
+ cursor.execute(sql, list(params) + [obj.pk])
970
+ prev_id, next_id, index = cursor.fetchone() or (None, None)
969
971
  return {
970
- 'previous_pk': prev_id,
971
- 'next_pk': next_id}
972
+ 'previous_pk': prev_id or qs.last().pk,
973
+ 'next_pk': next_id or qs.first().pk,
974
+ 'index': index,
975
+ 'count': qs.count()}
972
976
 
973
977
  @classmethod
974
978
  def generate_schemas(cls):
@@ -636,20 +636,26 @@ class BasicAPITest(TestAssertMixin, TestCase):
636
636
  response = self.client.get(
637
637
  f'/api/authors/{self.author3.pk}?navigation=1&order=last_name')
638
638
  self.assertRC(response, 200)
639
- self.assertJE(response, 'meta.previous_pk', None)
639
+ self.assertJE(response, 'meta.previous_pk', self.author1.pk)
640
640
  self.assertJE(response, 'meta.next_pk', self.author2.pk)
641
+ self.assertJE(response, 'meta.index', 1)
642
+ self.assertJE(response, 'meta.count', 4)
641
643
 
642
644
  response = self.client.get(
643
645
  f'/api/authors/{self.author2.pk}?navigation=1&order=last_name')
644
646
  self.assertRC(response, 200)
645
647
  self.assertJE(response, 'meta.previous_pk', self.author3.pk)
646
648
  self.assertJE(response, 'meta.next_pk', self.author4.pk)
649
+ self.assertJE(response, 'meta.index', 2)
650
+ self.assertJE(response, 'meta.count', 4)
647
651
 
648
652
  response = self.client.get(
649
653
  f'/api/authors/{self.author2.pk}?navigation=1&order=-last_name')
650
654
  self.assertRC(response, 200)
651
655
  self.assertJE(response, 'meta.previous_pk', self.author4.pk)
652
656
  self.assertJE(response, 'meta.next_pk', self.author3.pk)
657
+ self.assertJE(response, 'meta.index', 3)
658
+ self.assertJE(response, 'meta.count', 4)
653
659
 
654
660
  def test_get_date_format(self):
655
661
  response = self.client.get(f'/api/books/{self.author1_book1.pk}')
File without changes