def get_instancias_y_grupos(self, ejercicio_id): ejercicio = Ejercicio.get(ejercicio_id) instancias = ejercicio.instancias_a_entregar if ejercicio.grupal: grupos = identity.current.user.get_grupos_activos(ejercicio.curso) else: grupos = [] return dict(instancias=instancias, grupos=grupos)
def get_fuentes_ejercicio(self, ejercicioid): try: ejercicio = Ejercicio.get(ejercicioid) r = dict() files = [] for instancia in ejercicio.instancias: if instancia.activo: eeii = [(instancia.find_entrega_a_corregir(x.entregador)) for x in instancia.get_resumen_entregas() if x.tiene_entregas] for entrega in eeii: r[entrega.entregador.alumno.padron] = entrega for entrega in r.values(): files.append('%s_%u/* ' % (entrega.entregador.alumno.padron.encode('ascii'), entrega.instancia.numero)) extras = dict() if ejercicio.enunciado.lenguaje is not None and ejercicio.enunciado.lenguaje.mossnet_id is not None: extras['mossnet.sh'] = ('#!/bin/sh\nmossnet.pl -l %s -d %s' % (ejercicio.enunciado.lenguaje.mossnet_id, ''.join(files))) return self.enviar_zip(r.values(), ("ultimas_entregas_ej%u.zip" % instancia.ejercicio.numero), extras, ['Makefile', 'Makefile-cliente-servidor']) except SQLObjectNotFound: flash(_(u'Ejercicio inválido o inexistente.')) raise redirect('/')
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 create(self, **kw): """Save or create record to model""" e = Ejercicio.get(kw['ejercicioID']) e.add_instancia(**kw) flash(_(u'Se creó un nuevo %s.') % name) raise redirect('list/%s' % e.id)
def list(self, ejercicio): ejercicio = Ejercicio.get(ejercicio) r = cls.selectBy(ejercicio=ejercicio).orderBy(cls.q.numero) return dict(records=r, name=name, namepl=namepl, ejercicio=ejercicio)