django-resonant-settings 0.26__tar.gz → 0.28__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 (31) hide show
  1. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/PKG-INFO +5 -2
  2. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/pyproject.toml +5 -2
  3. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth.py +3 -4
  4. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/celery.py +3 -0
  5. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/django.py +1 -3
  6. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/testing/minio_storage.py +4 -1
  7. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/.gitignore +0 -0
  8. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/LICENSE +0 -0
  9. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/README.md +0 -0
  10. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/__init__.py +0 -0
  11. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/_env.py +0 -0
  12. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/__init__.py +0 -0
  13. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/adapter.py +0 -0
  14. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/apps.py +0 -0
  15. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/createsuperuser.py +0 -0
  16. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/management/commands/createsuperuser.py +0 -0
  17. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/receiver.py +0 -0
  18. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/allauth_support/utils.py +0 -0
  19. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/debug_toolbar.py +0 -0
  20. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/development/__init__.py +0 -0
  21. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/development/celery.py +0 -0
  22. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/development/extensions.py +0 -0
  23. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/logging.py +0 -0
  24. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/oauth_toolkit.py +0 -0
  25. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/production/__init__.py +0 -0
  26. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/production/email.py +0 -0
  27. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/production/https.py +0 -0
  28. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/production/s3_storage.py +0 -0
  29. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/py.typed +0 -0
  30. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/rest_framework.py +0 -0
  31. {django_resonant_settings-0.26 → django_resonant_settings-0.28}/resonant_settings/testing/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-resonant-settings
3
- Version: 0.26
3
+ Version: 0.28
4
4
  Summary: Shared Django settings for Resonant applications.
5
5
  Project-URL: Repository, https://github.com/kitware-resonant/cookiecutter-resonant
6
6
  Project-URL: Bug Reports, https://github.com/kitware-resonant/cookiecutter-resonant/issues
@@ -18,8 +18,11 @@ Classifier: License :: OSI Approved :: Apache Software License
18
18
  Classifier: Operating System :: OS Independent
19
19
  Classifier: Programming Language :: Python
20
20
  Classifier: Programming Language :: Python :: 3
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
21
24
  Classifier: Programming Language :: Python :: 3.13
22
- Requires-Python: >=3.13
25
+ Requires-Python: >=3.10
23
26
  Requires-Dist: django-environ
24
27
  Provides-Extra: allauth
25
28
  Requires-Dist: django-allauth; extra == 'allauth'
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
6
6
  name = "django-resonant-settings"
7
7
  description = "Shared Django settings for Resonant applications."
8
8
  readme = "README.md"
9
- requires-python = ">=3.13"
9
+ requires-python = ">=3.10"
10
10
  license = { text = "Apache 2.0" }
11
11
  maintainers = [{ name = "Kitware, Inc.", email = "kitware@kitware.com" }]
12
12
  keywords = [
@@ -25,6 +25,9 @@ classifiers = [
25
25
  "License :: OSI Approved :: Apache Software License",
26
26
  "Operating System :: OS Independent",
27
27
  "Programming Language :: Python :: 3",
28
+ "Programming Language :: Python :: 3.10",
29
+ "Programming Language :: Python :: 3.11",
30
+ "Programming Language :: Python :: 3.12",
28
31
  "Programming Language :: Python :: 3.13",
29
32
  "Programming Language :: Python",
30
33
  ]
@@ -53,7 +56,7 @@ raw-options = { root = ".." }
53
56
 
54
57
  [tool.black]
55
58
  line-length = 100
56
- target-version = ["py313"]
59
+ target-version = ["py310"]
57
60
 
58
61
  [tool.isort]
59
62
  profile = "black"
@@ -23,11 +23,11 @@ AUTHENTICATION_BACKENDS = [
23
23
  # see configuration documentation at
24
24
  # https://django-allauth.readthedocs.io/en/latest/configuration.html
25
25
 
26
- # Require email verification, but this can be overridden
26
+ # Require email verification
27
27
  ACCOUNT_EMAIL_VERIFICATION = "mandatory"
28
28
 
29
29
  # Use email as the identifier for login
30
- ACCOUNT_AUTHENTICATION_METHOD = "email"
30
+ ACCOUNT_LOGIN_METHODS = {"email"}
31
31
  ACCOUNT_EMAIL_REQUIRED = True
32
32
  ACCOUNT_USERNAME_REQUIRED = False
33
33
 
@@ -40,8 +40,7 @@ ACCOUNT_SESSION_REMEMBER = True
40
40
  ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
41
41
  ACCOUNT_LOGIN_ON_PASSWORD_RESET = True
42
42
 
43
- # These will permit GET requests to mutate the user state, but significantly improve usability
44
- ACCOUNT_LOGOUT_ON_GET = True
43
+ # Confirm URLs include a secret token, so CSRF safety isn't a concern
45
44
  ACCOUNT_CONFIRM_EMAIL_ON_GET = True
46
45
 
47
46
  # This will likely become the default in the future, but enable it now
@@ -45,6 +45,9 @@ CELERY_TASK_ACKS_ON_FAILURE_OR_TIMEOUT = True
45
45
  # and this will be Celery's default in 6.0.
46
46
  CELERY_WORKER_CANCEL_LONG_RUNNING_TASKS_ON_CONNECTION_LOSS = True
47
47
 
48
+ # This is the default, but is necessary to suppress warnings in Celery
49
+ CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True
50
+
48
51
  # CloudAMQP-suggested settings
49
52
  # https://www.cloudamqp.com/docs/celery.html
50
53
  CELERY_BROKER_POOL_LIMIT = 1
@@ -1,6 +1,4 @@
1
- """
2
- Configure a basic Django project.
3
- """
1
+ """Configure a basic Django project."""
4
2
 
5
3
  TEMPLATES = [
6
4
  {
@@ -3,13 +3,16 @@ Configure MinioMediaStorage.
3
3
 
4
4
  This requires the `django-minio-storage` package to be installed.
5
5
  """
6
+
6
7
  from urllib.parse import ParseResult
7
8
 
8
9
  from resonant_settings._env import env
9
10
 
10
11
  minio_url: ParseResult = env.url("DJANGO_MINIO_STORAGE_URL")
11
12
  MINIO_STORAGE_USE_HTTPS = minio_url.scheme == "https"
12
- MINIO_STORAGE_ENDPOINT = minio_url.hostname + (f":{minio_url.port}" if minio_url.port else "")
13
+ MINIO_STORAGE_ENDPOINT = (
14
+ f"{minio_url.hostname}:{minio_url.port}" if minio_url.port else minio_url.hostname
15
+ )
13
16
  MINIO_STORAGE_ACCESS_KEY = minio_url.username
14
17
  MINIO_STORAGE_SECRET_KEY = minio_url.password
15
18
  MINIO_STORAGE_MEDIA_BUCKET_NAME = minio_url.path.lstrip("/")