def insertItem(cls, type=''): if type: type = getBehavior(type).name oid = uuid.uuid1().hex item = Item(oid, type) session = getSession() session.add(item) if type: item.applyBehavior(type) session.flush() return Item.getItem(oid)
def applyBehavior(self, *args): for behavior in args: if hasattr(self, '_v__providedBy'): del self._v__providedBy behavior = getBehavior(behavior) behavior.apply(self) notify(BehaviorAppliedEvent(self, behavior.name, behavior.spec)) if hasattr(self, '_v__providedBy'): del self._v__providedBy if self._v_behaviors is not None: del self._v_behaviors
def removeBehavior(self, *args): for behavior in args: if hasattr(self, '_v__providedBy'): del self._v__providedBy behavior = getBehavior(behavior) if behavior.name == self.type: raise BehaviorException("Can't remove primary behavior.") behavior.remove(self) notify(BehaviorRemovedEvent(self, behavior.name, behavior.spec)) if hasattr(self, '_v__providedBy'): del self._v__providedBy if self._v_behaviors is not None: del self._v_behaviors
def listItems(cls, type): return getSession().query(Item).filter( Item.type == getBehavior(type).name)