8
8
from rest_framework .decorators import action
9
9
from rest_framework .response import Response
10
10
11
- from apps .api .serializers .comment import CommentDetailSerializer
11
+ from apps .api .serializers .comment import CommentOverviewSerializer , CommentSerializer
12
12
from apps .api .serializers .post import PostSerializer
13
13
from apps .api .serializers .user .profile import (
14
14
ProfileSerializer ,
@@ -33,11 +33,12 @@ class ProfileViewSet(viewsets.ReadOnlyModelViewSet):
33
33
serializer_class = ProfileSerializer
34
34
filter_backends = (filters .SearchFilter ,)
35
35
search_fields = ("username" ,)
36
+ lookup_field = 'username'
36
37
37
38
serializer_classes = {
38
39
"overview" : OverviewSerializer ,
39
40
"posts" : PostSerializer ,
40
- "comments" : CommentDetailSerializer ,
41
+ "comments" : CommentOverviewSerializer ,
41
42
"upvoted" : UpvotedSerializer ,
42
43
"downvoted" : DownvotedSerializer ,
43
44
}
@@ -63,7 +64,7 @@ def get_object(self) -> Profile:
63
64
64
65
@extend_schema (responses = OverviewSerializer (many = True ))
65
66
@action (detail = True , methods = [HTTPMethod .GET ])
66
- def overview (self , request , pk = None ):
67
+ def overview (self , request , username = None ):
67
68
"""Returns a mixed list of posts and comments by the user, ordered by date."""
68
69
profile = self .get_object ()
69
70
posts = profile .posts .all ().annotate (content_type = Value ("post" , CharField ()))
@@ -77,16 +78,16 @@ def overview(self, request, pk=None):
77
78
78
79
@extend_schema (responses = PostSerializer (many = True ))
79
80
@action (detail = True , methods = [HTTPMethod .GET ])
80
- def posts (self , request , pk = None ):
81
+ def posts (self , request , username = None ):
81
82
"""Returns a list of posts by the user, ordered by date."""
82
83
profile = self .get_object ()
83
84
posts = profile .posts .all ().order_by ("-created_at" )
84
85
serialized_data = self .get_serializer (posts , context = {"request" : request }, many = True ).data
85
86
return Response (serialized_data )
86
87
87
- @extend_schema (responses = CommentDetailSerializer (many = True ))
88
+ @extend_schema (responses = CommentOverviewSerializer (many = True ))
88
89
@action (detail = True , methods = [HTTPMethod .GET ])
89
- def comments (self , request , pk = None ):
90
+ def comments (self , request , username = None ):
90
91
"""Returns a list of comments by the user, ordered by date."""
91
92
profile = self .get_object ()
92
93
comments = profile .comments .all ().order_by ("-created_at" )
@@ -97,7 +98,7 @@ def comments(self, request, pk=None):
97
98
98
99
@extend_schema (responses = UpvotedSerializer (many = True ))
99
100
@action (detail = True , methods = [HTTPMethod .GET ])
100
- def upvoted (self , request , pk = None ):
101
+ def upvoted (self , request , username = None ):
101
102
"""Returns a mixed list of upvoted posts and comments by the user, ordered by date."""
102
103
profile = self .get_object ()
103
104
posts = profile .upvoted_posts .all ().annotate (content_type = Value ("post" , CharField ()))
@@ -113,7 +114,7 @@ def upvoted(self, request, pk=None):
113
114
114
115
@extend_schema (responses = DownvotedSerializer (many = True ))
115
116
@action (detail = True , methods = [HTTPMethod .GET ])
116
- def downvoted (self , request , pk = None ):
117
+ def downvoted (self , request , username = None ):
117
118
"""Returns a mixed list of downvoted posts and comments by the user, ordered by date."""
118
119
profile = self .get_object ()
119
120
posts = profile .downvoted_posts .all ().annotate (content_type = Value ("post" , CharField ()))
0 commit comments