Esempio n. 1
0
    def __init__(self, request, studentUserUJI):
        self.numberOfJudgeMembers = NUMBER_OF_JUDGE_MEMBERS

        self.request = request

        self.project, self.judgeMembers = None, None

        if studentUserUJI:
            self.project = QueryProject().getProjectByCourseAndStudent(
                QueryCourse().getCourseSelected(self.request),
                QueryStudent().getStudentByUserUJI(studentUserUJI))
            self.judgeMembers = QueryJudgeMembers().getListMembersByProject(
                self.project)

        self.forms = []
        self.id_members = []
        for i in xrange(self.numberOfJudgeMembers):
            if request.method == 'POST':
                id_member = request.POST.get("miembro" + str(i) + "-miembro",
                                             '')
                form = MemberJudgeForm(request.POST, prefix="miembro" + str(i))
                if id_member:
                    self.id_members.append({
                        'id': i + 1,
                        'id_member': id_member
                    })
            else:
                form = MemberJudgeForm(prefix="miembro" + str(i))
                form.fields["miembro"].queryset = QueryUser().getListOfUser()
                if self.judgeMembers:
                    form.initial["miembro"] = self.judgeMembers[i].miembro
            self.forms.append(form)
Esempio n. 2
0
def activarValoracion(request, user, course, alumnoid):
    student = QueryStudent().getStudentByUserUJI(alumnoid)
    if not student : return HttpResponseNotFound()
    
    project = QueryProject().getProjectByCourseAndStudent(course, student)
    if not project : return HttpResponseNotFound()
                                                 
    if not project.isUnresolved(): return HttpResponseForbidden()
    
    if (request.method == "POST"):
        activaValoracion(project)
        return HttpResponseRedirect('/coordinacio/projectes/')
    
    title = "Activar valoració"
    
    mensaje = u"Clica per a posar en curs l'evaluació de l'alumne " + student.nombreCompleto() + "."

    return render_to_response('mensajeValoracion.html', locals())
Esempio n. 3
0
    def __init__(self, request, studentUserUJI):
        self.request = request
        course = QueryCourse().getCourseSelected(self.request)
        items = QueryItem().getListItemsByEvaluationSystem(
            QueryEvaluationSystem().getEvaluationSystemByCourse(course))

        self.project = None
        if studentUserUJI:
            self.project = QueryProject().getProjectByCourseAndStudent(
                QueryCourse().getCourseSelected(request),
                QueryStudent().getStudentByUserUJI(studentUserUJI))

        projectStatus = QueryStatusProjectInCourse().getProjectByProject(
            self.project)
        if projectStatus:
            nextItem = QueryItem().getNextItem(projectStatus.hito)
        else:
            nextItem = QueryItem().getFirstItemCourse(course)
        self.forms = []
        self.fechas = []
        inputDate = False
        duration = 0
        for item in items:
            if self.project:
                if self.project.estado == "C":
                    if item == projectStatus.hito: inputDate = True
                elif self.project.estado == "L":
                    if item == nextItem: inputDate = True
            else:
                inputDate = True
            if inputDate:
                if request.method == "POST":
                    fecha = request.POST.get(str(item.id) + "-fecha", '')
                    form = {
                        "id": str(item.id) + "-fecha",
                        "label": item.nombre,
                        "plazo": duration + item.plazo,
                        "form": EstimateDateForm(request.POST,
                                                 prefix=str(item.id))
                    }
                    if fecha:
                        self.fechas.append({"item": item, "fecha": fecha})
                else:
                    form = {
                        "id": str(item.id) + "-fecha",
                        "label": item.nombre,
                        "plazo": duration + item.plazo,
                        "form": EstimateDateForm(prefix=str(item.id))
                    }
                    estimateDate = QueryEstimateDate(
                    ).getEstimateDateByProjectAndItem(self.project, item)
                    if estimateDate:
                        form["form"].initial["fecha"] = estimateDate.fecha
                self.forms.append(form)
            else:
                duration += item.plazo
Esempio n. 4
0
    def editStudent(self):
        alumnoDB = QueryStudent().getStudentByUserUJI(self.alumnoid)
        alumnoDB.nombre = self.alumno.nombre
        alumnoDB.apellidos = self.alumno.apellidos
        alumnoDB.usuarioUJI = self.alumno.usuarioUJI
        alumnoDB.save()

        self.alumno = alumnoDB
Esempio n. 5
0
def activarValoracion(request, user, course, alumnoid):
    student = QueryStudent().getStudentByUserUJI(alumnoid)
    if not student: return HttpResponseNotFound()

    project = QueryProject().getProjectByCourseAndStudent(course, student)
    if not project: return HttpResponseNotFound()

    if not project.isUnresolved(): return HttpResponseForbidden()

    if (request.method == "POST"):
        activaValoracion(project)
        return HttpResponseRedirect('/coordinacio/projectes/')

    title = "Activar valoració"

    mensaje = u"Clica per a posar en curs l'evaluació de l'alumne " + student.nombreCompleto(
    ) + "."

    return render_to_response('mensajeValoracion.html', locals())
Esempio n. 6
0
def index(request, login):
    teacher = QueryUser().getUserByUserUJI(login)
    if teacher:
        if teacher.isCoordinator():
            return HttpResponseRedirect('/coordinacio/projectes/')
        else:
            return HttpResponseRedirect('/professorat/projectes/')

    student = QueryStudent().getStudentByUserUJI(login)
    if student:
        return HttpResponseRedirect('/valoracio/' + login + '/')
    else:
        return HttpResponseNotFound()
Esempio n. 7
0
 def editStudent(self):
     alumnoDB = QueryStudent().getStudentByUserUJI(self.alumnoid)
     alumnoDB.nombre = self.alumno.nombre
     alumnoDB.apellidos = self.alumno.apellidos
     alumnoDB.usuarioUJI = self.alumno.usuarioUJI
     alumnoDB.save()
     
     self.alumno = alumnoDB
Esempio n. 8
0
def reActivarValoracion(request, user, alumnoid, course, evaluacionid):
    student = QueryStudent().getStudentByUserUJI(alumnoid)
    if not student: return HttpResponseNotFound()
    project = QueryProject().getProjectByCourseAndStudent(course, student)
    if not project: return HttpResponseNotFound()
    evaluation = QueryEvaluation().getEvaluationByEvaluation(evaluacionid)
    if not evaluation: return HttpResponseNotFound()

    if not QueryForm().isFormCompletedOfProjectItemEvaluator(
            project, evaluation.getItem(), evaluation.getEvaluator()):
        return HttpResponseForbidden()

    if (request.method == 'POST'):
        reActivaFormulario(project, evaluation)
        return HttpResponseRedirect(
            request.path.split('formulari/evaluacio/')[0])

    title = "Reactivar formulari"
    mensaje = u"Reactivar el formulari de l'evaluació " + unicode(
        evaluation) + " de " + unicode(evaluation.getItem(
        )) + " de l'alumne " + student.nombreCompleto() + "."

    return render_to_response('mensajeValoracion.html', locals())
Esempio n. 9
0
def reActivarValoracion(request, user, alumnoid, course, evaluacionid):
    student = QueryStudent().getStudentByUserUJI(alumnoid)
    if not student : return HttpResponseNotFound()
    project = QueryProject().getProjectByCourseAndStudent(course, student)
    if not project : return HttpResponseNotFound()
    evaluation = QueryEvaluation().getEvaluationByEvaluation(evaluacionid)
    if not evaluation : return HttpResponseNotFound()
    
    if not QueryForm().isFormCompletedOfProjectItemEvaluator(project, evaluation.getItem(), evaluation.getEvaluator()):
        return HttpResponseForbidden()
    
    if ( request.method == 'POST' ):
        reActivaFormulario(project, evaluation)
        return HttpResponseRedirect(request.path.split('formulari/evaluacio/')[0])
    
    title = "Reactivar formulari"
    mensaje = u"Reactivar el formulari de l'evaluació " + unicode(evaluation) + " de " + unicode(evaluation.getItem()) + " de l'alumne " + student.nombreCompleto() + "."
    
    return render_to_response('mensajeValoracion.html', locals())
