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))
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))
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))
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))
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))
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))
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))
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))
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))
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))