Commit 9338b6a4 by Calen Pennington

Push `delete` down into FieldDataCache from DjangoKeyValueStore

parent ebb3c906
......@@ -159,17 +159,7 @@ class DjangoKeyValueStore(KeyValueStore):
if key.scope not in self._allowed_scopes:
raise InvalidScopeError(key)
field_object = self._field_data_cache.find(key)
if field_object is None:
raise KeyError(key.field_name)
if key.scope == Scope.user_state:
state = json.loads(field_object.state)
del state[key.field_name]
field_object.state = json.dumps(state)
field_object.save()
else:
field_object.delete()
self._field_data_cache.delete(key)
def has(self, key):
if key.scope not in self._allowed_scopes:
......@@ -651,6 +641,28 @@ class FieldDataCache(object):
log.exception('Error saving fields %r', field_objects[field_object])
raise KeyValueMultiSaveError(saved_fields)
@contract(key=DjangoKeyValueStore.Key)
def delete(self, key):
"""
Delete the value specified by `key`.
Arguments:
key (`DjangoKeyValueStore.Key`): The field value to delete
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:
state = json.loads(field_object.state)
del state[key.field_name]
field_object.state = json.dumps(state)
field_object.save()
else:
field_object.delete()
def find(self, key):
'''
Look for a model data object using an DjangoKeyValueStore.Key object
......
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