diff --git a/mopidy/models.py b/mopidy/models.py index 901d637b..a4ed1b4f 100644 --- a/mopidy/models.py +++ b/mopidy/models.py @@ -80,7 +80,7 @@ class ImmutableObject(object): def serialize(self): data = {} - data['__type__'] = self.__class__.__name__ + data['__model__'] = self.__class__.__name__ for key in self.__dict__.keys(): public_key = key.lstrip('_') value = self.__dict__[key] @@ -101,7 +101,7 @@ class ModelJSONEncoder(json.JSONEncoder): >>> import json >>> json.dumps({'a_track': Track(name='name')}, cls=ModelJSONEncoder) - '{"a_track": {"__type__": "Track", "name": "name"}}' + '{"a_track": {"__model__": "Track", "name": "name"}}' """ def default(self, obj): @@ -118,14 +118,14 @@ def model_json_decoder(dct): >>> import json >>> json.loads( - ... '{"a_track": {"__type__": "Track", "name": "name"}}', + ... '{"a_track": {"__model__": "Track", "name": "name"}}', ... object_hook=model_json_decoder) {u'a_track': Track(artists=[], name=u'name')} """ - if '__type__' in dct: - obj_type = dct.pop('__type__') - cls = globals().get(obj_type, None) + if '__model__' in dct: + model_name = dct.pop('__model__') + cls = globals().get(model_name, None) if issubclass(cls, ImmutableObject): return cls(**dct) return dct diff --git a/tests/models_test.py b/tests/models_test.py index 218804e7..9a3062fc 100644 --- a/tests/models_test.py +++ b/tests/models_test.py @@ -93,7 +93,7 @@ class ArtistTest(unittest.TestCase): def test_serialize(self): self.assertDictEqual( - {'__type__': 'Artist', 'uri': 'uri', 'name': 'name'}, + {'__model__': 'Artist', 'uri': 'uri', 'name': 'name'}, Artist(uri='uri', name='name').serialize()) def test_to_json_and_back(self): @@ -232,14 +232,14 @@ class AlbumTest(unittest.TestCase): def test_serialize_without_artists(self): self.assertDictEqual( - {'__type__': 'Album', 'uri': 'uri', 'name': 'name'}, + {'__model__': 'Album', 'uri': 'uri', 'name': 'name'}, Album(uri='uri', name='name').serialize()) def test_serialize_with_artists(self): artist = Artist(name='foo') self.assertDictEqual( - {'__type__': 'Album', 'uri': 'uri', 'name': 'name', 'artists': - [artist.serialize()]}, + {'__model__': 'Album', 'uri': 'uri', 'name': 'name', + 'artists': [artist.serialize()]}, Album(uri='uri', name='name', artists=[artist]).serialize()) def test_to_json_and_back(self): @@ -430,20 +430,20 @@ class TrackTest(unittest.TestCase): def test_serialize_without_artists(self): self.assertDictEqual( - {'__type__': 'Track', 'uri': 'uri', 'name': 'name'}, + {'__model__': 'Track', 'uri': 'uri', 'name': 'name'}, Track(uri='uri', name='name').serialize()) def test_serialize_with_artists(self): artist = Artist(name='foo') self.assertDictEqual( - {'__type__': 'Track', 'uri': 'uri', 'name': 'name', + {'__model__': 'Track', 'uri': 'uri', 'name': 'name', 'artists': [artist.serialize()]}, Track(uri='uri', name='name', artists=[artist]).serialize()) def test_serialize_with_album(self): album = Album(name='foo') self.assertDictEqual( - {'__type__': 'Track', 'uri': 'uri', 'name': 'name', + {'__model__': 'Track', 'uri': 'uri', 'name': 'name', 'album': album.serialize()}, Track(uri='uri', name='name', album=album).serialize()) @@ -646,7 +646,7 @@ class TlTrackTest(unittest.TestCase): def test_serialize(self): track = Track(uri='uri', name='name') self.assertDictEqual( - {'__type__': 'TlTrack', 'tlid': 123, 'track': track.serialize()}, + {'__model__': 'TlTrack', 'tlid': 123, 'track': track.serialize()}, TlTrack(tlid=123, track=track).serialize()) def test_to_json_and_back(self): @@ -780,13 +780,13 @@ class PlaylistTest(unittest.TestCase): def test_serialize_without_tracks(self): self.assertDictEqual( - {'__type__': 'Playlist', 'uri': 'uri', 'name': 'name'}, + {'__model__': 'Playlist', 'uri': 'uri', 'name': 'name'}, Playlist(uri='uri', name='name').serialize()) def test_serialize_with_tracks(self): track = Track(name='foo') self.assertDictEqual( - {'__type__': 'Playlist', 'uri': 'uri', 'name': 'name', + {'__model__': 'Playlist', 'uri': 'uri', 'name': 'name', 'tracks': [track.serialize()]}, Playlist(uri='uri', name='name', tracks=[track]).serialize())