Esempio n. 10
0
    def editProject(self):
        curso = self.course

        alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)

        proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
        proyectoDB.tutor = self.tutor
        proyectoDB.supervisor = self.proyecto.supervisor
        proyectoDB.email = self.proyecto.email
        proyectoDB.empresa = self.proyecto.empresa
        proyectoDB.telefono = self.proyecto.telefono
        proyectoDB.titulo = self.proyecto.titulo
        proyectoDB.inicio = self.proyecto.inicio
        proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
        proyectoDB.otrosDatos = self.proyecto.otrosDatos
        proyectoDB.estado = self.estado

        proyectoDB.save()

        self.proyecto = proyectoDB
Esempio n. 11
0
def estadoValoracion(request, login, course, alumnoid):
    evaluationSystem = QueryEvaluationSystem().getEvaluationSystemByCourse(
        course)
    if not evaluationSystem:
        return HttpResponseNotFound()

    if not evaluationSystem.isActive():
        return HttpResponseNotFound()

    student = QueryStudent().getStudentByUserUJI(alumnoid)
    if not student: return HttpResponseNotFound()

    project = QueryProject().getProjectByCourseAndStudent(course, student)
    if not (project): return HttpResponseNotFound()
    coordinator = False
    if login == alumnoid:
        rol = "A"
    else:
        if login in QueryProject().getloginByRol(
                project, "TU") and "professorat" in request.path:
            rol = "TU"
            user = QueryUser().getUserByUserUJI(login)
            if not user: return HttpResponseForbidden()
        else:
            coordinator = QueryUser().getUserCoordinatorByUserUJI(login)
            if not coordinator: return HttpResponseForbidden()
            user = coordinator
            rol = "C"

    hitos = QueryEvaluationSystemTreeCompleteOfProject(project, True,
                                                       rol).getList()

    grupos = True
    activar = project.isUnresolved()
    cursoActual = QueryCourse().getLastCourse() == course
    return render_to_response("sistemaEvaluacionValoradoListado.html",
                              locals())
