- def __init__(self, dependencias=(), **kw):
- super(Tarea, self).__init__(**kw)
- if dependencias:
- self.dependencias = dependencias
-
- def set(self, dependencias=None, **kw):
- super(Tarea, self).set(**kw)
- if dependencias is not None:
- self.dependencias = dependencias
-
- def _get_dependencias(self):
- OtherTarea = Alias(Tarea, 'other_tarea')
- self.__dependencias = tuple(Tarea.select(
- AND(
- Tarea.q.id == dependencia_t.hijo_id,
- OtherTarea.q.id == dependencia_t.padre_id,
- self.id == dependencia_t.padre_id,
- ),
- clauseTables=(dependencia_t,),
- orderBy=dependencia_t.orden,
- ))
- return self.__dependencias
-
- def _set_dependencias(self, dependencias):
- orden = {}
- for i, t in enumerate(dependencias):
- orden[t.id] = i
- new = frozenset([t.id for t in dependencias])
- old = frozenset([t.id for t in self.dependencias])
- dependencias = dict([(t.id, t) for t in dependencias])
- for tid in old - new: # eliminadas
- self._connection.query(str(Delete(dependencia_t, where=AND(
- dependencia_t.padre_id == self.id,
- dependencia_t.hijo_id == tid))))
- for tid in new - old: # creadas
- self._connection.query(str(Insert(dependencia_t, values=dict(
- padre_id=self.id, hijo_id=tid, orden=orden[tid]
- ))))
- for tid in new & old: # actualizados
- self._connection.query(str(Update(dependencia_t,
- values=dict(orden=orden[tid]), where=AND(
- dependencia_t.padre_id == self.id,
- dependencia_t.hijo_id == tid,
- ))))
+ def shortrepr(self):
+ return self.nombre
+#}}}
+
+class TareaFuente(Tarea): #{{{
+ # Joins
+ comandos = MultipleJoin('ComandoFuente', joinColumn='tarea_id')
+
+ def add_comando(self, orden, comando, **kw):
+ return ComandoFuente(tarea=self, orden=orden, comando=comando, **kw)
+
+ def remove_comando(self, orden):
+ ComandoFuente.pk.get(self.id, orden).destroySelf()