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)
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
def save(self, project): if not self.project: self.project = QueryProject().getProjectByCourseAndStudent( QueryCourse().getCourseSelected(self.request), self.student) self.judgeMembers = QueryJudgeMembers().getListMembersByProject( project) for member in self.id_members: user = QueryUser().getUserById(member['id_member']) memberDB = MiembroTribunal() if self.judgeMembers: for judgeMember in self.judgeMembers: if judgeMember.idMiembro == member['id']: memberDB = judgeMember memberDB.proyecto = project memberDB.idMiembro = member['id'] memberDB.miembro = user memberDB.save()
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
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
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 == ''
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
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 == ''