Esempio n. 12
0
    def __init__(self, request, action="nuevo", alumnoUserUJI="", tutor=None):
        self.alumno = Alumno()
        self.proyecto = Proyecto()
        self.tutor = None
        self.action = action
        self.request = request
        self.alumnoid = alumnoUserUJI
        self.estado = None
        self.course = QueryCourse().getCourseSelected(self.request)

        self.tutorForm = None
        self.tribunalForm = None
        self.dateForm = None

        coordinator = tutor == None

        if action != "nuevo":
            self.alumno = QueryStudent().getStudentByUserUJI(alumnoUserUJI)
            self.proyecto = QueryProject().getProjectByCourseAndStudent(
                QueryCourse().getCourseSelected(self.request), self.alumno)

            self.estado = self.proyecto.estado
            if coordinator:
                statusProject = QueryStatusProjectInCourse(
                ).getProjectByProject(self.proyecto)
                item = statusProject.hito if statusProject else None
                if self.proyecto.estado == "L":
                    nextItem = QueryItem().getNextItem(
                        item) if item else QueryItem().getFirstItemCourse(
                            self.proyecto.curso)
                else:
                    nextItem = item
                if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                    self.tribunalForm = TribunalForm(request, alumnoUserUJI)

        self.alumnoForm = AlumnoForm(prefix='alumno', instance=self.alumno)
        self.proyectoForm = ProyectoForm(prefix='proyecto',
                                         instance=self.proyecto)
        self.dateForm = EstimateDateItemForm(
            request, alumnoUserUJI) if self.estado != "P" else None

        if coordinator:
            if action != "nuevo":
                self.tutor = self.proyecto.tutor
            self.tutorForm = TutorForm(prefix='tutor')
            self.tutorForm.fields["tutor"].queryset = QueryUser(
            ).getListOfTutorCoordinator()
            self.tutorForm.initial["tutor"] = self.tutor
        else:
            self.tutor = tutor

        if request.method == 'POST':  # Leer los datos
            if action != "nuevo":
                if coordinator:
                    statusProject = QueryStatusProjectInCourse(
                    ).getProjectByProject(self.proyecto)
                    item = statusProject.hito if statusProject else None
                    if self.estado == "L":
                        nextItem = QueryItem().getNextItem(
                            item) if item else QueryItem().getFirstItemCourse(
                                self.proyecto.curso)
                    else:
                        nextItem = item

                    if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                        self.tribunalForm = TribunalForm(
                            request, alumnoUserUJI)

            self.alumnoForm = AlumnoForm(request.POST,
                                         prefix='alumno',
                                         instance=self.alumno)
            self.proyectoForm = ProyectoForm(request.POST,
                                             prefix='proyecto',
                                             instance=self.proyecto)
            self.dateForm = EstimateDateItemForm(
                request, alumnoUserUJI) if self.estado != "P" else None
            if coordinator:
                self.tutorId = self.proyectoForm.data["tutor-tutor"]
            else:
                self.tutorId = self.tutor.id
Esempio n. 13
0
class ProyectoAlumnoForm():
    def __init__(self, request, action="nuevo", alumnoUserUJI="", tutor=None):
        self.alumno = Alumno()
        self.proyecto = Proyecto()
        self.tutor = None
        self.action = action
        self.request = request
        self.alumnoid = alumnoUserUJI
        self.estado = None
        self.course = QueryCourse().getCourseSelected(self.request)

        self.tutorForm = None
        self.tribunalForm = None
        self.dateForm = None

        coordinator = tutor == None

        if action != "nuevo":
            self.alumno = QueryStudent().getStudentByUserUJI(alumnoUserUJI)
            self.proyecto = QueryProject().getProjectByCourseAndStudent(
                QueryCourse().getCourseSelected(self.request), self.alumno)

            self.estado = self.proyecto.estado
            if coordinator:
                statusProject = QueryStatusProjectInCourse(
                ).getProjectByProject(self.proyecto)
                item = statusProject.hito if statusProject else None
                if self.proyecto.estado == "L":
                    nextItem = QueryItem().getNextItem(
                        item) if item else QueryItem().getFirstItemCourse(
                            self.proyecto.curso)
                else:
                    nextItem = item
                if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                    self.tribunalForm = TribunalForm(request, alumnoUserUJI)

        self.alumnoForm = AlumnoForm(prefix='alumno', instance=self.alumno)
        self.proyectoForm = ProyectoForm(prefix='proyecto',
                                         instance=self.proyecto)
        self.dateForm = EstimateDateItemForm(
            request, alumnoUserUJI) if self.estado != "P" else None

        if coordinator:
            if action != "nuevo":
                self.tutor = self.proyecto.tutor
            self.tutorForm = TutorForm(prefix='tutor')
            self.tutorForm.fields["tutor"].queryset = QueryUser(
            ).getListOfTutorCoordinator()
            self.tutorForm.initial["tutor"] = self.tutor
        else:
            self.tutor = tutor

        if request.method == 'POST':  # Leer los datos
            if action != "nuevo":
                if coordinator:
                    statusProject = QueryStatusProjectInCourse(
                    ).getProjectByProject(self.proyecto)
                    item = statusProject.hito if statusProject else None
                    if self.estado == "L":
                        nextItem = QueryItem().getNextItem(
                            item) if item else QueryItem().getFirstItemCourse(
                                self.proyecto.curso)
                    else:
                        nextItem = item

                    if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                        self.tribunalForm = TribunalForm(
                            request, alumnoUserUJI)

            self.alumnoForm = AlumnoForm(request.POST,
                                         prefix='alumno',
                                         instance=self.alumno)
            self.proyectoForm = ProyectoForm(request.POST,
                                             prefix='proyecto',
                                             instance=self.proyecto)
            self.dateForm = EstimateDateItemForm(
                request, alumnoUserUJI) if self.estado != "P" else None
            if coordinator:
                self.tutorId = self.proyectoForm.data["tutor-tutor"]
            else:
                self.tutorId = self.tutor.id

    def is_valid(self):
        self.alumnoEsValido = self.alumnoForm.is_valid()
        if (not self.alumnoEsValido and self.isEditing()):
            if (self.alumnoForm.data["alumno-usuarioUJI"] == self.alumnoid):
                self.alumnoEsValido = True

        if self.tutorForm:
            tutor = self.Tutor(self.tutorId)
            tutorIsValid = tutor.is_valid()
            self.tutor = tutor.user
        else:
            tutorIsValid = True

        if self.tribunalForm:
            tribunalIsValid = self.tribunalForm.is_valid()
        else:
            tribunalIsValid = True

        if self.dateForm:
            dateIsValid = self.dateForm.is_valid()
        else:
            dateIsValid = True

        return (self.alumnoEsValido and self.proyectoForm.is_valid()
                and tutorIsValid and tribunalIsValid and dateIsValid)

    def isEditing(self):
        return self.action == "edita"

    def isTutorValid(self, tutorId):
        tutor = self.Tutor(tutorId)
        valid = tutor.is_valid()
        if not valid:
            valid = tutor.is_empty() and self.isEditing()
        return valid

    def getAlumnoProyecto(self):
        return self.alumno, self.proyecto

    def getAlumnoId(self):
        return self.alumnoid

    def getAccion(self):
        return self.accion

    def save(self):
        if (self.action == "nuevo"):
            self.createProjectStudent()
        else:  # edicion
            self.editProjectStudent()

        if self.tribunalForm:
            self.tribunalForm.save(self.proyecto)
        if self.dateForm: self.dateForm.save(self.proyecto)

        cambiaEstadoProyecto(self.proyecto)

    def createProjectStudent(self):
        self.createStudent()
        self.createProject()

    def createStudent(self):
        self.alumno.save()

    def createProject(self):
        self.proyecto.alumno = self.alumno
        self.proyecto.curso = self.course
        self.proyecto.tutor = self.tutor
        self.proyecto.estado = "L"
        self.proyecto.save()

    def editProjectStudent(self):
        self.editStudent()
        self.editProject()

    def editStudent(self):
        alumnoDB = QueryStudent().getStudentByUserUJI(self.alumnoid)
        alumnoDB.nombre = self.alumno.nombre
        alumnoDB.apellidos = self.alumno.apellidos
        alumnoDB.usuarioUJI = self.alumno.usuarioUJI
        alumnoDB.save()

        self.alumno = alumnoDB

    def editProject(self):
        curso = self.course

        alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)

        proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
        proyectoDB.tutor = self.tutor
        proyectoDB.supervisor = self.proyecto.supervisor
        proyectoDB.email = self.proyecto.email
        proyectoDB.empresa = self.proyecto.empresa
        proyectoDB.telefono = self.proyecto.telefono
        proyectoDB.titulo = self.proyecto.titulo
        proyectoDB.inicio = self.proyecto.inicio
        proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
        proyectoDB.otrosDatos = self.proyecto.otrosDatos
        proyectoDB.estado = self.estado

        proyectoDB.save()

        self.proyecto = proyectoDB

    class Tutor():
        def __init__(self, tutorId):
            self.tutorId = tutorId
            self.user = None

        def is_valid(self):
            if (not self.is_empty()):
                self.user = QueryUser().getUserById(self.tutorId)
                if self.user.isTutor(): return True
                else: return False
            else:
                return False

        def is_empty(self):
            return self.tutorId == ''
Esempio n. 14
0
 def __init__(self, request, action="nuevo", alumnoUserUJI="", tutor=None):
     self.alumno = Alumno()
     self.proyecto = Proyecto()
     self.tutor = None
     self.action = action
     self.request = request
     self.alumnoid = alumnoUserUJI
     self.estado = None
     self.course = QueryCourse().getCourseSelected(self.request)
     
     self.tutorForm = None
     self.tribunalForm = None
     self.dateForm = None
     
     coordinator = tutor == None
     
     if action != "nuevo" :
         self.alumno = QueryStudent().getStudentByUserUJI(alumnoUserUJI)
         self.proyecto = QueryProject().getProjectByCourseAndStudent(QueryCourse().getCourseSelected(self.request), self.alumno)
         
         
         self.estado = self.proyecto.estado
         if coordinator: 
             statusProject = QueryStatusProjectInCourse().getProjectByProject(self.proyecto)
             item = statusProject.hito if statusProject else None
             if self.proyecto.estado == "L":
                 nextItem = QueryItem().getNextItem(item) if item else QueryItem().getFirstItemCourse(self.proyecto.curso)
             else:
                 nextItem = item
             if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                 self.tribunalForm = TribunalForm(request, alumnoUserUJI)            
     
     self.alumnoForm = AlumnoForm(prefix='alumno', instance=self.alumno)
     self.proyectoForm = ProyectoForm(prefix='proyecto', instance=self.proyecto)
     self.dateForm = EstimateDateItemForm(request, alumnoUserUJI) if self.estado != "P" else None
     
     if coordinator :
         if action != "nuevo" :
             self.tutor = self.proyecto.tutor
         self.tutorForm = TutorForm(prefix='tutor')
         self.tutorForm.fields["tutor"].queryset = QueryUser().getListOfTutorCoordinator()
         self.tutorForm.initial["tutor"] = self.tutor
     else:
         self.tutor = tutor
     
     if request.method == 'POST': # Leer los datos
         if action != "nuevo":
             if coordinator:
                 statusProject = QueryStatusProjectInCourse().getProjectByProject(self.proyecto)
                 item = statusProject.hito if statusProject else None
                 if self.estado == "L": 
                     nextItem = QueryItem().getNextItem(item) if item else QueryItem().getFirstItemCourse(self.proyecto.curso)
                 else:
                     nextItem = item
                 
                 if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                     self.tribunalForm = TribunalForm(request, alumnoUserUJI)
         
         
         self.alumnoForm = AlumnoForm(request.POST, prefix='alumno', instance=self.alumno)
         self.proyectoForm = ProyectoForm(request.POST, prefix='proyecto', instance=self.proyecto)
         self.dateForm = EstimateDateItemForm(request, alumnoUserUJI) if self.estado != "P" else None
         if coordinator :
             self.tutorId = self.proyectoForm.data["tutor-tutor"]
         else:
             self.tutorId = self.tutor.id
