# Joins
comandos = MultipleJoin('ComandoPrueba', joinColumn='tarea_id')
- def add_comando(self, orden, **kw):
- return ComandoPrueba(tarea=self, orden=orden, comando='', **kw)
+ def add_comando(self, orden, comando='', **kw):
+ return ComandoPrueba(tarea=self, orden=orden, comando=comando, **kw)
def remove_comando(self, orden):
ComandoPrueba.pk.get(self.id, orden).destroySelf()
max_locks_memoria = IntCol(default=None)
terminar_si_falla = BoolCol(notNone=True, default=True)
rechazar_si_falla = BoolCol(notNone=True, default=True)
+ publico = BoolCol(notNone=True, default=True)
archivos_entrada = BLOBCol(default=None) # ZIP con archivos de entrada
# __stdin__ es caso especial
# Si un caso de prueba tiene
- # comandos con stdin y el caso
- # de prueba también tiene stdin
- # se usa el stdin del comando.
+ # comandos que tiene algún
+ # archivo de entrada (incluyendo
+ # stdin) con los propios, se usa
+ # el archivo del caso de prueba,
+ # no del comando.
archivos_a_comparar = BLOBCol(default=None) # ZIP con archivos de salida
# __stdout__, __stderr__ y
# __stdouterr__ (ambos juntos)
# son casos especiales
- archivos_a_guardar = TupleCol(notNone=True, default=()) # TODO SetCol
+ # Si un caso de prueba tiene
+ # comandos que tiene algún
+ # archivo a comparar (incluyendo
+ # stdout/err) con los propios,
+ # se compara contra el archivo
+ # del caso de prueba, no del
+ # comando.
+ archivos_a_guardar = TupleCol(notNone=True, default=()) # TODO FrozenSetCol
# __stdout__, __stderr__ y
# __stdouterr__ (ambos juntos)
# son casos especiales
# Campos
inicio = DateTimeCol(notNone=True)
fin = DateTimeCol(notNone=True)
- procesada = BoolCol(notNone=True, default=False)
+ inicio_proceso = DateTimeCol(default=None)
+ fin_proceso = DateTimeCol(default=None)
observaciones = UnicodeCol(default=None)
activo = BoolCol(notNone=True, default=True)
# Joins
def __repr__(self):
return 'InstanciaDeEntrega(id=%s, numero=%s, inicio=%s, fin=%s, ' \
- 'procesada=%s, observaciones=%s, activo=%s)' \
+ 'inicio_proceso=%s, fin_proceso=%s, observaciones=%s, activo=%s)' \
% (self.id, self.numero, self.inicio, self.fin,
- self.procesada, self.observaciones, self.activo)
+ self.inicio_proceso, self.fin_proceso, self.observaciones,
+ self.activo)
def shortrepr(self):
return self.numero
class Ejecucion(InheritableSQLObject): #{{{
# Campos
- inicio = DateTimeCol(notNone=True, default=DateTimeCol.now)
+ inicio = DateTimeCol(default=None)
fin = DateTimeCol(default=None)
exito = IntCol(default=None)
observaciones = UnicodeCol(notNone=True, default=u'')
# FIXME self.id, caso_de_prueba
Prueba.pk.get(self.id, caso_de_prueba).destroySelf()
+ def make_correccion(self, corrector, **kw):
+ return Correccion(instancia=self.instancia, entregador=self.entregador,
+ entrega=self, corrector=corrector, **kw)
+
def __repr__(self):
return super(Entrega, self).__repr__('instancia=%s, entregador=%s, '
'fecha=%s' % (self.instancia.shortrepr(), srepr(self.entregador),
pk = DatabaseIndex(instancia, entregador, unique=True)
# Campos
entrega = ForeignKey('Entrega', notNone=True, cascade=False)
- corrector = ForeignKey('DocenteInscripto', default=None, cascade='null')
+ corrector = ForeignKey('DocenteInscripto', notNone=True, cascade=False)
asignado = DateTimeCol(notNone=True, default=DateTimeCol.now)
corregido = DateTimeCol(default=None)
nota = DecimalCol(size=3, precision=1, default=None)