コード例 #1
0
    def moveTo(self, target, new_name=None):
        """Move this object to the `target` given.

        Returns the new name within the `target`
        """

        obj = self.context
        container = obj.__parent__

        orig_name = obj.__name__
        if new_name is None:
            new_name = orig_name

        checkObject(target, new_name, obj)

        if target is container and new_name == orig_name:
            # Nothing to do
            return

        chooser = INameChooser(target)
        new_name = chooser.chooseName(new_name, obj)

        if target is container and new_name == orig_name:
            # obstinate namechooser
            return

        target[new_name] = obj
        del container[orig_name]
        return new_name
コード例 #2
0
    def add(self, content):
        """See zope.browser.interfaces.IAdding
        """
        container = self.context
        name = self.contentName
        chooser = INameChooser(container)

        # check precondition
        checkObject(container, name, content)

        if IContainerNamesContainer.providedBy(container):
            # The container picks its own names.
            # We need to ask it to pick one.
            name = chooser.chooseName(self.contentName or '', content)
        else:
            request = self.request
            name = request.get('add_input_name', name)

            if name is None:
                name = chooser.chooseName(self.contentName or '', content)
            elif name == '':
                name = chooser.chooseName('', content)
            else:
                # Invoke the name chooser even when we have a
                # name. It'll do useful things with it like converting
                # the incoming unicode to an ASCII string.
                name = chooser.chooseName(name, content)

        content.id = name
        container._setObject(name, content)
        self.contentName = name  # Set the added object Name
        return container._getOb(name)
コード例 #3
0
ファイル: adding.py プロジェクト: dhavlik/Zope
    def add(self, content):
        """See zope.browser.interfaces.IAdding
        """
        container = self.context
        name = self.contentName
        chooser = INameChooser(container)

        # check precondition
        checkObject(container, name, content)

        if IContainerNamesContainer.providedBy(container):
            # The container picks its own names.
            # We need to ask it to pick one.
            name = chooser.chooseName(self.contentName or '', content)
        else:
            request = self.request
            name = request.get('add_input_name', name)

            if name is None:
                name = chooser.chooseName(self.contentName or '', content)
            elif name == '':
                name = chooser.chooseName('', content)
            else:
                # Invoke the name chooser even when we have a
                # name. It'll do useful things with it like converting
                # the incoming unicode to an ASCII string.
                name = chooser.chooseName(name, content)

        content.id = name
        container._setObject(name, content)
        self.contentName = name  # Set the added object Name
        return container._getOb(name)
コード例 #4
0
    def add_subscriber_to_context(self, data):
        # This doesn't verify preconditions.
        obj = self.add_form.createAndAdd(data)

        try:
            # Check the precondition now explicitly, since now there's
            # an id set in the object.
            checkObject(self.context, obj.id, obj)
        except Invalid, e:
            # Precondition was not satisfied.  Remove the subscriber.
            del self.context[obj.id]
            return (obj, unicode(e))
コード例 #5
0
    def copyableTo(self, target, name=None):
        """Say whether the object can be copied to the given `target`.

        Returns ``True`` if it can be copied there. Otherwise, returns
        ``False``.
        """
        if name is None:
            name = self.context.__name__
        try:
            checkObject(target, name, self.context)
        except Invalid:
            return False
        return True
コード例 #6
0
    def add(self, content):
        """See dolmen.forms.crud.interfaces.IAdding
        """
        container = self.context

        # check precondition
        checkObject(container, "__temporary__", content)

        # choose name in container
        chooser = INameChooser(container)
        name = chooser.chooseName("", content)

        # assign object and returns it
        container[name] = content
        return container.get(name, None)
コード例 #7
0
    def add_site_record(self, site_record):
        orig_name = site_record.id
        chooser = INameChooser(self)
        try:
            chooser.checkName(orig_name, site_record)
        except KeyError:
            # the name already exists, no problem, we're just going to 
            # increment it anyway
            pass
        except (TypeError, ValueError):
            msg = "%s is not useable as a name for a site record" % orig_name
            raise ValueError(msg)

        name = chooser.chooseName(orig_name, site_record)
        checkObject(self, name, site_record)
        site_record.id = name
        self[name] = site_record
        return name
コード例 #8
0
    def copyTo(self, target, new_name=None):
        """Copy this object to the `target` given.

        Returns the new name within the `target`. After the copy
        is created and before adding it to the target container,
        an `IObjectCopied` event is published.
        """
        obj = self.context

        orig_name = obj.__name__
        if new_name is None:
            new_name = orig_name

        checkObject(target, new_name, obj)

        chooser = INameChooser(target)
        new_name = chooser.chooseName(new_name, obj)

        new = copy(obj)
        notify(ObjectCopiedEvent(new, obj))

        target[new_name] = new
        return new_name
コード例 #9
0
    def copyTo(self, target, new_name=None):
        """Copy this object to the `target` given.

        Returns the new name within the `target`. After the copy
        is created and before adding it to the target container,
        an `IObjectCopied` event is published.
        """
        obj = self.context
        container = obj.__parent__

        orig_name = obj.__name__
        if new_name is None:
            new_name = orig_name

        checkObject(target, new_name, obj)

        chooser = INameChooser(target)
        new_name = chooser.chooseName(new_name, obj)

        new = copy(obj)
        notify(ObjectCopiedEvent(new, obj))

        target[new_name] = new
        return new_name
コード例 #10
0
 def add_template(self, template):
     tid = template.id
     checkObject(self, tid, template)
     if tid in self:
         del self[tid]
     self[tid] = template
コード例 #11
0
ファイル: container.py プロジェクト: trollfot/dolmen.storage
 def __setitem__(self, name, value):
     constraints.checkObject(self, name, value)
     self.storage[name] = value
コード例 #12
0
 def __setitem__(self, key, value):
     checkObject(self, key, value)
     super(_CheckObjectOnSetSampleContainer, self).__setitem__(key, value)
コード例 #13
0
 def _setitemf(self, key, value):
     checkObject(self, key, value)
     super(_CheckObjectOnSetBTreeContainer, self)._setitemf(key, value)
コード例 #14
0
ファイル: __init__.py プロジェクト: grodniewicz/oship
 def __setitem__(self,name,value):
     if not isinstance(value.data,self.klass_structure):
         raise DiferentStructureError("""It was expected a diferent Structure""")
     checkObject(self,name, value)
     super(EventContainer,self).__setitem__(name,value)
     value.__parent__ = self.history
コード例 #15
0
    def test_non_container(self):
        from zope.container.constraints import checkObject

        with self.assertRaisesRegexp(TypeError,
                                     "Container is not a valid Zope container."):
            checkObject({}, 'foo', 42)