Implement save/unsave post + saved list display
This commit is contained in:
@@ -154,6 +154,7 @@ class Content(object):
|
|||||||
data['gold'] = sub.gilded > 0
|
data['gold'] = sub.gilded > 0
|
||||||
data['nsfw'] = sub.over_18
|
data['nsfw'] = sub.over_18
|
||||||
data['stickied'] = sub.stickied
|
data['stickied'] = sub.stickied
|
||||||
|
data['saved'] = sub.saved
|
||||||
data['index'] = None # This is filled in later by the method caller
|
data['index'] = None # This is filled in later by the method caller
|
||||||
|
|
||||||
if sub.url.split('/r/')[-1] == sub.permalink.split('/r/')[-1]:
|
if sub.url.split('/r/')[-1] == sub.permalink.split('/r/')[-1]:
|
||||||
@@ -384,6 +385,14 @@ class SubredditContent(Content):
|
|||||||
else:
|
else:
|
||||||
submissions = reddit.user.get_submitted()
|
submissions = reddit.user.get_submitted()
|
||||||
|
|
||||||
|
if name == 'saved':
|
||||||
|
if not reddit.is_oauth_session():
|
||||||
|
raise exceptions.AccountError('Not logged in')
|
||||||
|
elif order:
|
||||||
|
submissions = reddit.user.get_saved(sort=order)
|
||||||
|
else:
|
||||||
|
submissions = reddit.user.get_saved()
|
||||||
|
|
||||||
elif query:
|
elif query:
|
||||||
if name == 'front':
|
if name == 'front':
|
||||||
submissions = reddit.search(query, subreddit=None, sort=order)
|
submissions = reddit.search(query, subreddit=None, sort=order)
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ Basic Commands
|
|||||||
|
|
||||||
Authenticated Commands
|
Authenticated Commands
|
||||||
`a/z` : Upvote/downvote
|
`a/z` : Upvote/downvote
|
||||||
|
`w` : Save/unsave a post
|
||||||
`c` : Compose a new post or comment
|
`c` : Compose a new post or comment
|
||||||
`e` : Edit an existing post or comment
|
`e` : Edit an existing post or comment
|
||||||
`d` : Delete an existing post or comment
|
`d` : Delete an existing post or comment
|
||||||
|
|||||||
17
rtv/page.py
17
rtv/page.py
@@ -155,6 +155,23 @@ class Page(object):
|
|||||||
if not self.term.loader.exception:
|
if not self.term.loader.exception:
|
||||||
data['likes'] = None
|
data['likes'] = None
|
||||||
|
|
||||||
|
@PageController.register('w')
|
||||||
|
@logged_in
|
||||||
|
def savepost(self):
|
||||||
|
data = self.content.get(self.nav.absolute_index)
|
||||||
|
if 'saved' not in data:
|
||||||
|
self.term.flash()
|
||||||
|
elif not data['saved']:
|
||||||
|
with self.term.loader('Saving'):
|
||||||
|
data['object'].save()
|
||||||
|
if not self.term.loader.exception:
|
||||||
|
data['saved'] = True
|
||||||
|
else:
|
||||||
|
with self.term.loader('Unsaving'):
|
||||||
|
data['object'].unsave()
|
||||||
|
if not self.term.loader.exception:
|
||||||
|
data['saved'] = False
|
||||||
|
|
||||||
@PageController.register('u')
|
@PageController.register('u')
|
||||||
def login(self):
|
def login(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class SubredditPage(Page):
|
|||||||
|
|
||||||
# Check that the subreddit can be submitted to
|
# Check that the subreddit can be submitted to
|
||||||
name = self.content.name
|
name = self.content.name
|
||||||
if '+' in name or name in ('/r/all', '/r/front', '/r/me'):
|
if '+' in name or name in ('/r/all', '/r/front', '/r/me','/r/saved'):
|
||||||
self.term.show_notification("Can't post to {0}".format(name))
|
self.term.show_notification("Can't post to {0}".format(name))
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -191,6 +191,11 @@ class SubredditPage(Page):
|
|||||||
text, attr = self.term.get_arrow(data['likes'])
|
text, attr = self.term.get_arrow(data['likes'])
|
||||||
self.term.add_line(win, text, attr=attr)
|
self.term.add_line(win, text, attr=attr)
|
||||||
self.term.add_line(win, ' {created} {comments} '.format(**data))
|
self.term.add_line(win, ' {created} {comments} '.format(**data))
|
||||||
|
|
||||||
|
if data['saved']:
|
||||||
|
text, attr = self.term.saved
|
||||||
|
self.term.add_line(win, text, attr=attr)
|
||||||
|
|
||||||
if data['stickied']:
|
if data['stickied']:
|
||||||
text, attr = self.term.stickied
|
text, attr = self.term.stickied
|
||||||
self.term.add_line(win, text, attr=attr)
|
self.term.add_line(win, text, attr=attr)
|
||||||
|
|||||||
@@ -73,6 +73,12 @@ class Terminal(object):
|
|||||||
attr = Color.GREEN
|
attr = Color.GREEN
|
||||||
return text, attr
|
return text, attr
|
||||||
|
|
||||||
|
@property
|
||||||
|
def saved(self):
|
||||||
|
text = '[saved]'
|
||||||
|
attr = Color.GREEN
|
||||||
|
return text, attr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def vline(self):
|
def vline(self):
|
||||||
return getattr(curses, 'ACS_VLINE', ord('|'))
|
return getattr(curses, 'ACS_VLINE', ord('|'))
|
||||||
|
|||||||
Reference in New Issue
Block a user