Esempio n. 15
0
class ProyectoAlumnoForm():
    def __init__(self, request, action="nuevo", alumnoUserUJI="", tutor=None):
        self.alumno = Alumno()
        self.proyecto = Proyecto()
        self.tutor = None
        self.action = action
        self.request = request
        self.alumnoid = alumnoUserUJI
        self.estado = None
        self.course = QueryCourse().getCourseSelected(self.request)
        
        self.tutorForm = None
        self.tribunalForm = None
        self.dateForm = None
        
        coordinator = tutor == None
        
        if action != "nuevo" :
            self.alumno = QueryStudent().getStudentByUserUJI(alumnoUserUJI)
            self.proyecto = QueryProject().getProjectByCourseAndStudent(QueryCourse().getCourseSelected(self.request), self.alumno)
            
            
            self.estado = self.proyecto.estado
            if coordinator: 
                statusProject = QueryStatusProjectInCourse().getProjectByProject(self.proyecto)
                item = statusProject.hito if statusProject else None
                if self.proyecto.estado == "L":
                    nextItem = QueryItem().getNextItem(item) if item else QueryItem().getFirstItemCourse(self.proyecto.curso)
                else:
                    nextItem = item
                if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                    self.tribunalForm = TribunalForm(request, alumnoUserUJI)            
        
        self.alumnoForm = AlumnoForm(prefix='alumno', instance=self.alumno)
        self.proyectoForm = ProyectoForm(prefix='proyecto', instance=self.proyecto)
        self.dateForm = EstimateDateItemForm(request, alumnoUserUJI) if self.estado != "P" else None
        
        if coordinator :
            if action != "nuevo" :
                self.tutor = self.proyecto.tutor
            self.tutorForm = TutorForm(prefix='tutor')
            self.tutorForm.fields["tutor"].queryset = QueryUser().getListOfTutorCoordinator()
            self.tutorForm.initial["tutor"] = self.tutor
        else:
            self.tutor = tutor
        
        if request.method == 'POST': # Leer los datos
            if action != "nuevo":
                if coordinator:
                    statusProject = QueryStatusProjectInCourse().getProjectByProject(self.proyecto)
                    item = statusProject.hito if statusProject else None
                    if self.estado == "L": 
                        nextItem = QueryItem().getNextItem(item) if item else QueryItem().getFirstItemCourse(self.proyecto.curso)
                    else:
                        nextItem = item
                    
                    if QueryItem().hasTribunalEvaluationThisItem(nextItem):
                        self.tribunalForm = TribunalForm(request, alumnoUserUJI)
            
            
            self.alumnoForm = AlumnoForm(request.POST, prefix='alumno', instance=self.alumno)
            self.proyectoForm = ProyectoForm(request.POST, prefix='proyecto', instance=self.proyecto)
            self.dateForm = EstimateDateItemForm(request, alumnoUserUJI) if self.estado != "P" else None
            if coordinator :
                self.tutorId = self.proyectoForm.data["tutor-tutor"]
            else:
                self.tutorId = self.tutor.id
                         
    def is_valid(self):
        self.alumnoEsValido = self.alumnoForm.is_valid()
        if ( not self.alumnoEsValido and self.isEditing()):
            if ( self.alumnoForm.data["alumno-usuarioUJI"] == self.alumnoid ):
                self.alumnoEsValido = True

        
        if self.tutorForm :
            tutor = self.Tutor(self.tutorId)
            tutorIsValid = tutor.is_valid()
            self.tutor = tutor.user
        else:
            tutorIsValid = True

        if self.tribunalForm :
            tribunalIsValid = self.tribunalForm.is_valid()
        else:
            tribunalIsValid = True

        if self.dateForm :
            dateIsValid = self.dateForm.is_valid()
        else:
            dateIsValid = True
        
        return (self.alumnoEsValido 
                and self.proyectoForm.is_valid() 
                and tutorIsValid
                and tribunalIsValid
                and dateIsValid
        )
    
    def isEditing(self):
        return self.action == "edita"
    
    def isTutorValid(self, tutorId):
        tutor = self.Tutor(tutorId)
        valid = tutor.is_valid()
        if not valid :
            valid =  tutor.is_empty() and self.isEditing()
        return valid
        
    def getAlumnoProyecto(self):
        return self.alumno, self.proyecto
    
    def getAlumnoId(self):
        return self.alumnoid
    
    def getAccion(self):
        return self.accion
    
    def save(self):
        if (self.action == "nuevo"):
            self.createProjectStudent()
        else : # edicion
            self.editProjectStudent()
        
        
        if self.tribunalForm : 
            self.tribunalForm.save(self.proyecto)
        if self.dateForm : self.dateForm.save(self.proyecto)
        
        cambiaEstadoProyecto(self.proyecto)
    
    def createProjectStudent(self):
        self.createStudent()
        self.createProject()
    
    def createStudent(self):
        self.alumno.save()
    
    def createProject(self):
        self.proyecto.alumno = self.alumno
        self.proyecto.curso = self.course
        self.proyecto.tutor = self.tutor
        self.proyecto.estado = "L"
        self.proyecto.save()

    def editProjectStudent(self):
        self.editStudent()
        self.editProject()
    
    def editStudent(self):
        alumnoDB = QueryStudent().getStudentByUserUJI(self.alumnoid)
        alumnoDB.nombre = self.alumno.nombre
        alumnoDB.apellidos = self.alumno.apellidos
        alumnoDB.usuarioUJI = self.alumno.usuarioUJI
        alumnoDB.save()
        
        self.alumno = alumnoDB
        
    def editProject(self):
        curso = self.course
     
        alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)
        
        proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
        proyectoDB.tutor = self.tutor
        proyectoDB.supervisor = self.proyecto.supervisor
        proyectoDB.email = self.proyecto.email
        proyectoDB.empresa = self.proyecto.empresa
        proyectoDB.telefono = self.proyecto.telefono
        proyectoDB.titulo = self.proyecto.titulo
        proyectoDB.inicio = self.proyecto.inicio
        proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
        proyectoDB.otrosDatos = self.proyecto.otrosDatos
        proyectoDB.estado = self.estado
    
        proyectoDB.save()
        
        self.proyecto = proyectoDB
        
    class Tutor():
        def __init__(self, tutorId):
            self.tutorId = tutorId
            self.user = None
            
        def is_valid(self):
            if (not self.is_empty()) :
                self.user = QueryUser().getUserById(self.tutorId)
                if self.user.isTutor() : return True
                else: return False
            else:
                return False
        
        def is_empty(self):
            return self.tutorId == ''
