Example #1
0
    def __setitem__(self, name, value):
        value = removeAllProxies(value)
        if isinstance(value, Attribute):
            value.interface = name
            if not value.__name__:
                value.__name__ = name
            elif isinstance(value, FunctionType):
                attrs[name] = fromFunction(value, name, name=name)
            else:
                raise InvalidInterface("Concrete attribute, %s" % name)

        setitem(self, self._attrs.__setitem__, name, value)
Example #2
0
    def __setitem__(self, name, object):
        """Add the given object to the folder under the given name."""

        if not (isinstance(name, str) or isinstance(name, unicode)):
            raise TypeError("Name must be a string rather than a %s" %
                            name.__class__.__name__)
        try:
            unicode(name)
        except UnicodeError:
            raise TypeError("Non-unicode names must be 7-bit-ascii only")
        if not name:
            raise TypeError("Name must not be empty")

        if name in self.data:
            raise DuplicationError("name, %s, is already in use" % name)

        setitem(self, self.data.__setitem__, name, object)
    def __setitem__(self, name, object):
        """Add the given object to the folder under the given name."""
        if ECHO: print 'Folder:setitem'

        if not (isinstance(name, str) or isinstance(name, unicode)):
            raise TypeError("Name must be a string rather than a %s" %
                            name.__class__.__name__)
        try:
            unicode(name)
        except UnicodeError:
            raise TypeError("Non-unicode names must be 7-bit-ascii only")
        if not name:
            raise TypeError("Name must not be empty")

        if name in self.data:
            raise DuplicationError("name, %s, is already in use" % name)

        # TODO: need to change setitem so that events are fired for the object,
        #       not the object stored form - override the __setitem__ method of self.data
        setitem(self, self.set_data_item, name, object)
Example #4
0
    def __setitem__(self, key, object):
        """ See `IOrderedContainer`.

        >>> oc = OrderedContainer()
        >>> oc.keys()
        []
        >>> oc['foo'] = 'bar'
        >>> oc._order
        ['foo']
        >>> oc['baz'] = 'quux'
        >>> oc._order
        ['foo', 'baz']
        >>> int(len(oc._order) == len(oc._data))
        1
        """

        existed = self._data.has_key(key)

        bad = False
        if isinstance(key, StringTypes):
            try:
                unicode(key)
            except UnicodeError:
                bad = True
        else:
            bad = True
        if bad: 
            raise TypeError("'%s' is invalid, the key must be an "
                            "ascii or unicode string" % key)
        if len(key) == 0:
            raise ValueError("The key cannot be an empty string")

        setitem(self, self._data.__setitem__, key, object)

        if not existed:
            self._order.append(key)

        return key
Example #5
0
 def __setitem__(self, name, object):
     setitem(self, super(Directory, self).__setitem__, name, object)
     self.modified = datetime.datetime.now()
Example #6
0
    def makeObjects(self):
        checker = NamesChecker(["__getitem__"])
        defineChecker(SiteManagerStub, checker)
        self.futurama = futurama = SampleSite()
        directlyProvides(futurama, IContainmentRoot)
        planetexpress = SampleContainer()
        robotfactory = SampleContainer()
        nimbus = SampleContainer()
        omicronpersei = SampleSite()

        bender = SampleContent()
        fry = SampleContent()
        leela = SampleContent()
        mom = SampleContent()
        zapp = SampleContent()
        kif = SampleContent()

        setitem(futurama, futurama.__setitem__, "planetexpress", planetexpress)
        setitem(futurama, futurama.__setitem__, "robotfactory", robotfactory)
        setitem(futurama, futurama.__setitem__, "nimbus", nimbus)
        setitem(futurama, futurama.__setitem__, "omicronpersei", omicronpersei)

        setitem(planetexpress, planetexpress.__setitem__, "bender", bender)
        setitem(planetexpress, planetexpress.__setitem__, "fry", fry)
        setitem(planetexpress, planetexpress.__setitem__, "leela", leela)
        setitem(robotfactory, robotfactory.__setitem__, "mom", mom)
        setitem(nimbus, nimbus.__setitem__, "zapp", zapp)
        setitem(nimbus, nimbus.__setitem__, "kif", kif)
Example #7
0
 def __setitem__(self, key, object):
     '''See interface `IWriteContainer`'''
     setitem(self, self.__data.__setitem__, key, object)