Ejemplo n.º 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())
Ejemplo n.º 2
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()
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
def tribunalPorRellenarProyecto(proyecto, item):
    if QueryItem().hasTribunalEvaluationThisItem(item):
        if QueryJudgeMembers().isJudgeDefinedForProject(proyecto):
            return False
        else:
            return True
    else:
        return False
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
    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