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
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}) |