SkoolOS/Website/skoolos/views.py

167 lines
5.1 KiB
Python

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.views.generic import ListView
from django.contrib import messages
from django.contrib.auth.models import User
from .forms import (
UserUpdateForm,
StudentUpdateForm,
TeacherUpdateForm,
ClassCreationForm,
)
from api.models import Student, Teacher, Class, Assignment
# Create your views here.
@login_required()
def home (request):
try:
student = request.user.student
return render(request, "skoolos/home.html", {'classes': student.confirmed.all(), 'isTeacher': False})
except Student.DoesNotExist:
pass
try:
teacher = request.user.teacher
return render(request, "skoolos/home.html", {'classes': teacher.classes.all(), 'isTeacher': True})
except Teacher.DoesNotExist:
pass
return render(request, "skoolos/home.html")
@login_required()
def profile (request):
pass
@login_required()
def classDetail (request, id):
classObj = Class.objects.get(id=id)
try:
student = request.user.student
except Student.DoesNotExist:
pass
else:
if classObj.confirmed.filter(user=student.user).count() != 1:
return redirect('/')
else:
return render(request, "skoolos/class_detail.html", {'class': classObj,'assignments': classObj.assignments.all(), 'teachers': classObj.classes.all(), 'isTeacher': False})
try:
teacher = request.user.teacher
except Teacher.DoesNotExist:
pass
else:
if teacher.classes.filter(id=classObj.id).count() != 1:
return redirect('/')
else:
return render(request, "skoolos/class_detail.html", {'class': classObj,'assignments': classObj.assignments.all(), 'teachers': classObj.classes.all(), 'isTeacher': True})
return redirect('/')
@login_required()
def profile (request):
try:
student = request.user.student
return student_profile(request)
except Student.DoesNotExist:
pass
try:
teacher = request.user.teacher
return teacher_profile(request)
except Teacher.DoesNotExist:
pass
return redirect("/")
def student_profile (request):
if request.method == "POST":
userForm = UserUpdateForm(request.POST, instance=request.user)
profileForm = StudentUpdateForm(request.POST,
instance=request.user.student)
if userForm.is_valid() and profileForm.is_valid():
userForm.save()
profileForm.save()
messages.success(request, "Your account has been updated!")
return redirect('profile')
else:
userForm = UserUpdateForm(instance=request.user)
profileForm = StudentUpdateForm(instance=request.user.student)
context = {
'userForm': userForm,
'profileForm': profileForm,
'classes': request.user.student.confirmed.all(),
'isTeacher': False,
}
return render(request, 'skoolos/profile_student.html', context)
def teacher_profile (request):
if request.method == "POST":
userForm = UserUpdateForm(request.POST, instance=request.user)
profileForm = TeacherUpdateForm(request.POST,
instance=request.user.teacher)
if userForm.is_valid() and profileForm.is_valid():
userForm.save()
profileForm.save()
messages.success(request, "Your account has been updated!")
return redirect('profile')
else:
userForm = UserUpdateForm(instance=request.user)
profileForm = TeacherUpdateForm(instance=request.user.teacher)
context = {
'userForm': userForm,
'profileForm': profileForm,
'classes': request.user.teacher.classes.all(),
'isTeacher': True,
}
return render(request, 'skoolos/profile_teacher.html', context)
@login_required()
def createClass (request):
try:
teacher = request.user.teacher
except Teacher.DoesNotExist:
pass
else:
return createClassHelper(request)
return redirect('/')
def createClassHelper(request):
teacher = request.user.teacher
if request.method == "POST":
classForm = ClassCreationForm(request.POST)
if classForm.is_valid():
cleaned_data = classForm.clean()
print(cleaned_data)
newClass = classForm.save(commit=False)
newClass.owner = request.user
newClass.teacher = request.user.username
newClass.name = cleaned_data['subject'].replace(' ', '')[:8].lower() + str(cleaned_data['period']) + "_" + teacher.user.username.lower()
newClass.save()
classObj = classForm.save_m2m()
messages.success(request, cleaned_data['subject'].capitalize() + " has been created!")
print (newClass)
teacher.classes.add(newClass)
return redirect('home')
else:
classForm = ClassCreationForm()
context = {
'teacher': teacher,
'classes': teacher.classes.all(),
'classForm': classForm
}
return render(request, "skoolos/createClass.html", context)