Files
Student-Management-System-I…/app/views.py
T

225 lines
7.1 KiB
Python

from django.contrib import messages
from django.contrib.admin import site
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render
from django.views.generic import DetailView
from app.models import (
AcademicYear,
Certificate,
Course,
Marksheet,
NewsEvent,
Staff,
Student,
Subject,
SubjectMark,
Teacher,
)
def view_certificate(request, pk):
try:
certificate = get_object_or_404(Certificate, pk=pk)
student = certificate.student
# Calculate GPA from marksheet if available
gpa = None
try:
marksheet = Marksheet.objects.filter(student=student).latest("id")
percentage = marksheet.obtained_marks / marksheet.total_marks * 100
# Basic GPA calculation (customize based on your grading system)
gpa = (percentage / 100) * 4.0
except Marksheet.DoesNotExist:
pass
context = {
**site.each_context(request), # This adds admin context
"certificate": certificate,
"student": student,
"course": student.course,
"address": student.address,
"dob": student.date_of_birth,
"father": student.father_name,
"finished_year": certificate.date,
"principle": certificate.principle,
"checked_by": certificate.checked_by,
"issued_by": certificate.issued_by,
"school_name": "XYZ Secondary School",
"school_address": "Kohalpur, Nepal",
"gpa": f"{gpa:.2f}" if gpa else None,
"issue_date": certificate.date.strftime("%Y-%m-%d"),
}
return render(request, "Hod/view_certificate.html", context)
except Certificate.DoesNotExist:
return HttpResponse("Certificate not found", status=404)
# def view_certificate(request, pk):
# try:
# certificate = Certificate.objects.get(pk=pk)
# students = Student.objects.get(pk=certificate.student_id)
# context = {
# "certificate": certificate,
# "student": certificate.student,
# "course": students.course,
# "address": students.address,
# "dob": students.date_of_birth,
# "father": students.father_name,
# "finished_year": certificate.date,
# "principle": certificate.principle,
# "checked_by": certificate.checked_by,
# "issued_by": certificate.issued_by,
# "school_name": "XYZ Secondary School",
# "school_address": "Kohalpur, Nepal",
# }
# return render(request, "Hod/view_certificate.html", context)
# except Certificate.DoesNotExist:
# return HttpResponse("Certificate not found", status=404)
def get_periods(request, course_id):
try:
course = Course.objects.get(id=course_id)
periods = range(1, course.duration + 1)
return JsonResponse({"periods": list(periods)})
except Course.DoesNotExist:
raise Http404("Course not found.")
@login_required
def view_marksheet(request, pk):
try:
marksheet = Marksheet.objects.get(pk=pk)
percentage = (
(marksheet.obtained_marks / marksheet.total_marks) * 100
if marksheet.total_marks > 0
else 0
)
context = {
**site.each_context(request), # This adds admin context
"marksheet": marksheet,
"percentage": percentage,
"student": marksheet.student,
"school_name": "XYZ Secondary School",
"theory_max": 80,
"practical_max": 20,
"exam_year": marksheet.student.academic_year,
}
return render(request, "Hod/view_marksheet.html", context)
except Marksheet.DoesNotExist:
return HttpResponse("Marksheet not found", status=404)
@login_required
def Add_Course(request):
courses = Course.objects.all()
context = {
**site.each_context(request), # This adds admin context
"title": "Manage Courses",
"courses": courses,
"subtitle": "Course Management",
"site_title": "School Management",
"has_permission": True,
"is_popup": False,
"is_nav_sidebar_enabled": True,
"available_apps": site.get_app_list(request),
}
if request.method == "POST":
name = request.POST.get("name")
level = request.POST.get("level")
course_type = request.POST.get("course_type")
duration = request.POST.get("duration")
Course.objects.create(
name=name, level=level, course_type=course_type, duration=duration
)
messages.success(request, "Course Added Successfully!")
return redirect("add_course")
return render(request, "Hod/add_course.html", context)
@login_required
def Edit_Course(request, id):
course = Course.objects.all()
if request.method == "POST":
name = request.POST.get("name")
Course.objects.filter(id=id).update(
name=name,
)
messages.success(request, "Course Updated Successfully!")
return redirect("add_course")
context = {
"course": course,
}
return render(request, "Hod/add_course.html", context)
@login_required
def Delete_Course(request, id):
Course.objects.filter(id=id).delete()
messages.success(request, "Course Deleted Successfully")
return redirect("add_course")
@login_required
def dashboard(request):
if not request.user.is_superuser:
return redirect("studentdashboard")
total_student = Student.objects.count()
total_teacher = Teacher.objects.count()
total_staff = Staff.objects.count()
total_course = Course.objects.count()
total_subjects = Subject.objects.count()
context = {
**site.each_context(request),
"title": "Dashboard",
# "breadcrumbs": [{"name": "Dashboard", "url": "dashboard"}],
"total_student": total_student,
"total_teacher": total_teacher,
"total_staff": total_staff,
"total_course": total_course,
"total_subjects": total_subjects,
}
return render(request, "dashboard.html", context)
@login_required
def studentdashboard(request):
total_subject = Subject.objects.count()
student = Student.objects.get(user=request.user)
course_name = student.course.name
course = student.course
total_subjects = Subject.objects.filter(course=course).count()
subject = Subject.objects.filter(course=course)
context = {
**site.each_context(request),
"title": "Student Dashboard",
"total_subject": total_subject,
"course_name": course_name,
"subject": subject,
"total_subjects": total_subjects,
}
return render(request, "studentdashboard.html", context)
def marksheet(request):
marksheet = Marksheet.objects.first()
subject = SubjectMark.objects.filter(marksheet=marksheet)
context = {
**site.each_context(request),
"title": "Marksheet",
"marksheet": marksheet,
"subject": subject,
}
return render(request, "marksheet.html", context)