mirror of https://github.com/interlegis/sapl.git
Browse Source
Organiza models schemes Altera modo de pegar pk do autor primário Altera __str__ de Autor Corrige checagem de lista Reverte alteração em Meta Reorganiza ordem de transferência e exclusão Altera modo de armazenamento de lista para dicionário Adiciona validação para existência de parlamentar Fix str erro Concerta dicionário pks_objs Co-authored-by: Edward Ribeiro <eribeiro@interlegis.leg.br> Co-authored-by: Victor Fabre <victorfabre@me.com>pull/2626/head
2 changed files with 123 additions and 0 deletions
@ -0,0 +1,108 @@ |
|||
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() |
|||
Loading…
Reference in new issue