Merge branch 'user_pages' of https://github.com/woorst/rtv into woorst-user_pages

This commit is contained in:
Michael Lazar
2018-10-01 23:56:06 -04:00
16 changed files with 20519 additions and 5659 deletions

View File

@@ -531,9 +531,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:
@@ -550,6 +559,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:
@@ -622,22 +633,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'):

View File

@@ -83,9 +83,11 @@ https://github.com/michael-lazar/rtv
- /r/python/comments/30rwj2 (submission comments)
- /comments/30rwj2 (submission comments shorthand)
- /r/front (front page)
- /u/me (your submissions)
- /u/saved (your saved posts)
- /u/spez (a user's submissions)
- /u/me (your submissions overview)
- /u/me/{saved,hidden} (your saved or hidden posts)
- /u/me/{upvoted,downvoted} (your voted posts)
- /u/spez (a user's submissions overview)
- /u/spez{submitted,comments} (a user's posts or comments)
- /u/multi-mod/m/android (curated multireddit)
- /domain/python.org (search by domain)
"""

View File

@@ -389,8 +389,17 @@ 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 len(parts) == 1:
pass
elif '/m/' in sub_name:
_, _, user, _, multi = parts
sub_name = '{} curated by {}'.format(multi, user)
elif 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: