You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
3.7 KiB

from django.shortcuts import render, get_object_or_404
from django.contrib.auth import get_user_model, authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from django.views.decorators.cache import cache_page
from .models import Course, Person
personLoggedIn = ""
def home(request, person=''):
return render(request, 'home.html', {'person': person})
def details(request, course_id):
course = get_object_or_404(Course, pk=course_id)
return render(request, 'details.html', {'course': course})
# Handle error messages.
def register(request):
global personLoggedIn
if request.method == 'POST':
person_name = request.POST.get('name')
person_role = request.POST.get('role')
try:
person = Person.objects.get(name=person_name, role=person_role)
return render(request, 'register.html', {'person': Person(name="", role=""), "error_message": "This user already exists!"})
except Person.DoesNotExist:
person = Person(name=person_name, role=person_role)
person.save()
personLoggedIn = person
return home(request, personLoggedIn)
return render(request, 'register.html', {'person': Person(name="", role=""), "error_message": "The form has been wrongly filled!"})
def login(request):
global personLoggedIn
if request.method == 'POST':
person_name = request.POST.get('name')
person_role = request.POST.get('role')
try:
person = Person.objects.get(name=person_name, role=person_role)
personLoggedIn = person
return home(request, personLoggedIn)
except:
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "No user found!"})
return login_form(request)
def register_form(request):
return render(request, 'register.html', {'person': Person(name="", role="")})
def login_form(request):
return render(request, 'login.html', {'person': Person(name="", role="")})
def logout(request):
global personLoggedIn
personLoggedIn = ""
return render(request, 'login_form.html', {'person': Person(name="", role="")})
def courses(request):
global personLoggedIn
if personLoggedIn == "":
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "You must login!"})
if personLoggedIn.role == "Student":
courses = Course.objects.filter(students=personLoggedIn)
else:
courses = Course.objects.filter(teacher=personLoggedIn)
if type(courses) == Course:
courses = [courses]
return render(request, 'courses.html', {'person': personLoggedIn, 'courses': courses})
def change_profil(request):
global personLoggedIn
if personLoggedIn == '':
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "You must login!"})
if request.method == 'POST':
person_name = request.POST.get('name')
person_role = request.POST.get('role')
personLoggedIn.name = person_name
personLoggedIn.role = person_role
personLoggedIn.save()
return render(request, 'profil.html', {'person': personLoggedIn})
return login_form(request)
def profil(request):
global personLoggedIn
if personLoggedIn == '':
return render(request, 'login.html', {'person': Person(name="", role=""), "error_message": "You must login!"})
return render(request, 'profil.html', {'person': personLoggedIn})
@cache_page(60*15)
def cached(request):
user_model = get_user_model()
all_users = user_model.objects.all()
return render(request, 'test.html', {"users": all_users})