def deduplica_protocolos(apps, schema_editor): from sapl.base.views import protocolos_duplicados Protocolo = apps.get_model('protocoloadm', 'Protocolo') protocolos = protocolos_duplicados() for protocolo in protocolos: protocolo_principal = Protocolo.objects.filter(numero=protocolo['numero'], ano=protocolo['ano']).order_by('-id')[0] Protocolo.objects.filter(numero=protocolo['numero'], ano=protocolo['ano']).exclude(id=protocolo_principal.id).delete()
def test_lista_protocolos_duplicados(): mommy.make(Protocolo, numero=15, ano=2031) mommy.make(Protocolo, numero=15, ano=2031) mommy.make(Protocolo, numero=33, ano=2033) lista_protocolos_duplicados = protocolos_duplicados() assert len(lista_protocolos_duplicados) == 1 assert lista_protocolos_duplicados[0][1] == 2 assert lista_protocolos_duplicados[0][0].numero == 15 assert lista_protocolos_duplicados[0][0].ano == 2031
def deduplica_protocolos(apps, schema_editor): from sapl.base.views import protocolos_duplicados Protocolo = apps.get_model('protocoloadm', 'Protocolo') DocumentoAdministrativo = apps.get_model('protocoloadm', 'DocumentoAdministrativo') protocolos = protocolos_duplicados() for p in protocolos: principal = Protocolo.objects.filter(numero=p['numero'], ano=p['ano']).order_by('-id').first() replicas = Protocolo.objects.filter(numero=p['numero'], ano=p['ano']).exclude(id=principal.id) for r in replicas: documentos = DocumentoAdministrativo.objects.filter(protocolo_id=r.id) for d in documentos: d.protocolo = principal d.save() replicas.delete()