Пример #1
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
Пример #2
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
Пример #3
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 == ''
Пример #4
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 == ''