Sistema de Apoio ao Processo Legislativo
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.
 
 
 
 
 

108 lines
3.4 KiB

import re
from sapl.base.models import Autor
from sapl.comissoes.models import Participacao
from sapl.materia.models import Relatoria, UnidadeTramitacao
from sapl.parlamentares.models import Parlamentar, ComposicaoMesa, Dependente, Filiacao, Mandato
from sapl.sessao.models import IntegranteMesa, JustificativaAusencia, Orador, OradorExpediente, PresencaOrdemDia, \
RetiradaPauta, SessaoPlenariaPresenca, VotoParlamentar
def get_multiple(top_models):
pks_objs = {}
for model in top_models:
model_name = re.findall(r'\w+', str(model))[-1]
pks_objs.update({model_name: []})
objs = model.objects.all()
for obj in objs:
if model_name == 'Autor':
kwargs = {'nome': obj.nome}
elif model_name == 'Parlamentar':
kwargs = {'nome_parlamentar': obj.nome_parlamentar}
else:
print('Model não reconhecida.')
return
pesquisa_obj = model.objects.filter(**kwargs)
if pesquisa_obj.count() > 1:
multiplos_objs = [p.pk for p in pesquisa_obj]
multiplos_objs.sort()
if multiplos_objs not in pks_objs.get(model_name):
pks_objs.get(model_name).append(multiplos_objs)
return pks_objs
def transfer_author(pks_list):
for pks in pks_list:
for pk in pks[1:]:
autor_clonado = Autor.objects.get(pk=pk)
for autoria in autor_clonado.autoria_set.all():
autoria.autor_id = pks[0]
autoria.save()
for proposicao in autor_clonado.proposicao_set.all():
proposicao.autor_id = pks[0]
proposicao.save()
for autorianorma in autor_clonado.autorianorma_set.all():
autorianorma.autor_id = pks[0]
autorianorma.save()
for documentoadministrativo in autor_clonado.documentoadministrativo_set.all():
documentoadministrativo.autor_id = pks[0]
documentoadministrativo.save()
for protocolo in autor_clonado.protocolo_set.all():
protocolo.autor_id = pks[0]
protocolo.save()
def transfer_congressman(models, pks_list):
for pks in pks_list:
for pk in pks[1:]:
for model in models:
for obj in model.objects.filter(parlamentar_id=pk):
obj.parlamentar_id = pks[0]
obj.save()
def purge(top_models, pks_dict):
for model in top_models:
model_name = re.findall(r'\w+', str(model))[-1]
lista = pks_dict.get(model_name)
if lista:
for pks in lista:
for pk in pks[1:]:
for obj in model.objects.filter(pk=pk):
obj.delete()
def main():
top_models = [Autor, Parlamentar]
models = [ComposicaoMesa, Dependente, Filiacao, IntegranteMesa, JustificativaAusencia, Mandato, Orador,
OradorExpediente, Participacao, PresencaOrdemDia, Relatoria, RetiradaPauta, SessaoPlenariaPresenca,
UnidadeTramitacao, VotoParlamentar]
pks_dict = get_multiple(top_models)
author_list = pks_dict.get('Autor')
if author_list:
transfer_author(author_list)
congressman_list = pks_dict.get('Parlamentar')
if congressman_list:
transfer_congressman(models, congressman_list)
purge(top_models, pks_dict)
if __name__ == '__main__':
main()