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
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 == ''
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 == ''