Skip to content

Commit d7a718d

Browse files
committed
grow support for StorageManager.store_data
1 parent 897ffd1 commit d7a718d

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

elasticgit/manager.py

+24-5
Original file line numberDiff line numberDiff line change
@@ -305,19 +305,38 @@ def store(self, model, message):
305305
raise StorageException('Cannot save a model without a UUID set.')
306306

307307
# ensure the directory exists
308-
file_name = os.path.join(
308+
file_path = os.path.join(
309309
self.repo.working_dir, self.git_name(model))
310-
dir_name = os.path.dirname(file_name)
310+
311+
return self.store_data(
312+
file_path, self.serializer.serialize(model), message)
313+
314+
def store_data(self, file_path, data, message):
315+
"""
316+
Store some data in a file
317+
318+
:param str file_path:
319+
Where to store the file.
320+
:param obj data:
321+
The data to write in the file.
322+
:param str message:
323+
The commit mesasge.
324+
:returns:
325+
The commit
326+
"""
327+
328+
# ensure the directory exists
329+
dir_name = os.path.dirname(file_path)
311330
if not (os.path.isdir(dir_name)):
312331
os.makedirs(dir_name)
313332

314-
with open(file_name, 'w') as fp:
333+
with open(file_path, 'w') as fp:
315334
# write the object data
316-
self.serializer.serialize(model, fp)
335+
fp.write(data)
317336

318337
# add to the git index
319338
index = self.repo.index
320-
index.add([file_name])
339+
index.add([file_path])
321340
return index.commit(message)
322341

323342
def delete(self, model, message):

elasticgit/serializers.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ class Serializer(object):
55

66
encoding = 'utf-8'
77

8-
def serialize(self, model, fp):
9-
return self.dump(dict(model), fp)
8+
def serialize(self, model):
9+
return self.dumps(dict(model))
1010

1111
def deserialize(self, model_class, data):
1212
return model_class(self.loads(data))
@@ -16,8 +16,8 @@ class JSONSerializer(Serializer):
1616

1717
suffix = 'json'
1818

19-
def dump(self, data, fp):
20-
return json.dump(data, fp=fp, indent=2, encoding=self.encoding)
19+
def dumps(self, data):
20+
return json.dumps(data, indent=2, encoding=self.encoding)
2121

2222
def loads(self, data):
2323
return json.loads(data, encoding=self.encoding)

0 commit comments

Comments
 (0)