storage: move load/dumps into their own class methods (#4739)
This commit is contained in:
parent
cbd6204d87
commit
7c592ad9d2
|
@ -277,13 +277,17 @@ class StorableObject(object):
|
|||
return cls.get_ids(ids)
|
||||
get_with_indexed_value = classmethod(get_with_indexed_value)
|
||||
|
||||
def get_filename(cls, filename, ignore_errors=False, ignore_migration=False):
|
||||
def storage_load(cls, fd):
|
||||
if get_publisher() and get_publisher().unpickler_class:
|
||||
unpickler = get_publisher().unpickler_class
|
||||
else:
|
||||
unpickler = pickle.Unpickler
|
||||
return unpickler(fd).load()
|
||||
storage_load = classmethod(storage_load)
|
||||
|
||||
def get_filename(cls, filename, ignore_errors=False, ignore_migration=False):
|
||||
try:
|
||||
o = unpickler(file(filename)).load()
|
||||
o = cls.storage_load(file(filename))
|
||||
except IOError:
|
||||
if ignore_errors:
|
||||
return None
|
||||
|
@ -370,6 +374,10 @@ class StorableObject(object):
|
|||
objects_dir = self.get_objects_dir()
|
||||
return os.path.join(objects_dir, fix_key(self.id))
|
||||
|
||||
def storage_dumps(cls, object):
|
||||
return pickle.dumps(object)
|
||||
storage_dumps = classmethod(storage_dumps)
|
||||
|
||||
def store(self, async=False):
|
||||
objects_dir = self.get_objects_dir()
|
||||
new_object = False
|
||||
|
@ -398,7 +406,7 @@ class StorableObject(object):
|
|||
previous_object_value = self.get_filename(object_filename,
|
||||
ignore_errors=True, ignore_migration=True)
|
||||
|
||||
s = pickle.dumps(self)
|
||||
s = self.storage_dumps(self)
|
||||
atomic_write(object_filename, s, async)
|
||||
# update last modified time
|
||||
if os.path.exists(objects_dir):
|
||||
|
|
Loading…
Reference in New Issue