Ejemplo n.º 1
0
def ver_candidatos(request, tipo):
    if not is_modulo_activo('votacion_%s' % tipo) and \
       not is_modulo_activo('ver_candidaturas_%s' % tipo) and \
        not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidatos = m.Candidato.objects.filter(tipo=tipo)
    candidatos_valida = candidatos.filter(valida=True).order_by(
        'circunscripcion', 'fecha_alta')

    ccaa = [(k, list(v))
            for (k,
                 v) in groupby(candidatos_valida, lambda x: x.circunscripcion)]
    c = dict(ccaa=ccaa)
    return render(request, 'ver_candidatos.html', c)
Ejemplo n.º 2
0
def votacion(request, tipo, clase_votantes):
    if not is_modulo_activo('votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method!="POST":
        return render(request, 'login.html', dict(tipo=tipo))
    clave=request.POST['clave']
    try:
        socio=clase_votantes.objects.get(clave=clave)
    except clase_votantes.DoesNotExist:
        mensaje = u'Verifique el identificador, por favor'
        messages.add_message(request, messages.INFO, mensaje) 
        return render(request, 'login.html', dict(tipo=tipo))
    puedeVotar, msg = socio.puedeVotar(True)
    if not puedeVotar:
        messages.add_message(request, messages.WARNING, u'No puede votar: %s' % msg)
        return HttpResponseRedirect('/')
    request.session['usu%s' % tipo]=socio.pk
    if tipo == 25:
        return HttpResponseRedirect('/papeleta_%s/%s/' % (tipo, 18))
    if tipo == 50 and socio.circunscripcion.pk!=18:
        return HttpResponseRedirect('/papeleta_%s/%s/' % (tipo, socio.circunscripcion.pk))
    else:
        return render(request, 'selector_usu.html',
                      dict(tipo=tipo,
                           ccaa=m.Circunscripcion.objects.all()))
Ejemplo n.º 3
0
def votacion(request, tipo, clase_votantes):
    if not is_modulo_activo(
            'votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method != "POST":
        return render(request, 'login.html', dict(tipo=tipo))
    clave = request.POST['clave']
    try:
        socio = clase_votantes.objects.get(clave=clave)
    except clase_votantes.DoesNotExist:
        mensaje = u'Verifique el identificador, por favor'
        messages.add_message(request, messages.INFO, mensaje)
        return render(request, 'login.html', dict(tipo=tipo))
    puedeVotar, msg = socio.puedeVotar(True)
    if not puedeVotar:
        messages.add_message(request, messages.WARNING,
                             u'No puede votar: %s' % msg)
        return HttpResponseRedirect('/')
    request.session['usu%s' % tipo] = socio.pk
    if tipo == 15:
        return HttpResponseRedirect('/papeleta_%s/%s/' % (tipo, 18))
    if tipo == 60 and socio.circunscripcion.pk != 18:
        return HttpResponseRedirect('/papeleta_%s/%s/' %
                                    (tipo, socio.circunscripcion.pk))
    else:
        return render(request, 'selector_usu.html',
                      dict(tipo=tipo, ccaa=m.Circunscripcion.objects.all()))
Ejemplo n.º 4
0
def envia_clave(request, tipo, clase_votantes):
    
    MSG_DIRECCION_KO = u'Disculpa, pero esa dirección no está registrada como votante. Por favor, vota por correo postal.'
    if not is_modulo_activo('votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method!="POST":
        return HttpResponseRedirect('/')
    email = request.POST.get('email')
    if not email:
        return HttpResponseRedirect('/votacion_%s/' % tipo)
    socios = clase_votantes.objects.filter(correo_electronico=email)
    level = messages.WARNING
    if not socios:
        msg = MSG_DIRECCION_KO
    elif len(socios) > 1:
        msg = u'Disculpa, pero esa dirección corresponde a más de una persona. Por favor, vota por correo postal.'
    else:
        socio = socios[0]
        if socio.clave or socio.puedeVotar(True)[0]:
            email_text = u'Estimado/a %s %s\r\nÉsta es tu clave: %s\r\nPuedes votar en https://elecciones.greenpeace.es' % (socio.nombre, socio.apellidos, socio.get_clave())
            send_mail(u"[Greenpeace España/Elecciones] Clave para votar ", email_text, '*****@*****.**', [socio.correo_electronico], 
                  fail_silently= False)
            msg = u'Por favor, verifica tu buzón de correo. En breve te llegará un mensaje con la clave para votar.'
            level = messages.SUCCESS
        else:
            msg = MSG_DIRECCION_KO
    messages.add_message(request, level, msg)
    return HttpResponseRedirect('/votacion_%s/' % tipo)
Ejemplo n.º 5
0
def alegar(request, num):
    if not is_modulo_activo('alegaciones_50') and not is_modulo_activo('alegaciones_25') and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidato = m.Candidato.objects.get(pk=num)
    if request.method == 'POST':
        form = AlegacionForm(request.POST)
        if form.is_valid():
            candidato.alegaciones += '\n' + form.cleaned_data['alegacion']
            candidato.save()
            return HttpResponseRedirect('/alegacion_ok/')
    else:
        form=form = AlegacionForm()
    data = dict(
                candidato=candidato,
                form=form,
                )
    return render(request, 'formulario_alegacion.html', data)
Ejemplo n.º 6
0
def resultado(request, tipo, ccaa):
    modulo = is_modulo_activo('resultado_%s' % tipo)
    if not modulo and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    elif not modulo:
        modulo = Plazo.objects.filter(modulo = 'resultado_%s' % tipo)
    c = dict(ccaa=ccaa, modulo=modulo[0])
    return render(request, 'resultados.html', c)
Ejemplo n.º 7
0
def resultado(request, tipo, ccaa):
    modulo = is_modulo_activo('resultado_%s' % tipo)
    if not modulo and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    elif not modulo:
        modulo = Plazo.objects.filter(modulo='resultado_%s' % tipo)
    c = dict(ccaa=ccaa, modulo=modulo[0])
    return render(request, 'resultados.html', c)
Ejemplo n.º 8
0
def ver_candidatos(request, tipo):
    if not is_modulo_activo('votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidatos = m.Candidato.objects.filter(tipo=tipo)
    candidatos_valida = candidatos.filter(valida=True).order_by('circunscripcion', 'fecha_alta')
    
    ccaa = [(k, list(v)) for (k, v) in groupby(candidatos_valida, lambda x:x.circunscripcion)]
    c = dict(ccaa=ccaa)
    return render(request, 'ver_candidatos.html', c)
Ejemplo n.º 9
0
def editar_candidato(request, tipo, id_candidato):
    if (not is_modulo_activo('comision_%s' % tipo)
            and not request.user.is_superuser):
        return HttpResponseRedirect('/')
    candidato = Candidato.objects.get(pk=id_candidato)
    assert candidato.tipo == tipo

    if request.method == 'POST':
        form = AdminCandidatoForm(request.POST,
                                  request.FILES,
                                  instance=candidato)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/comision_%s/' % tipo)
        info = dict(info='Se han detectado errores')
    else:
        if candidato.valida_sistema:
            info = dict(info='Ya validado')
        else:
            info = mv.getContact(candidato.correo_e, candidato.num_dni)
            if info:
                if info['Income_ultimos_12_meses_CONSEJO__c'] >= settings.MIN_INCOME:
                    candidato.corriente = True
                    candidato.save()
                if info['Birthdate']:
                    candidato.fecha_nacimiento = parse_date(info['Birthdate'])
                    if candidato.fecha_nacimiento <= settings.FECHA_MAXIMA_NACIMIENTO:
                        candidato.mayor_edad = True
                    candidato.save()
                if info['Fecha_de_antiguedad__c']:
                    candidato.fecha_alta = parse_date(
                        info['Fecha_de_antiguedad__c'])
                    candidato.antiguedad_3a = candidato.fecha_alta <= settings.FECHA_MAXIMA_ANTIGUEDAD
                    candidato.save()
                if tipo == 15:
                    candidato.circunscripcion_correcta = True
                elif info['MailingPostalCode']:
                    prefijo = info['MailingPostalCode'][:2]
                    circunscripcion_por_cp = Provincia.objects.get(
                        prefijo_cp=prefijo).circunscripcion
                    candidato.circunscripcion_correcta = candidato.circunscripcion == circunscripcion_por_cp
                    candidato.save()
                candidato.valida_sistema = candidato.corriente == True \
                        and candidato.circunscripcion_correcta == True\
                        and candidato.mayor_edad == True\
                        and candidato.antiguedad_3a == True
                candidato.save()
            else:
                info = dict(info='Sin resultados')
        form = form = AdminCandidatoForm(instance=candidato)
    data = dict(
        candidato=candidato,
        form=form,
        info=info,
    )

    return render(request, 'editar_candidato.html', data)
Ejemplo n.º 10
0
def alegar(request, num):
    if not is_modulo_activo('alegaciones_60') and not is_modulo_activo(
            'alegaciones_15') and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidato = m.Candidato.objects.get(pk=num)
    if request.method == 'POST':
        form = AlegacionForm(request.POST)
        if form.is_valid():
            candidato.alegaciones += '\n' + form.cleaned_data['alegacion']
            candidato.save()
            return HttpResponseRedirect('/alegacion_ok/')
    else:
        form = form = AlegacionForm()
    data = dict(
        candidato=candidato,
        form=form,
    )
    return render(request, 'formulario_alegacion.html', data)
Ejemplo n.º 11
0
def registrar_usu(request, ca, tipo, clase_votantes):
    if not is_modulo_activo(
            'votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method == "GET":
        return HttpResponseRedirect('/')
    id_usu = request.session.get('usu%s' % tipo)
    if not id_usu:
        return HttpResponseRedirect("/")
    circ = m.Circunscripcion.objects.get(pk=ca)
    usu = clase_votantes.objects.get(pk=id_usu)
    if tipo == 60:
        assert usu.circunscripcion_id == 18 or circ.pk == usu.circunscripcion_id, 'Se está votando por una circ no autorizada'
    puedeVotar, msg = usu.puedeVotar(True)
    if not puedeVotar:
        messages.add_message(request, messages.WARNING,
                             'No puede votar: ' + msg)
        return HttpResponseRedirect('/')
    usu.fecha_voto = datetime.datetime.now()
    usu.save()
    papeleta = m.Papeleta(
        circunscripcion=circ,
        usuario_registro=request.user.is_authenticated() and request.user
        or None)
    aspas = [int(v) for k, v in request.POST.items() if k.startswith('cdto')]
    if tipo == 60:
        max_candidatos = circ.puestos
    else:
        max_candidatos = settings.MAX_CANDIDATOS_15
    assert len(
        aspas
    ) <= max_candidatos, u'No se puede votar a más candidatos que puestos'
    if request.POST.get('nulo'):
        assert not aspas, u'Aspas y nulo'
        papeleta.voto_nulo = True
        papeleta.voto_blanco = False
    elif request.POST.get('blanco'):
        assert not aspas, u'Aspas y blanco'
        papeleta.voto_blanco = True
        papeleta.voto_nulo = False
    else:
        assert aspas, u'Ni aspas ni blanco'
        papeleta.voto_blanco = False
        papeleta.voto_nulo = False
    papeleta.save()
    for aspa in aspas:
        candidato = m.Candidato.objects.get(pk=aspa)
        #Sólo en caso de hostilidad
        assert candidato.circunscripcion.pk == circ.pk, u'Se está votando por candidatos de otra papeleta'
        voto = m.Voto(candidato=candidato, papeleta=papeleta)
        voto.save()
    msg = u'<span style="font-size:300%;color:green;">Voto registrado</span>'
    messages.add_message(request, messages.SUCCESS, msg)
    return HttpResponseRedirect('/')
Ejemplo n.º 12
0
def comision(request, tipo):
    if (not is_modulo_activo('comision_%s' % tipo) 
        and not request.user.is_superuser):
        return HttpResponseRedirect('/')
    candidatos = m.Candidato.objects.filter(tipo=tipo)
    candidatos_valida = candidatos.filter(valida=True).order_by('circunscripcion', 'fecha_alta')
    candidatos_novalida = candidatos.filter(valida=False).order_by('apellidos', 'nombre')
    candidatos_pendiente = candidatos.filter(valida__isnull=True).order_by('apellidos', 'nombre')
 
    ccaa = [(k, list(v)) for (k, v) in groupby(candidatos_valida, lambda x:x.circunscripcion)]
    c = dict(ccaa=ccaa, candidatos_novalida=candidatos_novalida, candidatos_pendiente=candidatos_pendiente)
    return render(request, 'admin_candidatos.html', c)
Ejemplo n.º 13
0
def alegaciones(request, tipo):
    if not is_modulo_activo(
            'alegaciones_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidatos = m.Candidato.objects.filter(tipo=tipo)
    candidatos_valida = candidatos.filter(valida=True).order_by(
        'circunscripcion', 'fecha_alta')
    candidatos_novalida = candidatos.exclude(valida=True).order_by(
        'apellidos', 'nombre')

    ccaa = [(k, list(v))
            for (k,
                 v) in groupby(candidatos_valida, lambda x: x.circunscripcion)]
    c = dict(ccaa=ccaa, candidatos_novalida=candidatos_novalida)
    return render(request, 'alegaciones.html', c)
Ejemplo n.º 14
0
def registrar_usu(request,ca, tipo, clase_votantes):
    if not is_modulo_activo('votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method=="GET":
        return HttpResponseRedirect('/')
    id_usu=request.session.get('usu%s' % tipo)
    if not id_usu:
        return HttpResponseRedirect("/")
    circ=m.Circunscripcion.objects.get(pk=ca)
    usu= clase_votantes.objects.get(pk=id_usu)
    if tipo == 50:
        assert usu.circunscripcion_id==18 or circ.pk==usu.circunscripcion_id, 'Se está votando por una circ no autorizada'
    puedeVotar, msg = usu.puedeVotar(True)
    if not puedeVotar:
        messages.add_message(request, messages.WARN, 'No puede votar: '+msg)
        return HttpResponseRedirect('/')
    usu.fecha_voto=datetime.datetime.now()
    usu.save()
    papeleta=m.Papeleta(circunscripcion=circ,
        usuario_registro=request.user.is_authenticated() and request.user or None)
    aspas=[int(v) for k,v in request.POST.items() if k.startswith('cdto')]
    if tipo == 50:
        max_candidatos = circ.puestos
    else:
        max_candidatos = settings.MAX_CANDIDATOS_25
    assert len(aspas)<=max_candidatos, u'No se puede votar a más candidatos que puestos'
    if request.POST.get('nulo'):
        assert not aspas, u'Aspas y nulo'
        papeleta.voto_nulo=True
        papeleta.voto_blanco=False
    elif request.POST.get('blanco'):
        assert not aspas, u'Aspas y blanco'
        papeleta.voto_blanco=True
        papeleta.voto_nulo=False
    else:
        assert aspas, u'Ni aspas ni blanco'
        papeleta.voto_blanco = False
        papeleta.voto_nulo = False
    papeleta.save()
    for aspa in aspas:
        candidato=m.Candidato.objects.get(pk=aspa)
        #Sólo en caso de hostilidad
        assert candidato.circunscripcion.pk==circ.pk, u'Se está votando por candidatos de otra papeleta'
        voto=m.Voto(candidato=candidato, papeleta=papeleta)
        voto.save()
    msg = u'<span style="font-size:300%;color:green;">Voto registrado</span>'
    messages.add_message(request, messages.SUCCESS, msg)
    return HttpResponseRedirect('/')
Ejemplo n.º 15
0
def registrar_admin(request, ca, tipo):
    if not is_modulo_activo(
            'recuento_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method == "GET":
        return HttpResponseRedirect('/')
    id_usu = request.session.get('usu%s' % tipo)
    if not request.user.is_authenticated() and not id_usu:
        return HttpResponseRedirect("../..")
    circ = m.Circunscripcion.objects.get(pk=ca)
    papeleta = m.Papeleta(
        circunscripcion=circ,
        usuario_registro=request.user.is_authenticated() and request.user
        or None)
    aspas = [int(v) for k, v in request.POST.items() if k.startswith('cdto')]
    if tipo == 60:
        assert len(
            aspas
        ) <= circ.puestos, u'No se puede votar a más candidatos que puestos'
    else:
        assert len(aspas) <= settings.MAX_CANDIDATOS_15
    if request.POST.get('nulo'):
        assert not aspas, u'Aspas y nulo'
        papeleta.voto_nulo = True
        papeleta.voto_blanco = False
    elif request.POST.get('blanco'):
        assert not aspas, u'Aspas y blanco'
        papeleta.voto_blanco = True
        papeleta.voto_nulo = False
    else:
        assert aspas, u'Ni aspas ni blanco'
        papeleta.voto_blanco = False
        papeleta.voto_nulo = False
    papeleta.save()
    for aspa in aspas:
        candidato = m.Candidato.objects.get(pk=aspa)
        #Sólo en caso de hostilidad
        assert candidato.circunscripcion.pk == circ.pk, u'Se está votando por candidatos de otra papeleta'
        papeleta.voto_set.create(candidato=candidato)
    if not id_usu and request.user.is_authenticated():
        return HttpResponseRedirect('./../')
    msg = u'<span style="font-size:300%;color:green;">Voto registrado</span>'
    messages.add_message(request, messages.SUCCESS, msg)
    return HttpResponseRedirect('.')
Ejemplo n.º 16
0
def editar_candidato(request, tipo, id_candidato):
    if (not is_modulo_activo('comision_%s' % tipo) 
        and not request.user.is_superuser):
        return HttpResponseRedirect('/')
    candidato = Candidato.objects.get(pk=id_candidato)
    assert candidato.tipo == tipo
    if request.method == 'POST':
        form = AdminCandidatoForm(request.POST, request.FILES, instance=candidato)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/comision_%s/' % tipo)
    else:
        form=form = AdminCandidatoForm(instance=candidato)
    data = dict(
                candidato=candidato,
                form=form,
                )
    
    return render(request, 'editar_candidato.html', data)
Ejemplo n.º 17
0
def registrar_admin(request, ca, tipo):
    if not is_modulo_activo('recuento_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method=="GET":
        return HttpResponseRedirect('/')
    id_usu=request.session.get('usu%s' % tipo)
    if not request.user.is_authenticated() and not id_usu:
        return HttpResponseRedirect("../..")
    circ=m.Circunscripcion.objects.get(pk=ca)
    papeleta=m.Papeleta(circunscripcion=circ,
        usuario_registro=request.user.is_authenticated() and request.user or None)
    aspas=[int(v) for k,v in request.POST.items() if k.startswith('cdto')]
    if tipo == 50:
        assert len(aspas) <= circ.puestos, u'No se puede votar a más candidatos que puestos'
    else:
        assert len(aspas) <= settings.MAX_CANDIDATOS_25
    if request.POST.get('nulo'):
        assert not aspas, u'Aspas y nulo'
        papeleta.voto_nulo=True
        papeleta.voto_blanco=False
    elif request.POST.get('blanco'):
        assert not aspas, u'Aspas y blanco'
        papeleta.voto_blanco=True
        papeleta.voto_nulo=False
    else:
        assert aspas, u'Ni aspas ni blanco'
        papeleta.voto_blanco = False
        papeleta.voto_nulo = False
    papeleta.save()
    for aspa in aspas:
        candidato=m.Candidato.objects.get(pk=aspa)
        #Sólo en caso de hostilidad
        assert candidato.circunscripcion.pk==circ.pk, u'Se está votando por candidatos de otra papeleta'
        
        voto=m.Voto(candidato=candidato)
        papeleta.voto_set.add(voto)
        voto.save()
    if not id_usu and request.user.is_authenticated():
        return HttpResponseRedirect('./../')
    msg = u'<span style="font-size:300%;color:green;">Voto registrado</span>'
    messages.add_message(request, messages.SUCCESS, msg)
    return HttpResponseRedirect('.')
Ejemplo n.º 18
0
def papeleta_usu(request, ca, tipo, clase_votantes):
    if not is_modulo_activo('votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    usu=request.session.get('usu%s' % tipo)
    if not usu:
        return HttpResponseRedirect("/")
    socio=clase_votantes.objects.get(pk=usu)
    puedeVotar, msg = socio.puedeVotar(True)
    if not puedeVotar:
        mensaje=u'No puede votar en esta web; intente votar por correo postal: '+msg
        messages.add_message(request, messages.SUCCESS, mensaje)
        return render(request, 'mensaje_pub.html')
    circ=m.Circunscripcion.objects.get(pk=ca)
    plantilla = 'papeleta_pub.html'
    if tipo == 50:
        max_candidatos = circ.puestos
        assert socio.circunscripcion.pk == 18 or socio.circunscripcion == circ
    else:
        max_candidatos = settings.MAX_CANDIDATOS_25
    return render(request, plantilla, locals())
Ejemplo n.º 19
0
def presentacion(request, tipo):
    if not is_modulo_activo('presentacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    plantilla = 'presentacion.html'
    form_class = NuevoCandidatoForm if tipo==50 else NuevoCandidato25Form
    if request.method == 'POST': # If the form has been submitted...
        form = form_class(request.POST, request.FILES) # A form bound to the POST data
        if form.is_valid():
            candidato = form.save(commit=False)
            candidato.descripcion = candidato.descripcion or '-'
            candidato.tipo = 0
            candidato.circunscripcion_id = 18
            candidato.valida = None
            candidato.save()
            request.session['id_candidato'] = candidato.id
            return HttpResponseRedirect('/confirmar_%s/' % tipo)
    else:
        form = form_class() # An unbound form

    return render(request, plantilla, dict(form=form))
Ejemplo n.º 20
0
def papeleta_usu(request, ca, tipo, clase_votantes):
    if not is_modulo_activo(
            'votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    usu = request.session.get('usu%s' % tipo)
    if not usu:
        return HttpResponseRedirect("/")
    socio = clase_votantes.objects.get(pk=usu)
    puedeVotar, msg = socio.puedeVotar(True)
    if not puedeVotar:
        mensaje = u'No puede votar en esta web; intente votar por correo postal: ' + msg
        messages.add_message(request, messages.SUCCESS, mensaje)
        return render(request, 'mensaje_pub.html')
    circ = m.Circunscripcion.objects.get(pk=ca)
    plantilla = 'papeleta_pub.html'
    if tipo == 60:
        max_candidatos = circ.puestos
        assert socio.circunscripcion.pk == 18 or socio.circunscripcion == circ
    else:
        max_candidatos = settings.MAX_CANDIDATOS_15
    return render(request, plantilla, locals())
Ejemplo n.º 21
0
def presentacion(request, tipo):
    if not is_modulo_activo(
            'presentacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    plantilla = 'presentacion.html'
    form_class = NuevoCandidatoForm if tipo == 60 else NuevoCandidato15Form
    if request.method == 'POST':  # If the form has been submitted...
        form = form_class(request.POST,
                          request.FILES)  # A form bound to the POST data
        if form.is_valid():
            candidato = form.save(commit=False)
            candidato.tipo = 0
            if tipo == 15:
                candidato.circunscripcion_id = 18
            candidato.valida = None
            candidato.save()
            request.session['id_candidato'] = candidato.id
            return HttpResponseRedirect('/confirmar_%s/' % tipo)
    else:
        form = form_class()  # An unbound form

    return render(request, plantilla, dict(form=form))
Ejemplo n.º 22
0
def comision(request, tipo):
    if (not is_modulo_activo('comision_%s' % tipo)
            and not request.user.is_superuser):
        return HttpResponseRedirect('/')
    full = request.GET.get('full', False)
    candidatos = m.Candidato.objects.filter(tipo=tipo)
    candidatos_valida = candidatos.filter(valida=True).order_by(
        'circunscripcion', 'fecha_alta')
    candidatos_novalida = candidatos.filter(valida=False).order_by(
        'apellidos', 'nombre')
    candidatos_pendiente = candidatos.filter(valida__isnull=True).order_by(
        'apellidos', 'nombre')

    ccaa = [(k, list(v))
            for (k,
                 v) in groupby(candidatos_valida, lambda x: x.circunscripcion)]
    c = dict(
        ccaa=ccaa,
        candidatos_novalida=candidatos_novalida,
        candidatos_pendiente=candidatos_pendiente,
        full=full,
    )
    return render(request, 'admin_candidatos.html', c)
Ejemplo n.º 23
0
def confirmar(request, tipo):
    if not is_modulo_activo(
            'presentacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidato = Candidato.objects.get(pk=request.session['id_candidato'])
    if request.method == 'POST':  # If the form has been submitted...
        candidato.tipo = tipo
        candidato.n_socio = 'n/a'
        candidato.save()
        envia_confirmacion(candidato)
        return HttpResponseRedirect('/ok2_%s/' % tipo)
    else:
        form = NuevoCandidatoConfirmacionForm(instance=candidato)
        if tipo == 15:
            del form.fields['circunscripcion']
        c = dict(form=form, candidato=candidato)
        for k in form.fields:
            w = form.fields[k].widget
            if isinstance(w, Select):
                w.attrs['disabled'] = True
            else:
                w.attrs['readonly'] = True

        return render(request, 'presentacion_previa.html', c)
Ejemplo n.º 24
0
def envia_clave(request, tipo, clase_votantes):
    if not is_modulo_activo(
            'votacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    if request.method != "POST":
        return HttpResponseRedirect('/')
    email = request.POST.get('email')
    if not email:
        return HttpResponseRedirect('/votacion_%s/' % tipo)
    msg = ''
    if tipo == 15:
        try:
            consejero = Consejero.objects.get(correo_electronico=email)
            email_text = u'Estimado/a %s\r\nÉsta es tu clave: %s\r\nPuedes votar en https://elecciones.greenpeace.es' % (
                consejero.nombre, consejero.get_clave())
            send_mail(u"[Greenpeace España/Elecciones] Clave para votar ",
                      email_text,
                      '*****@*****.**', [consejero.correo_electronico],
                      fail_silently=False)
            msg = u'Por favor, verifica tu buzón de correo. En breve te llegará un mensaje con la clave para votar.'
            level = messages.SUCCESS
        except ObjectDoesNotExist:
            msg = u'''La votación está abierta solamente a los consejeros vigentes.
                Verifica que tu dirección de correo es la activa de la lista del
                Consejo'''
            level = messages.WARNING
        messages.add_message(request, level, msg)
        return HttpResponseRedirect('/votacion_%s/' % tipo)

    try:
        info = mv.getContact(email, email)
        if info:
            num_socio = info[u'AlizeConstituentID__c']
            income = info['Income_ultimos_12_meses_CONSEJO__c']
            fecha_alta = parse_date(info['Activation_Date__c'])
            today = datetime.date.today()
            meses_active = min(12, diff_month(today, fecha_alta))
            if income / meses_active < settings.MIN_INCOME / 12:
                msg = u'''Parece que hay algún problema con el pago de tu cuota,
                por favor, ponte en contacto con nuestra oficina, teléfono: 900 535 025,
                correo electrónico:
                <a href="mailto:[email protected]">[email protected]</a>.
                Cuando esté resuelto, inténtalo de nuevo. Te esperamos.'''
            if info['Birthdate']:
                fecha_nacimiento = parse_date(info['Birthdate'])
                if fecha_nacimiento > settings.FECHA_MAXIMA_NACIMIENTO:
                    msg = u'''Para poder participar en estas elecciones necesitabas ser mayor de edad
                    en el momento de la convocatoria. Te esperamos en las próximas elecciones'''
            else:
                msg = u'''Para poder votar necesitas tener fecha de nacimiento en la base de 
                datos. Por favor, ponte en contacto con nuestra oficina, teléfono: 900 535 025, 
                correo electrónico: [email protected] o actualízala en
                 Tu perfil greenpeace. Cuando esté resuelto, inténtalo de nuevo. Te esperamos.'''
            try:
                EmailValidator()(info['Email'])
            except ValidationError:
                msg = u'''Para poder votar electrónicamente, necesitamos que tengas una dirección de correo electrónico registrada en la base de datos de Greenpeace España para enviarte la clave. Por favor, ponte en contacto con nuestra oficina, teléfono: 900 535 025, correo electrónico: [email protected]. Cuando esté resuelto, inténtalo de nuevo. Te esperamos.'''
            if fecha_alta > settings.FECHA_CONVOCATORIA:
                msg = u'''Para poder participar en estas elecciones necesitabas pertenecer a Greenpeace España en el momento de su convocatoria. Te esperamos en las próximas elecciones.'''
            soc_local = mv.Socio.objects.filter(num_socio=num_socio).exclude(
                fecha_voto=None).first()
            if soc_local:
                msg = u'''El sistema tiene registrado tu voto en {:%d-%m-%Y %H:%M}'''.format(
                    soc_local.fecha_voto)
        else:
            msg = u'''No hay ninguna persona en nuestra base de datos que cumpla esta condición.
            Por favor, ponte en contacto con nuestra oficina, teléfono: 900 535 025,
            correo electrónico: <a href="mailto:[email protected]">[email protected]</a>.
            Cuando esté resuelto, inténtalo de nuevo. Te esperamos.'''
    except mv.MultipleContactsError:
        info = None
        msg = u'''Hay más de una persona en nuestra base de datos que cumple esta
        condición.Por favor, ponte en contacto con nuestra oficina,
        teléfono: 900 535 025, correo electrónico: [email protected].
        Cuando esté resuelto, inténtalo de nuevo. Te esperamos.'''

    if msg == '':
        socio, created = mv.Socio.objects.get_or_create(num_socio=num_socio)
        socio.correo_electronico = info['Email']
        socio.nombre = info['Name']
        if info['MailingPostalCode']:
            prefijo = info['MailingPostalCode'][:2]
            try:
                circunscripcion_por_cp = Provincia.objects.get(
                    prefijo_cp=prefijo).circunscripcion
            except ObjectDoesNotExist:
                circunscripcion_por_cp = Circunscripcion.objects.get(id=18)
        else:
            circunscripcion_por_cp = Circunscripcion.objects.get(id=18)
        socio.circunscripcion = circunscripcion_por_cp
        socio.save()
        email_text = u'Estimado/a %s\r\nÉsta es tu clave: %s\r\nPuedes votar en https://elecciones.greenpeace.es' % (
            socio.nombre, socio.get_clave())
        send_mail(u"[Greenpeace España/Elecciones] Clave para votar ",
                  email_text,
                  '*****@*****.**', [socio.correo_electronico],
                  fail_silently=False)
        msg = u'Por favor, verifica tu buzón de correo. En breve te llegará un mensaje con la clave para votar.'
        level = messages.SUCCESS
    else:
        level = messages.WARNING
    messages.add_message(request, level, msg)
    return HttpResponseRedirect('/votacion_%s/' % tipo)
Ejemplo n.º 25
0
def confirmar(request, tipo):
    if not is_modulo_activo('presentacion_%s' % tipo) and not request.user.is_superuser:
        return HttpResponseRedirect('/')
    candidato = Candidato.objects.get(pk=request.session['id_candidato'])
    if request.method == 'POST': # If the form has been submitted...
        candidato.tipo = tipo
        candidato.n_socio = 'n/a'
        socios = list(mv.Socio.objects.filter(num_socio=candidato.n_socio.zfill(8)))
        socios += list(mv.Socio.objects.filter(num_socio_antiguo='S' + candidato.n_socio.zfill(7)))
        socios += list(mv.Socio.objects.filter(num_socio_antiguo=candidato.n_socio))
        if len(socios) != 1:
            socios = mv.Socio.objects.filter(correo_electronico=candidato.correo_e)
        if len(socios) != 1:
            candidato.save()
            envia_confirmacion(candidato)
            return HttpResponseRedirect('/ok2_%s/' % tipo)
        socio = socios[0]
        
        candidato.valida_sistema = True
        candidato.fecha_alta = socio.fecha_socio
        candidato.valida_sistema = True
        if socio.fecha_nacimiento:
            if socio.fecha_nacimiento > datetime.datetime(2013 - 18, 4, 21):
                candidato.comentarios += '\nMenor de edad'
                candidato.valida_sistema = False
        else:
            candidato.comentarios += '\nFecha de nacimiento no disponible'
            candidato.valida_sistema = False

        if not socio.corriente:
            candidato.comentarios += '\nNo corriente'
            candidato.valida_sistema = False
        if tipo == 25:
            fecha_alta_tope = datetime.datetime(2013 - 3, 4, 21)
        else:
            fecha_alta_tope = datetime.datetime(2013 - 3, 10, 20)
        if socio.fecha_socio > fecha_alta_tope:
            candidato.comentarios += '\nSocio demasiado reciente'
            candidato.valida_sistema = False
        if socio.circunscripcion != candidato.circunscripcion:
            candidato.comentarios += u'\nNo coincide circunscripción'
            candidato.valida_sistema = False
            
        candidato.save()
        envia_confirmacion(candidato)
        if candidato.valida_sistema:
            return HttpResponseRedirect('/ok_%s/' % tipo)
        return HttpResponseRedirect('/ok2_%s/' % tipo)
    else:
        form = NuevoCandidatoConfirmacionForm(instance=candidato)
        if tipo == 25:
            del form.fields['descripcion']
            del form.fields['circunscripcion']
        c = dict(form=form, candidato=candidato)
        for k in form.fields:
            w = form.fields[k].widget
            if isinstance(w, Select):
                w.attrs['disabled'] = True
            else:
                w.attrs['readonly'] = True
            
        return render(request, 'presentacion_previa.html', c)