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()