Fix: course registration
This commit is contained in:
parent
f51e0bdadc
commit
53bb419566
@ -390,38 +390,78 @@ def handle_video_delete(request, slug, video_slug):
|
||||
@login_required
|
||||
@student_required
|
||||
def course_registration(request):
|
||||
student = get_object_or_404(Student, student__pk=request.user.id)
|
||||
if request.method == "POST":
|
||||
student = Student.objects.get(student__pk=request.user.id)
|
||||
ids = ()
|
||||
data = request.POST.copy()
|
||||
data.pop("csrfmiddlewaretoken", None) # remove csrf_token
|
||||
for key in data.keys():
|
||||
ids = ids + (str(key),)
|
||||
for s in range(0, len(ids)):
|
||||
course = Course.objects.get(pk=ids[s])
|
||||
obj = TakenCourse.objects.create(student=student, course=course)
|
||||
obj.save()
|
||||
messages.success(request, "Courses registered successfully!")
|
||||
return redirect("course_registration")
|
||||
else:
|
||||
current_semester = Semester.objects.filter(is_current_semester=True).first()
|
||||
if not current_semester:
|
||||
messages.error(request, "No active semester found.")
|
||||
return render(request, "course/course_registration.html")
|
||||
|
||||
if request.method == "POST":
|
||||
course_ids = request.POST.getlist("course_ids")
|
||||
for course_id in course_ids:
|
||||
course = get_object_or_404(Course, pk=course_id)
|
||||
TakenCourse.objects.get_or_create(student=student, course=course)
|
||||
messages.success(request, "Courses registered successfully!")
|
||||
return redirect("course_registration")
|
||||
# student = Student.objects.get(student__pk=request.user.id)
|
||||
student = get_object_or_404(Student, student__id=request.user.id)
|
||||
taken_courses = TakenCourse.objects.filter(student__student__id=request.user.id)
|
||||
t = ()
|
||||
for i in taken_courses:
|
||||
t += (i.course.pk,)
|
||||
|
||||
taken_course_ids = TakenCourse.objects.filter(student=student).values_list(
|
||||
"course__id", flat=True
|
||||
)
|
||||
courses = Course.objects.filter(
|
||||
program=student.program,
|
||||
courses = (
|
||||
Course.objects.filter(
|
||||
program__pk=student.program.id,
|
||||
level=student.level,
|
||||
semester=current_semester.semester,
|
||||
).exclude(id__in=taken_course_ids)
|
||||
semester=current_semester,
|
||||
)
|
||||
.exclude(id__in=t)
|
||||
.order_by("year")
|
||||
)
|
||||
all_courses = Course.objects.filter(
|
||||
level=student.level, program__pk=student.program.id
|
||||
)
|
||||
|
||||
registered_courses = Course.objects.filter(id__in=taken_course_ids)
|
||||
all_courses = Course.objects.filter(level=student.level, program=student.program)
|
||||
no_course_is_registered = False # Check if no course is registered
|
||||
all_courses_are_registered = False
|
||||
|
||||
registered_courses = Course.objects.filter(level=student.level).filter(id__in=t)
|
||||
if (
|
||||
registered_courses.count() == 0
|
||||
): # Check if number of registered courses is 0
|
||||
no_course_is_registered = True
|
||||
|
||||
if registered_courses.count() == all_courses.count():
|
||||
all_courses_are_registered = True
|
||||
|
||||
total_first_semester_credit = 0
|
||||
total_sec_semester_credit = 0
|
||||
total_registered_credit = 0
|
||||
for i in courses:
|
||||
if i.semester == "First":
|
||||
total_first_semester_credit += int(i.credit)
|
||||
if i.semester == "Second":
|
||||
total_sec_semester_credit += int(i.credit)
|
||||
for i in registered_courses:
|
||||
total_registered_credit += int(i.credit)
|
||||
context = {
|
||||
"courses": courses,
|
||||
"registered_courses": registered_courses,
|
||||
"student": student,
|
||||
"is_calender_on": True,
|
||||
"all_courses_are_registered": all_courses_are_registered,
|
||||
"no_course_is_registered": no_course_is_registered,
|
||||
"current_semester": current_semester,
|
||||
"all_courses_registered": all_courses.count() == registered_courses.count(),
|
||||
"courses": courses,
|
||||
"total_first_semester_credit": total_first_semester_credit,
|
||||
"total_sec_semester_credit": total_sec_semester_credit,
|
||||
"registered_courses": registered_courses,
|
||||
"total_registered_credit": total_registered_credit,
|
||||
"student": student,
|
||||
}
|
||||
return render(request, "course/course_registration.html", context)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user