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')
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)
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')
def get_gruposB(cursoID): return [(0, u'Nuevo Grupo')] + [(g.id, g) for g in Grupo.select(Grupo.q.cursoID==cursoID)]
def get_gruposA(cursoID): return [(0, u'---')] + [(g.id, g) for g in Grupo.select(Grupo.q.cursoID==cursoID)]
def get_grupos(): return [(g.id, g) for g in Grupo.select()]
def get_gruposB(): return [(0, u'Nuevo Grupo')] + [(g.id, g) for g in Grupo.select()]
def get_gruposA(): return [(0, u'---')] + [(g.id, g) for g in Grupo.select()]