| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import django.db.models.deletion
- from django.db import migrations, models
- def copy_site_assignments(apps, schema_editor):
- """
- Copy site ForeignKey values to the scope GFK.
- """
- ContentType = apps.get_model('contenttypes', 'ContentType')
- Cluster = apps.get_model('virtualization', 'Cluster')
- Site = apps.get_model('dcim', 'Site')
- Cluster.objects.filter(site__isnull=False).update(
- scope_type=ContentType.objects.get_for_model(Site),
- scope_id=models.F('site_id')
- )
- class Migration(migrations.Migration):
- dependencies = [
- ('contenttypes', '0002_remove_content_type_name'),
- ('virtualization', '0043_qinq_svlan'),
- ]
- operations = [
- migrations.AddField(
- model_name='cluster',
- name='scope_id',
- field=models.PositiveBigIntegerField(blank=True, null=True),
- ),
- migrations.AddField(
- model_name='cluster',
- name='scope_type',
- field=models.ForeignKey(
- blank=True,
- limit_choices_to=models.Q(('model__in', ('region', 'sitegroup', 'site', 'location'))),
- null=True,
- on_delete=django.db.models.deletion.PROTECT,
- related_name='+',
- to='contenttypes.contenttype',
- ),
- ),
- # Copy over existing site assignments
- migrations.RunPython(
- code=copy_site_assignments,
- reverse_code=migrations.RunPython.noop
- ),
- ]
|