instancia_tarea_t = table.instancia_tarea
+enunciado_tarea_t = table.enunciado_tarea
+
dependencia_t = table.dependencia
#}}}
# Campos
nombrado = BoolCol(notNone=True, default=True)
# Joins
- enunciados = MultipleJoin('Enunciado')
+ enunciados = MultipleJoin('Enunciado', joinColumn='autor_id')
inscripciones = MultipleJoin('DocenteInscripto')
def add_entrega(self, instancia, **opts):
nombre = UnicodeCol(length=60, alternateID=True)
# Campos
descripcion = UnicodeCol(length=255, default=None)
- autor = ForeignKey('Docente', default=None, dbName='docente_id')
+ autor = ForeignKey('Docente', default=None)
creado = DateTimeCol(notNone=True, default=DateTimeCol.now)
# Joins
ejercicios = MultipleJoin('Ejercicio')
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,
+ Enunciado.q.id == self.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)' \
self.__tareas = tuple(Tarea.select(
AND(
Tarea.q.id == instancia_tarea_t.tarea_id,
- InstanciaDeEntrega.q.id == instancia_tarea_t.instancia_id
+ InstanciaDeEntrega.q.id == instancia_tarea_t.instancia_id,
+ InstanciaDeEntrega.q.id == self.id,
),
clauseTables=(instancia_tarea_t, InstanciaDeEntrega.sqlmeta.table),
orderBy=instancia_tarea_t.orden,