Browse Source

Iniciando script

deduplica_comissao
ulyssesBML 5 years ago
parent
commit
c7da2ee597
  1. 43
      scripts/deduplica_comissao.py

43
scripts/deduplica_comissao.py

@ -0,0 +1,43 @@
from sapl.comissoes.models import Comissao, Composicao
from sapl.materia.models import DespachoInicial, Relatoria, UnidadeTramitacao
from difflib import SequenceMatcher
models_dependentes = [Composicao, DespachoInicial, Relatoria, UnidadeTramitacao]
def similar(a, b):
return SequenceMatcher(None, a, b).ratio()
def detecta_duplicados():
lst_duplicados = []
comissoes = Comissao.objects.all().order_by('id')
for c_1 in comissoes:
c_1_lst = []
for c_2 in comissoes:
if similar(c_1.nome,c_2.nome) > 0.9 and c_1.id != c_2.id:
c_1_lst.append(c_2)
comissoes = comissoes.exclude(id=c_2.id)
if c_1_lst:
c_1_lst.append(c_1)
comissoes = comissoes.exclude(id=c_1.id)
lst_duplicados.append(c_1_lst)
return lst_duplicados
def junta_dulpicados(duplicados):
principal = duplicados[-1]
for c in duplicados[:-1]:
for m in models_dependentes:
for obj in m.objects.filter(comissao=c):
obj.comissao = principal
obj.save()
c.delete()
def main():
lst_duplicados = detecta_duplicados()
for c in lst_duplicados:
junta_dulpicados(c)
if __name__ == '__main__':
main()
Loading…
Cancel
Save