Beispiel #1
0
def reenvioPassword (request):
    """
        Permite buscar a un padre al que se le regenerará la su password y
        se le enviará por sms junto a su nombre de usuario.
    """
    context = {}
    pas = isPas(request.user)
    if not pas:
        context['error'] = 'Su usuario no está asignado a una cuenta de PAS'
        return render_to_response(
                "akademic/error.html",
                context,
                context_instance=RequestContext(request)
            )
    if request.POST:
        new_data = request.POST.copy()
        if new_data.has_key('query'):
            search_fields = ['persona__documento_identificacion', 'persona__nombre', 'persona__apellidos']
            for bit in new_data['query'].split():
                or_queries = [models.Q(**{'%s__icontains' % field_name: bit}) for field_name in search_fields]
            context['padres'] = Padre.objects.filter(reduce(operator.or_, or_queries))
            if not len(context['padres']):
                context['notFound'] = True
        elif new_data.has_key('padre'):
            passwd = User.objects.make_random_password(length=6)
            try:
                u = Padre.objects.get (persona = new_data['padre'])
            except Padre.DoesNotExist:
                return render_to_response(
                        "akademic/error.html",
                        context,
                        context_instance=RequestContext(request)
                    )
            u.persona.user.set_password(passwd)
            u.persona.user.save()
            texto = "Nombre de usuario: %s  Contraseña: %s" % (u.persona.user, passwd)
            t = TextoNotificacion(texto = texto)
            t.save ()
            try:
                n = Notificacion(
                    padre = u, 
                    alumno = u.get_hijos()[0],
                    fechaCreacion = datetime.datetime.now(), 
                    fechaEnvio = None, 
                    texto = t, 
                    estado = ESTADO_NOTIFICACION[0][0],
                    confidencial = True)
                n.save()
            except IndexError:
                return render_to_response(
                        "akademic/error.html", 
                        context,
                        context_instance=RequestContext(request)
                    )

    return render_to_response(
            TEMPLATES['pas_reenvio_pass'],
            context,
            context_instance=RequestContext(request)
        )