huh new thing
This commit is contained in:
1 parent
d40476ebc3
commit
0975a125c7
125 files changed
+2195
-21409
No files matched your search
+4
-222
@@ -1,224 +1,6 @@
|
||||
from django.contrib.auth import authenticate, login, logout
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.shortcuts import render, redirect
|
||||
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)
|
||||
# Create your views here.
|
||||
Reference in new issue
Block a user