예제 #1
0
    def removeSchema(self, sch):
        sch = getSchema(sch)
        if sch.name not in self.schemas:
            raise KeyError(sch.spec)

        self.schemas.remove(sch.name)
        if hasattr(self, '_v__providedBy'):
            del self._v__providedBy
예제 #2
0
 def __init__(self, context, relation=None):
     self.__context__ = context
     self.__relation__ = relation
     if self.__behavior__.schema:
         if self.__wrapper__:
             from registry import getSchema
             self.__datasheet__ = getSchema(
                 self.__behavior__.schema).getDatasheet(self.__context__.oid)
         else:
             self.__datasheet__ = self.__context__.getDatasheet(
                 self.__behavior__.schema)
예제 #3
0
    def applySchema(self, sch):
        if not self._completed:
            self._completion.append((2, (sch,)))
            return

        name = None
        if isinstance(sch, InterfaceClass):
            name = sch.queryTaggedValue('__sch_name__')
            if not name:
                raise SchemaNotFound(sch)
        else:
            name = getSchema(sch).name

        if name not in self.schemas:
            self.schemas.append(name)

            if hasattr(self, '_v__providedBy'):
                del self._v__providedBy
예제 #4
0
 def getDatasheet(self, name):
     sch = getSchema(name)
     if sch.name in self.__type__.schemas:
         return sch(self)
     else:
         raise KeyError(name)