예제 #1
0
파일: views.py 프로젝트: pandres/carreros
def cargar_resultados(request, eleccion_id, mesa_numero):
    fiscal = get_object_or_404(Fiscal, user=request.user)

    def fix_opciones(formset):
        # hack para dejar sólo la opcion correspondiente a cada fila
        # se podria hacer "disabled" pero ese caso quita el valor del
        # cleaned_data y luego lo exige por ser requerido.
        for i, (opcion,
                form) in enumerate(zip(Eleccion.opciones_actuales(), formset),
                                   1):
            form.fields['opcion'].choices = [(opcion.id, str(opcion))]

            form.fields['opcion'].widget.attrs['tabindex'] = 99 + i
            form.fields['votos'].widget.attrs['tabindex'] = i
            # si la opcion es obligatoria, se llenan estos campos
            if opcion.obligatorio:
                form.fields['votos'].required = True
            if i == 1:
                form.fields['votos'].widget.attrs['autofocus'] = True

    mesa = get_object_or_404(Mesa,
                             eleccion__id=eleccion_id,
                             numero=mesa_numero)
    data = request.POST if request.method == 'POST' else None
    qs = VotoMesaReportado.objects.filter(mesa=mesa, fiscal=fiscal)
    initial = [{'opcion': o} for o in Eleccion.opciones_actuales()]
    formset = VotoMesaReportadoFormset(data, queryset=qs, initial=initial)

    fix_opciones(formset)

    is_valid = False
    if qs:
        formset.convert_warnings = True  # monkepatch

    if request.method == 'POST' or qs:
        is_valid = formset.is_valid()

    # eleccion = Eleccion.objects.last()
    if is_valid:
        for form in formset:
            vmr = form.save(commit=False)
            vmr.mesa = mesa
            vmr.fiscal = fiscal
            # vmr.eleccion = eleccion
            vmr.save()

        if formset.warnings:
            messages.warning(request, 'Guardado con inconsistencias')
        else:
            messages.success(request, 'Guardado correctamente')

        return redirect('elegir-acta-a-cargar')

    return render(request, "fiscales/carga.html", {
        'formset': formset,
        'object': mesa
    })
예제 #2
0
    def fix_opciones(formset):
        # hack para dejar sólo la opcion correspondiente a cada fila
        # se podria hacer "disabled" pero ese caso quita el valor del
        # cleaned_data y luego lo exige por ser requerido.
        for i, (opcion, form) in enumerate(zip(Eleccion.opciones_actuales(), formset), 1):
            form.fields['opcion'].choices = [(opcion.id, str(opcion))]
            form.fields['opcion'].widget.attrs['tabindex'] = 99 + i

            form.fields['votos'].required = True
            form.fields['votos'].widget.attrs['tabindex'] = i
            if i == 1:
                form.fields['votos'].widget.attrs['autofocus'] = True
예제 #3
0
def cargar_resultados(request, asignacion_id):
    def fix_opciones(formset):
        # hack para dejar sólo la opcion correspondiente a cada fila
        # se podria hacer "disabled" pero ese caso quita el valor del
        # cleaned_data y luego lo exige por ser requerido.
        for i, (opcion, form) in enumerate(zip(Eleccion.opciones_actuales(), formset), 1):
            form.fields['opcion'].choices = [(opcion.id, str(opcion))]
            form.fields['opcion'].widget.attrs['tabindex'] = 99 + i

            form.fields['votos'].required = True
            form.fields['votos'].widget.attrs['tabindex'] = i
            if i == 1:
                form.fields['votos'].widget.attrs['autofocus'] = True

    asignacion = get_object_or_404(AsignacionVoluntario,
        id=asignacion_id, voluntario=request.user.voluntario
    )
    mesa, voluntario = asignacion.mesa, asignacion.voluntario
    data = request.POST if request.method == 'POST' else None
    qs = VotoMesaReportado.objects.filter(mesa=mesa, voluntario=voluntario)
    initial = [{'opcion': o} for o in Eleccion.opciones_actuales()]
    formset = VotoMesaReportadoFormset(data, queryset=qs, initial=initial)

    fix_opciones(formset)

    is_valid = False
    if qs:
        formset.convert_warnings = True  # monkepatch

    if request.method == 'POST' or qs:
        is_valid = formset.is_valid()

    # = Eleccion.objects.last()
    if is_valid:
        for form in formset:
            vmr = form.save(commit=False)
            vmr.mesa = mesa
            vmr.voluntario = voluntario
            vmr.save()

        if formset.warnings:
            messages.warning(request, 'Guardado con inconsistencias')
        else:
            messages.success(request, 'Guardado correctamente')

        return redirect('inicio')

    return render(request, "fiscales/carga.html",
                  {'formset': formset, 'object': mesa})
예제 #4
0
def opciones_actuales():
    try:
        return Eleccion.opciones_actuales().count()
    except:
        return 0