def get(self, name, instance, **kwargs): raise NotImplementedError('%s: get' % self.getName()) security.declarePrivate('set') def set(self, name, instance, value, **kwargs): raise NotImplementedError('%s: set' % self.getName()) security.declarePrivate('unset') def unset(self, name, instance, **kwargs): raise NotImplementedError('%s: unset' % self.getName()) setSecurity(Storage) class ReadOnlyStorage(Storage): """A marker storage class for used for read-only fields.""" security = ClassSecurityInfo() class StorageLayer(Storage): """Base, abstract StorageLayer. Storages that need to manipulate how they are initialized per instance and/or per field must subclass and implement those methods""" implements(IStorage, ILayer)
security.declarePrivate('get') def get(self, name, instance, **kwargs): raise NotImplementedError('%s: get' % self.getName()) security.declarePrivate('set') def set(self, name, instance, value, **kwargs): raise NotImplementedError('%s: set' % self.getName()) security.declarePrivate('unset') def unset(self, name, instance, **kwargs): raise NotImplementedError('%s: unset' % self.getName()) setSecurity(Storage) class ReadOnlyStorage(Storage): """A marker storage class for used for read-only fields.""" security = ClassSecurityInfo() @implementer(IStorage, ILayer) class StorageLayer(Storage): """Base, abstract StorageLayer. Storages that need to manipulate how they are initialized per instance and/or per field must subclass and implement those methods""" security = ClassSecurityInfo()
value = aq_base(value) ann = getAnnotation(instance) ann.setSubkey(self._key, value, subkey=name) if self._migrate: self._cleanup(name, instance, value, **kwargs) security.declarePrivate('unset') def unset(self, name, instance, **kwargs): ann = getAnnotation(instance) try: ann.delSubkey(self._key, subkey=name) except KeyError: pass setSecurity(BaseAnnotationStorage) class AnnotationStorage(BaseAnnotationStorage): """Stores values as ATAnnotations on the object """ _key = AT_ANN_STORAGE security = ClassSecurityInfo() def _migration(self, name, instance, **kwargs): """Migrates data from the original storage """ value = getattr(aq_base(instance), name, _marker) if value is _marker:
def __init__(self, tuples): self.tuples = tuples def __getitem__(self, item): return self.tuples[item] def getDisplayList(self, instance): retval = [item for item in self.tuples] return DisplayList(retval) def getThirdElement(self, id): retval = [elem[2] for elem in self.tuples if elem[0] == id] if len(retval) == 0: return None return retval[0] def __contains__(self, id): retval = [ elem[2] for elem in self.tuples if elem[0] == id or elem[2] == id ] return (len(retval) != 0) def getTuples(self): return self.tuples def keys(self): return [] setSecurity(MyDisplayList, defaultAccess='allow')
logger.info("CassandraFieldStorage.set: name=%s, instance=%s, value=%s ..., kw=%s" % (name, repr(instance), str(value)[:20], kwargs)) key = self.key_for_instance(instance) field = kwargs.get("field") if key is None: logger.warning("CassandraFieldStorage.set: Field %s, instance %s: key is None. Cannot save data." %(field, repr(instance))) return if not isinstance(value, types.StringTypes): # XXX: fix Image and File Fields! value = str(value) # BaseUnit self.data.insert(key, {name: value.encode(CassandraFieldStorage.encoding)}) security.declarePrivate('unset') def unset(self, name, instance, **kwargs): logger.info("CassandraFieldStorage.unset: name=%s, instance=%s, kw=%s" % (name, repr(instance), kw)) key = self.key_for_instance(instance) try: self.data.remove(key, columns=[name]) except (pycassa.NotFoundException, pycassa.NoServerAvailable), e: pass setSecurity(CassandraFieldStorage) registerStorage(CassandraFieldStorage) # vim: set ft=python ts=4 sw=4 expandtab :