|
2 | 2 | import time |
3 | 3 | import uuid |
4 | 4 | from datetime import timedelta |
5 | | -from urllib.parse import parse_qsl, urlparse |
| 5 | +import sys |
6 | 6 |
|
7 | 7 | from django.apps import apps |
8 | 8 | from django.conf import settings |
9 | 9 | from django.core.exceptions import ImproperlyConfigured |
10 | 10 | from django.db import models, transaction |
11 | | -from django.urls import reverse |
| 11 | +from django.core.urlresolvers import reverse |
12 | 12 | from django.utils import timezone |
13 | 13 | from django.utils.translation import gettext_lazy as _ |
14 | 14 | from jwcrypto import jwk |
|
20 | 20 | from .settings import oauth2_settings |
21 | 21 | from .validators import RedirectURIValidator, WildcardSet |
22 | 22 |
|
| 23 | +PY2 = sys.version_info[0] == 2 |
| 24 | +if PY2: |
| 25 | + from urlparse import parse_qsl, urlparse |
| 26 | +else: |
| 27 | + from urllib.parse import parse_qsl, urlparse |
| 28 | + |
23 | 29 |
|
24 | 30 | logger = logging.getLogger(__name__) |
25 | 31 |
|
@@ -74,7 +80,7 @@ class AbstractApplication(models.Model): |
74 | 80 | (HS256_ALGORITHM, _("HMAC with SHA-2 256")), |
75 | 81 | ) |
76 | 82 |
|
77 | | - id = models.BigAutoField(primary_key=True) |
| 83 | + id = models.AutoField(primary_key=True) |
78 | 84 | client_id = models.CharField(max_length=100, unique=True, default=generate_client_id, db_index=True) |
79 | 85 | user = models.ForeignKey( |
80 | 86 | settings.AUTH_USER_MODEL, |
@@ -243,7 +249,7 @@ class AbstractGrant(models.Model): |
243 | 249 | CODE_CHALLENGE_S256 = "S256" |
244 | 250 | CODE_CHALLENGE_METHODS = ((CODE_CHALLENGE_PLAIN, "plain"), (CODE_CHALLENGE_S256, "S256")) |
245 | 251 |
|
246 | | - id = models.BigAutoField(primary_key=True) |
| 252 | + id = models.AutoField(primary_key=True) |
247 | 253 | user = models.ForeignKey( |
248 | 254 | settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s" |
249 | 255 | ) |
@@ -303,7 +309,7 @@ class AbstractAccessToken(models.Model): |
303 | 309 | * :attr:`scope` Allowed scopes |
304 | 310 | """ |
305 | 311 |
|
306 | | - id = models.BigAutoField(primary_key=True) |
| 312 | + id = models.AutoField(primary_key=True) |
307 | 313 | user = models.ForeignKey( |
308 | 314 | settings.AUTH_USER_MODEL, |
309 | 315 | on_delete=models.CASCADE, |
@@ -416,7 +422,7 @@ class AbstractRefreshToken(models.Model): |
416 | 422 | * :attr:`revoked` Timestamp of when this refresh token was revoked |
417 | 423 | """ |
418 | 424 |
|
419 | | - id = models.BigAutoField(primary_key=True) |
| 425 | + id = models.AutoField(primary_key=True) |
420 | 426 | user = models.ForeignKey( |
421 | 427 | settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s" |
422 | 428 | ) |
@@ -486,7 +492,7 @@ class AbstractIDToken(models.Model): |
486 | 492 | * :attr:`updated` Date and time of token update, in DateTime format |
487 | 493 | """ |
488 | 494 |
|
489 | | - id = models.BigAutoField(primary_key=True) |
| 495 | + id = models.AutoField(primary_key=True) |
490 | 496 | user = models.ForeignKey( |
491 | 497 | settings.AUTH_USER_MODEL, |
492 | 498 | on_delete=models.CASCADE, |
@@ -631,7 +637,8 @@ def batch_delete(queryset, query): |
631 | 637 | flat_queryset = queryset.values_list("id", flat=True)[:CLEAR_EXPIRED_TOKENS_BATCH_SIZE] |
632 | 638 | batch_length = flat_queryset.count() |
633 | 639 | queryset.model.objects.filter(id__in=list(flat_queryset)).delete() |
634 | | - logger.debug(f"{batch_length} tokens deleted, {current_no-batch_length} left") |
| 640 | + temp_result = current_no - batch_length |
| 641 | + logger.debug("{batch_length} tokens deleted, {temp_result} left".format(locals())) |
635 | 642 | queryset = queryset.model.objects.filter(query) |
636 | 643 | time.sleep(CLEAR_EXPIRED_TOKENS_BATCH_INTERVAL) |
637 | 644 | current_no = queryset.count() |
|
0 commit comments