149 lines
4.5 KiB
Python
149 lines
4.5 KiB
Python
"""Webapp views."""
|
|
|
|
from django.shortcuts import render, redirect
|
|
from django.contrib.auth import login, logout, authenticate
|
|
from django.views.decorators.http import require_http_methods
|
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
|
from django.http import HttpResponse, HttpResponseRedirect
|
|
from django.contrib.auth.decorators import permission_required, login_required
|
|
from django.conf import settings
|
|
import logging
|
|
from webapp.models import OhlhafvChallenge
|
|
from webapp.forms import OhlhafvForm
|
|
from webapp.tables import OhlhafvTable
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def main_index(request, *args, **kwargs):
|
|
"""Render main page."""
|
|
return render(request, "main_index.html", {})
|
|
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
@ensure_csrf_cookie
|
|
@login_required(login_url='/login')
|
|
@permission_required('members.change_member')
|
|
def admin_index(request, *args, **kwargs):
|
|
"""Render admin main page."""
|
|
return render(request, "admin_index.html", {})
|
|
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
def login_view(request, *args, **kwargs):
|
|
"""Render login view."""
|
|
if request.method == "POST":
|
|
uname = request.POST.get("username", None)
|
|
pw = request.POST.get("passwd", None)
|
|
user = authenticate(username=uname, password=pw)
|
|
if user is not None:
|
|
login(request, user)
|
|
original_site = request.GET.get("next", None) or "/"
|
|
return redirect(original_site)
|
|
return render(request,
|
|
"login.html",
|
|
{"error": "☹ Kirjautuminen kosahti. Yritä uudelleen!"})
|
|
|
|
# user got here by a get request
|
|
user = request.user
|
|
if user.is_authenticated():
|
|
# user shoud not be here authenticated with get but get rid if is
|
|
return redirect("/")
|
|
return render(request, "login.html", {})
|
|
|
|
|
|
@require_http_methods(["GET", "POST"])
|
|
def logout_view(request, *args, **kwargs):
|
|
"""Logout user and return to main page."""
|
|
logout(request)
|
|
return redirect("/")
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def about_view(request, *args, **kwargs):
|
|
"""Render about page."""
|
|
return render(request, "about.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def guild_view(request, *args, **kwargs):
|
|
"""Render "Guild" page."""
|
|
return render(request, "guild.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def freshmen_view(request, *args, **kwargs):
|
|
"""Render "Freshmen" page."""
|
|
return render(request, "freshmen.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def jobs_view(request, *args, **kwargs):
|
|
"""Render "Jobs" page."""
|
|
return render(request, "jobs.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def event_calendar_view(request, *args, **kwargs):
|
|
"""Render "Event calendar" page."""
|
|
return render(request, "event_calendar.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def international_view(request, *args, **kwargs):
|
|
"""Render "International" page."""
|
|
return render(request, "international.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def sosso_view(request, *args, **kwargs):
|
|
"""Render "Sössö" page."""
|
|
return render(request, "sosso.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def contact_view(request, *args, **kwargs):
|
|
"""Render "Contact" page."""
|
|
return render(request, "contact.html", {})
|
|
|
|
|
|
@require_http_methods(["GET"])
|
|
def ohlhafv_view(request, *args, **kwargs):
|
|
"""Render Ohlhafv form page."""
|
|
form = OhlhafvForm()
|
|
return render(request, 'ohlhafv.html', {'form': form})
|
|
|
|
|
|
@ensure_csrf_cookie
|
|
@require_http_methods(["POST"])
|
|
def ohlhafv_submit(request, *args, **kwargs):
|
|
"""Submit Ohlhafv form."""
|
|
form = OhlhafvForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
# return HttpResponseRedirect('/list/')
|
|
else:
|
|
pass
|
|
# return render(request, 'error.html', {'error': form.errors})
|
|
return HttpResponseRedirect('/ohlhafv/list/')
|
|
|
|
|
|
@ensure_csrf_cookie
|
|
@require_http_methods(["GET"])
|
|
def ohlhafv_list(request, *args, **kwargs):
|
|
"""Present Ohlhafv challenges list."""
|
|
challenges = OhlhafvChallenge.objects.all()
|
|
|
|
table = OhlhafvTable(challenges,
|
|
request=request,
|
|
exclude=['id', 'challenger_email', 'victim_email'],
|
|
attrs={'class': 'table table-bordered table-hover'})
|
|
|
|
table.paginate(page=request.GET.get('page', 1), per_page=25)
|
|
table_html = table.as_html(request)
|
|
|
|
context = {
|
|
'table': table_html,
|
|
'challenge_count': len(challenges),
|
|
}
|
|
return render(request, 'ohlhafv_list.html', context)
|