def creaFormulario(request, user, alumnoid, hitoid): # COMPROBAR ACCESO ''' Coordinador o tutor y proyecto en estado "P" y anteriores hitos completados ''' course = QueryCourse().getCourseSelected(request) student = alumnoPorId(alumnoid) project = QueryProject().getProjectByCourseAndStudent(course, student) item = QueryItem().getItemByItem(hitoid) if not project: return HttpResponseNotFound() if project.estado != "P": return HttpResponseForbidden() if not item: return HttpResponseNotFound() ''' Anteriores hitos completados ''' itemBefore = QueryItem().getBeforeItem(item) if itemBefore: response = QueryForm().isAllFormsCompletedOfProjectItem( project, itemBefore) if not response: return HttpResponseForbidden() if (request.method == "POST"): activaFormulario(project, item) return HttpResponseRedirect('/coordinacio/projectes/') return render_to_response('creaFormulario.html', locals())
def cambiaEstadoProyecto(proyecto, cambiaPendiente=False): if proyecto.estado == "L" or proyecto.estado == "C" or cambiaPendiente: status = QueryStatusProjectInCourse().getProjectByProject(proyecto) if (QueryStatusProjectInCourse().isCompleted(status) and status) or not status: nextItem = QueryItem().getNextItem( status.hito) if status else QueryItem().getFirstItemCourse( proyecto.curso) textProjectIncomplete = camposPorRellenarProyecto( proyecto, nextItem) isProjectIncomplete = False if textProjectIncomplete == "" else True isTribunalIncomplete = tribunalPorRellenarProyecto( proyecto, nextItem) dateEstimateNextItem = QueryEstimateDate( ).getEstimateDateByProjectAndItem(proyecto, nextItem) if nextItem else True evaluationSystem = QueryEvaluationSystem( ).getEvaluationSystemByCourse(proyecto.curso) if not isProjectIncomplete and not isTribunalIncomplete and dateEstimateNextItem and evaluationSystem.estado == "A": revision = QueryProjectUnresolvedInCourse( ).getProjectUnresolvedByProject(proyecto) if revision: revision.delete() if status: status.delete() if nextItem: status = EstadoProyectoEnCurso() status.proyecto = proyecto status.hito = nextItem status.save() activaFormulario(proyecto, nextItem) proyecto.estado = "C" if nextItem else "F" proyecto.save() eliminaProyectoPorRellenar(proyecto) else: revision = QueryProjectUnresolvedInCourse( ).getProjectUnresolvedByProject(proyecto) if revision: revision.delete() else: emailAvisoProyectoEnRevision(proyecto, nextItem, isTribunalIncomplete) textProjectIncomplete = buildErrors(textProjectIncomplete, isTribunalIncomplete, dateEstimateNextItem, nextItem) pendentStatus = ProyectoParaRevisionEnCurso() pendentStatus.proyecto = proyecto pendentStatus.campos = textProjectIncomplete pendentStatus.save() proyecto.estado = "L" proyecto.save()
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 tribunalPorRellenarProyecto(proyecto, item): if QueryItem().hasTribunalEvaluationThisItem(item): if QueryJudgeMembers().isJudgeDefinedForProject(proyecto): return False else: return True else: return False
def getlabelsFields(course): labels = {} labels['id_proyecto-inicio'] = u"data d\'inici" labels['id_proyecto-dedicacionSemanal'] = u"dedicació semanal" labels['tribunal'] = 'tribunal' for item in QueryItem().getListItemsByEvaluationSystem( QueryEvaluationSystem().getEvaluationSystemByCourse(course)): key = 'id_' + str(item.id) + '-fecha' labels[key] = 'data estimada de ' + unicode(item) return labels
def gruposProyectosEnCursoTodos(course): groups = [] evaluationSystem = QueryEvaluationSystem().getEvaluationSystemByCourse( course) lockProjects = QueryProject().getListProjectByCourseAndStatus(course, "L") if lockProjects: groups.append(LockGroupElement(lockProjects)) for item in QueryItem().getListItemsByEvaluationSystem(evaluationSystem): lista = QueryStatusProjectInCourse().getListProjectByItem(item) if lista: groups.append(InCourseGroupElement(lista, item)) return groups
def gruposProyectosEnCursoProfesor(course, user): groups = [] evaluationSystem = QueryEvaluationSystem().getEvaluationSystemByCourse( course) lockProjects = QueryProject().getListProjectByCourseStatusTutor( course, "L", user) if lockProjects: groups.append(LockGroupElement(lockProjects)) for item in QueryItem().getListItemsByEvaluationSystem(evaluationSystem): lista = QueryStatusProjectInCourse().getListProjectByItemAndUser( item, user) if lista: groups.append(InCourseGroupElement(lista, item)) return groups
def activaValoracion(project): evaluationSystem = QueryEvaluationSystem().getEvaluationSystemByCourse( project.curso) listItems = QueryItem().getListItemsByEvaluationSystem(evaluationSystem) itemStatus = None for item in listItems: if QueryForm().getListFormByProjectItem(project, item): itemStatus = item if itemStatus: projectStatus = EstadoProyectoEnCurso() projectStatus.proyecto = project projectStatus.hito = itemStatus projectStatus.save() project.estado = "L" project.save()
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