From dae2d0a27dbd1a17424627e6d13063fc564a9e8a Mon Sep 17 00:00:00 2001 From: woorst Date: Mon, 10 Sep 2018 13:07:41 -0400 Subject: [PATCH] More of a user's pages are visible --- rtv/content.py | 32 +++++++++++++++++++++----------- rtv/page.py | 8 ++++++-- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/rtv/content.py b/rtv/content.py index f174e39..56bd4f5 100644 --- a/rtv/content.py +++ b/rtv/content.py @@ -512,9 +512,18 @@ class SubredditContent(Content): elif resource_root.startswith('user/'): resource_root = 'u' + resource_root[4:] - # There should at most two parts left, the resource and the order + # The parts left should be in one of the following two forms: + # [resource, order] + # [resource, user_room, order] + user_rooms = ['overview', 'submitted', 'comments'] + private_user_rooms = ['upvoted', 'downvoted', 'hidden', 'saved'] + user_room = None if len(parts) == 1: resource, resource_order = parts[0], None + elif resource_root == 'u' and len(parts) in [2, 3] \ + and parts[1] in user_rooms + private_user_rooms: + resource, user_room = parts[:2] + resource_order = parts[2] if len(parts) == 3 else None elif len(parts) == 2: resource, resource_order = parts else: @@ -531,6 +540,8 @@ class SubredditContent(Content): display_order = order display_name = '/'.join(['', resource_root, resource]) + if user_room and resource_root == 'u': + display_name += '/' + user_room # Split the order from the period E.g. controversial-all, top-hour if order and '-' in order: @@ -603,22 +614,21 @@ class SubredditContent(Content): if not reddit.is_oauth_session(): raise exceptions.AccountError('Not logged in') else: + user_room = user_room or 'overview' order = order or 'new' - submissions = reddit.user.get_overview(sort=order, limit=None) - - elif resource_root == 'u' and resource == 'saved': - if not reddit.is_oauth_session(): - raise exceptions.AccountError('Not logged in') - else: - order = order or 'new' - submissions = reddit.user.get_saved(sort=order, limit=None) + period = period or 'all' + submissions = getattr(reddit.user, 'get_%s' % user_room + )(sort=order, time=period, limit=None) elif resource_root == 'u': + user_room = user_room or 'overview' + if not user_room in user_rooms: + raise InvalidSubreddit('Unavailable Resourse') order = order or 'new' period = period or 'all' redditor = reddit.get_redditor(resource) - submissions = redditor.get_overview( - sort=order, time=period, limit=None) + submissions = getattr(redditor, 'get_%s' % user_room + )(sort=order, time=period, limit=None) elif resource == 'front': if order in (None, 'hot'): diff --git a/rtv/page.py b/rtv/page.py index 21d1da1..c8904b2 100644 --- a/rtv/page.py +++ b/rtv/page.py @@ -389,8 +389,12 @@ class Page(object): sub_name = self.content.name sub_name = sub_name.replace('/r/front', 'Front Page') - sub_name = sub_name.replace('/u/me', 'My Submissions') - sub_name = sub_name.replace('/u/saved', 'My Saved Submissions') + + parts = sub_name.split('/') + if parts[1] == 'u': + noun = 'My' if parts[2] == 'me' else parts[2] + "'s" + user_room = {3: 'overview', 4: parts[-1]}[len(parts)].capitalize() + sub_name = "{} {}".format(noun, user_room) query = self.content.query if query: