0010_hash_tokens_and_switch_to_uuid.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. # Generated by Django 2.2.7 on 2019-11-11 20:14
  2. from django.contrib.auth.hashers import make_password
  3. from django.db import migrations, models, transaction
  4. import uuid
  5. def migrate_data(apps, schema_editor):
  6. Token = apps.get_model('desecapi', 'Token')
  7. tokens = Token.objects.exclude(key__contains='$').all()
  8. with transaction.atomic():
  9. for token in tokens:
  10. hashed = make_password(token.key, salt='static', hasher='pbkdf2_sha256_iter1')
  11. Token.objects.filter(key=token.key).update(id=uuid.uuid4().hex, key=hashed)
  12. class Migration(migrations.Migration):
  13. dependencies = [
  14. ('desecapi', '0009_domain_minimum_ttl_default'),
  15. ]
  16. operations = [
  17. migrations.AlterModelOptions(
  18. name='token',
  19. options={'verbose_name': 'Token', 'verbose_name_plural': 'Tokens'},
  20. ),
  21. migrations.AlterUniqueTogether(
  22. name='token',
  23. unique_together=set(),
  24. ),
  25. migrations.RemoveField(
  26. model_name='token',
  27. name='user_specific_id',
  28. ),
  29. migrations.AlterField(
  30. model_name='token',
  31. name='key',
  32. field=models.CharField(db_index=True, max_length=128, unique=True, verbose_name='Key'),
  33. ),
  34. migrations.AlterField(
  35. model_name='token',
  36. name='id',
  37. field=models.CharField(default=uuid.uuid4, max_length=32, primary_key=True, serialize=False),
  38. ),
  39. migrations.RunPython(migrate_data, reverse_code=migrations.RunPython.noop),
  40. migrations.AlterField(
  41. model_name='token',
  42. name='id',
  43. field=models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False),
  44. ),
  45. ]