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
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
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')
Exemple #6
0
    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
Exemple #7
0
    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