Skip to content

Commit 3ef030c

Browse files
committed
remove "rest_framework.authtoken" and adapt the data migration
Signed-off-by: tdruez <tdruez@aboutcode.org>
1 parent b5e11dd commit 3ef030c

2 files changed

Lines changed: 26 additions & 10 deletions

File tree

dejacode/settings.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,6 @@ def gettext_noop(s):
320320
"grappelli",
321321
"django.contrib.admin",
322322
"rest_framework",
323-
"rest_framework.authtoken",
324323
"drf_yasg",
325324
"django_rq",
326325
"crispy_forms",

dje/migrations/0014_apitoken_data.py

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,32 @@
66

77
def migrate_api_tokens(apps, schema_editor):
88
"""Migrate existing plain-text DRF tokens to the new hashed APIToken model."""
9-
OldToken = apps.get_model("authtoken", "Token")
109
APIToken = apps.get_model("dje", "APIToken")
11-
1210
PREFIX_LENGTH = 8
1311

14-
for old_token in OldToken.objects.select_related("user").all():
15-
plain_key = old_token.key
16-
APIToken.objects.create(
17-
user=old_token.user,
18-
prefix=plain_key[:PREFIX_LENGTH],
19-
key_hash=make_password(plain_key),
20-
created=old_token.created,
12+
with schema_editor.connection.cursor() as cursor:
13+
try:
14+
cursor.execute("SELECT user_id, key, created FROM authtoken_token")
15+
except Exception:
16+
return
17+
rows = cursor.fetchall()
18+
19+
if not rows:
20+
return
21+
22+
tokens_to_create = [
23+
APIToken(
24+
user_id=user_id,
25+
prefix=key[:PREFIX_LENGTH],
26+
key_hash=make_password(key),
27+
created=created,
2128
)
29+
for user_id, key, created in rows
30+
]
31+
32+
migrated_tokens = APIToken.objects.bulk_create(tokens_to_create, ignore_conflicts=True)
33+
if migrated_tokens:
34+
print(f" -> {len(migrated_tokens)} token migrated.")
2235

2336

2437
def reverse_migrate_api_tokens(apps, schema_editor):
@@ -35,4 +48,8 @@ class Migration(migrations.Migration):
3548

3649
operations = [
3750
migrations.RunPython(migrate_api_tokens, reverse_migrate_api_tokens),
51+
migrations.RunSQL(
52+
sql="DROP TABLE IF EXISTS authtoken_token",
53+
reverse_sql=migrations.RunSQL.noop,
54+
),
3855
]

0 commit comments

Comments
 (0)