|
|
@ -57,19 +57,14 @@ unique_constraints = [] |
|
|
|
one_to_one_constraints = [] |
|
|
|
primeira_vez = [] |
|
|
|
|
|
|
|
name_sets = [set(m.__name__ for m in ac.get_models()) for ac in appconfs] |
|
|
|
|
|
|
|
# apps do not overlap |
|
|
|
name_sets = [set(m.__name__ for m in ac.get_models()) for ac in appconfs] |
|
|
|
for s1 in name_sets: |
|
|
|
for s2 in name_sets: |
|
|
|
if s1 is not s2: |
|
|
|
assert not s1.intersection(s2) |
|
|
|
|
|
|
|
# apps include all legacy models |
|
|
|
legacy_app = apps.get_app_config('legacy') |
|
|
|
legacy_model_names = set(m.__name__ for m in legacy_app.get_models()) |
|
|
|
|
|
|
|
model_dict = {m.__name__: m for ac in appconfs for m in ac.get_models()} |
|
|
|
|
|
|
|
|
|
|
|
# RENAMES ################################################################### |
|
|
@ -595,34 +590,6 @@ def fill_dados_basicos(): |
|
|
|
appconf.save() |
|
|
|
|
|
|
|
|
|
|
|
# Uma anomalia no sapl 2.5 causa a duplicação de registros de votação. |
|
|
|
# Essa duplicação deve ser eliminada para que não haja erro no sapl 3.1 |
|
|
|
def excluir_registrovotacao_duplicados(): |
|
|
|
duplicatas_ids = RegistroVotacao.objects.values( |
|
|
|
'materia', 'ordem', 'expediente').annotate( |
|
|
|
Count('id')).order_by().filter(id__count__gt=1) |
|
|
|
duplicatas_queryset = RegistroVotacao.objects.filter( |
|
|
|
materia__in=[item['materia'] for item in duplicatas_ids]) |
|
|
|
|
|
|
|
for dup in duplicatas_queryset: |
|
|
|
lista_dups = duplicatas_queryset.filter( |
|
|
|
materia=dup.materia, expediente=dup.expediente, ordem=dup.ordem) |
|
|
|
primeiro_registro = lista_dups[0] |
|
|
|
lista_dups = lista_dups.exclude(pk=primeiro_registro.pk) |
|
|
|
for objeto in lista_dups: |
|
|
|
if (objeto.pk > primeiro_registro.pk): |
|
|
|
try: |
|
|
|
objeto.delete() |
|
|
|
except: |
|
|
|
assert 0 |
|
|
|
else: |
|
|
|
try: |
|
|
|
primeiro_registro.delete() |
|
|
|
primeiro_registro = objeto |
|
|
|
except: |
|
|
|
assert 0 |
|
|
|
|
|
|
|
|
|
|
|
def get_last_pk(model): |
|
|
|
last_value = model.objects.all().aggregate(Max('pk')) |
|
|
|
return last_value['pk__max'] or 0 |
|
|
@ -729,9 +696,6 @@ class DataMigrator: |
|
|
|
info('Começando migração: %s...' % obj) |
|
|
|
self._do_migrate(obj) |
|
|
|
|
|
|
|
# info('Excluindo possíveis duplicações em RegistroVotacao...') |
|
|
|
# excluir_registrovotacao_duplicados() |
|
|
|
|
|
|
|
# recria tipos de autor padrão que não foram criados pela migração |
|
|
|
cria_models_tipo_autor() |
|
|
|
|
|
|
|