huh new thing
This commit is contained in:
1 parent
d40476ebc3
commit
0975a125c7
125 files changed
+2195
-21409
No files matched your search
@@ -0,0 +1,341 @@
|
||||
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,
|
||||
)
|
||||
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):
|
||||
admin_site = site
|
||||
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_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)
|
||||
|
||||
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)
|
||||
|
||||
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):
|
||||
admin_site = site
|
||||
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)}")
|
||||
|
||||
return render(
|
||||
request, "hod/edit_course.html", {"course": course, "title": "Edit Course"}
|
||||
)
|
||||
|
||||
|
||||
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):
|
||||
admin_site = site
|
||||
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",
|
||||
"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)
|
||||
admin_site = site
|
||||
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", {"academic_year": academic_year}
|
||||
)
|
||||
|
||||
|
||||
def manage_academicyear(request):
|
||||
admin_site = site
|
||||
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_subjects")
|
||||
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")
|
||||
|
||||
Reference in new issue
Block a user