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
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)
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))
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
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)
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
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
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
def add_template(self, template): tid = template.id checkObject(self, tid, template) if tid in self: del self[tid] self[tid] = template
def __setitem__(self, name, value): constraints.checkObject(self, name, value) self.storage[name] = value
def __setitem__(self, key, value): checkObject(self, key, value) super(_CheckObjectOnSetSampleContainer, self).__setitem__(key, value)
def _setitemf(self, key, value): checkObject(self, key, value) super(_CheckObjectOnSetBTreeContainer, self)._setitemf(key, value)
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
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)