Beispiel #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')
Beispiel #2
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)
Beispiel #3
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)
Beispiel #4
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