creado TIMESTAMP NOT NULL
);
+CREATE TABLE enunciado_tarea (
+ enunciado_id INTEGER NOT NULL CONSTRAINT enunciado_id_exists REFERENCES enunciado(id),
+ tarea_id INTEGER NOT NULL CONSTRAINT tarea_id_exists REFERENCES tarea(id),
+ orden INT,
+ PRIMARY KEY (enunciado_id, tarea_id)
+);
+
CREATE TABLE caso_de_prueba (
id INTEGER PRIMARY KEY,
enunciado_id INT CONSTRAINT enunciado_id_exists REFERENCES enunciado(id),
e1 = Enunciado(nombre=u'Un enunciado', autor=d, descripcion=u'Ejercicio reeee jodido')
e2 = Enunciado(nombre=u'Otro enunciado', autor=d, descripcion=u'Ejercicio facilongo')
e3 = Enunciado(nombre=u'Más enunciados', descripcion=u'Ejercicio anónimo')
+e1.tareas = (t4,)
+e2.tareas = (t2, t4)
cp1 = e1.add_caso_de_prueba(u'Sin parámetros', retorno=0, descripcion=u'Un caso')
cp2 = e1.add_caso_de_prueba(u'2 parámetross', retorno=0, parametros=('--test', '-c'))
ide = ej1.add_instancia(1, datetime(2007, 1, 25), datetime(2007, 1, 31, 20),
observaciones='Entrega fea', activo=False)
+ide.tareas = (t2, t4)
di = c.add_docente(d, corrige=True, observaciones=u'Tipo Pulenta')
instancia_tarea_t = table.instancia_tarea
+enunciado_tarea_t = table.enunciado_tarea
+
dependencia_t = table.dependencia
#}}}
def add_caso_de_prueba(self, nombre, **opts):
return CasoDePrueba(enunciadoID=self.id, nombre=nombre, **opts)
+ def _get_tareas(self):
+ self.__tareas = tuple(Tarea.select(
+ AND(
+ Tarea.q.id == enunciado_tarea_t.tarea_id,
+ Enunciado.q.id == enunciado_tarea_t.enunciado_id
+ ),
+ clauseTables=(enunciado_tarea_t, Enunciado.sqlmeta.table),
+ orderBy=enunciado_tarea_t.orden,
+ ))
+ return self.__tareas
+
+ def _set_tareas(self, tareas):
+ orden = {}
+ for i, t in enumerate(tareas):
+ orden[t.id] = i
+ new = frozenset([t.id for t in tareas])
+ old = frozenset([t.id for t in self.tareas])
+ tareas = dict([(t.id, t) for t in tareas])
+ for tid in old - new: # eliminadas
+ self._connection.query(str(Delete(enunciado_tarea_t, where=AND(
+ enunciado_tarea_t.enunciado_id == self.id,
+ enunciado_tarea_t.tarea_id == tid))))
+ for tid in new - old: # creadas
+ self._connection.query(str(Insert(enunciado_tarea_t, values=dict(
+ enunciado_id=self.id, tarea_id=tid, orden=orden[tid]
+ ))))
+ for tid in new & old: # actualizados
+ self._connection.query(str(Update(enunciado_tarea_t,
+ values=dict(orden=orden[tid]), where=AND(
+ enunciado_tarea_t.enunciado_id == self.id,
+ enunciado_tarea_t.tarea_id == tid,
+ ))))
+
def __repr__(self):
return 'Enunciado(id=%s, autor=%s, nombre=%s, descripcion=%s, ' \
'creado=%s)' \