コード例 #1
0
ファイル: views.py プロジェクト: esauro/akademic
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))
コード例 #2
0
ファイル: views.py プロジェクト: esauro/akademic
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()