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 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 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()