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