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 nuevaCita(request): """ Este método permite poner citas en las horas de tutoría al personal de la portería del centro. """ pas = isPas(request.user) if not pas: return error_logging_pas(request) context = {} context['task'] = 'nuevaCita' # Estos parámetros son necesarios para el formulario fechas context['action'] = './' context['pas'] = pas context['grupos'] = GrupoAula.objects.filter(curso__ciclo__nivel__cursoEscolar = settings.CURSO_ESCOLAR_ACTUAL).exclude(seccion = "Pendientes").order_by( 'curso__ciclo__nivel', 'curso', 'seccion') context['etapa'] = 'grupos' def html_response(): return render_to_response( TEMPLATES['pas_nueva_cita'], context, context_instance=RequestContext(request) ) if request.POST: new_data = request.POST.copy() if new_data.has_key('etapa'): if new_data['etapa'] == 'grupos': # Se ha seleccionado el grupo con el que se quiere trabajar. # Simplemente tendremos que mostrar los alumnos pertenecientes a ese # grupo if new_data.has_key('grupo'): # Devolver los alumnos del grupo y el tutor, obviamente que estén matriculados context['etapa'] = 'alumno' alus = GrupoAulaAlumno.objects.filter(grupo=new_data['grupo']).values('alumno').distinct() alusId = [] for i in alus: alusId.append(i['alumno']) alumnos = Alumno.filter(id__in=alusId) context['alumnos'] = alumnos context['tutor'] = Tutor.objects.filter(grupo=new_data['grupo'])[0] else: context['aviso'] = "No ha seleccionado un grupo" elif new_data['etapa'] == 'alumno': # Estamos en la selección de alumno if new_data.has_key('alumnosel'): context['alumno'] = Alumno.objects.get(pk=new_data['alumnosel']) context['tutor'] = Tutor.objects.get(pk=new_data['tutor']) tut = Tutoria.objects.filter(tutor=context['tutor']) if tut: context['tutoria'] = tut[0] context['fechas'] = context['tutoria'].proximasFechas(context['alumno']) context['etapa'] = "cita" else: context['aviso'] = "No hay horario de atención a padres definido" context['etapa'] = "grupos" else: context['aviso'] = "No ha seleccionado al alumno" elif new_data['etapa'] == 'cita': try: (dia, mes, anyo) = new_data['fechasel'].split('-') except KeyError: context['aviso'] = "No ha elegido un grupo" return html_response() tut = Tutor.objects.get(pk = new_data['tutor']) tutoria = Tutoria.objects.filter(tutor = tut)[0] alu = Alumno.objects.get(pk = new_data['alumno']) fecha = datetime.datetime(year = int(anyo), month= int(mes), day = int(dia)) if new_data.has_key('madre'): madre = True else: madre = False if new_data.has_key('padre'): padre = True else: padre = False ncita = Cita(tutoria = tutoria, padre = padre, madre = madre, alumno = alu, fecha = fecha, avisadoSMS = False, avisadoEMAIL = False) ncita.save() context['aviso'] = "Se ha reservado la cita correctamente" else: context['aviso'] = "Sólo se listan los cursos para los que se ha definido alguna tutoría" return html_response()