Skip to content

Commit

Permalink
Update departments
Browse files Browse the repository at this point in the history
  • Loading branch information
nz-m committed Sep 11, 2022
1 parent 7149818 commit 7a3c8da
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 161 deletions.
21 changes: 12 additions & 9 deletions main/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class Student(models.Model):
photo = models.ImageField(upload_to='profile_pics', blank=True,
null=False, default='profile_pics/default_student.png')
department = models.ForeignKey(
'Department', on_delete=models.CASCADE, null=False, blank=False)
'Department', on_delete=models.CASCADE, null=False, blank=False,related_name='students')

def delete(self, *args, **kwargs):
if self.photo != 'profile_pics/default_student.png':
Expand All @@ -34,7 +34,7 @@ class Faculty(models.Model):
email = models.EmailField(max_length=100, null=True, blank=True)
password = models.CharField(max_length=255, null=False)
department = models.ForeignKey(
'Department', on_delete=models.CASCADE, null=False)
'Department', on_delete=models.CASCADE, null=False, related_name='faculty')
role = models.CharField(
default="Faculty", max_length=100, null=False, blank=True)
photo = models.ImageField(upload_to='profile_pics', blank=True,
Expand All @@ -60,20 +60,23 @@ class Department(models.Model):
class Meta:
verbose_name_plural = 'Departments'

def faculty_count(self):
return Faculty.objects.filter(department=self).count()

def students_count(self):
return Student.objects.filter(department=self).count()

def __str__(self):
return self.name

def student_count(self):
return self.students.count()

def faculty_count(self):
return self.faculty.count()

def course_count(self):
return self.courses.count()


class Course(models.Model):
code = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255, null=False, unique=True)
department = models.ForeignKey(Department, on_delete=models.CASCADE)
department = models.ForeignKey(Department, on_delete=models.CASCADE, null=False, related_name='courses')
faculty = models.ForeignKey(
Faculty, on_delete=models.SET_NULL, null=True, blank=True)
studentKey = models.IntegerField(null=False, unique=True)
Expand Down
74 changes: 0 additions & 74 deletions main/templates/main/dep_detail.html

This file was deleted.

58 changes: 34 additions & 24 deletions main/templates/main/departments.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,31 +30,41 @@
</nav>
</div>
<!-- navigation links end -->
<div class="row gy-5">
{% if deps %}
{% for dep in deps%}
<!-- individual card starts -->
<div class="col-sm-6 d-flex align-items-stretch justify-content-center animate__animated animate__zoomIn">
<div class="card shadow" style="width: 30rem !important;">
<div class="class-header text-center text-light border-bottom bg-dark rounded">
<h6 class="my-2"> Dept. of {{dep.name}}</h6>
</div>
<div class="card-body d-flex flex-column align-items-center">
<h5 class="card-title fw-bold">Department ID : {{dep.department_id}}</h5>

<p class="card-text fw-bold">Department Info</p>
<p class="card-text">{{ dep.description}}</p>

<a href="{% url 'dep_details' dep.department_id %}" class="btn btn-outline-dark"><span
class="px-3">Enter</span></a>
</div>
</div>
</div>
<!-- individual card ends -->
{% endfor %}
</div>
{% else %}
<div class="text-center h4 text-secondary">No Department to show</div>
<table class="table align-middle mb-0 bg-white text-center">
<thead class="bg-light">
<tr>
<th>Name</th>
<th>ID</th>
<th>No. of Students</th>
<th>Total Faculty</th>
<th>Total Courses</th>
</tr>
</thead>
<tbody>
{% for dep in deps%}
<tr>
<td>
{{dep.name}}
</td>
<td>
{{dep.department_id}}
</td>
<td>
{{dep.student_count}}
</td>
<td>
{{dep.faculty_count}}
</td>
<td>
{{dep.course_count}}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<div class="text-center h4 text-secondary">No Departments to show</div>
{% endif %}
</div>
{% endblock %}
58 changes: 4 additions & 54 deletions main/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import datetime
from django.shortcuts import redirect, render
from django.contrib import messages
from .models import Student, Course, Announcement, Assignment, Submission, Material, Faculty
from .models import Student, Course, Announcement, Assignment, Submission, Material, Faculty, Department
from django.template.defaulttags import register
from django.db.models import Count, Q
from django.http import HttpResponseRedirect
Expand Down Expand Up @@ -548,9 +548,9 @@ def courses(request):
else:
return redirect('std_login')


def departments(request):
if request.session.get('student_id') or request.session.get('faculty_id'):

departments = Department.objects.all()
if request.session.get('student_id'):
student = Student.objects.get(
Expand All @@ -574,53 +574,6 @@ def departments(request):
return redirect('std_login')


def dep_details(request, dep_id):
if request.session.get('student_id') or request.session.get('faculty_id'):

dep= Department.objects.get(department_id=dep_id)
sc = Department.students_count(dep)
fc = Department.faculty_count(dep)
cc = Department.course_count(dep)
courses = Course.objects.filter(department=dep_id)
studentCount = Course.objects.filter(department=dep_id).annotate(student_count=Count('students'))

studentCountDict = {}

for course in studentCount:
studentCountDict[course.code] = course.student_count

@register.filter
def get_item(dictionary, course_code):
return dictionary.get(course_code)

if request.session.get('student_id'):
student = Student.objects.get(
student_id=request.session['student_id'])
else:
student = None
if request.session.get('faculty_id'):
faculty = Faculty.objects.get(
faculty_id=request.session['faculty_id'])
else:
faculty = None
context = {
'faculty': faculty,
'student': student,
'courses': courses,
'deps' : dep,
'sc': sc,
'fc' : fc,
'cc' : cc,
'studentCount': studentCountDict
}

return render(request, 'main/dep_detail.html', context)

else:
return redirect('std_login')



def access(request, code):
if request.session.get('student_id'):
course = Course.objects.get(code=code)
Expand Down Expand Up @@ -781,6 +734,7 @@ def changePhotoFaculty(request):
else:
return redirect('std_login')


def guestStudent(request):
request.session.flush()
try:
Expand All @@ -790,6 +744,7 @@ def guestStudent(request):
except:
return redirect('std_login')


def guestFaculty(request):
request.session.flush()
try:
Expand All @@ -798,8 +753,3 @@ def guestFaculty(request):
return redirect('facultyCourses')
except:
return redirect('std_login')





0 comments on commit 7a3c8da

Please sign in to comment.