Browse Source

Merge branch '1527-migra-autores-partidos'

Fix #1527
pull/1554/head
Marcio Mazza 7 years ago
parent
commit
05035d1c6d
  1. 36
      sapl/legacy/migration.py

36
sapl/legacy/migration.py

@ -4,8 +4,9 @@ from functools import lru_cache
from subprocess import PIPE, call from subprocess import PIPE, call
import pkg_resources import pkg_resources
import reversion
import yaml import yaml
import reversion
from django.apps import apps from django.apps import apps
from django.apps.config import AppConfig from django.apps.config import AppConfig
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
@ -15,7 +16,6 @@ from django.core.exceptions import ObjectDoesNotExist
from django.db import connections, transaction from django.db import connections, transaction
from django.db.models import Count, Max from django.db.models import Count, Max
from django.db.models.base import ModelBase from django.db.models.base import ModelBase
from sapl.base.models import AppConfig as AppConf from sapl.base.models import AppConfig as AppConf
from sapl.base.models import (Autor, CasaLegislativa, ProblemaMigracao, from sapl.base.models import (Autor, CasaLegislativa, ProblemaMigracao,
TipoAutor) TipoAutor)
@ -28,7 +28,7 @@ from sapl.materia.models import (AcompanhamentoMateria, Proposicao,
from sapl.norma.models import (AssuntoNorma, NormaJuridica, NormaRelacionada, from sapl.norma.models import (AssuntoNorma, NormaJuridica, NormaRelacionada,
TipoVinculoNormaJuridica) TipoVinculoNormaJuridica)
from sapl.parlamentares.models import (Legislatura, Mandato, Parlamentar, from sapl.parlamentares.models import (Legislatura, Mandato, Parlamentar,
TipoAfastamento) Partido, TipoAfastamento)
from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo, from sapl.protocoloadm.models import (DocumentoAdministrativo, Protocolo,
StatusTramitacaoAdministrativo) StatusTramitacaoAdministrativo)
from sapl.sessao.models import ExpedienteMateria, OrdemDia, RegistroVotacao from sapl.sessao.models import ExpedienteMateria, OrdemDia, RegistroVotacao
@ -687,24 +687,28 @@ def adjust_normajuridica_depois_salvar(new, old):
pass # ignora assuntos inexistentes pass # ignora assuntos inexistentes
def adjust_autor(new, old): def vincula_autor(new, old, model_relacionado, campo_relacionado, campo_nome):
if old.cod_parlamentar: pk_rel = getattr(old, campo_relacionado)
if pk_rel:
try: try:
new.autor_related = Parlamentar.objects.get(pk=old.cod_parlamentar) new.autor_related = model_relacionado.objects.get(pk=pk_rel)
except ObjectDoesNotExist: except ObjectDoesNotExist:
# ignoramos o autor órfão # ignoramos o autor órfão
raise ForeignKeyFaltando('Parlamentar inexiste para autor') raise ForeignKeyFaltando('{} inexiste para autor'.format(
model_relacionado._meta.verbose_name))
else: else:
new.nome = new.autor_related.nome_parlamentar new.nome = getattr(new.autor_related, campo_nome)
return True
elif old.cod_comissao:
try: def adjust_autor(new, old):
new.autor_related = Comissao.objects.get(pk=old.cod_comissao) for args in [
except ObjectDoesNotExist: # essa ordem é importante
# ignoramos o autor órfão (Parlamentar, 'cod_parlamentar', 'nome_parlamentar'),
raise ForeignKeyFaltando('Comissao inexiste para autor') (Comissao, 'cod_comissao', 'nome'),
else: (Partido, 'cod_partido', 'nome')]:
new.nome = new.autor_related.nome if vincula_autor(new, old, *args):
break
if old.col_username: if old.col_username:
user_model = get_user_model() user_model = get_user_model()

Loading…
Cancel
Save