@@ -185,15 +185,20 @@ def post(self,request):
185185class AddStudentImportView (LoginRequiredMixin ,TemplateView ):
186186 template_name = "coldcall/add_student_import.html"
187187
188- class AddStudentManualView (LoginRequiredMixin ,TemplateView ):
189- template_name = "coldcall/add_student_manual .html"
188+ class AddEditStudentManualView (LoginRequiredMixin ,TemplateView ):
189+ template_name = "coldcall/addedit_student_manual .html"
190190
191191 # added this to help get classes for the add new student manual page
192- def get (self , request ):
192+ def get (self , request , student_id = None ):
193193 classes = Class .objects .filter (professor_key = request .user )
194- return render (request , self .template_name , {'classes' : classes })
194+ try :
195+ student = Student .objects .get (id = student_id )
196+ except Student .DoesNotExist :
197+ student = None
198+
199+ return render (request , self .template_name , {'classes' : classes , 'student' : student })
195200
196- def post (self , request ):
201+ def post (self , request , student_id = None ):
197202 # made to handle form submission. I was getting errors when submitting add
198203 # student form
199204 first_name = request .POST .get ('first_name' )
@@ -204,24 +209,33 @@ def post(self, request):
204209 absent_calls = request .POST .get ('absent_calls' , 0 )
205210 total_score = request .POST .get ('total_score' , 0 )
206211
207- # Create and save the new Student instance
208- Student .objects .create (
209- first_name = first_name ,
210- last_name = last_name ,
211- class_key = Class .objects .get (id = class_key_id ),
212- seating = seating ,
213- total_calls = total_calls ,
214- absent_calls = absent_calls ,
215- total_score = total_score ,
216- )
212+ try :
213+ class_key = Class .objects .get (id = class_key_id )
214+ except Class .DoesNotExist :
215+ return HttpResponseBadRequest ("Invalid class ID." )
216+
217+ # if student_id is provided, update the existing Student instance
218+ if student_id :
219+ student = Student .objects .get (id = student_id )
220+ student .first_name = first_name
221+ student .last_name = last_name
222+ student .class_key = class_key
223+ student .seating = seating
224+ student .total_calls = total_calls
225+ student .absent_calls = absent_calls
226+ student .total_score = total_score
227+ student .save ()
228+ # create a new student if no ID is provided
229+ else :
230+ Student .objects .create (
231+ first_name = first_name ,
232+ last_name = last_name ,
233+ class_key = class_key ,
234+ seating = seating ,
235+ total_calls = total_calls ,
236+ absent_calls = absent_calls ,
237+ total_score = total_score ,
238+ )
217239
218240 # send the user back to home page
219- return redirect ('/' )
220-
221- class EditStudentManualView (LoginRequiredMixin ,generic .DetailView ):
222- model = Student
223- template_name = "coldcall/edit_student_manual.html"
224-
225- class EditStudentCSVView (LoginRequiredMixin ,generic .DetailView ):
226- model = Student
227- template_name = "coldcall/edit_student_csv.html"
241+ return redirect ('/' )
0 commit comments