Source code for services.posts.favorite

from typing import TYPE_CHECKING

from black import Tuple

from apps.posts.models import Favorite

if TYPE_CHECKING:
    from apps.posts.models import Post
    from apps.users.models import User


[docs] class FavoriteService: @classmethod def _create(cls, post: "Post", user: "User") -> Tuple["Favorite", bool]: obj, created = Favorite.objects.get_or_create(post=post, author=user) return obj, created
[docs] @classmethod def create(cls, post: "Post", user: "User") -> Tuple["Favorite", bool]: """Create Favorite post""" return cls._create(post, user)
[docs] @classmethod def get(cls, **kwargs): """Retrieve Favorite post instance""" return Favorite.objects.get(**kwargs)
[docs] @classmethod def delete(cls, post: "Post", user: "User"): """Delete Favorite post""" instance = cls.get(post=post, author=user) instance.delete()