예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
 def listItems(cls, type):
     return getSession().query(Item).filter(
         Item.type == getBehavior(type).name)