Sistema de Apoio ao Processo Legislativo
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.

37 lines
1.1 KiB

from django.db import connection
import legacy
from parlamentares.models import NivelInstrucao
mappings = (
(NivelInstrucao,
'cod_nivel_instrucao',
[('des_nivel_instrucao', 'nivel_instrucao')]),
)
def run_legacy_migration():
for model, pk, field_pairs in mappings:
# clear all model entries
model.objects.all().delete()
# resets id sequence
sql_reset_seq = 'ALTER SEQUENCE %s_id_seq RESTART WITH 1;' % model._meta.db_table
cursor = connection.cursor()
cursor.execute(sql_reset_seq)
legacy_model = getattr(legacy.models, model.__name__)
for old in legacy_model.objects.all().order_by(pk):
old_id = getattr(old, pk)
new = model()
while not new.id:
for old_field, new_field in field_pairs:
setattr(new, new_field, getattr(old, old_field))
new.save()
assert new.id <= old_id, 'New id exceeds old one. Be sure your new table was just created!'
if new.id < old_id:
new.delete()
new = model()