I am working on learning management system and got a piece of code from a source. This function is in my views.py file. It adds a semester. But I'm not clear about the business rules of this function. Means why I'm not able to mark more then one semester as is_current_semester. Please help me to get the basic idea behind the working of this code. Thank you
@login_required
@lecturer_required
def semester_add_view(request):
if request.method == 'POST':
form = SemesterForm(request.POST)
if form.is_valid():
data = form.data.get('is_current_semester') # returns string of 'True' if the user selected Yes
if data == 'True':
semester = form.data.get('semester')
ss = form.data.get('session')
session = Session.objects.get(pk=ss)
try:
if Semester.objects.get(semester=semester, session=ss):
messages.error(request, semester + " semester in " + session.session + " session already exist")
return redirect('add_semester')
except:
semesters = Semester.objects.all()
sessions = Session.objects.all()
if semesters:
for semester in semesters:
if semester.is_current_semester == True:
unset_semester = Semester.objects.get(is_current_semester=True)
unset_semester.is_current_semester = False
unset_semester.save()
for session in sessions:
if session.is_current_session == True:
unset_session = Session.objects.get(is_current_session=True)
unset_session.is_current_session = False
unset_session.save()
new_session = request.POST.get('session')
set_session = Session.objects.get(pk=new_session)
set_session.is_current_session = True
set_session.save()
form.save()
messages.success(request, 'Semester added successfully.')
return redirect('semester_list')
form.save()
messages.success(request, 'Semester added successfully. ')
return redirect('semester_list')
else:
form = SemesterForm()
return render(request, 'app/semester_update.html', {'form': form})