Esempio n. 1
0
 def test_alumno_permission_with_no_jefe_estudios(self):
     u = User.objects.filter(username = '******')[0]
     p = AlumnoPermission(u)
     alu = Alumno.objects.all()[0]
     self.assertEqual(False, p.has_alu_priv(alu)) 
     m = Asignatura.objects.filter(nombreCorto = u'Quimica')[0]
     self.assertEqual(False, p.has_alu_priv(alu, m))      
Esempio n. 2
0
 def test_alumno_permission_with_coordinador(self):
     u = User.objects.filter(username = '******')[0]
     p = AlumnoPermission(u)
     alu = Alumno.objects.all()[0]
     self.assertEqual(True, p.has_alu_priv(alu)) 
     m = Asignatura.objects.filter(nombreCorto = 'Matematicas')[0]
     self.assertEqual(True, p.has_alu_priv(alu, m))
Esempio n. 3
0
 def test_alumno_permission_with_director(self):
     u = User.objects.filter(username = '******')[0]
     p = AlumnoPermission(u)
     alu = Alumno.objects.all()[0]
     #FIXME: provisionalmente False puesto que no hay permiso de director
     #       En cuanto se agregue este permiso, cambiarlo en ambas
     self.assertEqual(False, p.has_alu_priv(alu)) 
     m = Asignatura.objects.filter(nombreCorto = u'Quimica')[0]
     self.assertEqual(False, p.has_alu_priv(alu, m))      
Esempio n. 4
0
 def test_alumno_permission_with_no_prof(self):
     u = User.objects.filter(username = '******')[0]
     p = AlumnoPermission(u)
     alu = Alumno.objects.all()[0]
     self.assertEqual(False, p.has_alu_priv(alu))
     m = Asignatura.objects.filter(nombreCorto = 'Matematicas')[0]
     self.assertEqual(False, p.has_alu_priv(alu, m))
     m = Asignatura.objects.filter(nombreCorto = u'Quimica')[0]
     self.assertEqual(False, p.has_alu_priv(alu, m))        
Esempio n. 5
0
def listaCalificaciones (request):
    """
        Muestra las calificaciones de los hijos
    """
    context = {}
    context['hijos'] = []
    context['nombre'] = "Calificaciones"
    if request.POST:
        post = request.POST.copy()
        if int(post['alumno_id']) != 0:
            try:
                i = Alumno.objects.get(pk = post['alumno_id'])
                context['hijos'].append( {
                    'hijo': i, 
                    'evaluaciones': i.getCalificaciones(None, True),
                })
            except Alumno.DoesNotExist:
                context['error'] = "El hijo seleccionado no existe"
            return render_to_response('padres/listaCalificaciones.html', context, context_instance=RequestContext(request))
    
    padre = isPadre(request.user)
    hijos = padre.get_hijos_matriculados()
    p = AlumnoPermission(request.user)
    for i in hijos:
        if p.has_alu_priv(i):
            context['hijos'].append( { 
                'hijo' : i,
                'evaluaciones' : i.getCalificaciones(None, True),
            } )
    context['numHijos'] = len(context['hijos'])
    return render_to_response('padres/listaCalificaciones.html', context, context_instance=RequestContext(request))
Esempio n. 6
0
def comentarios(request, comm_id = None):
    """
        Vista de los comentarios creados por los profesores sobre los hijos de un
        determinado padre.
    """
    context = {}
    context['nombre'] = 'Comentarios'
    
    if comm_id == None:
        padre = isPadre(request.user)
        hijos = padre.get_hijos_matriculados()
        context['hijos'] = []
        p = AlumnoPermission(request.user)
        for i in hijos:
            if p.has_alu_priv(i):
                context['hijos'].append( { 
                    'hijo' : i,
                    'comentarios' : i.getComentarios(),
                } )
        if not context['hijos']:
            context['error'] = "No se han encontrado hijos"
            return render_to_response('padres/comentarios.html', context, context_instance=RequestContext(request))
        context['numHijos'] = len(context['hijos'])
    else:
        try:
            context['comm'] = Comentario.objects.get(pk = comm_id)
            context['comm'].leido = True
            context['comm'].save()
        except Comentario.DoesNotExist:
            context['error'] = 'Lo sentimos, el comentario que está intentando ver no existe'

    return render_to_response('padres/comentarios.html', context, context_instance=RequestContext(request))
