예제 #1
0
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}
예제 #2
0
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}
예제 #3
0
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
    }
예제 #4
0
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')
예제 #5
0
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}
예제 #6
0
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}
예제 #7
0
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')
예제 #8
0
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}
예제 #9
0
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}
예제 #10
0
def test_con_carga_pendiente_excluye_sin_foto(db):
    m1 = MesaFactory()
    assert m1.attachments.count() == 0
    Mesa.con_carga_pendiente().count() == 0