def informe_partes (request): """ Informe de los partes que han enviado los profesores. """ url = 'informe_parte_director.html' try: profesor = checkIsProfesor(request.user) if not isJefeEstudios(profesor): raise UnauthorizedAccess() url = 'informe_parte_jefeestudios.html' except UnauthorizedAccess: if not isDirector(request.user): raise UnauthorizedAccess("Necesita tener privilegios de Director o Jefe de\ Estudios para acceder a este recurso") form = RangoFechasForm() fechaInicio = fechaFin = None if request.POST: form = RangoFechasForm(request.POST) if form.is_valid(): fechaInicio = form.cleaned_data['fechaInicio'] fechaFin = form.cleaned_data['fechaFin'] # En la primera impresión de la vista, sin seleccionar # una fecha mostramos el rango desde hace un mes hasta la actualidad. if not fechaInicio and not fechaFin: fechaInicio, fechaFin = getFechaRange() context = {} context['fechaInicio'] = fechaInicio context['fechaFin'] = fechaFin informe = [] for p in Profesor.objects.all().order_by('persona__apellidos', 'persona__nombre'): # FIXME: Esto no tiene en cuenta los días festivos, nosotros tampoco, pero los tenemos que # tener en el futuro. profe = {} total, partes, porcentaje = p.getInformePartes(fechaInicio, fechaFin) if total: profe['profesor'] = p profe['horas'] = total profe['partes'] = partes profe['porcentaje'] = porcentaje informe.append (profe) context['informe'] = informe context['form'] = form return render_to_response( 'akademic/richWebBrowser/' + url, context, context_instance=RequestContext(request) )
def informe_personalizado(request, grupo = None): """ Devuelve el listado de todos los alumnos de la tutoría y un formulario con un intervalo de fechas para generar los informes personalizados. """ if isOrientador(request.user) and grupo: tutor = Tutor.objects.get(grupo = grupo) else: tutor = checkIsTutor(request.user) context = {} form = RangoFechasForm() if request.POST: new_data = request.POST.copy() form = RangoFechasForm(request.POST) if form.is_valid(): fechaInicio = form.cleaned_data['fechaInicio'] fechaFin = form.cleaned_data['fechaFin'] context['fechaInicio'] = fechaInicio context['fechaFin'] = fechaFin context['curso'] = tutor.grupo informe = [] for alu in Alumno.filter(pk__in = new_data.getlist('seleccion')): aux = {} aux['alumno'] = alu aux['informePersonal'] = alu.getResumenTutor(fechaInicio, fechaFin, False) informe.append(aux) context['informe'] = informe if informe and 'pdfSubmit' in new_data: context['profesor'] = tutor.profesor informe = _informePersonalizadoGrupo(context) return informe.HttpResponsePDF(filename="informes") # Esto se pasa en el contexto para indicar que hay más de un formulario en la vista. context['noform'] = True context['profesor'] = tutor.profesor context['grupo'] = tutor.grupo context['alumnos'] = tutor.grupo.getAlumnos() context['form'] = form url = "listaAlumnosTutoria.html" if grupo: url = "listaAlumnosOrientador.html" return render_to_response( 'akademic/richWebBrowser/' + url, context, context_instance=RequestContext(request) )
def resumenEvaluacionProfesor(request, tipo = 'Profesor', grupo = None): """ Devuelve los totales de asistencia, retrasos, comportamiento, tarea y material en las asignaturas y grupos que ha seleccionado el profesor de entre las que él mismo imparte, para facilitar la evaluación """ context = {} if tipo == 'Profesor': profesor = checkIsProfesor(request.user) context['listaAsignaturas'] = profesor.getAsignaturas() else: if isOrientador(request.user) and grupo: tutor = Tutor.objects.get(grupo = grupo) else: tutor = checkIsTutor(request.user) context['listaAsignaturas'] = tutor.getAsignaturasTutoria() form = RangoFechasForm() d = request.POST or request.GET if d: form = RangoFechasForm(d) asignas = d.getlist('asignaturas') if form.is_valid(): fechaInicio = form.cleaned_data['fechaInicio'] fechaFin = form.cleaned_data['fechaFin'] context['fechaInicio'] = fechaInicio context['fechaFin'] = fechaFin context['urlimprimir'] = "fechaInicio_year=%s&fechaInicio_month=%s&fechaInicio_day=%s&" % ( fechaInicio.year, fechaInicio.month, fechaInicio.day) context['urlimprimir'] += "fechaFin_year=%s&fechaFin_month=%s&fechaFin_day=%s" % ( fechaFin.year, fechaFin.month, fechaFin.day) for i in asignas: context['urlimprimir'] += '&asignaturas=%s' % i if tipo == 'Profesor': context['listados'] = profesor.getResumenEvaluacion(asignas, fechaInicio, fechaFin) else: context['listados'] = tutor.profesor.getResumenEvaluacion(asignas, fechaInicio, fechaFin) context['fechaImpresion'] = datetime.datetime.now() context['form'] = form context['noform'] = True if request.GET: if request.GET.has_key('csv'): return CSVResumenEvaluacion (context['listados']) return render_to_response('akademic/richWebBrowser/printResumenEvaluacionProfesor.html', context, context_instance=RequestContext(request)) url = "resumenEvaluacion%s.html" if grupo: url = "resumenEvaluacionOrientador%s.html" return render_to_response('akademic/richWebBrowser/' + url % tipo, context, context_instance=RequestContext(request))
def resumen_tutor(request): """ Devuelve un selector de fecha y una vez seleccionada la fecha un resumen de todos los eventos en las distintas asignaturas de la tutoría del usuario. """ tutor = checkIsTutor(request.user) context = {} form = RangoFechasForm() if request.POST: form = RangoFechasForm(request.POST) if form.is_valid(): fechaini = form.cleaned_data['fechaInicio'] fechafin = form.cleaned_data['fechaFin'] context['resumen'] = tutor.getResumenTutor(fechaini, fechafin) context['form'] = form return render_to_response( 'akademic/richWebBrowser/resumenTutor.html', context, context_instance=RequestContext(request) )
def informe_tutor(request, grupo = None): """ Devuelve un selector de fecha y una vez seleccionada la fecha un informe detallado de todos los eventos producidos en las distintas asignaturas de la tutoría del usuario. """ profesor = None if isOrientador(request.user) and grupo: tutor = Tutor.objects.get(grupo = grupo) else: profesor = checkIsProfesor(request.user) if isJefeEstudios(profesor): tutor = Tutor.objects.get(grupo = grupo) else: tutor = checkIsTutor(request.user) context = {} form = RangoFechasForm() if request.POST: form = RangoFechasForm(request.POST) if form.is_valid(): fechaInicio = form.cleaned_data['fechaInicio'] fechaFin = form.cleaned_data['fechaFin'] context['resumen'] = tutor.getInformeTutor(fechaInicio, fechaFin) context['form'] = form url = "informeTutor.html" if profesor and isJefeEstudios(profesor): url = "informeJefeEstudios.html" elif grupo: url = "informeOrientador.html" return render_to_response( 'akademic/richWebBrowser/' + url, context, context_instance=RequestContext(request) )