You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

43 lines
1.3 KiB

# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-08-08 17:31
from __future__ import unicode_literals
from json import load
import os
from django.core import serializers
from django.db import migrations, models
TMP_FILE = '/tmp/djing_ip_field_devapp_migrate.json'
def device_backup_info(apps, _):
Device = apps.get_model('devapp', 'Device')
obs = Device.objects.exclude(ip_address=None).only('ip_address')
with open(TMP_FILE, 'w') as f:
serializers.serialize('json', obs, stream=f, fields=('ip_address',))
def device_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(ip_address=device['fields']['ip_address'])
if os.path.isfile(TMP_FILE):
os.remove(TMP_FILE)
class Migration(migrations.Migration):
dependencies = [
('devapp', '0004_device_extra_data'),
]
operations = [
migrations.RunPython(device_backup_info),
migrations.AlterField(
model_name='device',
name='ip_address',
field=models.GenericIPAddressField(blank=True, null=True, verbose_name='Ip address'),
),
migrations.RunPython(device_restore_info_to_new_scheme)
]