示例#1
0
 def _save_to_memcache(self):
     """Saves course representation into memcache."""
     envelope = SerializableCourseEnvelope()
     envelope.units = self._units
     envelope.lessons = self._lessons
     envelope.references = self._references
     MemcacheManager.set(self.memcache_key, envelope)
示例#2
0
    def isfile(self, afilename):
        """Checks file existence by looking up the datastore row."""
        filename = self._logical_to_physical(afilename)

        # Check cache.
        result = MemcacheManager.get(
            self.make_key(filename), namespace=self._ns)
        if result:
            return True
        if NO_OBJECT == result:
            return False

        # Check datastore.
        metadata = FileMetadataEntity.get_by_key_name(filename)
        if metadata:
            return True

        result = False

        # Check with parent fs.
        if self._inherits_from and self._can_inherit(filename):
            result = self._inherits_from.isfile(afilename)

        # Put NO_OBJECT marker into memcache to avoid repeated lookups.
        if not result:
            MemcacheManager.set(
                self.make_key(filename), NO_OBJECT, namespace=self._ns)

        return result
示例#3
0
    def isfile(self, afilename):
        """Checks file existence by looking up the datastore row."""
        filename = self._logical_to_physical(afilename)

        # Check cache.
        result = MemcacheManager.get(self.make_key(filename),
                                     namespace=self._ns)
        if result:
            return True
        if NO_OBJECT == result:
            return False

        # Check datastore.
        metadata = FileMetadataEntity.get_by_key_name(filename)
        if metadata:
            return True

        result = False

        # Check with parent fs.
        if self._inherits_from and self._can_inherit(filename):
            result = self._inherits_from.isfile(afilename)

        # Put NO_OBJECT marker into memcache to avoid repeated lookups.
        if not result:
            MemcacheManager.set(self.make_key(filename),
                                NO_OBJECT,
                                namespace=self._ns)

        return result
示例#4
0
 def _save_to_memcache(self):
     """Saves course representation into memcache."""
     envelope = SerializableCourseEnvelope()
     envelope.units = self._units
     envelope.lessons = self._lessons
     envelope.references = self._references
     MemcacheManager.set(self.memcache_key, envelope)
示例#5
0
    def update_permissions_map(cls):
        """Puts a dictionary mapping users to permissions in memcache.

        A dictionary is constructed, using roles information from the datastore,
        mapping user emails to dictionaries that map module names to
        sets of permissions.

        Returns:
            The created dictionary.
        """
        permissions_map = {}
        for role in RoleDAO.get_all():
            for user in role.users:
                user_permissions = permissions_map.setdefault(user, {})
                for (module_name, permissions) in role.permissions.iteritems():
                    module_permissions = user_permissions.setdefault(module_name, set())
                    module_permissions.update(permissions)

        MemcacheManager.set(cls.memcache_key, permissions_map)
        return permissions_map
    def update_permissions_map(cls):
        """Puts a dictionary mapping users to permissions in memcache.

        A dictionary is constructed, using roles information from the datastore,
        mapping user emails to dictionaries that map module names to
        sets of permissions.

        Returns:
            The created dictionary.
        """
        permissions_map = {}
        for role in RoleDAO.get_all():
            for user in role.users:
                user_permissions = permissions_map.setdefault(user, {})
                for (module_name, permissions) in role.permissions.iteritems():
                    module_permissions = user_permissions.setdefault(
                        module_name, set())
                    module_permissions.update(permissions)

        MemcacheManager.set(cls.memcache_key, permissions_map)
        return permissions_map
示例#7
0
    def get(self, afilename):
        """Gets a file from a datastore. Raw bytes stream, no encodings."""
        filename = self._logical_to_physical(afilename)

        # Load from cache.
        result = MemcacheManager.get(self.make_key(filename),
                                     namespace=self._ns)
        if result:
            return result
        if NO_OBJECT == result:
            return None

        # Load from a datastore.
        metadata = FileMetadataEntity.get_by_key_name(filename)
        if metadata:
            data = FileDataEntity.get_by_key_name(filename)
            if data:
                result = FileStreamWrapped(metadata, data.data)
                MemcacheManager.set(self.make_key(filename),
                                    result,
                                    namespace=self._ns)
                return result

        result = None
        metadata = None

        # Load from parent fs.
        if self._inherits_from and self._can_inherit(filename):
            result = self._inherits_from.get(afilename)

        # Cache result.
        if result:
            result = FileStreamWrapped(metadata, result.read())
            MemcacheManager.set(self.make_key(filename),
                                result,
                                namespace=self._ns)
        else:
            MemcacheManager.set(self.make_key(filename),
                                NO_OBJECT,
                                namespace=self._ns)

        return result
示例#8
0
    def get(self, afilename):
        """Gets a file from a datastore. Raw bytes stream, no encodings."""
        filename = self._logical_to_physical(afilename)

        # Load from cache.
        result = MemcacheManager.get(
            self.make_key(filename), namespace=self._ns)
        if result:
            return result
        if NO_OBJECT == result:
            return None

        # Load from a datastore.
        metadata = FileMetadataEntity.get_by_key_name(filename)
        if metadata:
            data = FileDataEntity.get_by_key_name(filename)
            if data:
                result = FileStreamWrapped(metadata, data.data)
                MemcacheManager.set(
                    self.make_key(filename), result, namespace=self._ns)
                return result

        result = None
        metadata = None

        # Load from parent fs.
        if self._inherits_from and self._can_inherit(filename):
            result = self._inherits_from.get(afilename)

        # Cache result.
        if result:
            result = FileStreamWrapped(metadata, result.read())
            MemcacheManager.set(
                self.make_key(filename), result, namespace=self._ns)
        else:
            MemcacheManager.set(
                self.make_key(filename), NO_OBJECT, namespace=self._ns)

        return result
示例#9
0
 def save(cls, app_context, instance):
     """Saves instance to memcache."""
     MemcacheManager.set(
         cls._make_key(),
         cls.memento_from_instance(instance).serialize(),
         namespace=app_context.get_namespace_name())
 def save(cls, app_context, instance):
     """Saves instance to memcache."""
     MemcacheManager.set(
         cls._make_key(),
         cls.memento_from_instance(instance).serialize(),
         namespace=app_context.get_namespace_name())