22from rest_framework .response import Response
33from rest_framework .views import APIView
44
5+ from hoagiemail .models import StuffPost
6+
57
68class StuffUserView (APIView ):
79 def get (self , request ) -> Response :
8- # Logic to get user posts
9- return Response ({"status" : "OK" , "message" : "User posts retrieved successfully" }, status = status .HTTP_200_OK )
1010
1111 def post (self , request ) -> Response :
1212 # Logic to make a post
13- return Response ({"status" : "OK" , "message" : "Post made successfully" }, status = status .HTTP_200_OK )
13+ user = request .user
14+ try :
15+ if StuffPost .objects .filter (author = user ).exists ():
16+ return Response (
17+ {"error" : "You already have a post." },
18+ status = status .HTTP_400_BAD_REQUEST
19+ )
20+ StuffPost .objects .create (author = user , title = request .data .get ("title" ), description = request .data .get ("description" ), thumbnail_url = request .data .get ("thumbnail_url" ), category = request .data .get ("category" ), link_url = request .data .get ("link_url" ), tags = request .data .get ("tags" ), has_sent = False , created_at = timezone .now ())
21+ return Response ({"status" : "OK" , "message" : "Post made successfully" }, status = status .HTTP_200_OK )
22+ except ValidationError as e :
23+ return Response ({"error" : "Unexpected error creating stuff post." }, status = status .HTTP_400_BAD_REQUEST )
1424
1525 def delete (self , request ) -> Response :
16- # Logic to delete a post
17- return Response ({"status" : "OK" , "message" : "Post deleted successfully" }, status = status .HTTP_200_OK )
26+ user = request .user
27+ try :
28+ StuffPost .objects .filter (author = user ).delete ();
29+ return Response ({"Status" : "OK" }, status = status .HTTP_200_OK )
30+ except StuffPost .DoesNotExist :
31+ logger .error (f"Stuff post not found for user { user .email } " )
32+ return Response (
33+ {"error" : "You do not have an existing digest message. Please create one first." },
34+ status = status .HTTP_400_BAD_REQUEST ,
35+ )
36+ except Exception as e :
37+ logger .error (f"Unexpected error deleting scheduled post: { str (e )} " )
38+ return Response (
39+ {"error" : "Unexpected error deleting scheduled mail" }, status = status .HTTP_500_INTERNAL_SERVER_ERROR
40+ )
0 commit comments