huh new thing

This commit is contained in:
sankalp committed 2025-01-19 14:44:28 +05:45
1 parent 0975a125c7
commit 9a842c12bf
29 files changed
+2811 -295

No files matched your search

+446 -63
View File
@@ -17,6 +17,8 @@ from app.models import (
Attendance,
AttendanceReport,
AcademicYear,
FeedbackStudent,
FeedbackTeacher,
)
from django.contrib.auth.decorators import login_required, user_passes_test
from app.forms import SubjectForm
@@ -27,7 +29,6 @@ admin_site = site
@login_required
@user_passes_test(lambda u: u.is_superuser)
def admin_home(request):
admin_site = site
student_count1 = Student.objects.all().count()
teacher_count = Teacher.objects.all().count()
subject_count = Subject.objects.all().count()
@@ -43,48 +44,50 @@ def admin_home(request):
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)
# 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_id=teacher.id)
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)
# 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.admin.username)
# 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),
@@ -93,17 +96,17 @@ def admin_home(request):
"teacher_count": teacher_count,
"subject_count": subject_count,
"course_count": course_count,
"course_name_list": course_name_list,
# "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,
# "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)
@@ -146,7 +149,6 @@ def add_course(request):
def manage_course(request):
admin_site = site
courses = Course.objects.all()
context = {
**admin_site.each_context(request),
@@ -183,10 +185,12 @@ def edit_course(request, course_id):
except Exception as e:
messages.error(request, f"Error updating course: {str(e)}")
return render(
request, "hod/edit_course.html", {"course": course, "title": "Edit Course"}
)
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):
@@ -201,7 +205,6 @@ def delete_course(request, course_id):
def add_academicyear(request):
admin_site = site
if request.method == "POST":
start_date = request.POST.get("start_date")
academic_year = AcademicYear.objects.create(start_date=start_date)
@@ -210,6 +213,7 @@ def add_academicyear(request):
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)
@@ -217,7 +221,6 @@ def add_academicyear(request):
def edit_academicyear(request, pk):
academic_year = get_object_or_404(AcademicYear, pk=pk)
admin_site = site
if request.method == "POST":
start_date = request.POST.get("start_date")
@@ -233,13 +236,10 @@ def edit_academicyear(request, pk):
"title": "Edit Academic Year",
"opts": AcademicYear._meta,
}
return render(
request, "hod/edit_academicyear.html", {"academic_year": academic_year}
)
return render(request, "hod/edit_academicyear.html", context)
def manage_academicyear(request):
admin_site = site
context = {
**admin_site.each_context(request),
"academic_years": AcademicYear.objects.all(),
@@ -315,7 +315,7 @@ def edit_subject(request, pk):
form = SubjectForm(request.POST, instance=subject)
if form.is_valid():
form.save()
return redirect("manage_subjects")
return redirect("manage_subject")
else:
form = SubjectForm(instance=subject)
context = {
@@ -339,3 +339,386 @@ def delete_subject(request, subject_id):
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
)