From 6c70122e06524e163db47413e7a1719feb83c29c Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 12 Mar 2007 22:37:20 +0000 Subject: [PATCH] =?utf8?q?Crear=20clase=20Ejecucion=20y=20heredar=20Entreg?= =?utf8?q?a=20y=20ComandoEjecutado=20de=20ella.=20Para=20implementar=20las?= =?utf8?q?=20pruebas,=20me=20es=20muy=20conveniente=20que=20Prueba=20y=20E?= =?utf8?q?ntrega=20tengan=20una=20interfaz=20similar,=20y=20siendo=20que?= =?utf8?q?=20Entrega=20tiene=20pr=C3=A1cticamente=20los=20mismos=20campos?= =?utf8?q?=20que=20ComandoEjecutado=20(de=20quien=20hereda=20Prueba),=20cr?= =?utf8?q?e=C3=A9=20una=20superclase=20que=20engloba=20los=20campos=20en?= =?utf8?q?=20comun,=20Ejecucion.=20Es=20necesario=20regenerar=20la=20DB=20?= =?utf8?q?(una=20vez=20m=C3=A1s=20:).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/testdata.py | 8 ++-- sercom/model.py | 44 +++++++++---------- .../correccion/templates/entregas.kid | 6 +-- .../misentregas/templates/list.kid | 6 +-- sercom/tester.py | 22 +++++----- testtester.py | 2 +- 6 files changed, 43 insertions(+), 45 deletions(-) diff --git a/doc/testdata.py b/doc/testdata.py index e8d3853..b3bdb51 100644 --- a/doc/testdata.py +++ b/doc/testdata.py @@ -62,11 +62,11 @@ g2.add_miembro(ai2) # Entregas archivo_zip = file('doc/entrega.zip').read() ai1.add_entrega(ide, archivos=archivo_zip) -entrega = ai2.add_entrega(ide, inicio_tareas=datetime.now(), - fin_tareas=datetime.now() + timedelta(0, 0, 1), correcta=True, +entrega = ai2.add_entrega(ide, inicio=datetime.now(), + fin=datetime.now() + timedelta(0, 0, 1), exito=True, archivos=archivo_zip) -entrega2 = g1.add_entrega(ide, inicio_tareas=datetime.now(), - fin_tareas=datetime.now() + timedelta(0, 0, 3), correcta=False, +entrega2 = g1.add_entrega(ide, inicio=datetime.now(), + fin=datetime.now() + timedelta(0, 0, 3), exito=False, archivos=archivo_zip) d.add_entrega(ide, observaciones='Prueba de docente', archivos=archivo_zip) diff --git a/sercom/model.py b/sercom/model.py index 2366c22..5e6ec2a 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -724,18 +724,27 @@ class Miembro(SQLObject): #{{{ return '%s-%s' % (self.alumno.shortrepr(), self.grupo.shortrepr()) #}}} -class Entrega(SQLObject): #{{{ +class Ejecucion(InheritableSQLObject): #{{{ + # Campos + inicio = DateTimeCol(notNone=True, default=DateTimeCol.now) + fin = DateTimeCol(default=None) + exito = IntCol(default=None) + observaciones = UnicodeCol(notNone=True, default=u'') + archivos = BLOBCol(default=None) # ZIP con archivos + + def __repr__(self, clave='', mas=''): + return ('%s(%s inicio=%s, fin=%s, exito=%s, observaciones=%s%s)' + % (self.__class__.__name__, clave, self.inicio, self.fin, + self.exito, self.observaciones, mas)) +#}}} + +class Entrega(Ejecucion): #{{{ + _inheritable = False # Clave instancia = ForeignKey('InstanciaDeEntrega', notNone=True, cascade=False) entregador = ForeignKey('Entregador', default=None, cascade=False) # Si es None era un Docente fecha = DateTimeCol(notNone=True, default=DateTimeCol.now) pk = DatabaseIndex(instancia, entregador, fecha, unique=True) - # Campos - archivos = BLOBCol(notNone=True) # ZIP con fuentes de la entrega - correcta = BoolCol(default=None) # None es que no se sabe qué pasó - inicio_tareas = DateTimeCol(default=None) # Si es None no se procesó - fin_tareas = DateTimeCol(default=None) # Si es None pero inicio no, se está procesando - observaciones = UnicodeCol(notNone=True, default=u'') # Joins comandos_ejecutados = MultipleJoin('ComandoFuenteEjecutado') pruebas = MultipleJoin('Prueba') @@ -759,11 +768,9 @@ class Entrega(SQLObject): #{{{ Prueba.pk.get(self.id, caso_de_prueba).destroySelf() def __repr__(self): - return 'Entrega(id=%s, instancia=%s, entregador=%s, fecha=%s, ' \ - 'correcta=%s, inicio_tareas=%s, fin_tareas=%s, observaciones=%s)' \ - % (self.id, self.instancia.shortrepr(), srepr(self.entregador), - self.fecha, self.inicio_tareas, self.fin_tareas, - self.correcta, self.observaciones) + return super(Entrega, self).__repr__('instancia=%s, entregador=%s, ' + 'fecha=%s' % (self.instancia.shortrepr(), srepr(self.entregador), + self.fecha)) def shortrepr(self): return '%s-%s-%s' % (self.instancia.shortrepr(), @@ -800,19 +807,12 @@ class Correccion(SQLObject): #{{{ return '%s,%s' % (self.entrega.shortrepr(), self.corrector.shortrepr()) #}}} -class ComandoEjecutado(InheritableSQLObject): #{{{ +class ComandoEjecutado(Ejecucion): #{{{ # Campos - inicio = DateTimeCol(notNone=True, default=DateTimeCol.now) - fin = DateTimeCol(default=None) - exito = IntCol(default=None) - archivos_comparados = BLOBCol(default=None) # ZIP con archivos diff - archivos_guardados = BLOBCol(default=None) # ZIP con archivos guardados - observaciones = UnicodeCol(notNone=True, default=u'') + diferencias = BLOBCol(default=None) # ZIP con archivos guardados def __repr__(self, clave='', mas=''): - return ('%s(%s inicio=%s, fin=%s, exito=%s, observaciones=%s%s)' - % (self.__class__.__name__, clave, self.inicio, self.fin, - self.exito, self.observaciones, mas)) + return super(ComandoFuenteEjecutado, self).__repr__(clave, mas) #}}} class ComandoFuenteEjecutado(ComandoEjecutado): #{{{ diff --git a/sercom/subcontrollers/correccion/templates/entregas.kid b/sercom/subcontrollers/correccion/templates/entregas.kid index 9bd8690..63e8bed 100644 --- a/sercom/subcontrollers/correccion/templates/entregas.kid +++ b/sercom/subcontrollers/correccion/templates/entregas.kid @@ -20,8 +20,7 @@ usuario - Si - No + Si fecha corregido @@ -38,8 +37,7 @@ ${i.inicio} ${i.fin} - Si - No + Si ${i.observaciones} diff --git a/sercom/subcontrollers/misentregas/templates/list.kid b/sercom/subcontrollers/misentregas/templates/list.kid index 1d6c4f9..94d04ca 100644 --- a/sercom/subcontrollers/misentregas/templates/list.kid +++ b/sercom/subcontrollers/misentregas/templates/list.kid @@ -25,9 +25,9 @@ usuario usuario usuario - fecha asignado - fecha corregido - fecha corregido + fecha asignado + fecha corregido + fecha corregido nota Corrida diff --git a/sercom/tester.py b/sercom/tester.py index 0b00a15..7cacd44 100644 --- a/sercom/tester.py +++ b/sercom/tester.py @@ -200,7 +200,7 @@ class Tester(object): #{{{ def test(self, entrega): #{{{ log.debug(_(u'Tester.test(entrega=%s)'), entrega) - entrega.inicio_tareas = datetime.now() + entrega.inicio = datetime.now() try: try: self.setup_chroot(entrega) @@ -208,7 +208,7 @@ class Tester(object): #{{{ self.ejecutar_tareas_prueba(entrega) self.clean_chroot(entrega) except ExecutionFailure, e: - entrega.correcta = False + entrega.exito = False log.info(_(u'Entrega incorrecta: %s'), entrega) except Exception, e: if isinstance(e, SystemExit): raise @@ -218,10 +218,10 @@ class Tester(object): #{{{ entrega.observaciones += error_interno log.exception(_('Hubo una excepcion inesperada desconocida')) # FIXME encoding else: - entrega.correcta = True + entrega.exito = True log.debug(_(u'Entrega correcta: %s'), entrega) finally: - entrega.fin_tareas = datetime.now() + entrega.fin = datetime.now() #}}} def setup_chroot(self, entrega): #{{{ y clean_chroot() @@ -375,7 +375,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ if self.retorno == self.RET_FAIL: if proc.returncode == 0: if self.rechazar_si_falla: - entrega.correcta = False + entrega.exito = False comando_ejecutado.exito = False comando_ejecutado.observaciones += _(u'Se esperaba que el ' u'programa termine con un error (código de retorno ' @@ -386,7 +386,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ u'terminó bien (código de retorno 0).\n')) elif self.retorno != proc.returncode: if self.rechazar_si_falla: - entrega.correcta = False + entrega.exito = False comando_ejecutado.exito = False if proc.returncode < 0: comando_ejecutado.observaciones += _(u'Se esperaba terminar ' @@ -425,7 +425,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ for f in a_guardar: if not os.path.exists(join(path, f)): if self.rechazar_si_falla: - entrega.correcta = False + entrega.exito = False comando_ejecutado.exito = False comando_ejecutado.observaciones += _(u'Se esperaba un archivo ' u'"%s" para guardar pero no fue encontrado.\n') % f @@ -434,7 +434,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ else: zip.write(join(path, f), f) zip.close() - comando_ejecutado.archivos_guardados = buffer.getvalue() + comando_ejecutado.archivos = buffer.getvalue() def diff(new, zip_in, zip_out, name, longname=None, origname='correcto', newname='entregado'): if longname is None: @@ -445,7 +445,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ tofile=name+'.'+newname))) if udiff: if self.rechazar_si_falla: - entrega.correcta = False + entrega.exito = False comando_ejecutado.exito = False comando_ejecutado.observaciones += _(u'%s no coincide con lo ' u'esperado (archivo "%s.diff").\n') % (longname, name) @@ -481,7 +481,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ for f in a_comparar: if not os.path.exists(join(path, f)): if self.rechazar_si_falla: - entrega.correcta = False + entrega.exito = False comando_ejecutado.exito = False comando_ejecutado.observaciones += _(u'Se esperaba un archivo ' u'"%s" para comparar pero no fue encontrado') % f @@ -490,7 +490,7 @@ def ejecutar_comando_fuente(self, path, entrega): #{{{ else: diff(join(path, f), zip_a_comparar, zip, f) zip.close() - comando_ejecutado.archivos_guardados = buffer.getvalue() + comando_ejecutado.diferencias = buffer.getvalue() if comando_ejecutado.exito is None: comando_ejecutado.exito = True elif self.terminar_si_falla: diff --git a/testtester.py b/testtester.py index b7b7fd4..b5a40cb 100644 --- a/testtester.py +++ b/testtester.py @@ -28,6 +28,6 @@ model.hub.rollback() #model.hub.commit() #model.hub.begin() -#model.Entrega.get(5).correcta = True +#model.Entrega.get(5).exito = True #model.hub.rollback() -- 2.43.0