Example #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')
Example #2
0
 def get_entregadores_para_instancia(self, instancia_id):
     curso = self.get_curso_actual()
     instancia = InstanciaDeEntrega.get(instancia_id)
     if instancia.ejercicio.grupal:
         entregadores = [dict(id=g.id, descripcion=g.shortrepr()) for g in curso.grupos]
     else:
         entregadores = [dict(id=ai.id, descripcion=ai.shortrepr()) for ai in curso.alumnos]
     return dict(entregadores=entregadores)
Example #3
0
 def get_fuentes_instancia(self, instanciaID):
     try:
         instancia = InstanciaDeEntrega.get(instanciaID)
         r = [(instancia.find_entrega_a_corregir(x.entregador)) for x in instancia.get_resumen_entregas() if x.tiene_entregas]
         return self.enviar_zip(r, "entregas_instancia_%u.%u.zip" % (instancia.ejercicio.numero, instancia.numero))
     except:
         flash(_(u'Instancia incorrecta.'))
         raise redirect('/')
Example #4
0
 def get_mis_fuentes_instancia(self, instanciaID):
     try:
         instancia = InstanciaDeEntrega.get(instanciaID)
         docenteInscripto = DocenteInscripto.pk.get(instancia.ejercicio.curso.id, identity.current.user.id)
         if docenteInscripto is not None:
             r = [e for e in instancia.entregas if Correccion.selectBy(entrega=e, corrector=docenteInscripto).count() == 1]
             return self.enviar_zip(r, "mis_entregas_instancia_%u.%u.zip" % (instancia.ejercicio.numero, instancia.numero))
         else:
             flash(_(u'Docente no inscripto.'))
             raise redirect('/')
     except:
         flash(_(u'Instancia incorrecta.'))
         raise redirect('/')