def test_con_carga_pendiente_excluye_taken(db): m1 = AttachmentFactory().mesa m2 = AttachmentFactory().mesa assert set(Mesa.con_carga_pendiente()) == {m1, m2} m2.taken = timezone.now() m2.save() assert set(Mesa.con_carga_pendiente()) == {m1}
def test_con_carga_pendiente_incluye_si_tiene_problema_resuelto(db): m2 = AttachmentFactory().mesa m1 = AttachmentFactory().mesa ProblemaFactory(mesa=m1, estado='resuelto') assert set(Mesa.con_carga_pendiente()) == {m1, m2} # nuevo problema ProblemaFactory(mesa=m1) assert set(Mesa.con_carga_pendiente()) == {m2}
def contadores(request): e = Eleccion.objects.first() return { 'adjuntos_count': Attachment.sin_asignar().count(), 'mesas_pendientes_count': Mesa.con_carga_pendiente().count(), 'mesas_a_confirmar_count': Mesa.con_carga_a_confirmar().count(), 'primera_eleccion': e.id if e is not None else 1 # las urls esperan un entero. # aunque no exista el objeto }
def elegir_acta_a_cargar(request): # se eligen mesas que nunca se intentaron cargar o que se asignaron a mesas = Mesa.con_carga_pendiente().order_by( 'orden_de_carga', '-lugar_votacion__circuito__electores') if mesas.exists(): mesa = mesas[0] # se marca que se inicia una carga mesa.taken = timezone.now() mesa.save(update_fields=['taken']) # que pasa si ya no hay elecciones sin carga? # estamos teniendo un error siguiente_eleccion = mesa.siguiente_eleccion_sin_carga() if siguiente_eleccion is None: return render(request, 'fiscales/sin-actas.html') siguiente_id = siguiente_eleccion.id return redirect('mesa-cargar-resultados', eleccion_id=siguiente_id, mesa_numero=mesa.numero) return render(request, 'fiscales/sin-actas.html')
def test_con_carga_pendiente_incluye_mesa_con_categoria_sin_cargar(db): m1 = AttachmentFactory().mesa m2 = AttachmentFactory().mesa m3 = AttachmentFactory().mesa # mesa 2 ya se cargo, se excluirá categoria = m2.categoria.first() VotoMesaReportadoFactory(carga__mesa=m2, carga__categoria=categoria, opcion=categoria.opciones.first(), votos=10) VotoMesaReportadoFactory(carga__mesa=m2, carga__categoria=categoria, opcion=categoria.opciones.last(), votos=12) # m3 tiene mas elecciones.pendientes e2 = CategoriaFactory(id=100) e3 = CategoriaFactory(id=101) e4 = CategoriaFactory(id=102) m3.categoria_add(e2) m3.categoria_add(e3) m3.categoria_add(e4) m3.categoria_add(CategoriaFactory(id=101)) categoria = m3.categoria.first() # se cargo primera y segunda categoria para la mesa 3 VotoMesaReportadoFactory(carga__mesa=m3, carga__categoria=categoria, opcion=categoria.opciones.first(), votos=20) VotoMesaReportadoFactory(carga__mesa=m3, carga__categoria=e2, opcion=e2.opciones.first(), votos=20) assert set(Mesa.con_carga_pendiente()) == {m1, m3}
def test_con_carga_pendiente_incluye_mesa_con_eleccion_sin_cargar(db): m1 = AttachmentFactory().mesa m2 = AttachmentFactory().mesa m3 = AttachmentFactory().mesa # mesa 2 ya se cargo, se excluirá eleccion = m2.eleccion.first() VotoMesaReportadoFactory(mesa=m2, eleccion=eleccion, opcion=eleccion.opciones.first(), votos=10) VotoMesaReportadoFactory(mesa=m2, eleccion=eleccion, opcion=eleccion.opciones.last(), votos=12) # m3 tiene mas elecciones pendientes e2 = EleccionFactory(id=100) e3 = EleccionFactory(id=101) e4 = EleccionFactory(id=102) m3.eleccion_add(e2) m3.eleccion_add(e3) m3.eleccion_add(e4) m3.eleccion_add(EleccionFactory(id=101)) eleccion = m3.eleccion.first() # se cargo primera y segunda eleccion para la mesa 3 VotoMesaReportadoFactory(mesa=m3, eleccion=eleccion, opcion=eleccion.opciones.first(), votos=20) VotoMesaReportadoFactory(mesa=m3, eleccion=e2, opcion=e2.opciones.first(), votos=20) assert set(Mesa.con_carga_pendiente()) == {m1, m3}
def elegir_acta_a_cargar(request): """ Para el conjunto de mesas con carga pendiente (es decir, que tienen categorias sin cargar) se elige una por orden de prioridad y tamaño del circuito, se actualiza la marca temporal de "asignación" y se redirige a la categoria a cargar para esa mesa. """ mesas = Mesa.con_carga_pendiente().order_by( 'orden_de_carga', '-lugar_votacion__circuito__electores') if mesas.exists(): mesa = mesas[0] # se marca que se inicia una carga mesa.taken = timezone.now() mesa.save(update_fields=['taken']) siguiente_categoria = mesa.siguiente_categoria_sin_carga() if siguiente_categoria is None: return render(request, 'fiscales/sin-actas.html') siguiente_id = siguiente_categoria.id return redirect('mesa-cargar-resultados', categoria_id=siguiente_id, mesa_numero=mesa.numero) return render(request, 'fiscales/sin-actas.html')
def test_con_carga_pendiente_excluye_si_tiene_problema_no_resuelto(db): m2 = AttachmentFactory().mesa m1 = AttachmentFactory().mesa ProblemaFactory(mesa=m1) assert set(Mesa.con_carga_pendiente()) == {m2}
def test_con_carga_pendiente_incluye_taken_vencido(db): now = timezone.now() m1 = AttachmentFactory().mesa m2 = AttachmentFactory(mesa__taken=now - timedelta(minutes=3)).mesa assert set(Mesa.con_carga_pendiente()) == {m1, m2}
def test_con_carga_pendiente_excluye_sin_foto(db): m1 = MesaFactory() assert m1.attachments.count() == 0 Mesa.con_carga_pendiente().count() == 0