class ResponseContainer(Persistent): implements(IResponseContainer) adapts(IClaim) ANNO_KEY = 'claim.responses' def __init__(self, context): self.context = context annotations = IAnnotations(self.context) self.__mapping = annotations.get(self.ANNO_KEY, None) if self.__mapping is None: self.__mapping = PersistentList() annotations[self.ANNO_KEY] = self.__mapping def __contains__(self, key): return key in self.__mapping def __getitem__(self, i): i = int(i) return self.__mapping.__getitem__(i) def __delitem__(self, item): self.__mapping.__delitem__(item) def __len__(self): return self.__mapping.__len__() def __setitem__(self, i, y): self.__mapping.__setitem__(i, y) def append(self, item): self.__mapping.append(item) def remove(self, id): id = int(id) self[id] = None def add(self, item): self.append(item) id = str(len(self)) event = ObjectAddedEvent(item, newParent=self.context, newName=id) notify(event) def delete(self, id): event = ObjectRemovedEvent(self[id], oldParent=self.context, oldName=id) self.remove(id) notify(event)
class MicroUpdateContainer(Persistent): implements(IMicroUpdateContainer) adapts(ILiveblog) ANNO_KEY = 'liveblog.microupdates' def __init__(self, context): self.context = context annotations = IAnnotations(self.context) self.__mapping = annotations.get(self.ANNO_KEY, None) if self.__mapping is None: self.__mapping = PersistentList() annotations[self.ANNO_KEY] = self.__mapping def __contains__(self, key): return key in self.__mapping def __getitem__(self, i): i = int(i) return self.__mapping.__getitem__(i) def __delitem__(self, item): self.__mapping.__delitem__(item) def __len__(self): return self.__mapping.__len__() def __setitem__(self, i, y): self.__mapping.__setitem__(i, y) def append(self, item): self.__mapping.append(item) def remove(self, id): id = int(id) self[id] = None def add(self, item): self.append(item) id = str(len(self)) event = ObjectAddedEvent(item, newParent=self.context, newName=id) notify(event) def delete(self, id): event = ObjectRemovedEvent(self[id], oldParent=self.context, oldName=id) self.remove(id) notify(event)
class ResponseContainer(object): ANNO_KEY = 'poi.responses' def __init__(self, context): self.context = context annotations = unprotected_write(IAnnotations(self.context)) self.__mapping = annotations.get(self.ANNO_KEY, None) if self.__mapping is None: self.__mapping = PersistentList() annotations[self.ANNO_KEY] = self.__mapping def __contains__(self, key): '''See interface IReadContainer Taken from zope.app.container.btree. Reimplement this method, since has_key() returns the key if available, while we expect True or False. >>> c = ResponseContainer() >>> "a" in c False >>> c["a"] = 1 >>> "a" in c True >>> "A" in c False ''' return key in self.__mapping has_key = __contains__ def __getitem__(self, i): i = int(i) return self.__mapping.__getitem__(i) def __delitem__(self, item): self.__mapping.__delitem__(item) def __len__(self): return self.__mapping.__len__() def __setitem__(self, i, y): self.__mapping.__setitem__(i, y) def append(self, item): self.__mapping.append(item) def remove(self, item): self.__mapping.remove(item) def add(self, item): if not IResponse.providedBy(item): raise UnaddableError(self, item, "IResponse interface not provided.") self.append(item) id = str(len(self)) event = ObjectAddedEvent(item, newParent=self.context, newName=id) notify(event) def delete(self, id): # We need to fire an ObjectRemovedEvent ourselves here because # self[id].__parent__ is not exactly the same as self, which # in the end means that __delitem__ does not fire an # ObjectRemovedEvent for us. # # Also, now we can say the oldParent is the issue instead of # this adapter. event = ObjectRemovedEvent(self[id], oldParent=self.context, oldName=id) self.remove(self[id]) notify(event)
class ResponseContainer(Persistent): implements(IResponseContainer) adapts(ITicket) ANNO_KEY = 'izug.ticketbox.responses' def __init__(self, context): self.context = context annotations = IAnnotations(self.context) self.__mapping = annotations.get(self.ANNO_KEY, None) if self.__mapping is None: self.__mapping = PersistentList() annotations[self.ANNO_KEY] = self.__mapping def __contains__(self, key): '''See interface IReadContainer Taken from zope.app.container.btree. Reimplement this method, since has_key() returns the key if available, while we expect True or False. >>> c = ResponseContainer() >>> "a" in c False >>> c["a"] = 1 >>> "a" in c True >>> "A" in c False ''' return key in self.__mapping has_key = __contains__ def __getitem__(self, i): i = int(i) return self.__mapping.__getitem__(i) def __delitem__(self, item): self.__mapping.__delitem__(item) def __len__(self): return self.__mapping.__len__() def __setitem__(self, i, y): self.__mapping.__setitem__(i, y) def append(self, item): self.__mapping.append(item) def remove(self, id_): """Remove item 'id_' from the list. We don't actually remove the item, we just set it to None, so that when you edit item 3 out of 3 and someone deletes item 2 you are not left in the water. Note that we used to get passed a complete item, not an id. """ id_ = int(id_) self[id_] = None def add(self, item): if not IResponse.providedBy(item): raise UnaddableError(self, item, "IResponse interface not provided.") self.append(item) id_ = str(len(self)) event = ObjectAddedEvent(item, newParent=self.context, newName=id_) notify(event) def delete(self, id_): # We need to fire an ObjectRemovedEvent ourselves here because # self[id_].__parent__ is not exactly the same as self, which # in the end means that __delitem__ does not fire an # ObjectRemovedEvent for us. # # Also, now we can say the oldParent is the issue instead of # this adapter. event = ObjectRemovedEvent(self[id_], oldParent=self.context, oldName=id_) self.remove(id_) notify(event)
class ResponseContainer(Persistent): implements(IResponseContainer) adapts(IIssue) ANNO_KEY = 'poi.responses' def __init__(self, context): self.context = context annotations = IAnnotations(self.context) self.__mapping = annotations.get(self.ANNO_KEY, None) if self.__mapping is None: self.__mapping = PersistentList() annotations[self.ANNO_KEY] = self.__mapping def __contains__(self, key): '''See interface IReadContainer Taken from zope.app.container.btree. Reimplement this method, since has_key() returns the key if available, while we expect True or False. >>> c = ResponseContainer() >>> "a" in c False >>> c["a"] = 1 >>> "a" in c True >>> "A" in c False ''' return key in self.__mapping has_key = __contains__ def __getitem__(self, i): i = int(i) return self.__mapping.__getitem__(i) def __delitem__(self, item): self.__mapping.__delitem__(item) def __len__(self): return self.__mapping.__len__() def __setitem__(self, i, y): self.__mapping.__setitem__(i, y) def append(self, item): self.__mapping.append(item) def remove(self, id): """Remove item 'id' from the list. We don't actually remove the item, we just set it to None, so that when you edit item 3 out of 3 and someone deletes item 2 you are not left in the water. Note that we used to get passed a complete item, not an id. """ id = int(id) self[id] = None def add(self, item): if not IResponse.providedBy(item): raise ValueError("IResponse interface not provided.") self.append(item) id = str(len(self)) event = ObjectAddedEvent(item, newParent=self.context, newName=id) notify(event) def delete(self, id): # We need to fire an ObjectRemovedEvent ourselves here because # self[id].__parent__ is not exactly the same as self, which # in the end means that __delitem__ does not fire an # ObjectRemovedEvent for us. # # Also, now we can say the oldParent is the issue instead of # this adapter. event = ObjectRemovedEvent(self[id], oldParent=self.context, oldName=id) self.remove(id) notify(event)