Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
        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:
Exemplo n.º 4
0
    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 :