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)
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
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
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
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
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
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())