# -*- coding: utf-8 -*- # Generated by Django 1.11 on 2018-05-29 13:11 from __future__ import unicode_literals import os from json import load from django.db import migrations, models from django.core import serializers TMP_FILE = '/tmp/djing_snmp_info_backup.json' def snmp_backup_info(apps, _): Device = apps.get_model('devapp', 'Device') obs = Device.objects.only('snmp_item_num') with open(TMP_FILE, 'w') as f: serializers.serialize('json', obs, stream=f, fields=('snmp_item_num',)) def snmp_restore_info_to_new_scheme(apps, _): Device = apps.get_model('devapp', 'Device') with open(TMP_FILE, 'r') as f: for device in load(f): Device.objects.filter(pk=device['pk']).update(snmp_extra=device['fields']['snmp_item_num']) if os.path.isfile(TMP_FILE): os.remove(TMP_FILE) class Migration(migrations.Migration): dependencies = [ ('devapp', '0002_auto_20180409_1318'), ] operations = [ migrations.RunPython(snmp_backup_info), migrations.AlterModelOptions( name='device', options={'ordering': ('id',), 'verbose_name': 'Device', 'verbose_name_plural': 'Devices'}, ), migrations.AlterModelOptions( name='port', options={'ordering': ('num',), 'permissions': (('can_toggle_ports', 'Can toggle ports'),), 'verbose_name': 'Port', 'verbose_name_plural': 'Ports'}, ), migrations.RemoveField( model_name='device', name='snmp_item_num', ), migrations.AddField( model_name='device', name='snmp_extra', field=models.CharField(blank=True, max_length=256, null=True, verbose_name='SNMP extra info'), ), migrations.AlterField( model_name='device', name='devtype', field=models.CharField(choices=[('Dl', 'DLink switch'), ('Pn', 'PON OLT'), ('On', 'PON ONU'), ('Ex', 'Eltex switch'), ('Zt', 'OLT ZTE C320'), ('Zo', 'ZTE PON ONU')], default='Dl', max_length=2, verbose_name='Device type'), ), migrations.RunPython(snmp_restore_info_to_new_scheme) ]