| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import django.contrib.postgres.fields
- import django.contrib.postgres.fields.ranges
- from django.db import migrations, models
- from django.db.backends.postgresql.psycopg_any import NumericRange
- import ipam.models.vlans
- def set_vid_ranges(apps, schema_editor):
- """
- Convert the min_vid & max_vid fields to a range in the new vid_ranges ArrayField.
- """
- VLANGroup = apps.get_model('ipam', 'VLANGroup')
- for group in VLANGroup.objects.all():
- group.vid_ranges = [
- NumericRange(group.min_vid, group.max_vid, bounds='[]')
- ]
- group._total_vlan_ids = group.max_vid - group.min_vid + 1
- group.save()
- class Migration(migrations.Migration):
- dependencies = [
- ('ipam', '0069_gfk_indexes'),
- ]
- operations = [
- migrations.AddField(
- model_name='vlangroup',
- name='vid_ranges',
- field=django.contrib.postgres.fields.ArrayField(
- base_field=django.contrib.postgres.fields.ranges.IntegerRangeField(),
- default=ipam.models.vlans.default_vid_ranges,
- size=None
- ),
- ),
- migrations.AddField(
- model_name='vlangroup',
- name='_total_vlan_ids',
- field=models.PositiveBigIntegerField(default=4094),
- ),
- migrations.RunPython(
- code=set_vid_ranges,
- reverse_code=migrations.RunPython.noop
- ),
- migrations.RemoveField(
- model_name='vlangroup',
- name='max_vid',
- ),
- migrations.RemoveField(
- model_name='vlangroup',
- name='min_vid',
- ),
- ]
|