725 lines
25 KiB
Python
725 lines
25 KiB
Python
import json
|
|
import requests
|
|
from django.contrib.admin import site
|
|
from django.contrib import messages
|
|
from django.core.files.storage import FileSystemStorage
|
|
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
|
from django.urls import reverse
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from app.models import (
|
|
Student,
|
|
Teacher,
|
|
Subject,
|
|
Course,
|
|
LeaveReportStudent,
|
|
LeaveReportTeacher,
|
|
Attendance,
|
|
AttendanceReport,
|
|
AcademicYear,
|
|
FeedbackStudent,
|
|
FeedbackTeacher,
|
|
)
|
|
from django.contrib.auth.decorators import login_required, user_passes_test
|
|
from app.forms import SubjectForm
|
|
|
|
admin_site = site
|
|
|
|
|
|
@login_required
|
|
@user_passes_test(lambda u: u.is_superuser)
|
|
def admin_home(request):
|
|
student_count1 = Student.objects.all().count()
|
|
teacher_count = Teacher.objects.all().count()
|
|
subject_count = Subject.objects.all().count()
|
|
course_count = Course.objects.all().count()
|
|
course_all = Course.objects.all()
|
|
course_name_list = []
|
|
subject_count_list = []
|
|
student_count_list_in_course = []
|
|
for course in course_all:
|
|
subjects = Subject.objects.filter(course_id=course.id).count()
|
|
students = Student.objects.filter(course_id=course.id).count()
|
|
course_name_list.append(course.name)
|
|
subject_count_list.append(subjects)
|
|
student_count_list_in_course.append(students)
|
|
|
|
# subjects_all = Subject.objects.all()
|
|
# subject_list = []
|
|
# student_count_list_in_subject = []
|
|
# for subject in subjects_all:
|
|
# course = subject.course
|
|
# student_count = Student.objects.filter(course_id=course.id).count()
|
|
# subject_list.append(subject.name)
|
|
# student_count_list_in_subject.append(student_count)
|
|
|
|
# teacher = Teacher.objects.all()
|
|
# attendance_present_list_teacher = []
|
|
# attendance_absent_list_teacher = []
|
|
# teacher_name_list = []
|
|
# for teacher in teacher:
|
|
# subject_ids = Subject.objects.filter(teacher=teacher).values_list(
|
|
# "id", flat=True
|
|
# )
|
|
# attendance = Attendance.objects.filter(
|
|
# subject_id__in=subject_ids,
|
|
# ).count()
|
|
# leaves = LeaveReportTeacher.objects.filter(
|
|
# teacher_id=teacher.id, leave_status=1
|
|
# ).count()
|
|
# attendance_present_list_teacher.append(attendance)
|
|
# attendance_absent_list_teacher.append(leaves)
|
|
# teacher_name_list.append(teacher.first_name)
|
|
|
|
# students_all = Student.objects.all()
|
|
# attendance_present_list_student = []
|
|
# attendance_absent_list_student = []
|
|
# student_name_list = []
|
|
# for student in students_all:
|
|
# attendance = AttendanceReport.objects.filter(
|
|
# student_id=student.id, status=True
|
|
# ).count()
|
|
# absent = AttendanceReport.objects.filter(
|
|
# student_id=student.id, status=False
|
|
# ).count()
|
|
# leaves = LeaveReportStudent.objects.filter(
|
|
# student_id=student.id, leave_status=1
|
|
# ).count()
|
|
# attendance_present_list_student.append(attendance)
|
|
# attendance_absent_list_student.append(leaves + absent)
|
|
# student_name_list.append(student.username)
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Admin Dashboard",
|
|
"student_count": student_count1,
|
|
"teacher_count": teacher_count,
|
|
"subject_count": subject_count,
|
|
"course_count": course_count,
|
|
# "course_name_list": course_name_list,
|
|
"subject_count_list": subject_count_list,
|
|
# "student_count_list_in_course": student_count_list_in_course,
|
|
# "student_count_list_in_subject": student_count_list_in_subject,
|
|
# "subject_list": subject_list,
|
|
# "teacher_name_list": teacher_name_list,
|
|
# "attendance_present_list_teacher": attendance_present_list_teacher,
|
|
# "attendance_absent_list_teacher": attendance_absent_list_teacher,
|
|
# "student_name_list": student_name_list,
|
|
# "attendance_present_list_student": attendance_present_list_student,
|
|
# "attendance_absent_list_student": attendance_absent_list_student,
|
|
"opts": Student._meta,
|
|
}
|
|
return render(request, "hod/dashboard.html", context)
|
|
|
|
|
|
def add_course(request):
|
|
admin_site = site
|
|
if request.method == "POST":
|
|
name = request.POST.get("name")
|
|
course_type = request.POST.get("course_type")
|
|
duration = request.POST.get("duration")
|
|
|
|
if not name or not course_type or not duration:
|
|
messages.error(request, "All fields are required!")
|
|
return redirect("add_course")
|
|
|
|
try:
|
|
duration = int(duration)
|
|
if duration <= 0:
|
|
raise ValueError
|
|
except ValueError:
|
|
messages.error(request, "Duration must be a positive number!")
|
|
return redirect("add_course")
|
|
|
|
if Course.objects.filter(name=name).exists():
|
|
messages.error(request, "A course with this name already exists.")
|
|
return redirect("add_course")
|
|
|
|
Course.objects.create(name=name, course_type=course_type, duration=duration)
|
|
messages.success(request, "Course added successfully!")
|
|
return redirect("add_course")
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Add Course",
|
|
"COURSE_TYPE_CHOICES": Course.COURSE_TYPE_CHOICES,
|
|
"opts": Course._meta,
|
|
}
|
|
return render(request, "hod/add_course.html", context)
|
|
|
|
|
|
def manage_course(request):
|
|
courses = Course.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"courses": courses,
|
|
"title": "Manage Courses",
|
|
"opts": Course._meta,
|
|
}
|
|
return render(request, "hod/manage_course.html", context)
|
|
|
|
|
|
def edit_course(request, course_id):
|
|
course = get_object_or_404(Course, id=course_id)
|
|
|
|
if request.method == "POST":
|
|
name = request.POST.get("name")
|
|
course_type = request.POST.get("course_type")
|
|
duration = request.POST.get("duration")
|
|
|
|
# Validate unique name if it changed
|
|
if name != course.name and Course.objects.filter(name=name).exists():
|
|
messages.error(request, "A course with this name already exists.")
|
|
return render(
|
|
request, "edit_course.html", {"course": course, "title": "Edit Course"}
|
|
)
|
|
|
|
try:
|
|
course.name = name
|
|
course.course_type = course_type
|
|
course.duration = duration
|
|
course.save()
|
|
|
|
messages.success(request, "Course updated successfully.")
|
|
return redirect("manage_course")
|
|
|
|
except Exception as e:
|
|
messages.error(request, f"Error updating course: {str(e)}")
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Edit Course",
|
|
"course": course,
|
|
}
|
|
return render(request, "hod/edit_course.html", context)
|
|
|
|
|
|
def delete_course(request, course_id):
|
|
course = Course.objects.get(id=course_id)
|
|
try:
|
|
course.delete()
|
|
messages.success(request, "Course Deleted Successfully.")
|
|
return redirect("manage_course")
|
|
except:
|
|
messages.error(request, "Failed to Delete Course.")
|
|
return redirect("manage_course")
|
|
|
|
|
|
def add_academicyear(request):
|
|
if request.method == "POST":
|
|
start_date = request.POST.get("start_date")
|
|
academic_year = AcademicYear.objects.create(start_date=start_date)
|
|
messages.success(request, "Academic Year added successfully.")
|
|
return redirect("manage_academicyear")
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Add Academic Year",
|
|
# "academic_year": academic_year,
|
|
"opts": AcademicYear._meta,
|
|
}
|
|
return render(request, "hod/add_academicyear.html", context)
|
|
|
|
|
|
def edit_academicyear(request, pk):
|
|
academic_year = get_object_or_404(AcademicYear, pk=pk)
|
|
if request.method == "POST":
|
|
start_date = request.POST.get("start_date")
|
|
|
|
if start_date:
|
|
academic_year.start_date = start_date
|
|
academic_year.save()
|
|
messages.success(request, "Academic Year updated successfully.")
|
|
return redirect("manage_academicyear")
|
|
else:
|
|
messages.error(request, "Please provide a valid start date.")
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Edit Academic Year",
|
|
"opts": AcademicYear._meta,
|
|
}
|
|
return render(request, "hod/edit_academicyear.html", context)
|
|
|
|
|
|
def manage_academicyear(request):
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"academic_years": AcademicYear.objects.all(),
|
|
"title": "Manage Academic Year",
|
|
"opts": AcademicYear._meta,
|
|
}
|
|
return render(request, "hod/manage_academicyear.html", context)
|
|
|
|
|
|
def delete_academicyear(request, academic_year_id):
|
|
academic_year = AcademicYear.objects.get(id=academic_year_id)
|
|
try:
|
|
academic_year.delete()
|
|
messages.success(request, "AcademicYear Deleted Successfully.")
|
|
return redirect("manage_academicyear")
|
|
except:
|
|
messages.error(request, "Failed to Delete AcademicYear.")
|
|
return redirect("manage_academicyear")
|
|
|
|
|
|
def manage_subjects(request):
|
|
subjects = Subject.objects.all()
|
|
courses = Course.objects.all()
|
|
selected_course_id = request.GET.get("course")
|
|
selected_duration = request.GET.get("duration", "")
|
|
|
|
if selected_course_id and selected_duration:
|
|
subjects = Subject.objects.filter(
|
|
course_id=selected_course_id, duration=selected_duration
|
|
)
|
|
elif selected_course_id:
|
|
subjects = Subject.objects.filter(course_id=selected_course_id)
|
|
elif selected_duration:
|
|
subjects = Subject.objects.filter(duration=selected_duration)
|
|
else:
|
|
subjects = Subject.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"subjects": subjects,
|
|
"selected_course_id": selected_course_id,
|
|
"selected_duration": selected_duration,
|
|
"title": "Manage Subjects",
|
|
"courses": courses,
|
|
"opts": Subject._meta,
|
|
}
|
|
return render(request, "hod/manage_subject.html", context)
|
|
|
|
|
|
def add_subject(request):
|
|
courses = Course.objects.all()
|
|
if request.method == "POST":
|
|
form = SubjectForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect("manage_subjects")
|
|
else:
|
|
form = SubjectForm()
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Add Subject",
|
|
"courses": courses,
|
|
"form": form,
|
|
"opts": Subject._meta,
|
|
}
|
|
return render(request, "hod/add_subject.html", context)
|
|
|
|
|
|
def edit_subject(request, pk):
|
|
subject = get_object_or_404(Subject, pk=pk)
|
|
courses = Course.objects.all()
|
|
if request.method == "POST":
|
|
form = SubjectForm(request.POST, instance=subject)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect("manage_subject")
|
|
else:
|
|
form = SubjectForm(instance=subject)
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Add Subject",
|
|
"courses": courses,
|
|
"form": form,
|
|
"opts": Subject._meta,
|
|
}
|
|
|
|
return render(request, "hod/edit_subject.html", context)
|
|
|
|
|
|
def delete_subject(request, subject_id):
|
|
subject = Subject.objects.get(id=subject_id)
|
|
try:
|
|
subject.delete()
|
|
messages.success(request, "Subject Deleted Successfully.")
|
|
return redirect("manage_subject")
|
|
except:
|
|
messages.error(request, "Failed to Delete Subject.")
|
|
return redirect("manage_subject")
|
|
|
|
|
|
def manage_student(request):
|
|
search_query = request.GET.get("search", "")
|
|
students = Student.objects.all()
|
|
|
|
if search_query:
|
|
students = (
|
|
students.filter(first_name__icontains=search_query)
|
|
| students.filter(last_name__icontains=search_query)
|
|
| students.filter(email__icontains=search_query)
|
|
)
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Manage Students",
|
|
"students": students,
|
|
"search_query": search_query,
|
|
}
|
|
return render(request, "hod/manage_student.html", context)
|
|
|
|
|
|
def add_student(request):
|
|
courses = Course.objects.all()
|
|
academic_years = AcademicYear.objects.all()
|
|
occupation_choices = dict(Student.occupation_choice)
|
|
relationship_choices = dict(Student.relationship_choice)
|
|
|
|
if request.method == "POST":
|
|
first_name = request.POST.get("first_name")
|
|
middle_name = request.POST.get("middle_name")
|
|
last_name = request.POST.get("last_name")
|
|
email = request.POST.get("email")
|
|
phone = request.POST.get("phone")
|
|
dob = request.POST.get("dob")
|
|
gender = request.POST.get("gender")
|
|
course_id = request.POST.get("course")
|
|
academic_year_id = request.POST.get("academic_year")
|
|
address = request.POST.get("address")
|
|
father_name = request.POST.get("father_name")
|
|
father_occupation = request.POST.get("father_occupation")
|
|
mother_name = request.POST.get("mother_name")
|
|
mother_occupation = request.POST.get("mother_occupation")
|
|
guardian_name = request.POST.get("guardian_name")
|
|
guardian_number = request.POST.get("guardian_number")
|
|
parents_number = request.POST.get("parents_number")
|
|
relationship_with_student = request.POST.get("relationship_with_student")
|
|
|
|
try:
|
|
course = get_object_or_404(Course, id=course_id)
|
|
academic_year = get_object_or_404(AcademicYear, id=academic_year_id)
|
|
|
|
Student.objects.create(
|
|
first_name=first_name,
|
|
middle_name=middle_name,
|
|
last_name=last_name,
|
|
email=email,
|
|
phone=phone,
|
|
dob=dob,
|
|
gender=gender,
|
|
course=course,
|
|
academic_year=academic_year,
|
|
address=address,
|
|
father_name=father_name,
|
|
father_occupation=father_occupation,
|
|
mother_name=mother_name,
|
|
mother_occupation=mother_occupation,
|
|
guardian_name=guardian_name,
|
|
guardian_number=guardian_number,
|
|
parents_number=parents_number,
|
|
relationship_with_student=relationship_with_student,
|
|
)
|
|
messages.success(request, "Student added successfully!")
|
|
return redirect("manage_student")
|
|
except Exception as e:
|
|
messages.error(request, f"Error adding student: {e}")
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Add Student",
|
|
"courses": courses,
|
|
"academic_years": academic_years,
|
|
"occupation_choices": occupation_choices.items(),
|
|
"relationship_choices": relationship_choices.items(),
|
|
}
|
|
return render(request, "hod/add_student.html", context)
|
|
|
|
|
|
def edit_student(request, student_id):
|
|
student = get_object_or_404(Student, id=student_id)
|
|
courses = Course.objects.all()
|
|
academic_years = AcademicYear.objects.all()
|
|
occupation_choices = dict(Student.occupation_choice)
|
|
relationship_choices = dict(Student.relationship_choice)
|
|
|
|
if request.method == "POST":
|
|
student.first_name = request.POST.get("first_name")
|
|
student.middle_name = request.POST.get("middle_name")
|
|
student.last_name = request.POST.get("last_name")
|
|
student.email = request.POST.get("email")
|
|
student.phone = request.POST.get("phone")
|
|
student.dob = request.POST.get("dob")
|
|
student.gender = request.POST.get("gender")
|
|
student.course = get_object_or_404(Course, id=request.POST.get("course"))
|
|
student.academic_year = get_object_or_404(
|
|
AcademicYear, id=request.POST.get("academic_year")
|
|
)
|
|
student.father_occupation = request.POST.get("father_occupation")
|
|
student.relationship_with_student = request.POST.get(
|
|
"relationship_with_student"
|
|
)
|
|
|
|
try:
|
|
student.save()
|
|
messages.success(request, "Student updated successfully!")
|
|
return redirect("manage_student")
|
|
except Exception as e:
|
|
messages.error(request, f"Error updating student: {e}")
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Edit Student",
|
|
"student": student,
|
|
"courses": courses,
|
|
"academic_years": academic_years,
|
|
"occupation_choices": occupation_choices.items(),
|
|
"relationship_choices": relationship_choices.items(),
|
|
}
|
|
return render(request, "hod/edit_student.html", context)
|
|
|
|
|
|
def delete_student(request, student_id):
|
|
student = get_object_or_404(Student, id=student_id)
|
|
student.delete()
|
|
messages.success(request, "Student deleted successfully!")
|
|
return redirect("manage_student")
|
|
|
|
|
|
def manage_teacher(request):
|
|
teachers = Teacher.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Manage Teachers",
|
|
"teachers": teachers,
|
|
}
|
|
return render(request, "hod/manage_teacher.html", context)
|
|
|
|
|
|
def add_teacher(request):
|
|
if request.method == "POST":
|
|
try:
|
|
Teacher.objects.create(
|
|
first_name=request.POST.get("first_name"),
|
|
middle_name=request.POST.get("middle_name"),
|
|
last_name=request.POST.get("last_name"),
|
|
email=request.POST.get("email"),
|
|
phone=request.POST.get("phone"),
|
|
dob=request.POST.get("dob"),
|
|
gender=request.POST.get("gender"),
|
|
address=request.POST.get("address"),
|
|
# username=request.POST.get("username"),
|
|
# password=request.POST.get("password"),
|
|
qualification=request.POST.get("qualification"),
|
|
specialization_on=request.POST.get("specialization_on"),
|
|
marital_status=request.POST.get("marital_status"),
|
|
date_of_joining=request.POST.get("date_of_joining"),
|
|
)
|
|
messages.success(request, "Teacher added successfully!")
|
|
return redirect("manage_teacher")
|
|
except Exception as e:
|
|
messages.error(request, f"Error adding teacher: {e}")
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Add Teacher",
|
|
"qualification_choices": dict(Teacher.qualification_choice).items(),
|
|
"marital_status_choices": dict(Teacher.marital_status_choice).items(),
|
|
}
|
|
return render(request, "hod/add_teacher.html", context)
|
|
|
|
|
|
def edit_teacher(request, teacher_id):
|
|
teacher = get_object_or_404(Teacher, id=teacher_id)
|
|
|
|
if request.method == "POST":
|
|
try:
|
|
teacher.first_name = request.POST.get("first_name")
|
|
teacher.middle_name = request.POST.get("middle_name")
|
|
teacher.last_name = request.POST.get("last_name")
|
|
teacher.email = request.POST.get("email")
|
|
teacher.phone = request.POST.get("phone")
|
|
teacher.dob = request.POST.get("dob")
|
|
teacher.gender = request.POST.get("gender")
|
|
teacher.address = request.POST.get("address")
|
|
teacher.qualification = request.POST.get("qualification")
|
|
teacher.specialization_on = request.POST.get("specialization_on")
|
|
teacher.marital_status = request.POST.get("marital_status")
|
|
teacher.date_of_joining = request.POST.get("date_of_joining")
|
|
teacher.save()
|
|
|
|
messages.success(request, "Teacher updated successfully!")
|
|
return redirect("manage_teacher")
|
|
except Exception as e:
|
|
messages.error(request, f"Error updating teacher: {e}")
|
|
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Edit Teacher",
|
|
"teacher": teacher,
|
|
"qualification_choices": dict(Teacher.qualification_choice).items(),
|
|
"marital_status_choices": dict(Teacher.marital_status_choice).items(),
|
|
}
|
|
return render(request, "hod/edit_teacher.html", context)
|
|
|
|
|
|
def delete_teacher(request, teacher_id):
|
|
teacher = get_object_or_404(Teacher, id=teacher_id)
|
|
teacher.delete()
|
|
messages.success(request, "Teacher deleted successfully!")
|
|
return redirect("manage_teacher")
|
|
|
|
|
|
def student_feedback_message(request):
|
|
feedbacks = FeedbackStudent.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Student's Feedback",
|
|
"feedbacks": feedbacks,
|
|
}
|
|
return render(request, "hod/student_feedback.html", context)
|
|
|
|
|
|
@csrf_exempt
|
|
def student_feedback_message_reply(request):
|
|
feedback_id = request.POST.get("id")
|
|
feedback_reply = request.POST.get("reply")
|
|
|
|
try:
|
|
feedback = FeedbackStudent.objects.get(id=feedback_id)
|
|
feedback.feedback_reply = feedback_reply
|
|
feedback.save()
|
|
return HttpResponse("True")
|
|
|
|
except:
|
|
return HttpResponse("False")
|
|
|
|
|
|
def teacher_feedback(request):
|
|
feedbacks = FeedbackTeacher.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Staff's Feedback",
|
|
"feedbacks": feedbacks,
|
|
}
|
|
return render(request, "hod/teacher_feedback.html", context)
|
|
|
|
|
|
@csrf_exempt
|
|
def teacher_feedback_replied(request):
|
|
feedback_id = request.POST.get("id")
|
|
feedback_message = request.POST.get("message")
|
|
|
|
try:
|
|
feedback = FeedbackTeacher.objects.get(id=feedback_id)
|
|
feedback.feedback_reply = feedback_message
|
|
feedback.save()
|
|
return HttpResponse("True")
|
|
except Exception:
|
|
return HttpResponse("False")
|
|
|
|
|
|
def student_leave_view(request):
|
|
leaves = LeaveReportStudent.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Student Application",
|
|
"leaves": leaves,
|
|
}
|
|
return render(request, "hod/student_leave_view.html", context)
|
|
|
|
|
|
def student_leave_approve(request, leave_id):
|
|
leave = LeaveReportStudent.objects.get(id=leave_id)
|
|
leave.leave_status = 1
|
|
leave.save()
|
|
return HttpResponseRedirect(reverse("student_leave_view"))
|
|
|
|
|
|
def student_leave_reject(request, leave_id):
|
|
leave = LeaveReportStudent.objects.get(id=leave_id)
|
|
leave.leave_status = 2
|
|
leave.save()
|
|
return HttpResponseRedirect(reverse("student_leave_view"))
|
|
|
|
|
|
def teacher_leave_view(request):
|
|
leaves = LeaveReportTeacher.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"title": "Teacher Application",
|
|
"leaves": leaves,
|
|
}
|
|
return render(request, "hod/teacher_leave_view.html", context)
|
|
|
|
|
|
def teacher_leave_approve(request, leave_id):
|
|
leave = LeaveReportTeacher.objects.get(id=leave_id)
|
|
leave.leave_status = 1
|
|
leave.save()
|
|
return HttpResponseRedirect(reverse("teacher_leave_view"))
|
|
|
|
|
|
def teacher_leave_reject(request, leave_id):
|
|
leave = LeaveReportTeacher.objects.get(id=leave_id)
|
|
leave.leave_status = 2
|
|
leave.save()
|
|
return HttpResponseRedirect(reverse("teacher_leave_view"))
|
|
|
|
|
|
def admin_view_attendance(request):
|
|
subjects = Subject.objects.all()
|
|
academic_years = AcademicYear.objects.all()
|
|
context = {
|
|
**admin_site.each_context(request),
|
|
"subjects": subjects,
|
|
"academic_years": academic_years,
|
|
}
|
|
return render(request, "hod/view_attendance.html", context)
|
|
|
|
|
|
@csrf_exempt
|
|
def admin_get_attendance_dates(request):
|
|
# Getting Values from Ajax POST 'Fetch Student'
|
|
subject_id = request.POST.get("subject")
|
|
academic_year = request.POST.get("academic_year_id")
|
|
|
|
# Students enroll to Course, Course has Subjects
|
|
# Getting all data from subject model based on subject_id
|
|
subject_model = Subject.objects.get(id=subject_id)
|
|
|
|
academic_model = AcademicYear.objects.get(id=academic_year)
|
|
|
|
# students = Students.objects.filter(course_id=subject_model.course_id, session_year_id=session_model)
|
|
attendance = Attendance.objects.filter(
|
|
subject_id=subject_model, academic_year_id=academic_model
|
|
)
|
|
|
|
# Only Passing Student Id and Student Name Only
|
|
list_data = []
|
|
|
|
for attendance_single in attendance:
|
|
data_small = {
|
|
"id": attendance_single.id,
|
|
"attendance_date": str(attendance_single.attendance_date),
|
|
"academic_year_id": attendance_single.academic_year_id.id,
|
|
}
|
|
list_data.append(data_small)
|
|
|
|
return JsonResponse(
|
|
json.dumps(list_data), content_type="application/json", safe=False
|
|
)
|
|
|
|
|
|
@csrf_exempt
|
|
def admin_get_attendance_student(request):
|
|
# Getting Values from Ajax POST 'Fetch Student'
|
|
attendance_date = request.POST.get("attendance_date")
|
|
attendance = Attendance.objects.get(id=attendance_date)
|
|
|
|
attendance_data = AttendanceReport.objects.filter(attendance_id=attendance)
|
|
# Only Passing Student Id and Student Name Only
|
|
list_data = []
|
|
|
|
for student in attendance_data:
|
|
data_small = {
|
|
"id": student.student_id.id,
|
|
"name": student.student_id.first_name + " " + student.student_id.last_name,
|
|
"status": student.status,
|
|
}
|
|
list_data.append(data_small)
|
|
|
|
return JsonResponse(
|
|
json.dumps(list_data), content_type="application/json", safe=False
|
|
)
|