Fix: course registration

This commit is contained in:
Adil Mohak 2024-10-06 10:52:30 +03:00
parent f51e0bdadc
commit 53bb419566
2 changed files with 69 additions and 29 deletions

View File

@ -390,38 +390,78 @@ 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) 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() current_semester = Semester.objects.filter(is_current_semester=True).first()
if not current_semester: if not current_semester:
messages.error(request, "No active semester found.") messages.error(request, "No active semester found.")
return render(request, "course/course_registration.html") return render(request, "course/course_registration.html")
if request.method == "POST": # student = Student.objects.get(student__pk=request.user.id)
course_ids = request.POST.getlist("course_ids") student = get_object_or_404(Student, student__id=request.user.id)
for course_id in course_ids: taken_courses = TakenCourse.objects.filter(student__student__id=request.user.id)
course = get_object_or_404(Course, pk=course_id) t = ()
TakenCourse.objects.get_or_create(student=student, course=course) for i in taken_courses:
messages.success(request, "Courses registered successfully!") t += (i.course.pk,)
return redirect("course_registration")
taken_course_ids = TakenCourse.objects.filter(student=student).values_list( courses = (
"course__id", flat=True Course.objects.filter(
) program__pk=student.program.id,
courses = Course.objects.filter(
program=student.program,
level=student.level, level=student.level,
semester=current_semester.semester, semester=current_semester,
).exclude(id__in=taken_course_ids) )
.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) no_course_is_registered = False # Check if no course is registered
all_courses = Course.objects.filter(level=student.level, program=student.program) 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 = { context = {
"courses": courses, "is_calender_on": True,
"registered_courses": registered_courses, "all_courses_are_registered": all_courses_are_registered,
"student": student, "no_course_is_registered": no_course_is_registered,
"current_semester": current_semester, "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) return render(request, "course/course_registration.html", context)

View File

@ -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' %} &amp;{% trans 'Drop Course' %}</a> <a href="{% url 'course_registration' %}"><i class="fas fa-plus"></i>{% trans 'Add' %} &amp; {% trans 'Drop Course' %}</a>
</li> </li>
{% endif %} {% endif %}
<br /> <br />