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