django-pfx 1.7.6.dev9__tar.gz → 1.7.6.dev11__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.
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/PKG-INFO +1 -1
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/PKG-INFO +1 -1
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/SOURCES.txt +1 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/scm_file_list.json +1 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/scm_version.json +2 -2
- django_pfx-1.7.6.dev11/pfx/pfxcore/middleware/ws_cookie_authentication_middleware.py +60 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/__init__.py +1 -0
- django_pfx-1.7.6.dev11/tests/tests/test_ws_cookie_middleware.py +30 -0
- django_pfx-1.7.6.dev9/pfx/pfxcore/middleware/ws_cookie_authentication_middleware.py +0 -35
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/.gitignore +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/.gitlab-ci.yml +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/.pre-commit-config.yaml +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/LICENSE +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/MANIFEST.in +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/README.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/dependency_links.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/requires.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/django_pfx.egg-info/top_level.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/Makefile +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/conf.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/index.rst +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/api.views.rst +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/authentication.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/decorator.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/generate_openapi.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/getting_started.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/internationalisation.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/model.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/pfx_views.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/profiling.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/settings.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/testing.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/doc/source/user_jobs.md +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/img/pfx.png +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/img/pfx.svg +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/make_messages +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/manage.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/apps.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/email_backend/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/email_backend/q_mailjet_email_backend.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/exceptions.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/mailjet/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/mailjet/mailjet.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/mailjet/message_result.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0002_alter_email_headers.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0003_alter_email_options.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0004_alter_email_mail_from.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/models/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/models/email.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/providers/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/providers/email_django_q_executor.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/shortcuts.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/tasks.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/templates/emails/base_template.html +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/templates/emails/base_template.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/templates/emails/base_template_subject.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/views/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/views/email_rest_view.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/apidoc/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/apidoc/parameters.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/apidoc/schema.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/apidoc/tags.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/apps.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/decorator/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/decorator/rest.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/default_settings.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/exceptions.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/fields/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/fields/decimal_field.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/fields/media_field.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/fields/minutes_duration_field.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/fields/rich_text_field.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/http/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/http/json_response.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/management/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/management/commands/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/management/commands/makeapidoc.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/management/commands/profile.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/mfa/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/mfa/authenticator.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/mfa/base.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/mfa/email.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/mfa/legacy.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/mfa/sms.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/middleware/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/middleware/authentication.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/middleware/locale.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/middleware/profiling.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/middleware/request_too_big_middleware.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0003_delete_pfxpermissionsuser.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0004_alter_loginban_failed_counter_and_more.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0005_mfadevice_mfadevice_mfa_device_unique_backend.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0006_alter_pfxuser_managers.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0007_alter_pfxuser_options.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/operations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/operations/permissions.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/abstract_pfx_base_user.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/attachment_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/cache_mixins.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/login_ban.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/mfa_device.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/mfa_user_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/not_null_fields.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/ordered_model_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/pfx_models.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/pfx_user.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/user_filtered_queryset_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/serializers/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/serializers/json.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/settings.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/shortcuts.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/sms/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/sms/backends/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/sms/backends/base.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/sms/backends/console.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/storage/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/storage/exceptions.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/storage/local_storage.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/storage/s3_storage.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/templates/registration/otp_code_email.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/templates/registration/otp_code_subject.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/templates/registration/password_reset_email.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/templates/registration/password_reset_subject.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/templates/registration/welcome_email.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/templates/registration/welcome_subject.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/test.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/version_check.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/authentication_views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/fields.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/filters_views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/locale_views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/media_rest_view_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/mfa_authentication_views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/date_format.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/groups.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/list_count.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/list_items.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/list_mode.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/list_order.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/list_search.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/media_redirect.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/meta_fields.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/meta_filters.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/meta_orders.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_limit.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_offset.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_page.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_page_size.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_page_subset.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/rest_views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/settings/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/settings/dev.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/apps.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/locale/fr/LC_MESSAGES/django.mo +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/migrations/0002_alter_userjob_options_alter_userjob_auto_queued_and_more.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/migrations/0003_clean_scheduled_tasks.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/migrations/0004_userjob_summary_url.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/migrations/0005_swappable_user_job.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/models/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/models/user_job.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/models/user_job_attachment.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/providers/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/providers/user_job_django_q_executor.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/providers/user_job_websocket_channel_provider.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/tasks.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/views/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/views/user_job_attachment_view.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/views/user_job_view.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/userjobs/views/user_websocket_consumer.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pyproject.toml +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/requirements.txt +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/serve-doc +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/setup.cfg +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/setup.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/apps.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/channel_group_send_calls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/locale/fr/LC_MESSAGES/django.po +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/mfa_urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/models.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/settings/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/settings/ci.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/settings/common.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/settings/dev.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/settings/dev_default.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/basic_api_errors.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/basic_api_test.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/mfa_test_utils.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_api_doc.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_api_doc_search.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_body_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_cache.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_client.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_emails_email_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_emails_email_model.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_emails_q_mailjet_email_backend.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_emails_send_email_message.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_choices.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_date.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_decimal.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_minutes_duration.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_one2many.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_rich_text.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_fields_time.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_filters.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_locale_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_mfa_legacy.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_mfa_login_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_mfa_setup_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_ordered_rest_view_mixin.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_perm_tests.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_permissions.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_perms_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_post_migrate_groups_update.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_profiling_middleware.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_settings.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_shortcuts.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_timezone_middleware.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_tools.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_user_job_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_user_job_messages.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_user_job_model.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_user_queryset.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_user_websocket.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_version_check.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_view_decorators.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/tests/test_view_fields.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests/views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/settings/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/settings/ci.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/settings/common.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/settings/dev.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/settings/dev_default.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/tests/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/tests/test_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_base_user/views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/models.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/settings/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/settings/ci.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/settings/common.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/settings/dev.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/settings/dev_default.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/tests/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/tests/test_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user/views.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/models.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/providers.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/scope.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/settings/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/settings/ci.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/settings/common.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/settings/dev.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/settings/dev_default.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/tests/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/tests/test_user_job.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_custom_user_job/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/migrations/0001_initial.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/migrations/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/models.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/settings/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/settings/ci.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/settings/common.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/settings/dev.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/settings/dev_custom_example.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/settings/dev_default.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/tests/__init__.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/tests/test_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/tests/test_auth_api.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/urls.py +0 -0
- {django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/tests_user_email_login/views.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-pfx
|
|
3
|
-
Version: 1.7.6.
|
|
3
|
+
Version: 1.7.6.dev11
|
|
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.7.6.
|
|
3
|
+
Version: 1.7.6.dev11
|
|
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
|
|
@@ -250,6 +250,7 @@ tests/tests/test_user_websocket.py
|
|
|
250
250
|
tests/tests/test_version_check.py
|
|
251
251
|
tests/tests/test_view_decorators.py
|
|
252
252
|
tests/tests/test_view_fields.py
|
|
253
|
+
tests/tests/test_ws_cookie_middleware.py
|
|
253
254
|
tests_base_user/__init__.py
|
|
254
255
|
tests_base_user/urls.py
|
|
255
256
|
tests_base_user/views.py
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
|
|
3
|
+
from django.contrib.auth.models import AnonymousUser
|
|
4
|
+
from django.core.exceptions import ImproperlyConfigured
|
|
5
|
+
from django.http import parse_cookie
|
|
6
|
+
|
|
7
|
+
from pfx.pfxcore.middleware.authentication import JWTTokenDecodeMixin
|
|
8
|
+
|
|
9
|
+
logger = logging.getLogger(__name__)
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
from channels.db import database_sync_to_async
|
|
13
|
+
from channels.middleware import BaseMiddleware
|
|
14
|
+
except ImportError as e:
|
|
15
|
+
# Channels is only needed by the projects serving websockets, but
|
|
16
|
+
# naming any middleware of `pfx.pfxcore.middleware` makes Django
|
|
17
|
+
# import the whole package: this module has to stay importable
|
|
18
|
+
# without it. The error is raised when the middleware is used.
|
|
19
|
+
CHANNELS_IMPORT_ERROR = e
|
|
20
|
+
database_sync_to_async = None
|
|
21
|
+
BaseMiddleware = object
|
|
22
|
+
else:
|
|
23
|
+
CHANNELS_IMPORT_ERROR = None
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class WSCookieAuthenticationMiddleware(JWTTokenDecodeMixin, BaseMiddleware):
|
|
27
|
+
def __init__(self, *args, **kwargs):
|
|
28
|
+
if CHANNELS_IMPORT_ERROR:
|
|
29
|
+
raise ImproperlyConfigured(
|
|
30
|
+
f'Missing channels: {CHANNELS_IMPORT_ERROR}\n'
|
|
31
|
+
"PFX CONFIGURATION ERROR: You have to install channels "
|
|
32
|
+
"to use [pfx.pfxcore.middleware."
|
|
33
|
+
f"{self.__class__.__name__}]:\n"
|
|
34
|
+
"pip install channels\n"
|
|
35
|
+
"(and a websocket server, for instance with "
|
|
36
|
+
"`pip install channels[daphne]`)"
|
|
37
|
+
) from CHANNELS_IMPORT_ERROR
|
|
38
|
+
super().__init__(*args, **kwargs)
|
|
39
|
+
|
|
40
|
+
async def __call__(self, scope, receive, send):
|
|
41
|
+
if scope.get("user") is not None:
|
|
42
|
+
return await super().__call__(scope, receive, send)
|
|
43
|
+
|
|
44
|
+
headers = dict(scope.get("headers", []))
|
|
45
|
+
cookies = {}
|
|
46
|
+
if b"cookie" in headers:
|
|
47
|
+
cookies = parse_cookie(headers[b"cookie"].decode())
|
|
48
|
+
|
|
49
|
+
key = cookies.get("token")
|
|
50
|
+
if key:
|
|
51
|
+
try:
|
|
52
|
+
user, __, __ = await database_sync_to_async(
|
|
53
|
+
self.decode_jwt)(key)
|
|
54
|
+
except Exception as e:
|
|
55
|
+
logger.exception(e, exc_info=True)
|
|
56
|
+
user = AnonymousUser()
|
|
57
|
+
else:
|
|
58
|
+
user = AnonymousUser()
|
|
59
|
+
scope['user'] = user
|
|
60
|
+
return await super().__call__(scope, receive, send)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from unittest.mock import patch
|
|
3
|
+
|
|
4
|
+
from django.core.exceptions import ImproperlyConfigured
|
|
5
|
+
from django.test import TestCase
|
|
6
|
+
|
|
7
|
+
from pfx.pfxcore.middleware import WSCookieAuthenticationMiddleware
|
|
8
|
+
from pfx.pfxcore.middleware import ws_cookie_authentication_middleware as mod
|
|
9
|
+
|
|
10
|
+
logger = logging.getLogger(__name__)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TestWSCookieMiddleware(TestCase):
|
|
14
|
+
"""Channels is an optional dependency: naming any middleware of
|
|
15
|
+
`pfx.pfxcore.middleware` makes Django import the whole package, so a
|
|
16
|
+
project serving no websocket must not need it installed."""
|
|
17
|
+
|
|
18
|
+
def test_module_is_importable_without_channels(self):
|
|
19
|
+
# The module is already imported: reaching this point at all
|
|
20
|
+
# means the package did not require channels at import time.
|
|
21
|
+
self.assertIsNone(mod.CHANNELS_IMPORT_ERROR)
|
|
22
|
+
|
|
23
|
+
def test_middleware_reports_the_missing_dependency(self):
|
|
24
|
+
error = ImportError("No module named 'channels'")
|
|
25
|
+
with patch.object(mod, 'CHANNELS_IMPORT_ERROR', error):
|
|
26
|
+
with self.assertRaises(ImproperlyConfigured) as ctx:
|
|
27
|
+
WSCookieAuthenticationMiddleware(lambda *a: None)
|
|
28
|
+
message = str(ctx.exception)
|
|
29
|
+
self.assertIn("No module named 'channels'", message)
|
|
30
|
+
self.assertIn('pip install channels', message)
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from django.contrib.auth.models import AnonymousUser
|
|
4
|
-
from django.http import parse_cookie
|
|
5
|
-
|
|
6
|
-
from channels.db import database_sync_to_async
|
|
7
|
-
from channels.middleware import BaseMiddleware
|
|
8
|
-
|
|
9
|
-
from pfx.pfxcore.middleware.authentication import JWTTokenDecodeMixin
|
|
10
|
-
|
|
11
|
-
logger = logging.getLogger(__name__)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class WSCookieAuthenticationMiddleware(JWTTokenDecodeMixin, BaseMiddleware):
|
|
15
|
-
async def __call__(self, scope, receive, send):
|
|
16
|
-
if scope.get("user") is not None:
|
|
17
|
-
return await super().__call__(scope, receive, send)
|
|
18
|
-
|
|
19
|
-
headers = dict(scope.get("headers", []))
|
|
20
|
-
cookies = {}
|
|
21
|
-
if b"cookie" in headers:
|
|
22
|
-
cookies = parse_cookie(headers[b"cookie"].decode())
|
|
23
|
-
|
|
24
|
-
key = cookies.get("token")
|
|
25
|
-
if key:
|
|
26
|
-
try:
|
|
27
|
-
user, __, __ = await database_sync_to_async(
|
|
28
|
-
self.decode_jwt)(key)
|
|
29
|
-
except Exception as e:
|
|
30
|
-
logger.exception(e, exc_info=True)
|
|
31
|
-
user = AnonymousUser()
|
|
32
|
-
else:
|
|
33
|
-
user = AnonymousUser()
|
|
34
|
-
scope['user'] = user
|
|
35
|
-
return await super().__call__(scope, receive, send)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/email_backend/q_mailjet_email_backend.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0002_alter_email_headers.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0003_alter_email_options.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/migrations/0004_alter_email_mail_from.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/providers/email_django_q_executor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/templates/emails/base_template.html
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/emails/templates/emails/base_template.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/fields/minutes_duration_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.mo
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/locale/fr/LC_MESSAGES/django.po
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/management/commands/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/management/commands/makeapidoc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/0002_pfxpermissionsuser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/operations/__init__.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/migrations/operations/permissions.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/abstract_pfx_base_user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/models/user_filtered_queryset_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/mfa_authentication_views.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/ordered_rest_view_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/date_format.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/list_search.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/media_redirect.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/meta_fields.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/meta_filters.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/meta_orders.py
RENAMED
|
File without changes
|
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_limit.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_offset.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_page.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_page_size.py
RENAMED
|
File without changes
|
{django_pfx-1.7.6.dev9 → django_pfx-1.7.6.dev11}/pfx/pfxcore/views/parameters/subset_page_subset.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|