Esempio n. 16
0
def gestionProyectos(request,
                     user,
                     course,
                     accion="nuevo",
                     alumnoid="",
                     profesorid=""):
    project = None
    errors = None
    camposErrores = None
    tutor = None

    if not isEditable(course):
        return HttpResponseForbidden()

    profesor = QueryUser().getUserByUserUJI(profesorid) if profesorid else None

    if profesorid and not profesor:
        return HttpResponseNotFound()

    coordinator = False
    if alumnoid:
        student = QueryStudent().getStudentByUserUJI(alumnoid)
        if student:
            project = QueryProject().getProjectByCourseAndStudent(
                course, student)
            revision = QueryProjectUnresolvedInCourse(
            ).getProjectUnresolvedByProject(project)
            if revision:
                errors = mensajeError(revision)
                camposErrores = revision.campos.split(",")
            if user == project.tutor:
                tutor = user if "professorat" in request.path else None
            else:
                if profesor:
                    if profesor != project.tutor:
                        return HttpResponseNotFound()
                if not user.isCoordinator():
                    return HttpResponseNotFound()
        else:
            if accion != "nuevo":
                return HttpResponseNotFound()
    else:
        tutor = user if "professorat" in request.path else None

    if (request.method == "POST"):
        form = ProyectoAlumnoForm(request, accion, alumnoid, tutor)
        if (form.is_valid()):
            form.save()
            if tutor:
                ruta = '/professorat/projectes/'
            else:
                if profesorid:
                    ruta = '/coordinacio/projectes/' + profesorid + '/'
                else:
                    ruta = '/coordinacio/projectes/'
            return HttpResponseRedirect(ruta)
    else:
        form = ProyectoAlumnoForm(request, accion, alumnoid, tutor)

    ocultaCurso = True

    return render_to_response('proyectoGestion.html', locals())