Fix: course registration
This commit is contained in:
parent
f51e0bdadc
commit
53bb419566
@ -390,40 +390,80 @@ def handle_video_delete(request, slug, video_slug):
|
|||||||
@login_required
|
@login_required
|
||||||
@student_required
|
@student_required
|
||||||
def course_registration(request):
|
def course_registration(request):
|
||||||
student = get_object_or_404(Student, student__pk=request.user.id)
|
|
||||||
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":
|
if request.method == "POST":
|
||||||
course_ids = request.POST.getlist("course_ids")
|
student = Student.objects.get(student__pk=request.user.id)
|
||||||
for course_id in course_ids:
|
ids = ()
|
||||||
course = get_object_or_404(Course, pk=course_id)
|
data = request.POST.copy()
|
||||||
TakenCourse.objects.get_or_create(student=student, course=course)
|
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!")
|
messages.success(request, "Courses registered successfully!")
|
||||||
return redirect("course_registration")
|
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")
|
||||||
|
|
||||||
taken_course_ids = TakenCourse.objects.filter(student=student).values_list(
|
# student = Student.objects.get(student__pk=request.user.id)
|
||||||
"course__id", flat=True
|
student = get_object_or_404(Student, student__id=request.user.id)
|
||||||
)
|
taken_courses = TakenCourse.objects.filter(student__student__id=request.user.id)
|
||||||
courses = Course.objects.filter(
|
t = ()
|
||||||
program=student.program,
|
for i in taken_courses:
|
||||||
level=student.level,
|
t += (i.course.pk,)
|
||||||
semester=current_semester.semester,
|
|
||||||
).exclude(id__in=taken_course_ids)
|
|
||||||
|
|
||||||
registered_courses = Course.objects.filter(id__in=taken_course_ids)
|
courses = (
|
||||||
all_courses = Course.objects.filter(level=student.level, program=student.program)
|
Course.objects.filter(
|
||||||
|
program__pk=student.program.id,
|
||||||
|
level=student.level,
|
||||||
|
semester=current_semester,
|
||||||
|
)
|
||||||
|
.exclude(id__in=t)
|
||||||
|
.order_by("year")
|
||||||
|
)
|
||||||
|
all_courses = Course.objects.filter(
|
||||||
|
level=student.level, program__pk=student.program.id
|
||||||
|
)
|
||||||
|
|
||||||
context = {
|
no_course_is_registered = False # Check if no course is registered
|
||||||
"courses": courses,
|
all_courses_are_registered = False
|
||||||
"registered_courses": registered_courses,
|
|
||||||
"student": student,
|
registered_courses = Course.objects.filter(level=student.level).filter(id__in=t)
|
||||||
"current_semester": current_semester,
|
if (
|
||||||
"all_courses_registered": all_courses.count() == registered_courses.count(),
|
registered_courses.count() == 0
|
||||||
}
|
): # Check if number of registered courses is 0
|
||||||
return render(request, "course/course_registration.html", context)
|
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 = {
|
||||||
|
"is_calender_on": True,
|
||||||
|
"all_courses_are_registered": all_courses_are_registered,
|
||||||
|
"no_course_is_registered": no_course_is_registered,
|
||||||
|
"current_semester": current_semester,
|
||||||
|
"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)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
@ -104,7 +104,7 @@
|
|||||||
<a href="{% url 'ass_results' %}"><i class="fa fa-list-ol"></i> {% trans 'Assesment Results' %}</a>
|
<a href="{% url 'ass_results' %}"><i class="fa fa-list-ol"></i> {% trans 'Assesment Results' %}</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="{% if request.path == cr %}active{% endif %}">
|
<li class="{% if request.path == cr %}active{% endif %}">
|
||||||
<a href="{% url 'course_registration' %}"><i class="fas fa-plus"></i>{% trans 'Add' %} &{% trans 'Drop Course' %}</a>
|
<a href="{% url 'course_registration' %}"><i class="fas fa-plus"></i>{% trans 'Add' %} & {% trans 'Drop Course' %}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<br />
|
<br />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user