Basic framework to post submission, doesn't actually submit it yet

This commit is contained in:
Tobin
2015-04-01 13:06:17 -05:00
parent ac98f564a3
commit 5c68a008c9
2 changed files with 44 additions and 2 deletions

View File

@@ -52,3 +52,13 @@ COMMENT_FILE = """
# Replying to {author}'s {type} # Replying to {author}'s {type}
{content} {content}
""" """
SUBMISSION_FILE = """
# Please enter your submission. Lines starting with '#' will be ignored,
# and an empty field aborts the submission.
#
# The first line will be interpreted as the title
# Following titles will be interpreted as the content
#
# Posting to /r/{name}
"""

View File

@@ -1,12 +1,13 @@
import curses import curses
import time
import requests import requests
from .exceptions import SubredditError from .exceptions import SubredditError
from .page import BasePage, Navigator, BaseController from .page import BasePage, Navigator, BaseController
from .submission import SubmissionPage from .submission import SubmissionPage
from .content import SubredditContent from .content import SubredditContent
from .helpers import clean, open_browser from .helpers import clean, open_browser, open_editor
from .docs import SUBMISSION_FILE
from .curses_helpers import (BULLET, UARROW, DARROW, Color, LoadScreen, from .curses_helpers import (BULLET, UARROW, DARROW, Color, LoadScreen,
text_input, show_notification) text_input, show_notification)
@@ -89,6 +90,37 @@ class SubredditPage(BasePage):
global opened_links global opened_links
opened_links.add(url) opened_links.add(url)
@SubredditController.register('p')
def post_submission(self):
# Abort if user isn't logged in
if not self.reddit.is_logged_in():
show_notification(self.stdscr, ["Login to reply"])
return
name = self.content.name
if '+' in name:
show_notification(self.stdscr, ['Can\'t post to a multireddit'])
return
# Open the submission window
submission_info = SUBMISSION_FILE.format(name=name)
curses.endwin()
submission_text = open_editor(submission_info)
curses.doupdate()
# Abort if there is no content
if not submission_text:
curses.flash()
return
try:
title, content = submission_text.split('\n', 1)
show_notification(self.stdscr, [title])
except praw.errors.APIException as e:
show_notification(self.stdscr, [e.message])
else:
time.sleep(0.5)
self.refresh_content()
@staticmethod @staticmethod
def draw_item(win, data, inverted=False): def draw_item(win, data, inverted=False):