Esempio n. 7
0
def citasPadres(request):
    """
        Vista para la gestión de citas de los padres
    """
    context = {}
    padre = isPadre(request.user)
    if request.GET: # Nos han enviado un formulario
        if (request.GET.has_key('borrar') and request.GET.has_key('cita_id')):
            # Borrado de citas
            try:
                cita = Cita.objects.get(pk = request.GET['cita_id'])
            except Cita.DoesNotExist:
                context['error'] = 'No existe la cita'
                return render_to_response('padres/citas.html', context, context_instance=RequestContext(request))

            if (cita.padre and cita.alumno.padre != padre) or (cita.madre and cita.alumno.madre != padre):
                context['error'] = 'Fallo al borrar: los propietarios no corresponden'
                return render_to_response('padres/citas.html', context, context_instance=RequestContext(request))

            # TODO: También debería comprobar que la cita no haya pasado pero lo
            # dejo con prioridad baja.
            cita.delete()
            context['aviso'] = 'Cita eliminada'
        else:   
            # Creando nueva cita
            tut_id = request.GET['tutoria_id']
            fecha = request.GET['fecha']
            alu_id = request.GET['hijo']
            alumno = get_object_or_404(Alumno, pk = alu_id)
            tutoria = get_object_or_404(Tutoria, pk = tut_id)
            msg = Cita.nueva_cita(tutoria, fecha, alumno, padre)
            if msg:
                context['error'] = msg
                return render_to_response('padres/citas.html', context, context_instance=RequestContext(request))

            context['aviso'] = 'Su cita se ha creado satisfactoriamente'

    log.debug("Consultando hijos matriculados")
    hijos = padre.get_hijos_matriculados()
    log.debug("Hijos: %s" % hijos)
    log.debug("Consultando citas futuras")
    citas = Cita.objects.filter(alumno__in = hijos, fecha__gte = datetime.datetime.now()).order_by('fecha')
    context['citas'] = citas
    context['hijos'] = []
    p = AlumnoPermission(request.user)
    for i in hijos:
        log.debug("Consultando privilegios del padre sobre el alumno %s" % i)
        if p.has_alu_priv(i):
            context['hijos'].append(i.horario_tutorias())

    return render_to_response('padres/citas.html', context, context_instance=RequestContext(request))
Esempio n. 8
0
def listaFaltas (request, tipo_falta):
    """
        Muestra la lista de faltas de todos los hijos de un padre
    """
    if request.POST:
        post = request.POST.copy()
        if int(post['alumno_id']) != 0:
            return listaFaltasHijo (request, post['alumno_id'], tipo_falta)

    context = {}
    
    padre = isPadre(request.user)
    hijos = padre.get_hijos_matriculados()
    
    hijo_infantil = False
    hijo_noinfantil = False
    context['hijos'] = []
    p = AlumnoPermission(request.user)
    tipo = tipoFaltas[tipo_falta]['tipo']
    for i in hijos:
        if p.has_alu_priv(i):
            context['hijos'].append( { 
                'hijo' : i,
                'faltas' : i.getFaltas(tipo),
            } )
            g = i.getGrupo()
            if g and g.grupo.curso.ciclo.nivel.nombre == INF:
                hijo_infantil = True
            else:
                hijo_noinfantil = True

    if not context['hijos']:
        context['error'] = "No se han encontrado hijos"
        return render_to_response('padres/faltas_generica.html', context, context_instance=RequestContext(request))

    context['nombre'] = ""
    if hijo_noinfantil:
        context['nombre'] += tipoFaltas[tipo_falta]['nombre']
    if hijo_infantil:
        if context['nombre'] != "":
            context['nombre'] += '/'
        context['nombre'] += tipoFaltas[tipo_falta]['nombreInfantil']
    context['numHijos'] = context['hijos'].__len__()
    return render_to_response('padres/faltas_generica.html', context, context_instance=RequestContext(request))
Esempio n. 9
0
def listaAusencias (request, hijo_id = None):
    """
        Muestra la lista de ausencias de un hijo determinado o de todos si hijo_id es None
    """
    context = {}

    if ((hijo_id is None) and request.POST):
        # El id del hijo o lo sacamos del post o de los parámetros de entrada
        post = request.POST.copy()
        if int(post['alumno_id']) != 0:
            hijo_id = int (post['alumno_id'])

    padre = isPadre(request.user)
    if hijo_id is not None: # Si tenemos hijo verificamos que tenga privilegio para ver los datos
        if (not padre.get_hijos_matriculados().filter(id = hijo_id)):
            context['error'] = "No se ha encontrado el hijo con id %d" % hijo_id
            return render_to_response('padres/faltas_generica.html', context, context_instance=RequestContext(request))
        hijos = [Alumno.objects.get (pk = hijo_id)]
        context['filtrado'] = True
    else:
        hijos = padre.get_hijos_matriculados()

    context['nombre'] = 'Ausencias'
    context['hijos'] = []
    p = AlumnoPermission(request.user)
    for i in hijos:
        if p.has_alu_priv(i):
            context['hijos'].append( { 
                'hijo' : i,
                'faltas' : Ausencia.objects.filter (alumno = i),
            } )
    if not context['hijos']:
        context['error'] = "No se han encontrado hijos matriculados"
        return render_to_response('padres/faltas_generica.html', context, context_instance=RequestContext(request))
    context['numHijos'] = context['hijos'].__len__()
    return render_to_response('padres/ausencias.html', context, context_instance=RequestContext(request))
Esempio n. 10
0
 def test_alumno_permission_with_no_padre_potestad(self):
     u = User.objects.filter(username = '******')[0]
     p = AlumnoPermission(u)
     alu = Alumno.objects.all()[0]
     self.assertEqual(False, p.has_alu_priv(alu))