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 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 eliminaProyectoPorRellenar(proyecto): proyectoPendiente = QueryProjectUnresolvedInCourse().getProjectUnresolvedByProject(proyecto) if proyectoPendiente : proyectoPendiente.delete()
def eliminaProyectoPorRellenar(proyecto): proyectoPendiente = QueryProjectUnresolvedInCourse( ).getProjectUnresolvedByProject(proyecto) if proyectoPendiente: proyectoPendiente.delete()
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())