mirror of https://github.com/interlegis/sapl.git
ulyssesBML
5 years ago
1 changed files with 43 additions and 0 deletions
@ -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…
Reference in new issue