Source code for redditwarp.models.submission_SYNC


from __future__ import annotations
from typing import TYPE_CHECKING, Mapping, Any, Optional
if TYPE_CHECKING:
    from ..client_SYNC import Client
    from .comment_SYNC import Comment

from .submission import (
    Submission as BaseSubmission,
    LinkPost as BaseLinkPost,
    TextPost as BaseTextPost,
    GalleryPost as BaseGalleryPost,
    PollPost as BasePollPost,
    CrosspostSubmission as BaseCrosspostSubmission,
)

[docs]class Submission(BaseSubmission): def __init__(self, d: Mapping[str, Any], client: Client) -> None: super().__init__(d) self.client: Client = client ("")
[docs] def reply(self, text: str) -> Comment: return self.client.p.submission.reply(self.id, text)
[docs] def delete(self) -> None: self.client.p.submission.delete(self.id)
[docs] def lock(self) -> None: self.client.p.submission.lock(self.id)
[docs] def unlock(self) -> None: self.client.p.submission.unlock(self.id)
[docs] def distinguish(self) -> Submission: return self.client.p.submission.distinguish(self.id)
[docs] def undistinguish(self) -> Submission: return self.client.p.submission.undistinguish(self.id)
[docs] def sticky(self, slot: Optional[int] = None) -> None: self.client.p.submission.sticky(self.id, slot)
[docs] def unsticky(self) -> None: self.client.p.submission.unsticky(self.id)
[docs] def approve(self) -> None: self.client.p.submission.approve(self.id)
[docs] def remove(self) -> None: self.client.p.submission.remove(self.id)
[docs] def apply_removal_reason(self, reason_id: Optional[str], note: Optional[str] = None) -> None: self.client.p.submission.apply_removal_reason(self.id, reason_id, note)
[docs] def send_removal_comment(self, title: str, message: str) -> Comment: return self.client.p.submission.send_removal_comment(self.id, title, message)
[docs] def send_removal_message(self, title: str, message: str, *, exposed: bool = False) -> None: self.client.p.submission.send_removal_message(self.id, title, message, exposed=exposed)
[docs]class LinkPost(Submission, BaseLinkPost): pass
[docs]class TextPost(Submission, BaseTextPost):
[docs] def edit_body(self, text: str) -> TextPost: return self.client.p.submission.edit_text_post_body(self.id, text)
[docs]class GalleryPost(Submission, BaseGalleryPost): pass
[docs]class PollPost(Submission, BasePollPost): pass
[docs]class CrosspostSubmission(Submission, BaseCrosspostSubmission): @property def original(self) -> Optional[Submission]: return self.__original def __init__(self, d: Mapping[str, Any], client: Client) -> None: super().__init__(d, client) from ..model_loaders.submission_SYNC import load_submission # Avoid cyclic import my_load_submission = lambda d: load_submission(d=d, client=client) self.__original: Optional[Submission] = self._load_original( d=d, load_submission=my_load_submission, )
CrossPost = CrosspostSubmission