mirror of https://github.com/interlegis/sapl.git
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.
123 lines
4.0 KiB
123 lines
4.0 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():
|
|
models = [Autor, Parlamentar]
|
|
main_models = {}
|
|
|
|
for model in models:
|
|
model_str = re.findall(r'\w+', str(model))[-1]
|
|
main_models[model_str] = {
|
|
'model': model,
|
|
'kwargs': {},
|
|
'pks': []
|
|
}
|
|
|
|
for model_name, model_dict in main_models.items():
|
|
objs = model_dict['model'].objects.all()
|
|
|
|
for obj in objs:
|
|
if model_name == 'Autor':
|
|
model_dict['kwargs']['nome'] = obj.nome
|
|
elif model_name == 'Parlamentar':
|
|
model_dict['kwargs']['nome_parlamentar'] = obj.nome_parlamentar
|
|
|
|
pesquisa_obj = model_dict['model'].objects.filter(**model_dict['kwargs'])
|
|
if pesquisa_obj.count() > 1:
|
|
multiplos_objs = [o.pk for o in pesquisa_obj]
|
|
multiplos_objs.sort()
|
|
|
|
if multiplos_objs not in main_models[model_name]['pks']:
|
|
main_models[model_name]['pks'].append(multiplos_objs)
|
|
|
|
return main_models
|
|
|
|
|
|
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 = author_list[0]
|
|
autoria.save()
|
|
|
|
for proposicao in autor_clonado.proposicao_set.all():
|
|
proposicao.autor_id = author_list[0]
|
|
proposicao.save()
|
|
|
|
for autorianorma in autor_clonado.autorianorma_set.all():
|
|
autorianorma.autor_id = author_list[0]
|
|
autorianorma.save()
|
|
|
|
for documentoadministrativo in autor_clonado.documentoadministrativo_set.all():
|
|
documentoadministrativo.autor_id = author_list[0]
|
|
documentoadministrativo.save()
|
|
|
|
for protocolo in autor_clonado.protocolo_set.all():
|
|
protocolo.autor_id = author_list[0]
|
|
protocolo.save()
|
|
|
|
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():
|
|
main_models = get_multiple()
|
|
|
|
author_lists = main_models['Autor']['pks']
|
|
if author_lists:
|
|
transfer_purge_author(author_lists)
|
|
|
|
import ipdb; ipdb.set_trace()
|
|
# congressman_lists = main_models['Parlamentar']['pks']
|
|
# if congressman_lists:
|
|
# transfer_congressman(congressman_lists)
|
|
|
|
# purge(main_models)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|