Browse Source

Corrige transferência e exclusão de múltiplos autores

pull/2626/head
Vinícius Cantuária 7 years ago
parent
commit
a1090a308c
  1. 131
      scripts/remove_multiplos_parlamentares.py

131
scripts/remove_multiplos_parlamentares.py

@ -8,100 +8,115 @@ from sapl.sessao.models import IntegranteMesa, JustificativaAusencia, Orador, Or
RetiradaPauta, SessaoPlenariaPresenca, VotoParlamentar RetiradaPauta, SessaoPlenariaPresenca, VotoParlamentar
def get_multiple(top_models): def get_multiple():
pks_objs = {} models = [Autor, Parlamentar]
main_models = {}
for model in top_models: for model in models:
model_name = re.findall(r'\w+', str(model))[-1] model_str = re.findall(r'\w+', str(model))[-1]
pks_objs.update({model_name: []}) 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: for obj in objs:
if model_name == 'Autor': if model_name == 'Autor':
kwargs = {'nome': obj.nome} model_dict['kwargs']['nome'] = obj.nome
elif model_name == 'Parlamentar': elif model_name == 'Parlamentar':
kwargs = {'nome_parlamentar': obj.nome_parlamentar} model_dict['kwargs']['nome_parlamentar'] = obj.nome_parlamentar
else:
print('Model não reconhecida.')
return
pesquisa_obj = model.objects.filter(**kwargs) pesquisa_obj = model_dict['model'].objects.filter(**model_dict['kwargs'])
if pesquisa_obj.count() > 1: 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() multiplos_objs.sort()
if multiplos_objs not in pks_objs.get(model_name): if multiplos_objs not in main_models[model_name]['pks']:
pks_objs.get(model_name).append(multiplos_objs) main_models[model_name]['pks'].append(multiplos_objs)
return pks_objs return main_models
def transfer_author(pks_list): def transfer_purge_author(author_lists):
for pks in pks_list: for author_list in author_lists:
for pk in pks[1:]: for pk in author_list[1:]:
autor_clonado = Autor.objects.get(pk=pk) autor_clonado = Autor.objects.get(pk=pk)
for autoria in autor_clonado.autoria_set.all(): for autoria in autor_clonado.autoria_set.all():
autoria.autor_id = pks[0] autoria.autor_id = author_list[0]
autoria.save() autoria.save()
for proposicao in autor_clonado.proposicao_set.all(): for proposicao in autor_clonado.proposicao_set.all():
proposicao.autor_id = pks[0] proposicao.autor_id = author_list[0]
proposicao.save() proposicao.save()
for autorianorma in autor_clonado.autorianorma_set.all(): for autorianorma in autor_clonado.autorianorma_set.all():
autorianorma.autor_id = pks[0] autorianorma.autor_id = author_list[0]
autorianorma.save() autorianorma.save()
for documentoadministrativo in autor_clonado.documentoadministrativo_set.all(): for documentoadministrativo in autor_clonado.documentoadministrativo_set.all():
documentoadministrativo.autor_id = pks[0] documentoadministrativo.autor_id = author_list[0]
documentoadministrativo.save() documentoadministrativo.save()
for protocolo in autor_clonado.protocolo_set.all(): for protocolo in autor_clonado.protocolo_set.all():
protocolo.autor_id = pks[0] protocolo.autor_id = author_list[0]
protocolo.save() protocolo.save()
autor_clonado.delete()
def transfer_congressman(models, pks_list):
for pks in pks_list:
for pk in pks[1:]: # def transfer_congressman(congressman_lists):
for model in models: # models = [ComposicaoMesa, Dependente, Filiacao, IntegranteMesa, JustificativaAusencia, Mandato, Orador,
for obj in model.objects.filter(parlamentar_id=pk): # OradorExpediente, Participacao, PresencaOrdemDia, Relatoria, RetiradaPauta, SessaoPlenariaPresenca,
obj.parlamentar_id = pks[0] # UnidadeTramitacao, VotoParlamentar]
obj.save() # models_dict = {}
#
# for model in models:
def purge(top_models, pks_dict): # model_str = re.findall('\w+', str(model))[-1]
for model in top_models: # models_dict[model_str] = {
model_name = re.findall(r'\w+', str(model))[-1] # 'model': model,
# 'objs': []
lista = pks_dict.get(model_name) # }
if lista: #
for pks in lista: # for congressman_list in congressman_lists:
for pk in pks[1:]: #
for obj in model.objects.filter(pk=pk): # for pk in congressman_list:
obj.delete() # 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(): def main():
top_models = [Autor, Parlamentar] main_models = get_multiple()
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') author_lists = main_models['Autor']['pks']
if author_list: if author_lists:
transfer_author(author_list) transfer_purge_author(author_lists)
congressman_list = pks_dict.get('Parlamentar') import ipdb; ipdb.set_trace()
if congressman_list: # congressman_lists = main_models['Parlamentar']['pks']
transfer_congressman(models, congressman_list) # if congressman_lists:
# transfer_congressman(congressman_lists)
purge(top_models, pks_dict) # purge(main_models)
if __name__ == '__main__': if __name__ == '__main__':

Loading…
Cancel
Save