Commit 951c19d7 by Calen Pennington

Push `get` down into FieldDataCache, from DjangoKeyValueStore

parent 5df3c226
...@@ -132,14 +132,7 @@ class DjangoKeyValueStore(KeyValueStore): ...@@ -132,14 +132,7 @@ class DjangoKeyValueStore(KeyValueStore):
if key.scope not in self._allowed_scopes: if key.scope not in self._allowed_scopes:
raise InvalidScopeError(key) raise InvalidScopeError(key)
field_object = self._field_data_cache.find(key) return self._field_data_cache.get(key)
if field_object is None:
raise KeyError(key.field_name)
if key.scope == Scope.user_state:
return json.loads(field_object.state)[key.field_name]
else:
return json.loads(field_object.value)
def set(self, key, value): def set(self, key, value):
""" """
...@@ -622,6 +615,25 @@ class FieldDataCache(object): ...@@ -622,6 +615,25 @@ class FieldDataCache(object):
scope_map[field.scope].add(field) scope_map[field.scope].add(field)
return scope_map return scope_map
@contract(key=DjangoKeyValueStore.Key)
def get(self, key):
'''
Load the field value specified by `key`.
Arguments:
key (`DjangoKeyValueStore.Key`): The field value to load
Returns: The found value
Raises: KeyError if key isn't found in the cache
'''
field_object = self.find(key)
if field_object is None:
raise KeyError(key.field_name)
if key.scope == Scope.user_state:
return json.loads(field_object.state)[key.field_name]
else:
return json.loads(field_object.value)
def find(self, key): def find(self, key):
''' '''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment