Пример #1
0
    def __init__(self, request, studentUserUJI):
        self.numberOfJudgeMembers = NUMBER_OF_JUDGE_MEMBERS

        self.request = request

        self.project, self.judgeMembers = None, None

        if studentUserUJI:
            self.project = QueryProject().getProjectByCourseAndStudent(
                QueryCourse().getCourseSelected(self.request),
                QueryStudent().getStudentByUserUJI(studentUserUJI))
            self.judgeMembers = QueryJudgeMembers().getListMembersByProject(
                self.project)

        self.forms = []
        self.id_members = []
        for i in xrange(self.numberOfJudgeMembers):
            if request.method == 'POST':
                id_member = request.POST.get("miembro" + str(i) + "-miembro",
                                             '')
                form = MemberJudgeForm(request.POST, prefix="miembro" + str(i))
                if id_member:
                    self.id_members.append({
                        'id': i + 1,
                        'id_member': id_member
                    })
            else:
                form = MemberJudgeForm(prefix="miembro" + str(i))
                form.fields["miembro"].queryset = QueryUser().getListOfUser()
                if self.judgeMembers:
                    form.initial["miembro"] = self.judgeMembers[i].miembro
            self.forms.append(form)
Пример #2
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
Пример #3
0
 def save(self, project):
     if not self.project:
         self.project = QueryProject().getProjectByCourseAndStudent(
             QueryCourse().getCourseSelected(self.request), self.student)
     self.judgeMembers = QueryJudgeMembers().getListMembersByProject(
         project)
     for member in self.id_members:
         user = QueryUser().getUserById(member['id_member'])
         memberDB = MiembroTribunal()
         if self.judgeMembers:
             for judgeMember in self.judgeMembers:
                 if judgeMember.idMiembro == member['id']:
                     memberDB = judgeMember
         memberDB.proyecto = project
         memberDB.idMiembro = member['id']
         memberDB.miembro = user
         memberDB.save()
Пример #4
0
    def editProject(self):
        curso = self.course

        alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)

        proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
        proyectoDB.tutor = self.tutor
        proyectoDB.supervisor = self.proyecto.supervisor
        proyectoDB.email = self.proyecto.email
        proyectoDB.empresa = self.proyecto.empresa
        proyectoDB.telefono = self.proyecto.telefono
        proyectoDB.titulo = self.proyecto.titulo
        proyectoDB.inicio = self.proyecto.inicio
        proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
        proyectoDB.otrosDatos = self.proyecto.otrosDatos
        proyectoDB.estado = self.estado

        proyectoDB.save()

        self.proyecto = proyectoDB
Пример #5
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
Пример #6
0
class ProyectoAlumnoForm():
    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

    def is_valid(self):
        self.alumnoEsValido = self.alumnoForm.is_valid()
        if (not self.alumnoEsValido and self.isEditing()):
            if (self.alumnoForm.data["alumno-usuarioUJI"] == self.alumnoid):
                self.alumnoEsValido = True

        if self.tutorForm:
            tutor = self.Tutor(self.tutorId)
            tutorIsValid = tutor.is_valid()
            self.tutor = tutor.user
        else:
            tutorIsValid = True

        if self.tribunalForm:
            tribunalIsValid = self.tribunalForm.is_valid()
        else:
            tribunalIsValid = True

        if self.dateForm:
            dateIsValid = self.dateForm.is_valid()
        else:
            dateIsValid = True

        return (self.alumnoEsValido and self.proyectoForm.is_valid()
                and tutorIsValid and tribunalIsValid and dateIsValid)

    def isEditing(self):
        return self.action == "edita"

    def isTutorValid(self, tutorId):
        tutor = self.Tutor(tutorId)
        valid = tutor.is_valid()
        if not valid:
            valid = tutor.is_empty() and self.isEditing()
        return valid

    def getAlumnoProyecto(self):
        return self.alumno, self.proyecto

    def getAlumnoId(self):
        return self.alumnoid

    def getAccion(self):
        return self.accion

    def save(self):
        if (self.action == "nuevo"):
            self.createProjectStudent()
        else:  # edicion
            self.editProjectStudent()

        if self.tribunalForm:
            self.tribunalForm.save(self.proyecto)
        if self.dateForm: self.dateForm.save(self.proyecto)

        cambiaEstadoProyecto(self.proyecto)

    def createProjectStudent(self):
        self.createStudent()
        self.createProject()

    def createStudent(self):
        self.alumno.save()

    def createProject(self):
        self.proyecto.alumno = self.alumno
        self.proyecto.curso = self.course
        self.proyecto.tutor = self.tutor
        self.proyecto.estado = "L"
        self.proyecto.save()

    def editProjectStudent(self):
        self.editStudent()
        self.editProject()

    def editStudent(self):
        alumnoDB = QueryStudent().getStudentByUserUJI(self.alumnoid)
        alumnoDB.nombre = self.alumno.nombre
        alumnoDB.apellidos = self.alumno.apellidos
        alumnoDB.usuarioUJI = self.alumno.usuarioUJI
        alumnoDB.save()

        self.alumno = alumnoDB

    def editProject(self):
        curso = self.course

        alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)

        proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
        proyectoDB.tutor = self.tutor
        proyectoDB.supervisor = self.proyecto.supervisor
        proyectoDB.email = self.proyecto.email
        proyectoDB.empresa = self.proyecto.empresa
        proyectoDB.telefono = self.proyecto.telefono
        proyectoDB.titulo = self.proyecto.titulo
        proyectoDB.inicio = self.proyecto.inicio
        proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
        proyectoDB.otrosDatos = self.proyecto.otrosDatos
        proyectoDB.estado = self.estado

        proyectoDB.save()

        self.proyecto = proyectoDB

    class Tutor():
        def __init__(self, tutorId):
            self.tutorId = tutorId
            self.user = None

        def is_valid(self):
            if (not self.is_empty()):
                self.user = QueryUser().getUserById(self.tutorId)
                if self.user.isTutor(): return True
                else: return False
            else:
                return False

        def is_empty(self):
            return self.tutorId == ''
