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
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__':

Loading…
Cancel
Save