mirror of https://github.com/interlegis/sapl.git
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
37 lines
1.1 KiB
10 years ago
|
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()
|