Exemplo n.º 1
0
    def force_create(self, archivo, **kw):
        """Sube una entrega en lugar de un alumno"""
        instancia = kw['instancia']
        entregador = kw['entregador']
        archivo = archivo.file.read()
        try:
            zfile = ZipFile(StringIO(archivo), 'r')
        except BadZipfile:
            flash(_(u'El archivo ZIP no es válido'))
            raise redirect('force_new', kw)
        if zfile.testzip() is not None:
            flash(_(u'El archivo ZIP tiene errores de CRC'))
            raise redirect('force_new',kw)

        entregador_id = int(entregador)
        instancia = InstanciaDeEntrega.get(int(instancia))
        if instancia.ejercicio.grupal:
            entregador = Grupo.get(entregador_id)
        else:
            entregador = AlumnoInscripto.get(entregador_id)

        kw['instancia'] = instancia
        kw['archivos'] = archivo
        kw['entregador'] = entregador
        kw['observaciones'] = 'Entrega realizada manualmente por el docente %s' % identity.current.user.shortrepr()
        Entrega(**kw)
        flash('Se creo una nueva entrega')
        raise redirect('list')
Exemplo n.º 2
0
    def create(self, **kw):
        """Save or create record to model"""
        cursoId = kw['cursoID']
        padron_responsable = kw['responsable']
        try:
            # Busco el alumno inscripto
            resp = AlumnoInscripto.selectBy(cursoID=cursoId,
                alumno=Alumno.byPadron(padron_responsable)).getOne()
        except SQLObjectNotFound:
            resp = None
        kw['responsable'] = resp

        create_record(cursoId, kw)
Exemplo n.º 3
0
 def get_inscripto(self, cursoid, padron):
     msg = u''
     error=False
     try:
         # Busco el alumno inscripto
         alumno = AlumnoInscripto.selectBy(curso=cursoid, alumno=Alumno.byUsuario(padron)).getOne()
         msg = {}
         msg['id'] = alumno.id
         msg['value'] = alumno.alumno.nombre
     except SQLObjectNotFound:
         msg = 'No existe el alumno %s en el curso seleccionado.' % padron
         error=True
     except Exception, (inst):
         msg = u"""Se ha producido un error inesperado al buscar el registro:\n      %s""" % str(inst)
         error = True
Exemplo n.º 4
0
 def update(self, id, **kw):
     """Save or create record to model"""
     responsable = kw['responsable']
     curso = kw['cursoID']
     resp = kw['responsable']
     try:
         # Busco el alumno inscripto
         resp = AlumnoInscripto.selectBy(cursoID=kw['cursoID'],
             alumno=Alumno.byPadron(kw['responsable'])).getOne()
     except SQLObjectNotFound:
         resp = None
     kw['responsable'] = resp
     r = validate_set(id, kw)
     flash(_(u'El %s fue actualizado.') % name)
     raise redirect('../list/%d' % r.curso.id)
Exemplo n.º 5
0
    def aplicar_calculo_correcciones(self,tipo_calculo, inst_destino_id, inst_concepto_id, entregador_id = None):
        """Aplica el cálculo de correccion para una instancia destino dada"""
        curso = self.get_curso_actual()
        inst_destino = InstanciaExaminacion.get(inst_destino_id)
        inst_concepto = InstanciaExaminacion.get(inst_concepto_id)
        calculador = self.crear_calculador(tipo_calculo, curso, inst_destino, inst_concepto)
        docente = identity.current.user

        if entregador_id:
            alumno_inscripto = AlumnoInscripto.get(entregador_id)
            calculador.aplicar(docente, alumno_inscripto)
        else:
            calculador.aplicar_todas(docente)

        raise redirect('calculo_correcciones', inst_destino_id=inst_destino_id, inst_concepto_id=inst_concepto_id)
Exemplo n.º 6
0
    def get_alumnos(self, grupoid):
        try:
            # Busco los alumnos del grupo
            grupo = Grupo.get(int(grupoid))
            miembros = Miembro.selectBy(baja=None, grupo=grupo)
            integrantes = []
            for m in miembros:
                msg = {}
                alumnoInscripto = AlumnoInscripto.get(m.alumno.id)
                msg['id'] = alumnoInscripto.id
                msg['label'] = alumnoInscripto.alumno.usuario
                integrantes.append(msg)
            return dict(msg=integrantes, error=False)

        except Exception, (inst):
            msg = u"""Se ha producido un error inesperado al buscar el registro:\n      %s""" % str(inst)
            integrantes = [msg]
            return dict(msg=integrantes, error=True)
Exemplo n.º 7
0
 def create(self, **kw):
     """Save or create record to model"""
     r = validate_new(kw)
     docentes = kw.get('docentes', [])
     alumnos = kw.get('alumnos', [])
     """ Elimino todos los docentes asignados al curso y los agrego nuevamente""" 
     for d in DocenteInscripto.selectBy(curso=r):
         d.destroySelf()
     """ Agrego la nueva seleccion """ 
     for d in docentes:
         r.add_docente(Docente(d))
     """ Elimino a los alumnos y los vuelvo a agregar """
     for a in AlumnoInscripto.selectBy(curso=r):
         d.destroySelf()
     for a in alumnos:
         r.add_alumno(Alumno(a))
     flash(_(u'Se creó un nuevo %s.') % name)
     raise redirect('list')
Exemplo n.º 8
0
                grupoAorig.remove_miembro(mA.alumno.id)

        try:
            grupoA = validate_get(grupoAId)
            for a in miembrosA:
                try:
                    grupoA.add_miembro(a, baja=None)
                except DuplicateEntryError:
                    continue
        except Exception, e:
            log.debug(e)
            flash(_(u'Error A %s.' % e))
            raise redirect(url('/curso/grupo/list' % int(cursoID)))
        # seteo el reponsable del grupo
        if responsableA and int(responsableA) != 0:
            grupoA.responsable = AlumnoInscripto.get(int(responsableA))

        for t in tutoresA:
            try:
                grupoA.add_tutor(int(t))
            except:
                #TODO ver por que no anda el duplicate error, por ahora cacheo silencioso
                pass


        #Elimino el grupo si quedo vacio
        if len(miembrosA) == 0:
            try:
                validate_del(grupoAId)
            except:
                pass
Exemplo n.º 9
0
def get_alumnos_inscriptos(curso):
    return [(ai.id, ai) for ai in AlumnoInscripto.selectBy(curso)]