1234567891011121314151617181920212223242526272829303132333435363738 |
- # -*- coding: utf-8 -*-
- # Generated by Django 1.11.15 on 2018-09-17 15:00
- from __future__ import unicode_literals
- from django.db import migrations, models
- from django.db.models import Max
- def forward_convert(apps, schema_editor):
- # This probably could be done in a single query using
- # https://stackoverflow.com/questions/48119049/django-using-an-annotated-aggregate-in-queryset-update/48212331#48212331
- Domain = apps.get_model('desecapi', 'Domain')
- RRset = apps.get_model('desecapi', 'RRset')
- for domain in Domain.objects.all().iterator():
- if domain.owner.locked:
- continue
- rrsets = RRset.objects.filter(domain=domain)
- created = rrsets.aggregate(Max('created'))['created__max']
- published = rrsets.aggregate(Max('updated'))['updated__max'] or created
- # .update() operates on a queryset (not on a Model instance)
- Domain.objects.filter(pk=domain.pk).update(published=max(created, published))
- class Migration(migrations.Migration):
- dependencies = [
- ('desecapi', '0021_tokens'),
- ]
- operations = [
- migrations.AddField(
- model_name='domain',
- name='published',
- field=models.DateTimeField(null=True),
- ),
- migrations.RunPython(forward_convert, reverse_code=migrations.RunPython.noop),
- ]
|