SkyLearn-Test/app/views.py
Adil Mohammed 905cbbaa46 Made a lot of changes
`Fix` pdf generator, remove junk files, clean code, and many more...
2023-05-14 12:28:12 +03:00

289 lines
10 KiB
Python

from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.conf import settings
from accounts.decorators import lecturer_required
from .forms import SessionForm, SemesterForm, NewsAndEventsForm
from .models import *
# ########################################################
# News & Events
# ########################################################
@login_required
def home_view(request):
items = NewsAndEvents.objects.all().order_by('-updated_date')
context = {
'title': "News & Events | DjangoSMS",
'items': items,
}
return render(request, 'app/index.html', context)
@login_required
def post_add(request):
if request.method == 'POST':
form = NewsAndEventsForm(request.POST)
title = request.POST.get('title')
if form.is_valid():
form.save()
messages.success(request, (title + ' has been uploaded.'))
return redirect('home')
else:
messages.error(request, 'Please correct the error(s) below.')
else:
form = NewsAndEventsForm()
return render(request, 'app/post_add.html', {
'title': 'Add Post | DjangoSMS',
'form': form,
})
@login_required
@lecturer_required
def edit_post(request, pk):
instance = get_object_or_404(NewsAndEvents, pk=pk)
if request.method == 'POST':
form = NewsAndEventsForm(request.POST, instance=instance)
title = request.POST.get('title')
if form.is_valid():
form.save()
messages.success(request, (title + ' has been updated.'))
return redirect('home')
else:
messages.error(request, 'Please correct the error(s) below.')
else:
form = NewsAndEventsForm(instance=instance)
return render(request, 'app/post_add.html', {
'title': 'Edit Post | DjangoSMS',
'form': form,
})
@login_required
@lecturer_required
def delete_post(request, pk):
post = get_object_or_404(NewsAndEvents, pk=pk)
title = post.title
post.delete()
messages.success(request, (title + ' has been deleted.'))
return redirect('home')
# ########################################################
# Session
# ########################################################
@login_required
@lecturer_required
def session_list_view(request):
""" Show list of all sessions """
sessions = Session.objects.all().order_by('-is_current_session', '-session')
return render(request, 'app/session_list.html', {"sessions": sessions})
@login_required
@lecturer_required
def session_add_view(request):
""" check request method, if POST we add session otherwise show empty form """
if request.method == 'POST':
form = SessionForm(request.POST)
if form.is_valid():
data = form.data.get('is_current_session') # returns string of 'True' if the user selected Yes
print(data)
if data == 'true':
sessions = Session.objects.all()
if sessions:
for session in sessions:
if session.is_current_session == True:
unset = Session.objects.get(is_current_session=True)
unset.is_current_session = False
unset.save()
form.save()
else:
form.save()
else:
form.save()
messages.success(request, 'Session added successfully. ')
return redirect('session_list')
else:
form = SessionForm()
return render(request, 'app/session_update.html', {'form': form})
@login_required
@lecturer_required
def session_update_view(request, pk):
session = Session.objects.get(pk=pk)
if request.method == 'POST':
form = SessionForm(request.POST, instance=session)
data = form.data.get('is_current_session')
if data == 'true':
sessions = Session.objects.all()
if sessions:
for session in sessions:
if session.is_current_session == True:
unset = Session.objects.get(is_current_session=True)
unset.is_current_session = False
unset.save()
if form.is_valid():
form.save()
messages.success(request, 'Session updated successfully. ')
return redirect('session_list')
else:
form = SessionForm(request.POST, instance=session)
if form.is_valid():
form.save()
messages.success(request, 'Session updated successfully. ')
return redirect('session_list')
else:
form = SessionForm(instance=session)
return render(request, 'app/session_update.html', {'form': form})
@login_required
@lecturer_required
def session_delete_view(request, pk):
session = get_object_or_404(Session, pk=pk)
if session.is_current_session:
messages.error(request, "You cannot delete current session")
return redirect('session_list')
else:
session.delete()
messages.success(request, "Session successfully deleted")
return redirect('session_list')
# ########################################################
# ########################################################
# Semester
# ########################################################
@login_required
@lecturer_required
def semester_list_view(request):
semesters = Semester.objects.all().order_by('-is_current_semester', '-semester')
return render(request, 'app/semester_list.html', {"semesters": semesters, })
@login_required
@lecturer_required
def semester_add_view(request):
if request.method == 'POST':
form = SemesterForm(request.POST)
if form.is_valid():
data = form.data.get('is_current_semester') # returns string of 'True' if the user selected Yes
if data == 'True':
semester = form.data.get('semester')
ss = form.data.get('session')
session = Session.objects.get(pk=ss)
try:
if Semester.objects.get(semester=semester, session=ss):
messages.error(request, semester + " semester in " + session.session + " session already exist")
return redirect('add_semester')
except:
semesters = Semester.objects.all()
sessions = Session.objects.all()
if semesters:
for semester in semesters:
if semester.is_current_semester == True:
unset_semester = Semester.objects.get(is_current_semester=True)
unset_semester.is_current_semester = False
unset_semester.save()
for session in sessions:
if session.is_current_session == True:
unset_session = Session.objects.get(is_current_session=True)
unset_session.is_current_session = False
unset_session.save()
new_session = request.POST.get('session')
set_session = Session.objects.get(pk=new_session)
set_session.is_current_session = True
set_session.save()
form.save()
messages.success(request, 'Semester added successfully.')
return redirect('semester_list')
form.save()
messages.success(request, 'Semester added successfully. ')
return redirect('semester_list')
else:
form = SemesterForm()
return render(request, 'app/semester_update.html', {'form': form})
@login_required
@lecturer_required
def semester_update_view(request, pk):
semester = Semester.objects.get(pk=pk)
if request.method == 'POST':
if request.POST.get('is_current_semester') == 'True': # returns string of 'True' if the user selected yes for 'is current semester'
unset_semester = Semester.objects.get(is_current_semester=True)
unset_semester.is_current_semester = False
unset_semester.save()
unset_session = Session.objects.get(is_current_session=True)
unset_session.is_current_session = False
unset_session.save()
new_session = request.POST.get('session')
form = SemesterForm(request.POST, instance=semester)
if form.is_valid():
set_session = Session.objects.get(pk=new_session)
set_session.is_current_session = True
set_session.save()
form.save()
messages.success(request, 'Semester updated successfully !')
return redirect('semester_list')
else:
form = SemesterForm(request.POST, instance=semester)
if form.is_valid():
form.save()
return redirect('semester_list')
else:
form = SemesterForm(instance=semester)
return render(request, 'app/semester_update.html', {'form': form})
@login_required
@lecturer_required
def semester_delete_view(request, pk):
semester = get_object_or_404(Semester, pk=pk)
if semester.is_current_semester:
messages.error(request, "You cannot delete current semester")
return redirect('semester_list')
else:
semester.delete()
messages.success(request, "Semester successfully deleted")
return redirect('semester_list')
# ########################################################
# from django.shortcuts import render_to_response
# from django.template import RequestContext
# def handler404(request, exception, template_name="common/404.html"):
# response = render_to_response("common/404.html")
# response.status_code = 404
# return response
# def handler500(request, *args, **argv):
# response = render_to_response('common/500.html', {}, context_instance=RequestContext(request))
# response.status_code = 500
# return response
# def handler400(request, exception, template_name="common/400.html"):
# response = render_to_response('common/400.html', context_instance=RequestContext(request))
# response.status_code = 400
# return response
def dashboard_view(request):
return render(request, 'app/dashboard.html')