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

View File

@ -6,6 +6,8 @@ import os
import re import re
import sys import sys
import mopidy
from mopidy import compat, local, models from mopidy import compat, local, models
from mopidy.internal import timer from mopidy.internal import timer
from mopidy.local import search, storage, translator from mopidy.local import search, storage, translator
@ -164,7 +166,9 @@ class JsonLibrary(local.Library):
self._tracks.pop(uri, None) self._tracks.pop(uri, None)
def close(self): 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): def clear(self):
try: try:

View File

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