0

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})
Hassan Ali
  • 35
  • 8
  • 1
    Well what are you asking? –  Mar 07 '23 at 17:08
  • This code allow me to add more than one academic sessions ( For example session 2020, 2021 etc) and is_current_session is only true for only one session and it is just fine but problem comes here : when I try to add semesters in sessions , only one semester is active or is_current_semester = True. Due to this the courses I have created in a program are not visible to student for those semesters which are not active, (only one semester courses are open for self enrollment). – Hassan Ali Mar 07 '23 at 17:40
  • I want to add multiple semesters as active or is_current_semester = True which should allow student to self enroll from list of semesters and respective courses. But this code is showing only one semester's courses in student self enrollment (As only one semester can be is_current_semester = True) – Hassan Ali Mar 07 '23 at 17:41

0 Answers0