예제 #1
0
파일: __init__.py 프로젝트: sercom/sercom
    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')
예제 #2
0
파일: __init__.py 프로젝트: sercom/sercom
    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)
예제 #3
0
파일: __init__.py 프로젝트: sercom/sercom
    def create(self, archivo, ejercicio, **kw):
        """Save or create record to model"""
        curso = self.get_curso_actual()
        q_score = Entrega.selectBy(inicio=None, fin=None, entregador=identity.current.user.get_inscripcion(curso)).count()
        if q_score > 0:
            flash(_(u'No se acepta una nueva entrega si la anterior no fue procesada.'))
            raise redirect('list')
        archivo = archivo.file.read()
        try:
            zfile = ZipFile(StringIO(archivo), 'r')
        except BadZipfile:
            flash(_(u'El archivo ZIP no es válido'))
            raise redirect('list')
        if zfile.testzip() is not None:
            flash(_(u'El archivo ZIP tiene errores de CRC'))
            raise redirect('list')

        # por defecto el entregador es el user loggeado
        curso = self.get_curso_actual()
        entregador = identity.current.user.get_inscripcion(curso)

        grupo_id = kw['grupo']
        del kw['grupo']
        ejercicio = Ejercicio.get(int(ejercicio))
        if ejercicio.grupal:
            # Como es grupal, tengo que hacer que la entrega la haga el grupo
            if not grupo_id:
                flash(_(u'No se puede realizar una entrega de un ejercicio grupal sin elegir el grupo.'))
                raise redirect('list')
            else:
                entregador = Grupo.get(int(grupo_id))

        kw['archivos'] = archivo
        kw['entregador'] = entregador
        validate_new(kw)
        flash(_(u'Se creó una nueva %s.') % name)
        raise redirect('list')
예제 #4
0
파일: __init__.py 프로젝트: sercom/sercom
def get_gruposB(cursoID):
    return [(0, u'Nuevo Grupo')] + [(g.id, g) for g in Grupo.select(Grupo.q.cursoID==cursoID)]
예제 #5
0
파일: __init__.py 프로젝트: sercom/sercom
def get_gruposA(cursoID):
    return [(0, u'---')] + [(g.id, g) for g in Grupo.select(Grupo.q.cursoID==cursoID)]
예제 #6
0
파일: __init__.py 프로젝트: sercom/sercom
def get_grupos():
    return [(g.id, g) for g in Grupo.select()]
예제 #7
0
파일: __init__.py 프로젝트: sercom/sercom
def get_gruposB():
    return [(0, u'Nuevo Grupo')] + [(g.id, g) for g in Grupo.select()]
예제 #8
0
파일: __init__.py 프로젝트: sercom/sercom
def get_gruposA():
    return [(0, u'---')] + [(g.id, g) for g in Grupo.select()]