示例#1
0
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())
示例#2
0
文件: views.py 项目: landreup/UJI
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())
示例#3
0
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()
示例#4
0
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()