diff --git a/legacy/legacy_migration.py b/legacy/legacy_migration.py new file mode 100644 index 000000000..e38c04e5c --- /dev/null +++ b/legacy/legacy_migration.py @@ -0,0 +1,36 @@ +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()