def init_submissions( reddit: Reddit, subreddit: Subreddit, database: Database, patch_notes_file: PatchNotesFile, submission_content_path: str, community_submission_content_path: str, ) -> Tuple[Submission, Submission]: """ Initializes the primary and community submission (i.e. "Reddit threads") objects. If they do not exist in the database, then this function creates them. Otherwise, it retrieves the submissions via their URL from the database. Returns: - A tuple containing the primary submission and community submission objects """ # Main submission submission_content = processed_submission_content(submission_content_path, patch_notes_file) submission: Submission = None submission_url = database.get_submission_url(tag="main") # Get main submission if it does not exist if submission_url is None: submission = subreddit.submit(title=SUBMISSION_TITLE, selftext=submission_content) database.insert_submission_url("main", submission.url) submission_url = submission.url else: # Obtain submission via URL submission = reddit.submission(url=submission_url) # Community submission community_submission_content = processed_community_notes_thread_submission_content( community_submission_content_path, patch_notes_file, submission_url) community_submission: Submission = None community_submission_url = database.get_submission_url(tag="community") # Get community submission if it does not exist if community_submission_url is None: community_submission = subreddit.submit( title=COMMUNITY_SUBMISSION_TITLE, selftext=community_submission_content, ) database.insert_submission_url("community", community_submission.url) # Update main Reddit Thread's in-line URL to connect to the community submission URL updated_text = submission.selftext.replace( "#community-patch-notes-thread-url", community_submission.url) submission.edit(body=updated_text) else: # Obtain submission via URL community_submission = reddit.submission(url=community_submission_url) return submission, community_submission
def test_submit_inline_media__invalid_path(self): message = "'invalid_image_path' is not a valid file path." subreddit = Subreddit(self.reddit, display_name="name") gif = InlineGif("invalid_image_path", "optional caption") image = InlineImage("invalid_image_path", "optional caption") video = InlineVideo("invalid_image_path", "optional caption") selftext = "Text with {gif1}, {image1}, and {video1} inline" media = {"gif1": gif, "image1": image, "video1": video} with pytest.raises(ValueError) as excinfo: subreddit.submit("title", selftext=selftext, inline_media=media) assert str(excinfo.value) == message
def test_submit_failure(self): message = 'Either `selftext` or `url` must be provided.' subreddit = Subreddit(self.reddit, display_name='name') with pytest.raises(TypeError) as excinfo: subreddit.submit('Cool title') assert str(excinfo.value) == message with pytest.raises(TypeError) as excinfo: subreddit.submit('Cool title', selftext='a', url='b') assert str(excinfo.value) == message
def make_post(reddit: Reddit, subreddit: Subreddit, invited, removed): date = datetime.date.today() date_str = date.strftime("%Y-%m-%d") title = date_str + ' - Bot Recap' selftext = '' if config.remove_users: if not len(removed) == 0: selftext = selftext + 'Kicked users: \n' for user in removed: selftext = selftext + '* u/' + user + '\n' if config.invite_users: selftext = selftext + '\nAdded users: \n' for user in invited: selftext = selftext + '* u/' + user + '\n' reddit.validate_on_submit = True subreddit.submit(title, selftext=selftext) print('Post made\n')
def test_submit_failure(self): message = "Either `selftext` or `url` must be provided." subreddit = Subreddit(self.reddit, display_name="name") with pytest.raises(TypeError) as excinfo: subreddit.submit("Cool title") assert str(excinfo.value) == message with pytest.raises(TypeError) as excinfo: subreddit.submit("Cool title", selftext="a", url="b") assert str(excinfo.value) == message with pytest.raises(TypeError) as excinfo: subreddit.submit("Cool title", selftext="", url="b") assert str(excinfo.value) == message