django-esi 5.3.0b1__tar.gz → 6.0.0__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.
Potentially problematic release.
This version of django-esi might be problematic. Click here for more details.
- {django_esi-5.3.0b1 → django_esi-6.0.0}/PKG-INFO +22 -15
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/__init__.py +1 -2
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/admin.py +3 -1
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/managers.py +12 -28
- django_esi-6.0.0/esi/tests/test_managers.py +673 -0
- django_esi-6.0.0/esi/urls.py +10 -0
- django_esi-6.0.0/pyproject.toml +73 -0
- django_esi-5.3.0b1/esi/tests/test_managers.py +0 -726
- django_esi-5.3.0b1/esi/urls.py +0 -10
- django_esi-5.3.0b1/pyproject.toml +0 -59
- {django_esi-5.3.0b1 → django_esi-6.0.0}/LICENSE +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/README.md +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/app_settings.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/apps.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/checks.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/clients.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/decorators.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/errors.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/de/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/de/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/en/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/en/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/es/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/es/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/fr_FR/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/it_IT/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/it_IT/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/ja/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/ja/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/ko_KR/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/ru/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/ru/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/locale/zh_Hans/LC_MESSAGES/django.po +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/management/commands/__init__.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/management/commands/migrate_to_ssov2.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0001_initial.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0002_scopes_20161208.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0003_hide_tokens_from_admin_site.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0004_remove_unique_access_token.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0005_remove_token_length_limit.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0006_remove_url_length_limit.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0007_fix_mysql_8_migration.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0008_nullable_refresh_token.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0009_set_old_tokens_to_sso_v1.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0010_set_new_tokens_to_sso_v2.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0011_add_token_indices.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/0012_fix_token_type_choices.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/migrations/__init__.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/models.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/static/esi/img/EVE_SSO_Login_Buttons_Large_Black.png +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/static/esi/img/EVE_SSO_Login_Buttons_Large_White.png +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/static/esi/img/EVE_SSO_Login_Buttons_Small_Black.png +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/static/esi/img/EVE_SSO_Login_Buttons_Small_White.png +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tasks.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/templates/esi/select_token.html +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/templatetags/__init__.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/templatetags/scope_tags.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/__init__.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/client_authed_pilot.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/client_public_pilot.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/factories.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/factories_2.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/jwt_factory.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_checks.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_clients.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_decorators.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_management_command.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_models.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_swagger.json +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_swagger_full.json +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_tasks.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_templatetags.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/test_views.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/tests/threading_pilot.py +0 -0
- {django_esi-5.3.0b1 → django_esi-6.0.0}/esi/views.py +0 -0
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: django-esi
|
|
3
|
-
Version:
|
|
3
|
+
Version: 6.0.0
|
|
4
4
|
Summary: Django app for accessing the EVE Swagger Interface (ESI).
|
|
5
5
|
Author-email: Alliance Auth <adarnof@gmail.com>
|
|
6
6
|
Requires-Python: >=3.8
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Classifier: Environment :: Web Environment
|
|
9
9
|
Classifier: Framework :: Django
|
|
10
|
-
Classifier: Framework :: Django :: 3.2
|
|
11
|
-
Classifier: Framework :: Django :: 4.0
|
|
12
|
-
Classifier: Framework :: Django :: 4.1
|
|
13
10
|
Classifier: Framework :: Django :: 4.2
|
|
14
11
|
Classifier: Framework :: Django :: 5.0
|
|
12
|
+
Classifier: Framework :: Django :: 5.1
|
|
15
13
|
Classifier: Intended Audience :: Developers
|
|
16
14
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
17
15
|
Classifier: Operating System :: OS Independent
|
|
18
16
|
Classifier: Programming Language :: Python
|
|
19
|
-
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
18
|
Classifier: Programming Language :: Python :: 3.8
|
|
21
19
|
Classifier: Programming Language :: Python :: 3.9
|
|
22
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -24,21 +22,30 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
24
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
25
23
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
26
24
|
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
|
|
27
|
-
Requires-Dist: bravado>=10.6
|
|
25
|
+
Requires-Dist: bravado>=10.6,<11
|
|
26
|
+
Requires-Dist: brotli
|
|
28
27
|
Requires-Dist: celery>=4.0.2
|
|
29
|
-
Requires-Dist: django>=
|
|
30
|
-
Requires-Dist: jsonschema<4
|
|
31
|
-
Requires-Dist: python-jose>=3.3
|
|
32
|
-
Requires-Dist: requests>=2.26
|
|
33
|
-
Requires-Dist:
|
|
28
|
+
Requires-Dist: django>=4.2,<5.2
|
|
29
|
+
Requires-Dist: jsonschema<4
|
|
30
|
+
Requires-Dist: python-jose>=3.3
|
|
31
|
+
Requires-Dist: requests>=2.26
|
|
32
|
+
Requires-Dist: requests-oauthlib>=0.8
|
|
34
33
|
Requires-Dist: tqdm>=4.62.3
|
|
35
|
-
Requires-Dist: brotli
|
|
36
|
-
Requires-Dist: sphinx ; extra == "docs"
|
|
37
34
|
Requires-Dist: myst-parser ; extra == "docs"
|
|
38
|
-
Requires-Dist:
|
|
39
|
-
Requires-Dist:
|
|
35
|
+
Requires-Dist: sphinx ; extra == "docs"
|
|
36
|
+
Requires-Dist: sphinx-copybutton ; extra == "docs"
|
|
37
|
+
Requires-Dist: sphinx-rtd-theme<3,>=2 ; extra == "docs"
|
|
38
|
+
Requires-Dist: sphinx-tabs ; extra == "docs"
|
|
39
|
+
Requires-Dist: sphinxcontrib-django ; extra == "docs"
|
|
40
|
+
Requires-Dist: coverage ; extra == "test"
|
|
41
|
+
Requires-Dist: factory-boy ; extra == "test"
|
|
42
|
+
Requires-Dist: requests-mock ; extra == "test"
|
|
43
|
+
Project-URL: Documentation, https://django-esi.readthedocs.io/en/latest/
|
|
40
44
|
Project-URL: Homepage, https://gitlab.com/allianceauth/django-esi
|
|
45
|
+
Project-URL: Source, https://gitlab.com/allianceauth/django-esi
|
|
46
|
+
Project-URL: Tracker, https://gitlab.com/allianceauth/django-esi/-/issues
|
|
41
47
|
Provides-Extra: docs
|
|
48
|
+
Provides-Extra: test
|
|
42
49
|
|
|
43
50
|
# django-esi
|
|
44
51
|
|
|
@@ -17,10 +17,12 @@ class TokenAdmin(admin.ModelAdmin):
|
|
|
17
17
|
qs = super().get_queryset(request)
|
|
18
18
|
return qs.select_related('user').prefetch_related('scopes')
|
|
19
19
|
|
|
20
|
+
@admin.display(
|
|
21
|
+
description='Scopes'
|
|
22
|
+
)
|
|
20
23
|
def get_scopes(self, obj):
|
|
21
24
|
return ", ".join([x.name for x in obj.scopes.all()])
|
|
22
25
|
|
|
23
|
-
get_scopes.short_description = 'Scopes'
|
|
24
26
|
|
|
25
27
|
User = get_user_model()
|
|
26
28
|
list_display = ('user', 'character_name', 'get_scopes')
|
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
from datetime import timedelta
|
|
2
1
|
import logging
|
|
3
|
-
from
|
|
2
|
+
from datetime import timedelta
|
|
3
|
+
from typing import Any, Union
|
|
4
4
|
|
|
5
5
|
import requests
|
|
6
|
-
from requests_oauthlib import OAuth2Session
|
|
7
|
-
|
|
8
6
|
from django.db import models
|
|
9
7
|
from django.utils import timezone
|
|
10
|
-
|
|
11
|
-
from .errors import TokenError, IncompleteResponseError
|
|
12
|
-
from . import app_settings
|
|
13
|
-
|
|
14
8
|
from jose import jwt
|
|
15
9
|
from jose.exceptions import ExpiredSignatureError, JWTError
|
|
10
|
+
from requests_oauthlib import OAuth2Session
|
|
11
|
+
|
|
12
|
+
from . import app_settings
|
|
13
|
+
from .errors import IncompleteResponseError, TokenError
|
|
16
14
|
|
|
17
15
|
logger = logging.getLogger(__name__)
|
|
18
16
|
|
|
@@ -75,26 +73,12 @@ class TokenQueryset(models.QuerySet):
|
|
|
75
73
|
Returns:
|
|
76
74
|
All tokens which are still valid.
|
|
77
75
|
"""
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
flat=True
|
|
85
|
-
)
|
|
86
|
-
)
|
|
87
|
-
valid_expired = list(
|
|
88
|
-
expired.bulk_refresh(
|
|
89
|
-
).values_list(
|
|
90
|
-
"pk",
|
|
91
|
-
flat=True
|
|
92
|
-
)
|
|
93
|
-
)
|
|
94
|
-
_qs = self.filter(
|
|
95
|
-
pk__in=(valid + valid_expired)
|
|
96
|
-
)
|
|
97
|
-
return _qs
|
|
76
|
+
expired_pks = set(self.get_expired().values_list("pk", flat=True))
|
|
77
|
+
fresh_pks = set(self.exclude(pk__in=expired_pks).values_list("pk", flat=True))
|
|
78
|
+
refreshed = self.filter(pk__in=expired_pks).bulk_refresh()
|
|
79
|
+
refreshed_pks = set(refreshed.values_list("pk", flat=True))
|
|
80
|
+
qs = self.filter(pk__in=fresh_pks | refreshed_pks)
|
|
81
|
+
return qs
|
|
98
82
|
|
|
99
83
|
def require_scopes(self, scope_string: Union[str, list]) -> models.QuerySet:
|
|
100
84
|
"""Filter tokens which have at least a subset of given scopes.
|