Skip to content

Commit 79daf31

Browse files
author
Kryštof Pilnáček
authored
Fix: authtoken.TokenProxy cannot be proxy when not installed (encode#7571)
closes encode#7442
1 parent 931b34e commit 79daf31

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

rest_framework/authtoken/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,6 @@ def pk(self):
4949
return self.user.pk
5050

5151
class Meta:
52-
proxy = True
52+
proxy = 'rest_framework.authtoken' in settings.INSTALLED_APPS
53+
abstract = 'rest_framework.authtoken' not in settings.INSTALLED_APPS
5354
verbose_name = "token"

tests/test_authtoken.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
import importlib
12
from io import StringIO
23

34
import pytest
45
from django.contrib.admin import site
56
from django.contrib.auth.models import User
67
from django.core.management import CommandError, call_command
7-
from django.test import TestCase
8+
from django.test import TestCase, modify_settings
89

910
from rest_framework.authtoken.admin import TokenAdmin
1011
from rest_framework.authtoken.management.commands.drf_create_token import \
@@ -21,6 +22,14 @@ def setUp(self):
2122
self.user = User.objects.create_user(username='test_user')
2223
self.token = Token.objects.create(key='test token', user=self.user)
2324

25+
def test_authtoken_can_be_imported_when_not_included_in_installed_apps(self):
26+
import rest_framework.authtoken.models
27+
with modify_settings(INSTALLED_APPS={'remove': 'rest_framework.authtoken'}):
28+
importlib.reload(rest_framework.authtoken.models)
29+
# Set the proxy and abstract properties back to the version,
30+
# where authtoken is among INSTALLED_APPS.
31+
importlib.reload(rest_framework.authtoken.models)
32+
2433
def test_model_admin_displayed_fields(self):
2534
mock_request = object()
2635
token_admin = TokenAdmin(self.token, self.site)

0 commit comments

Comments
 (0)