Пример #7
0
 def editProject(self):
     curso = self.course
  
     alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)
     
     proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
     proyectoDB.tutor = self.tutor
     proyectoDB.supervisor = self.proyecto.supervisor
     proyectoDB.email = self.proyecto.email
     proyectoDB.empresa = self.proyecto.empresa
     proyectoDB.telefono = self.proyecto.telefono
     proyectoDB.titulo = self.proyecto.titulo
     proyectoDB.inicio = self.proyecto.inicio
     proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
     proyectoDB.otrosDatos = self.proyecto.otrosDatos
     proyectoDB.estado = self.estado
 
     proyectoDB.save()
     
     self.proyecto = proyectoDB
Пример #8
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
Пример #9
0
class ProyectoAlumnoForm():
    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
                         
    def is_valid(self):
        self.alumnoEsValido = self.alumnoForm.is_valid()
        if ( not self.alumnoEsValido and self.isEditing()):
            if ( self.alumnoForm.data["alumno-usuarioUJI"] == self.alumnoid ):
                self.alumnoEsValido = True

        
        if self.tutorForm :
            tutor = self.Tutor(self.tutorId)
            tutorIsValid = tutor.is_valid()
            self.tutor = tutor.user
        else:
            tutorIsValid = True

        if self.tribunalForm :
            tribunalIsValid = self.tribunalForm.is_valid()
        else:
            tribunalIsValid = True

        if self.dateForm :
            dateIsValid = self.dateForm.is_valid()
        else:
            dateIsValid = True
        
        return (self.alumnoEsValido 
                and self.proyectoForm.is_valid() 
                and tutorIsValid
                and tribunalIsValid
                and dateIsValid
        )
    
    def isEditing(self):
        return self.action == "edita"
    
    def isTutorValid(self, tutorId):
        tutor = self.Tutor(tutorId)
        valid = tutor.is_valid()
        if not valid :
            valid =  tutor.is_empty() and self.isEditing()
        return valid
        
    def getAlumnoProyecto(self):
        return self.alumno, self.proyecto
    
    def getAlumnoId(self):
        return self.alumnoid
    
    def getAccion(self):
        return self.accion
    
    def save(self):
        if (self.action == "nuevo"):
            self.createProjectStudent()
        else : # edicion
            self.editProjectStudent()
        
        
        if self.tribunalForm : 
            self.tribunalForm.save(self.proyecto)
        if self.dateForm : self.dateForm.save(self.proyecto)
        
        cambiaEstadoProyecto(self.proyecto)
    
    def createProjectStudent(self):
        self.createStudent()
        self.createProject()
    
    def createStudent(self):
        self.alumno.save()
    
    def createProject(self):
        self.proyecto.alumno = self.alumno
        self.proyecto.curso = self.course
        self.proyecto.tutor = self.tutor
        self.proyecto.estado = "L"
        self.proyecto.save()

    def editProjectStudent(self):
        self.editStudent()
        self.editProject()
    
    def editStudent(self):
        alumnoDB = QueryStudent().getStudentByUserUJI(self.alumnoid)
        alumnoDB.nombre = self.alumno.nombre
        alumnoDB.apellidos = self.alumno.apellidos
        alumnoDB.usuarioUJI = self.alumno.usuarioUJI
        alumnoDB.save()
        
        self.alumno = alumnoDB
        
    def editProject(self):
        curso = self.course
     
        alumno = QueryStudent().getStudentByUserUJI(self.alumnoid)
        
        proyectoDB = QueryProject().getProjectByCourseAndStudent(curso, alumno)
        proyectoDB.tutor = self.tutor
        proyectoDB.supervisor = self.proyecto.supervisor
        proyectoDB.email = self.proyecto.email
        proyectoDB.empresa = self.proyecto.empresa
        proyectoDB.telefono = self.proyecto.telefono
        proyectoDB.titulo = self.proyecto.titulo
        proyectoDB.inicio = self.proyecto.inicio
        proyectoDB.dedicacionSemanal = self.proyecto.dedicacionSemanal
        proyectoDB.otrosDatos = self.proyecto.otrosDatos
        proyectoDB.estado = self.estado
    
        proyectoDB.save()
        
        self.proyecto = proyectoDB
        
    class Tutor():
        def __init__(self, tutorId):
            self.tutorId = tutorId
            self.user = None
            
        def is_valid(self):
            if (not self.is_empty()) :
                self.user = QueryUser().getUserById(self.tutorId)
                if self.user.isTutor() : return True
                else: return False
            else:
                return False
        
        def is_empty(self):
            return self.tutorId == ''