@@ -105,38 +105,56 @@ def test_func(self):
105
105
post = self .get_object ()
106
106
return self .request .user == post .author
107
107
108
+ class PostLike (View ):
109
+ def post (self , request , pk , * args , ** kwargs ):
110
+ post = Post .objects .get (pk = pk )
111
+
112
+ is_dislike = False
113
+ for dislike in post .dislikes .all ():
114
+ if dislike == request .user :
115
+ post .dislikes .remove (request .user )
116
+ break
117
+
118
+ is_like = False
119
+ for like in post .likes .all ():
120
+ if like == request .user :
121
+ is_like = True
122
+ break
123
+
124
+ if not is_like :
125
+ post .likes .add (request .user )
108
126
109
- class PostLike (LoginRequiredMixin , View ):
110
- def post (self , request , pk , * args , ** kwargs ):
111
- post = get_object_or_404 (Post , pk = pk )
112
- user = request .user
113
-
114
- if user in post .likes .all ():
115
- post .likes .remove (user )
116
- if user in post .dislikes .all ():
117
- post .dislikes .remove (request .user )
118
- post .likes .add (user )
119
-
120
- notification = Notification .objects .create (
127
+ notification = Notification .objects .create (
121
128
notification_type = 1 ,
122
129
from_user = request .user ,
123
130
to_user = post .author ,
124
131
post = post
125
132
)
126
133
127
- next = request .POST .get ('next' )
128
- return HttpResponseRedirect (next )
129
-
130
- class PostDislike (LoginRequiredMixin , View ):
131
- def post (self , request , pk , * args , ** kwargs ):
132
- post = get_object_or_404 (Post , pk = pk )
133
- user = request .user
134
+ if is_like :
135
+ post .likes .remove (request .user )
134
136
135
- if user in post .dislikes .all ():
136
- post .dislikes .remove (user )
137
- if user in post .likes .all ():
138
- post .likes .remove (user )
139
- post .dislikes .add (user )
137
+ next = request .POST .get ('next' )
138
+ return HttpResponseRedirect (next )
139
+
140
+ class PostDislike (View ):
141
+ def post (self , request , pk , * args , ** kwargs ):
142
+ post = Post .objects .get (pk = pk )
143
+
144
+ is_like = False
145
+ for like in post .likes .all ():
146
+ if like == request .user :
147
+ post .likes .remove (request .user )
148
+ break
149
+ is_dislikes = False
150
+ for dislike in post .dislikes .all ():
151
+ if dislike == request .user :
152
+ is_dislikes = True
153
+ break
154
+ if not is_dislikes :
155
+ post .dislikes .add (request .user )
156
+ if is_dislikes :
157
+ post .dislikes .remove (request .user )
140
158
141
159
next = request .POST .get ('next' )
142
160
return HttpResponseRedirect (next )
0 commit comments