1919@login_required ()
2020@csrf_exempt
2121def chat_view (request ):
22- if request .method == ' POST' :
22+ if request .method == " POST" :
2323 client = OpenAI (
2424 api_key = settings .OPENAI_API_KEY ,
2525 )
2626
2727 data = json .loads (request .body )
28- message = data .get (' message' , '' )
28+ message = data .get (" message" , "" )
2929 response = client .chat .completions .create (
3030 model = "gpt-4o-mini" ,
31- messages = [{"role" : "user" , "content" : message }]
31+ messages = [
32+ {
33+ "role" : "user" ,
34+ "content" : f"Respond to the following: { message } , and return only plain text. Avoid any code formatting or backticks." ,
35+ }
36+ ],
3237 )
3338 reply = response .choices [0 ].message .content
34- return JsonResponse ({'reply' : reply })
39+ return JsonResponse ({"reply" : reply })
40+
3541
3642@login_required ()
3743def chat_page (request ):
38- return render (request , 'polls/chat.html' )
44+ return render (request , "polls/chat.html" )
45+
3946
4047@login_required ()
4148def polls_list (request ):
4249 all_polls = Poll .objects .all ()
43- search_term = ''
44- if ' name' in request .GET :
45- all_polls = all_polls .order_by (' text' )
50+ search_term = ""
51+ if " name" in request .GET :
52+ all_polls = all_polls .order_by (" text" )
4653
47- if ' date' in request .GET :
48- all_polls = all_polls .order_by (' pub_date' )
54+ if " date" in request .GET :
55+ all_polls = all_polls .order_by (" pub_date" )
4956
50- if ' vote' in request .GET :
51- all_polls = all_polls .annotate (Count (' vote' )).order_by (' vote__count' )
57+ if " vote" in request .GET :
58+ all_polls = all_polls .annotate (Count (" vote" )).order_by (" vote__count" )
5259
53- if ' search' in request .GET :
54- search_term = request .GET [' search' ]
60+ if " search" in request .GET :
61+ search_term = request .GET [" search" ]
5562 all_polls = all_polls .filter (text__icontains = search_term )
5663
5764 paginator = Paginator (all_polls , 6 ) # Show 6 contacts per page
58- page = request .GET .get (' page' )
65+ page = request .GET .get (" page" )
5966 polls = paginator .get_page (page )
6067
6168 get_dict_copy = request .GET .copy ()
62- params = get_dict_copy .pop (' page' , True ) and get_dict_copy .urlencode ()
69+ params = get_dict_copy .pop (" page" , True ) and get_dict_copy .urlencode ()
6370
6471 context = {
65- ' polls' : polls ,
66- ' params' : params ,
67- ' search_term' : search_term ,
72+ " polls" : polls ,
73+ " params" : params ,
74+ " search_term" : search_term ,
6875 }
69- return render (request , 'polls/polls_list.html' , context )
76+ return render (request , "polls/polls_list.html" , context )
77+
7078
7179@login_required ()
7280def dashboard (request ):
7381 polls = Poll .objects .all ()
7482 poll_data = []
7583
7684 for poll in polls :
77- unique_voters = Vote .objects .filter (poll = poll ).values ('user' ).distinct ().count ()
78- poll_data .append ({'question' : poll .text , 'unique_voters' : unique_voters })
85+ unique_voters = Vote .objects .filter (poll = poll ).values ("user" ).distinct ().count ()
86+ poll_data .append ({"question" : poll .text , "unique_voters" : unique_voters })
87+
88+ context = {"poll_data" : poll_data }
89+ return render (request , "polls/dashboard.html" , context )
7990
80- context = {'poll_data' : poll_data }
81- return render (request , 'polls/dashboard.html' , context )
8291
8392@login_required ()
8493def list_by_user (request ):
8594 all_polls = Poll .objects .filter (owner = request .user )
8695 paginator = Paginator (all_polls , 7 ) # Show 7 contacts per page
8796
88- page = request .GET .get (' page' )
97+ page = request .GET .get (" page" )
8998 polls = paginator .get_page (page )
9099
91100 context = {
92- ' polls' : polls ,
101+ " polls" : polls ,
93102 }
94- return render (request , ' polls/polls_list.html' , context )
103+ return render (request , " polls/polls_list.html" , context )
95104
96105
97106@login_required ()
98107def polls_add (request ):
99- if request .user .has_perm (' polls.add_poll' ):
100- if request .method == ' POST' :
108+ if request .user .has_perm (" polls.add_poll" ):
109+ if request .method == " POST" :
101110 form = PollAddForm (request .POST )
102111 if form .is_valid :
103112 poll = form .save (commit = False )
104113 poll .owner = request .user
105114 poll .save ()
106- Choice (
107- poll = poll , choice_text = form .cleaned_data ['choice1' ]).save ()
108- Choice (
109- poll = poll , choice_text = form .cleaned_data ['choice2' ]).save ()
115+ Choice (poll = poll , choice_text = form .cleaned_data ["choice1" ]).save ()
116+ Choice (poll = poll , choice_text = form .cleaned_data ["choice2" ]).save ()
110117
111118 messages .success (
112- request , "Poll & Choices added successfully." , extra_tags = 'alert alert-success alert-dismissible fade show' )
119+ request ,
120+ "Poll & Choices added successfully." ,
121+ extra_tags = "alert alert-success alert-dismissible fade show" ,
122+ )
113123
114- return redirect (' polls:list' )
124+ return redirect (" polls:list" )
115125 else :
116126 form = PollAddForm ()
117127 context = {
118- ' form' : form ,
128+ " form" : form ,
119129 }
120- return render (request , ' polls/add_poll.html' , context )
130+ return render (request , " polls/add_poll.html" , context )
121131 else :
122132 return HttpResponse ("Sorry but you don't have permission to do that!" )
123133
@@ -126,146 +136,167 @@ def polls_add(request):
126136def polls_edit (request , poll_id ):
127137 poll = get_object_or_404 (Poll , pk = poll_id )
128138 if request .user != poll .owner :
129- return redirect (' home' )
139+ return redirect (" home" )
130140
131- if request .method == ' POST' :
141+ if request .method == " POST" :
132142 form = EditPollForm (request .POST , instance = poll )
133143 if form .is_valid :
134144 form .save ()
135- messages .success (request , "Poll Updated successfully." ,
136- extra_tags = 'alert alert-success alert-dismissible fade show' )
145+ messages .success (
146+ request ,
147+ "Poll Updated successfully." ,
148+ extra_tags = "alert alert-success alert-dismissible fade show" ,
149+ )
137150 return redirect ("polls:list" )
138151
139152 else :
140153 form = EditPollForm (instance = poll )
141154
142- return render (request , "polls/poll_edit.html" , {' form' : form , ' poll' : poll })
155+ return render (request , "polls/poll_edit.html" , {" form" : form , " poll" : poll })
143156
144157
145158@login_required
146159def polls_delete (request , poll_id ):
147160 poll = get_object_or_404 (Poll , pk = poll_id )
148161 if request .user != poll .owner :
149- return redirect (' home' )
162+ return redirect (" home" )
150163 poll .delete ()
151- messages .success (request , "Poll Deleted successfully." ,
152- extra_tags = 'alert alert-success alert-dismissible fade show' )
164+ messages .success (
165+ request ,
166+ "Poll Deleted successfully." ,
167+ extra_tags = "alert alert-success alert-dismissible fade show" ,
168+ )
153169 return redirect ("polls:list" )
154170
155171
156172@login_required
157173def add_choice (request , poll_id ):
158174 poll = get_object_or_404 (Poll , pk = poll_id )
159175 if request .user != poll .owner :
160- return redirect (' home' )
176+ return redirect (" home" )
161177
162- if request .method == ' POST' :
178+ if request .method == " POST" :
163179 form = ChoiceAddForm (request .POST )
164180 if form .is_valid :
165181 new_choice = form .save (commit = False )
166182 new_choice .poll = poll
167183 new_choice .save ()
168184 messages .success (
169- request , "Choice added successfully." , extra_tags = 'alert alert-success alert-dismissible fade show' )
170- return redirect ('polls:edit' , poll .id )
185+ request ,
186+ "Choice added successfully." ,
187+ extra_tags = "alert alert-success alert-dismissible fade show" ,
188+ )
189+ return redirect ("polls:edit" , poll .id )
171190 else :
172191 form = ChoiceAddForm ()
173192 context = {
174- ' form' : form ,
193+ " form" : form ,
175194 }
176- return render (request , ' polls/add_choice.html' , context )
195+ return render (request , " polls/add_choice.html" , context )
177196
178197
179198@login_required
180199def choice_edit (request , choice_id ):
181200 choice = get_object_or_404 (Choice , pk = choice_id )
182201 poll = get_object_or_404 (Poll , pk = choice .poll .id )
183202 if request .user != poll .owner :
184- return redirect (' home' )
203+ return redirect (" home" )
185204
186- if request .method == ' POST' :
205+ if request .method == " POST" :
187206 form = ChoiceAddForm (request .POST , instance = choice )
188207 if form .is_valid :
189208 new_choice = form .save (commit = False )
190209 new_choice .poll = poll
191210 new_choice .save ()
192211 messages .success (
193- request , "Choice Updated successfully." , extra_tags = 'alert alert-success alert-dismissible fade show' )
194- return redirect ('polls:edit' , poll .id )
212+ request ,
213+ "Choice Updated successfully." ,
214+ extra_tags = "alert alert-success alert-dismissible fade show" ,
215+ )
216+ return redirect ("polls:edit" , poll .id )
195217 else :
196218 form = ChoiceAddForm (instance = choice )
197219 context = {
198- ' form' : form ,
199- ' edit_choice' : True ,
200- ' choice' : choice ,
220+ " form" : form ,
221+ " edit_choice" : True ,
222+ " choice" : choice ,
201223 }
202- return render (request , ' polls/add_choice.html' , context )
224+ return render (request , " polls/add_choice.html" , context )
203225
204226
205227@login_required
206228def choice_delete (request , choice_id ):
207229 choice = get_object_or_404 (Choice , pk = choice_id )
208230 poll = get_object_or_404 (Poll , pk = choice .poll .id )
209231 if request .user != poll .owner :
210- return redirect (' home' )
232+ return redirect (" home" )
211233 choice .delete ()
212234 messages .success (
213- request , "Choice Deleted successfully." , extra_tags = 'alert alert-success alert-dismissible fade show' )
214- return redirect ('polls:edit' , poll .id )
235+ request ,
236+ "Choice Deleted successfully." ,
237+ extra_tags = "alert alert-success alert-dismissible fade show" ,
238+ )
239+ return redirect ("polls:edit" , poll .id )
215240
216241
217242def poll_detail (request , poll_id ):
218243 poll = get_object_or_404 (Poll , id = poll_id )
219244
220245 if not poll .active :
221- return render (request , ' polls/poll_result.html' , {' poll' : poll })
246+ return render (request , " polls/poll_result.html" , {" poll" : poll })
222247 loop_count = poll .choice_set .count ()
223248 context = {
224- ' poll' : poll ,
225- ' loop_time' : range (0 , loop_count ),
249+ " poll" : poll ,
250+ " loop_time" : range (0 , loop_count ),
226251 }
227- return render (request , ' polls/poll_detail.html' , context )
252+ return render (request , " polls/poll_detail.html" , context )
228253
229254
230255@login_required
231256def poll_vote (request , poll_id ):
232257 poll = get_object_or_404 (Poll , pk = poll_id )
233- choice_id = request .POST .get (' choice' )
258+ choice_id = request .POST .get (" choice" )
234259 if not poll .user_can_vote (request .user ):
235260 messages .error (
236- request , "You already voted this poll!" , extra_tags = 'alert alert-warning alert-dismissible fade show' )
261+ request ,
262+ "You already voted this poll!" ,
263+ extra_tags = "alert alert-warning alert-dismissible fade show" ,
264+ )
237265 return redirect ("polls:list" )
238266
239267 if choice_id :
240268 choice = Choice .objects .get (id = choice_id )
241269 vote = Vote (user = request .user , poll = poll , choice = choice )
242- vote .save ()
270+ vote .save ()
243271
244272 # get poll creator email
245273 poll_creator_email = poll .owner .email
246274 # Construct the email
247- subject = f' New vote for your poll: { poll .text } '
275+ subject = f" New vote for your poll: { poll .text } "
248276 message = f'A new vote has been cast for your poll "{ poll .text } ".'
249277 # Send the email
250- send_mail (subject , message , settings .EMAIL_HOST_USER , [poll_creator_email ])
278+ send_mail (subject , message , settings .EMAIL_HOST_USER , [poll_creator_email ])
251279
252- return render (request , ' polls/poll_result.html' , {' poll' : poll })
280+ return render (request , " polls/poll_result.html" , {" poll" : poll })
253281 else :
254282 messages .error (
255- request , "No choice selected!" , extra_tags = 'alert alert-warning alert-dismissible fade show' )
283+ request ,
284+ "No choice selected!" ,
285+ extra_tags = "alert alert-warning alert-dismissible fade show" ,
286+ )
256287 return redirect ("polls:detail" , poll_id )
257- return render (request , ' polls/poll_result.html' , {' poll' : poll })
288+ return render (request , " polls/poll_result.html" , {" poll" : poll })
258289
259290
260291@login_required
261292def end_poll (request , poll_id ):
262293 poll = get_object_or_404 (Poll , pk = poll_id )
263294 if request .user != poll .owner :
264- return redirect (' home' )
295+ return redirect (" home" )
265296
266297 if poll .active is True :
267298 poll .active = False
268299 poll .save ()
269- return render (request , ' polls/poll_result.html' , {' poll' : poll })
300+ return render (request , " polls/poll_result.html" , {" poll" : poll })
270301 else :
271- return render (request , ' polls/poll_result.html' , {' poll' : poll })
302+ return render (request , " polls/poll_result.html" , {" poll" : poll })
0 commit comments