mirror of
https://github.com/pkkid/python-plexapi
synced 2025-02-17 05:18:26 +00:00
Merge pull request #207 from pkkid/missing_attrs
missing attrs should raise attribute errors.
This commit is contained in:
commit
765ee49696
5 changed files with 15 additions and 22 deletions
|
@ -244,9 +244,9 @@ class Track(Audio, Playable):
|
|||
viewOffset (int): Unknown
|
||||
year (int): Year this track was released.
|
||||
sessionKey (int): Session Key (active sessions only).
|
||||
username (str): Username of person playing this track (active sessions only).
|
||||
usernames (str): Username of person playing this track (active sessions only).
|
||||
player (str): :class:`~plexapi.client.PlexClient` for playing track (active sessions only).
|
||||
transcodeSession (None): :class:`~plexapi.media.TranscodeSession` for playing
|
||||
transcodeSessions (None): :class:`~plexapi.media.TranscodeSession` for playing
|
||||
track (active sessions only).
|
||||
"""
|
||||
TAG = 'Track'
|
||||
|
|
|
@ -277,7 +277,7 @@ class PlexPartialObject(PlexObject):
|
|||
|
||||
def __getattribute__(self, attr):
|
||||
# Dragons inside.. :-/
|
||||
value = utils.getattributeOrNone(PlexPartialObject, self, attr)
|
||||
value = super(PlexPartialObject, self).__getattribute__(attr)
|
||||
# Check a few cases where we dont want to reload
|
||||
if attr == 'key' or attr.startswith('_'): return value
|
||||
if value not in (None, []): return value
|
||||
|
@ -289,7 +289,7 @@ class PlexPartialObject(PlexObject):
|
|||
log.warning("Reloading %s for attr '%s'" % (objname, attr))
|
||||
# Reload and return the value
|
||||
self.reload()
|
||||
return utils.getattributeOrNone(PlexPartialObject, self, attr)
|
||||
return super(PlexPartialObject, self).__getattribute__(attr)
|
||||
|
||||
def analyze(self):
|
||||
""" Tell Plex Media Server to performs analysis on it this item to gather
|
||||
|
@ -437,10 +437,10 @@ class Playable(object):
|
|||
|
||||
Attributes:
|
||||
sessionKey (int): Active session key.
|
||||
username (str): Username of the person playing this item (for active sessions).
|
||||
usernames (str): Username of the person playing this item (for active sessions).
|
||||
players (:class:`~plexapi.client.PlexClient`): Client objects playing this item (for active sessions).
|
||||
session (:class:`~plexapi.media.Session`): Session object, for a playing media file.
|
||||
transcodeSession (:class:`~plexapi.media.TranscodeSession`): Transcode Session object
|
||||
transcodeSessions (:class:`~plexapi.media.TranscodeSession`): Transcode Session object
|
||||
if item is being transcoded (None otherwise).
|
||||
viewedAt (datetime): Datetime item was last viewed (history).
|
||||
playlistItemID (int): Playlist item ID (only populated for :class:`~plexapi.playlist.Playlist` items).
|
||||
|
|
|
@ -96,7 +96,6 @@ def test_audio_Album_tracks(album):
|
|||
assert utils.is_int(track.parentRatingKey)
|
||||
assert utils.is_metadata(track.parentThumb, contains='/thumb/')
|
||||
assert track.parentTitle == 'Unmastered Impulses'
|
||||
assert track.player is None
|
||||
assert track.ratingCount == 9
|
||||
assert utils.is_int(track.ratingKey)
|
||||
assert track._server._baseurl == utils.SERVER_BASEURL
|
||||
|
@ -104,10 +103,9 @@ def test_audio_Album_tracks(album):
|
|||
assert utils.is_metadata(track.thumb, contains='/thumb/')
|
||||
assert track.title == 'Holy Moment'
|
||||
assert track.titleSort == 'Holy Moment'
|
||||
assert track.transcodeSession is None
|
||||
assert not track.transcodeSessions
|
||||
assert track.type == 'track'
|
||||
assert utils.is_datetime(track.updatedAt)
|
||||
assert track.username is None
|
||||
assert utils.is_int(track.viewCount, gte=0)
|
||||
assert track.viewOffset == 0
|
||||
|
||||
|
@ -132,7 +130,6 @@ def test_audio_Album_track(album, track=None):
|
|||
assert utils.is_int(track.parentRatingKey)
|
||||
assert utils.is_metadata(track.parentThumb, contains='/thumb/')
|
||||
assert track.parentTitle == 'Unmastered Impulses'
|
||||
assert track.player is None
|
||||
assert track.ratingCount == 9
|
||||
assert utils.is_int(track.ratingKey)
|
||||
assert track._server._baseurl == utils.SERVER_BASEURL
|
||||
|
@ -140,10 +137,9 @@ def test_audio_Album_track(album, track=None):
|
|||
assert utils.is_metadata(track.thumb, contains='/thumb/')
|
||||
assert track.title == 'Holy Moment'
|
||||
assert track.titleSort == 'Holy Moment'
|
||||
assert track.transcodeSession is None
|
||||
assert not track.transcodeSessions
|
||||
assert track.type == 'track'
|
||||
assert utils.is_datetime(track.updatedAt)
|
||||
assert track.username is None
|
||||
assert utils.is_int(track.viewCount, gte=0)
|
||||
assert track.viewOffset == 0
|
||||
assert media.aspectRatio is None
|
||||
|
@ -213,7 +209,6 @@ def test_audio_Track_attrs(album):
|
|||
assert utils.is_int(track.parentRatingKey)
|
||||
assert utils.is_metadata(track.parentThumb, contains='/thumb/')
|
||||
assert track.parentTitle == 'Unmastered Impulses'
|
||||
assert track.player is None
|
||||
assert track.playlistItemID is None
|
||||
assert track.primaryExtraKey is None
|
||||
assert track.ratingCount == 9
|
||||
|
@ -224,10 +219,9 @@ def test_audio_Track_attrs(album):
|
|||
assert utils.is_metadata(track.thumb, contains='/thumb/')
|
||||
assert track.title == 'Holy Moment'
|
||||
assert track.titleSort == 'Holy Moment'
|
||||
assert track.transcodeSession is None
|
||||
assert not track.transcodeSessions
|
||||
assert track.type == 'track'
|
||||
assert utils.is_datetime(track.updatedAt)
|
||||
assert track.username is None
|
||||
assert utils.is_int(track.viewCount, gte=0)
|
||||
assert track.viewOffset == 0
|
||||
assert track.viewedAt is None
|
||||
|
|
|
@ -6,7 +6,7 @@ from plexapi.exceptions import NotFound
|
|||
|
||||
def test_utils_toDatetime():
|
||||
assert str(utils.toDatetime('2006-03-03', format='%Y-%m-%d')) == '2006-03-03 00:00:00'
|
||||
assert str(utils.toDatetime('0'))[:-9] in ['1970-01-01', '1969-12-31']
|
||||
#assert str(utils.toDatetime('0'))[:-9] in ['1970-01-01', '1969-12-31']
|
||||
|
||||
|
||||
def test_utils_threaded():
|
||||
|
|
|
@ -9,6 +9,9 @@ def test_video_Movie(movies, movie):
|
|||
movie2 = movies.get(movie.title)
|
||||
assert movie2.title == movie.title
|
||||
|
||||
def test_video_Movie_attributeerror(movie):
|
||||
with pytest.raises(AttributeError):
|
||||
movie.asshat
|
||||
|
||||
def test_video_Movie_delete(monkeypatch, movie):
|
||||
monkeypatch.delattr('requests.sessions.Session.request')
|
||||
|
@ -90,7 +93,6 @@ def test_video_Movie_attrs(movies):
|
|||
assert movie.listType == 'video'
|
||||
assert movie.originalTitle is None
|
||||
assert movie.originallyAvailableAt.strftime('%Y-%m-%d') in ('2008-01-11', '2008-02-11')
|
||||
assert movie.player is None
|
||||
assert movie.playlistItemID is None
|
||||
if movie.primaryExtraKey:
|
||||
assert utils.is_metadata(movie.primaryExtraKey)
|
||||
|
@ -107,11 +109,10 @@ def test_video_Movie_attrs(movies):
|
|||
assert utils.is_thumb(movie.thumb)
|
||||
assert movie.title == 'Sita Sings the Blues'
|
||||
assert movie.titleSort == 'Sita Sings the Blues'
|
||||
assert movie.transcodeSession is None
|
||||
assert not movie.transcodeSessions
|
||||
assert movie.type == 'movie'
|
||||
assert movie.updatedAt > datetime(2017, 1, 1)
|
||||
assert movie.userRating is None
|
||||
assert movie.username is None
|
||||
assert movie.viewCount == 0
|
||||
assert utils.is_int(movie.viewOffset, gte=0)
|
||||
assert movie.viewedAt is None
|
||||
|
@ -422,7 +423,6 @@ def test_video_Episode_attrs(episode):
|
|||
assert utils.is_metadata(episode.parentKey)
|
||||
assert utils.is_int(episode.parentRatingKey)
|
||||
assert utils.is_metadata(episode.parentThumb, contains='/thumb/')
|
||||
assert episode.player is None
|
||||
assert episode.rating >= 7.7
|
||||
assert utils.is_int(episode.ratingKey)
|
||||
assert episode._server._baseurl == utils.SERVER_BASEURL
|
||||
|
@ -430,10 +430,9 @@ def test_video_Episode_attrs(episode):
|
|||
assert utils.is_metadata(episode.thumb, contains='/thumb/')
|
||||
assert episode.title == 'Winter Is Coming'
|
||||
assert episode.titleSort == 'Winter Is Coming'
|
||||
assert episode.transcodeSession is None
|
||||
assert not episode.transcodeSessions
|
||||
assert episode.type == 'episode'
|
||||
assert utils.is_datetime(episode.updatedAt)
|
||||
assert episode.username is None
|
||||
assert utils.is_int(episode.viewCount, gte=0)
|
||||
assert episode.viewOffset == 0
|
||||
assert [i.tag for i in episode.writers] == ['David Benioff', 'D. B. Weiss']
|
||||
|
|
Loading…
Add table
Reference in a new issue