From a1090a308c2a02640c9412a091d7310cfdb11290 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Cantu=C3=A1ria?= Date: Wed, 3 Apr 2019 14:14:53 -0300 Subject: [PATCH] =?UTF-8?q?Corrige=20transfer=C3=AAncia=20e=20exclus=C3=A3?= =?UTF-8?q?o=20de=20m=C3=BAltiplos=20autores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/remove_multiplos_parlamentares.py | 131 ++++++++++++---------- 1 file changed, 73 insertions(+), 58 deletions(-) diff --git a/scripts/remove_multiplos_parlamentares.py b/scripts/remove_multiplos_parlamentares.py index 7daee275b..20fed7650 100644 --- a/scripts/remove_multiplos_parlamentares.py +++ b/scripts/remove_multiplos_parlamentares.py @@ -8,100 +8,115 @@ from sapl.sessao.models import IntegranteMesa, JustificativaAusencia, Orador, Or RetiradaPauta, SessaoPlenariaPresenca, VotoParlamentar -def get_multiple(top_models): - pks_objs = {} +def get_multiple(): + models = [Autor, Parlamentar] + main_models = {} - for model in top_models: - model_name = re.findall(r'\w+', str(model))[-1] - pks_objs.update({model_name: []}) + for model in models: + model_str = re.findall(r'\w+', str(model))[-1] + main_models[model_str] = { + 'model': model, + 'kwargs': {}, + 'pks': [] + } - objs = model.objects.all() + for model_name, model_dict in main_models.items(): + objs = model_dict['model'].objects.all() for obj in objs: - if model_name == 'Autor': - kwargs = {'nome': obj.nome} + model_dict['kwargs']['nome'] = obj.nome elif model_name == 'Parlamentar': - kwargs = {'nome_parlamentar': obj.nome_parlamentar} - else: - print('Model não reconhecida.') - return + model_dict['kwargs']['nome_parlamentar'] = obj.nome_parlamentar - pesquisa_obj = model.objects.filter(**kwargs) + pesquisa_obj = model_dict['model'].objects.filter(**model_dict['kwargs']) if pesquisa_obj.count() > 1: - multiplos_objs = [p.pk for p in pesquisa_obj] + multiplos_objs = [o.pk for o in pesquisa_obj] multiplos_objs.sort() - if multiplos_objs not in pks_objs.get(model_name): - pks_objs.get(model_name).append(multiplos_objs) + if multiplos_objs not in main_models[model_name]['pks']: + main_models[model_name]['pks'].append(multiplos_objs) - return pks_objs + return main_models -def transfer_author(pks_list): - for pks in pks_list: - for pk in pks[1:]: +def transfer_purge_author(author_lists): + for author_list in author_lists: + for pk in author_list[1:]: autor_clonado = Autor.objects.get(pk=pk) for autoria in autor_clonado.autoria_set.all(): - autoria.autor_id = pks[0] + autoria.autor_id = author_list[0] autoria.save() for proposicao in autor_clonado.proposicao_set.all(): - proposicao.autor_id = pks[0] + proposicao.autor_id = author_list[0] proposicao.save() for autorianorma in autor_clonado.autorianorma_set.all(): - autorianorma.autor_id = pks[0] + autorianorma.autor_id = author_list[0] autorianorma.save() for documentoadministrativo in autor_clonado.documentoadministrativo_set.all(): - documentoadministrativo.autor_id = pks[0] + documentoadministrativo.autor_id = author_list[0] documentoadministrativo.save() for protocolo in autor_clonado.protocolo_set.all(): - protocolo.autor_id = pks[0] + protocolo.autor_id = author_list[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() + autor_clonado.delete() + + +# def transfer_congressman(congressman_lists): +# models = [ComposicaoMesa, Dependente, Filiacao, IntegranteMesa, JustificativaAusencia, Mandato, Orador, +# OradorExpediente, Participacao, PresencaOrdemDia, Relatoria, RetiradaPauta, SessaoPlenariaPresenca, +# UnidadeTramitacao, VotoParlamentar] +# models_dict = {} +# +# for model in models: +# model_str = re.findall('\w+', str(model))[-1] +# models_dict[model_str] = { +# 'model': model, +# 'objs': [] +# } +# +# for congressman_list in congressman_lists: +# +# for pk in congressman_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(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) + main_models = get_multiple() - author_list = pks_dict.get('Autor') - if author_list: - transfer_author(author_list) + author_lists = main_models['Autor']['pks'] + if author_lists: + transfer_purge_author(author_lists) - congressman_list = pks_dict.get('Parlamentar') - if congressman_list: - transfer_congressman(models, congressman_list) + import ipdb; ipdb.set_trace() + # congressman_lists = main_models['Parlamentar']['pks'] + # if congressman_lists: + # transfer_congressman(congressman_lists) - purge(top_models, pks_dict) + # purge(main_models) if __name__ == '__main__':