Don't modify data in library function.

- storage.save: Don't modify data. mopidy.__version__ has to be added by caller.
- storage.load: Added a Todo. Postponed decision, if load() shall raise an exception in case of error. See PR #310.
This commit is contained in:
Jens Luetjen 2016-01-09 12:05:14 +01:00
parent a9327c559f
commit 6e99a95aae
3 changed files with 9 additions and 3 deletions

View File

@ -7,6 +7,8 @@ import os
import pykka
import mopidy
from mopidy import audio, backend, mixer
from mopidy.audio import PlaybackState
from mopidy.core.history import HistoryController
@ -188,6 +190,7 @@ class Core(
logger.info('Save state to %s', file_name)
data = {}
data['version'] = mopidy.__version__
data['tracklist'] = self.tracklist._export_state()
data['history'] = self.history._export_state()
data['playback'] = self.playback._export_state()

View File

@ -6,6 +6,8 @@ import os
import re
import sys
import mopidy
from mopidy import compat, local, models
from mopidy.internal import timer
from mopidy.local import search, storage, translator
@ -164,7 +166,9 @@ class JsonLibrary(local.Library):
self._tracks.pop(uri, None)
def close(self):
models.storage.save(self._json_file, {'tracks': self._tracks.values()})
models.storage.save(self._json_file,
{'version': mopidy.__version__,
'tracks': self._tracks.values()})
def clear(self):
try:

View File

@ -6,7 +6,6 @@ import logging
import os
import tempfile
import mopidy
from mopidy import models
from mopidy.internal import encoding
@ -22,6 +21,7 @@ def load(path):
:return: deserialized data
:rtype: dict
"""
# Todo: raise an exception in case of error?
if not os.path.isfile(path):
logger.info('File does not exist: %s.', path)
return {}
@ -44,7 +44,6 @@ def save(path, data):
:param data: dictionary containing data to save
:type data: dict
"""
data['version'] = mopidy.__version__
directory, basename = os.path.split(path)
# TODO: cleanup directory/basename.* files.