django-pfx 1.4.dev64__tar.gz → 1.4.dev66__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 (145) hide show
  1. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/PKG-INFO +1 -1
  2. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/django_pfx.egg-info/PKG-INFO +1 -1
  3. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/authentication.md +27 -3
  4. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/abstract_pfx_base_user.py +3 -1
  5. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/pfx_user.py +1 -2
  6. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/models.py +1 -1
  7. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/.gitignore +0 -0
  8. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/.gitlab-ci.yml +0 -0
  9. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/.pre-commit-config.yaml +0 -0
  10. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/LICENSE +0 -0
  11. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/MANIFEST.in +0 -0
  12. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/README.md +0 -0
  13. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/django_pfx.egg-info/SOURCES.txt +0 -0
  14. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/django_pfx.egg-info/dependency_links.txt +0 -0
  15. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/django_pfx.egg-info/requires.txt +0 -0
  16. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/django_pfx.egg-info/top_level.txt +0 -0
  17. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/Makefile +0 -0
  18. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/conf.py +0 -0
  19. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/index.rst +0 -0
  20. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/api.views.rst +0 -0
  21. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/decorator.md +0 -0
  22. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/generate_openapi.md +0 -0
  23. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/getting_started.md +0 -0
  24. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/internationalisation.md +0 -0
  25. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/model.md +0 -0
  26. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/pfx_views.md +0 -0
  27. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/profiling.md +0 -0
  28. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/settings.md +0 -0
  29. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/doc/source/testing.md +0 -0
  30. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/img/pfx.png +0 -0
  31. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/img/pfx.svg +0 -0
  32. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/make_messages +0 -0
  33. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/manage.py +0 -0
  34. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/__init__.py +0 -0
  35. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/__init__.py +0 -0
  36. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/apidoc/__init__.py +0 -0
  37. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/apidoc/parameters.py +0 -0
  38. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/apidoc/schema.py +0 -0
  39. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/apidoc/tags.py +0 -0
  40. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/apps.py +0 -0
  41. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/decorator/__init__.py +0 -0
  42. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/decorator/rest.py +0 -0
  43. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/default_settings.py +0 -0
  44. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/exceptions.py +0 -0
  45. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/fields.py +0 -0
  46. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/http/__init__.py +0 -0
  47. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/http/json_response.py +0 -0
  48. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
  49. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +0 -0
  50. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/management/__init__.py +0 -0
  51. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/management/commands/__init__.py +0 -0
  52. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
  53. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/management/commands/profile.py +0 -0
  54. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/middleware/__init__.py +0 -0
  55. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/middleware/authentication.py +0 -0
  56. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/middleware/locale.py +0 -0
  57. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/middleware/profiling.py +0 -0
  58. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/migrations/0001_initial.py +0 -0
  59. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
  60. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
  61. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/migrations/__init__.py +0 -0
  62. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/__init__.py +0 -0
  63. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/cache_mixins.py +0 -0
  64. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/login_ban.py +0 -0
  65. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/not_null_fields.py +0 -0
  66. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/otp_user_mixin.py +0 -0
  67. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/pfx_models.py +0 -0
  68. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
  69. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/serializers/__init__.py +0 -0
  70. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/serializers/json.py +0 -0
  71. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/settings.py +0 -0
  72. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/shortcuts.py +0 -0
  73. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/storage/__init__.py +0 -0
  74. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/storage/s3_storage.py +0 -0
  75. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
  76. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
  77. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
  78. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
  79. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
  80. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
  81. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/test.py +0 -0
  82. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/urls.py +0 -0
  83. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/__init__.py +0 -0
  84. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/authentication_views.py +0 -0
  85. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/fields.py +0 -0
  86. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/filters_views.py +0 -0
  87. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/locale_views.py +0 -0
  88. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/__init__.py +0 -0
  89. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/date_format.py +0 -0
  90. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/groups.py +0 -0
  91. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/list_count.py +0 -0
  92. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/list_items.py +0 -0
  93. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
  94. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/list_order.py +0 -0
  95. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/list_search.py +0 -0
  96. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
  97. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
  98. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
  99. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
  100. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/subset.py +0 -0
  101. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
  102. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
  103. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
  104. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
  105. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
  106. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/pfxcore/views/rest_views.py +0 -0
  107. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/settings/__init__.py +0 -0
  108. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pfx/settings/dev.py +0 -0
  109. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/pyproject.toml +0 -0
  110. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/requirements.txt +0 -0
  111. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/serve-doc +0 -0
  112. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/setup.cfg +0 -0
  113. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/setup.py +0 -0
  114. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/__init__.py +0 -0
  115. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
  116. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/settings/__init__.py +0 -0
  117. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/settings/ci.py +0 -0
  118. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/settings/common.py +0 -0
  119. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/settings/dev.py +0 -0
  120. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/settings/dev_custom_example.py +0 -0
  121. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/settings/dev_default.py +0 -0
  122. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/__init__.py +0 -0
  123. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/basic_api_errors.py +0 -0
  124. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/basic_api_test.py +0 -0
  125. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_api_doc.py +0 -0
  126. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_api_doc_search.py +0 -0
  127. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_auth_api.py +0 -0
  128. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_body_mixin.py +0 -0
  129. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_cache.py +0 -0
  130. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_client.py +0 -0
  131. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_fields.py +0 -0
  132. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_filters.py +0 -0
  133. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_locale_api.py +0 -0
  134. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_perm_tests.py +0 -0
  135. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_perms_api.py +0 -0
  136. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_profiling_middleware.py +0 -0
  137. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_settings.py +0 -0
  138. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_shortcuts.py +0 -0
  139. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_timezone_middleware.py +0 -0
  140. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_tools.py +0 -0
  141. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_user_queryset.py +0 -0
  142. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_view_decorators.py +0 -0
  143. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/tests/test_view_fields.py +0 -0
  144. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/urls.py +0 -0
  145. {django_pfx-1.4.dev64 → django_pfx-1.4.dev66}/tests/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: django-pfx
