0002_lowercase_domains_and_subnames.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import desecapi.models
  2. import django.core.validators
  3. from django.db import migrations, models
  4. def lowercase_names(apps, schema_editor):
  5. # Domains
  6. Domain = apps.get_model('desecapi', 'Domain')
  7. domains = list(Domain.objects.all())
  8. for domain in domains:
  9. domain.name = domain.name.lower()
  10. Domain.objects.bulk_update(domains, ['name'], batch_size=500)
  11. # RRsets
  12. RRset = apps.get_model('desecapi', 'RRset')
  13. rrsets = list(RRset.objects.all())
  14. for rrset in rrsets:
  15. rrset.subname = rrset.subname.lower()
  16. RRset.objects.bulk_update(rrsets, ['subname'], batch_size=500)
  17. class Migration(migrations.Migration):
  18. dependencies = [
  19. ('desecapi', '0001_initial_squashed'),
  20. ]
  21. operations = [
  22. migrations.AlterField(
  23. model_name='domain',
  24. name='name',
  25. field=models.CharField(max_length=191, unique=True, validators=[desecapi.models.validate_lower, django.core.validators.RegexValidator(code='invalid_domain_name', message='Domain name malformed.', regex='^[a-z0-9_.-]+$')]),
  26. ),
  27. migrations.AlterField(
  28. model_name='domain',
  29. name='published',
  30. field=models.DateTimeField(blank=True, null=True),
  31. ),
  32. migrations.AlterField(
  33. model_name='rrset',
  34. name='subname',
  35. field=models.CharField(blank=True, max_length=178, validators=[desecapi.models.validate_lower, django.core.validators.RegexValidator(code='invalid_subname', message='Subname malformed.', regex='^[*]?[a-z0-9_.-]*$')]),
  36. ),
  37. migrations.AlterField(
  38. model_name='rrset',
  39. name='type',
  40. field=models.CharField(max_length=10, validators=[desecapi.models.validate_upper, django.core.validators.RegexValidator(code='invalid_type', message='Type malformed.', regex='^[A-Z][A-Z0-9]*$')]),
  41. ),
  42. migrations.RunPython(lowercase_names, reverse_code=migrations.RunPython.noop),
  43. ]