Skip to content

Commit e1f0874

Browse files
author
omri
committed
py2 compatibility
1 parent a6bd0d0 commit e1f0874

19 files changed

+42
-35
lines changed

oauth2_provider/__init__.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
import django
2-
3-
41
__version__ = "1.7.0"
52

6-
if django.VERSION < (3, 2):
7-
default_app_config = "oauth2_provider.apps.DOTConfig"
3+
4+
default_app_config = "oauth2_provider.apps.DOTConfig"

oauth2_provider/migrations/0001_initial.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class Migration(migrations.Migration):
2525
migrations.CreateModel(
2626
name='Application',
2727
fields=[
28-
('id', models.BigAutoField(serialize=False, primary_key=True)),
28+
('id', models.AutoField(serialize=False, primary_key=True)),
2929
('client_id', models.CharField(default=oauth2_provider.generators.generate_client_id, unique=True, max_length=100, db_index=True)),
3030
('redirect_uris', models.TextField(help_text='Allowed URIs list, space separated', blank=True)),
3131
('client_type', models.CharField(max_length=32, choices=[('confidential', 'Confidential'), ('public', 'Public')])),
@@ -45,7 +45,7 @@ class Migration(migrations.Migration):
4545
migrations.CreateModel(
4646
name='AccessToken',
4747
fields=[
48-
('id', models.BigAutoField(serialize=False, primary_key=True)),
48+
('id', models.AutoField(serialize=False, primary_key=True)),
4949
('token', models.CharField(unique=True, max_length=255)),
5050
('expires', models.DateTimeField()),
5151
('scope', models.TextField(blank=True)),
@@ -64,7 +64,7 @@ class Migration(migrations.Migration):
6464
migrations.CreateModel(
6565
name='Grant',
6666
fields=[
67-
('id', models.BigAutoField(serialize=False, primary_key=True)),
67+
('id', models.AutoField(serialize=False, primary_key=True)),
6868
('code', models.CharField(unique=True, max_length=255)),
6969
('expires', models.DateTimeField()),
7070
('redirect_uri', models.CharField(max_length=255)),
@@ -82,7 +82,7 @@ class Migration(migrations.Migration):
8282
migrations.CreateModel(
8383
name='RefreshToken',
8484
fields=[
85-
('id', models.BigAutoField(serialize=False, primary_key=True)),
85+
('id', models.AutoField(serialize=False, primary_key=True)),
8686
('token', models.CharField(max_length=255)),
8787
('access_token', models.OneToOneField(blank=True, null=True, related_name="refresh_token", to=oauth2_settings.ACCESS_TOKEN_MODEL, on_delete=models.SET_NULL)),
8888
('application', models.ForeignKey(to=oauth2_settings.APPLICATION_MODEL, on_delete=models.CASCADE)),

oauth2_provider/migrations/0004_auto_20200902_2022.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Migration(migrations.Migration):
2828
migrations.CreateModel(
2929
name='IDToken',
3030
fields=[
31-
('id', models.BigAutoField(primary_key=True, serialize=False)),
31+
('id', models.AutoField(primary_key=True, serialize=False)),
3232
("jti", models.UUIDField(unique=True, default=uuid.uuid4, editable=False, verbose_name="JWT Token ID")),
3333
('expires', models.DateTimeField()),
3434
('scope', models.TextField(blank=True)),

oauth2_provider/models.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
import time
33
import uuid
44
from datetime import timedelta
5-
from urllib.parse import parse_qsl, urlparse
5+
import sys
66

77
from django.apps import apps
88
from django.conf import settings
99
from django.core.exceptions import ImproperlyConfigured
1010
from django.db import models, transaction
11-
from django.urls import reverse
11+
from django.core.urlresolvers import reverse
1212
from django.utils import timezone
1313
from django.utils.translation import gettext_lazy as _
1414
from jwcrypto import jwk
@@ -20,6 +20,12 @@
2020
from .settings import oauth2_settings
2121
from .validators import RedirectURIValidator, WildcardSet
2222

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+
2329

2430
logger = logging.getLogger(__name__)
2531

@@ -74,7 +80,7 @@ class AbstractApplication(models.Model):
7480
(HS256_ALGORITHM, _("HMAC with SHA-2 256")),
7581
)
7682

77-
id = models.BigAutoField(primary_key=True)
83+
id = models.AutoField(primary_key=True)
7884
client_id = models.CharField(max_length=100, unique=True, default=generate_client_id, db_index=True)
7985
user = models.ForeignKey(
8086
settings.AUTH_USER_MODEL,
@@ -243,7 +249,7 @@ class AbstractGrant(models.Model):
243249
CODE_CHALLENGE_S256 = "S256"
244250
CODE_CHALLENGE_METHODS = ((CODE_CHALLENGE_PLAIN, "plain"), (CODE_CHALLENGE_S256, "S256"))
245251

246-
id = models.BigAutoField(primary_key=True)
252+
id = models.AutoField(primary_key=True)
247253
user = models.ForeignKey(
248254
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s"
249255
)
@@ -303,7 +309,7 @@ class AbstractAccessToken(models.Model):
303309
* :attr:`scope` Allowed scopes
304310
"""
305311

306-
id = models.BigAutoField(primary_key=True)
312+
id = models.AutoField(primary_key=True)
307313
user = models.ForeignKey(
308314
settings.AUTH_USER_MODEL,
309315
on_delete=models.CASCADE,
@@ -416,7 +422,7 @@ class AbstractRefreshToken(models.Model):
416422
* :attr:`revoked` Timestamp of when this refresh token was revoked
417423
"""
418424

419-
id = models.BigAutoField(primary_key=True)
425+
id = models.AutoField(primary_key=True)
420426
user = models.ForeignKey(
421427
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="%(app_label)s_%(class)s"
422428
)
@@ -486,7 +492,7 @@ class AbstractIDToken(models.Model):
486492
* :attr:`updated` Date and time of token update, in DateTime format
487493
"""
488494

489-
id = models.BigAutoField(primary_key=True)
495+
id = models.AutoField(primary_key=True)
490496
user = models.ForeignKey(
491497
settings.AUTH_USER_MODEL,
492498
on_delete=models.CASCADE,
@@ -631,7 +637,8 @@ def batch_delete(queryset, query):
631637
flat_queryset = queryset.values_list("id", flat=True)[:CLEAR_EXPIRED_TOKENS_BATCH_SIZE]
632638
batch_length = flat_queryset.count()
633639
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()))
635642
queryset = queryset.model.objects.filter(query)
636643
time.sleep(CLEAR_EXPIRED_TOKENS_BATCH_INTERVAL)
637644
current_no = queryset.count()

oauth2_provider/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from django.core.exceptions import ImproperlyConfigured
2121
from django.http import HttpRequest
2222
from django.test.signals import setting_changed
23-
from django.urls import reverse
23+
from django.core.urlresolvers import reverse
2424
from django.utils.module_loading import import_string
2525
from oauthlib.common import Request
2626

oauth2_provider/views/oidc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from urllib.parse import urlparse
33

44
from django.http import HttpResponse, JsonResponse
5-
from django.urls import reverse
5+
from django.core.urlresolvers import reverse
66
from django.utils.decorators import method_decorator
77
from django.views.decorators.csrf import csrf_exempt
88
from django.views.generic import View

setup.cfg

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,15 @@ classifiers =
1212
Development Status :: 5 - Production/Stable
1313
Environment :: Web Environment
1414
Framework :: Django
15+
Framework :: Django :: 1.8
1516
Framework :: Django :: 2.2
1617
Framework :: Django :: 3.2
1718
Framework :: Django :: 4.0
1819
Intended Audience :: Developers
1920
License :: OSI Approved :: BSD License
2021
Operating System :: OS Independent
22+
Programming Language :: Python :: 2
23+
Programming Language :: Python :: 2.7
2124
Programming Language :: Python :: 3
2225
Programming Language :: Python :: 3.7
2326
Programming Language :: Python :: 3.8
@@ -32,10 +35,10 @@ zip_safe = False
3235
# jwcrypto has a direct dependency on six, but does not list it yet in a release
3336
# Previously, cryptography also depended on six, so this was unnoticed
3437
install_requires =
35-
django >= 2.2, != 4.0.0
38+
django >= 1.8, != 4.0.0
3639
requests >= 2.13.0
37-
oauthlib >= 3.1.0
38-
jwcrypto >= 0.8.0
40+
oauthlib >= 1.1.1
41+
jwcrypto == 0.9.1
3942

4043
[options.packages.find]
4144
exclude = tests

tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import pytest
55
from django.conf import settings as test_settings
66
from django.contrib.auth import get_user_model
7-
from django.urls import reverse
7+
from django.core.urlresolvers import reverse
88
from jwcrypto import jwk
99

1010
from oauth2_provider.models import get_application_model

tests/test_application_views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pytest
22
from django.contrib.auth import get_user_model
33
from django.test import TestCase
4-
from django.urls import reverse
4+
from django.core.urlresolvers import reverse
55

66
from oauth2_provider.models import get_application_model
77
from oauth2_provider.views.application import ApplicationRegistration

tests/test_authorization_code.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import pytest
99
from django.contrib.auth import get_user_model
1010
from django.test import RequestFactory, TestCase
11-
from django.urls import reverse
11+
from django.core.urlresolvers import reverse
1212
from django.utils import timezone
1313
from django.utils.crypto import get_random_string
1414
from jwcrypto import jwt

0 commit comments

Comments
 (0)