3
- Version: 1.4.dev64
3
+ Version: 1.4.dev66
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.2
2
2
  Name: django-pfx
3
- Version: 1.4.dev64
3
+ Version: 1.4.dev66
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
@@ -9,20 +9,44 @@ including password validation and hashing.
9
9
  ## User Model
10
10
 
11
11
  You have the option to use the standard Django User with {class}`pfx.pfxcore.models.PFXUser`
12
- (which is a {class}`django.contrib.auth.models.User` with PFX required mixins),
13
- but you may prefer to use your own model. To do this, create your own user class.
12
+ (which is a {class}`django.contrib.auth.models.User` with PFX required mixins):
13
+
14
+ ```python
15
+ AUTH_USER_MODEL = 'pfxcore.PFXUser'
16
+ ```
17
+
18
+ But you may prefer to use your own model. To do this, create your own user class.
19
+
20
+ You have 2 options:
14
21
 
15
22
  ```python
16
23
  from pfx.pfxcore.models import AbstractPFXBaseUser
17
24
 
18
25
  class MyUser(AbstractPFXBaseUser):
26
+ # Equivalent of django.contrib.auth.models.AbstractBaseUser for PFX.
27
+ #
28
+ # Minimal user, you have to manage the USERNAME_FIELD by yourself,
29
+ # and you have to add django.contrib.auth.models.PermissionsMixin
30
+ # if you want to use the permission system.
19
31
  pass
20
32
  ```
21
33
 
34
+ ```python
35
+ from pfx.pfxcore.models import AbstractPFXUser
36
+
37
+ class MyUser(AbstractPFXUser):
38
+ # Equivalent of django.contrib.auth.models.AbstractUser for PFX.
39
+ #
40
+ # This is the same as using pfxcore.PFXUser, but you can add your
41
+ # custom fields.
42
+ pass
43
+
44
+ ```
45
+
22
46
  Then, define the model in your settings:
23
47
 
24
48
  ```python
25
- AUTH_USER_MODEL = "myapp.MyUser"
49
+ AUTH_USER_MODEL = 'myapp.MyUser'
26
50
  ```
27
51
 
28
52
  ## Authentication Modes
@@ -1,7 +1,9 @@
1
1
  from django.contrib.auth.models import AbstractBaseUser, AbstractUser
2
2
 
3
+ from .pfx_models import PFXModelMixin
3
4
 
4
- class AbstractPFXBaseUser(AbstractBaseUser):
5
+
6
+ class AbstractPFXBaseUser(PFXModelMixin, AbstractBaseUser):
5
7
  """The base abstract user for PFX."""
6
8
 
7
9
  class Meta:
@@ -1,10 +1,9 @@
1
1
  from django.contrib.auth.models import AbstractUser
2
2
 
3
3
  from .abstract_pfx_base_user import AbstractPFXUser
4
- from .pfx_models import PFXModelMixin
5
4
 
6
5
 
7
- class PFXUser(PFXModelMixin, AbstractPFXUser):
6
+ class PFXUser(AbstractPFXUser):
8
7
  """The Django User with PFX mixins.
9
8
  """
10
9
 
@@ -50,7 +50,7 @@ class UserManager(BaseUserManager):
50
50
  is_superuser=True)
51
51
 
52
52
 
53
- class User(CacheableMixin, JSONReprMixin, OtpUserMixin, AbstractPFXBaseUser):
53
+ class User(CacheableMixin, OtpUserMixin, AbstractPFXBaseUser):
54
54
  username = models.CharField(
55
55
  'username',
56
56
  max_length=150,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes