Files
web2.0-backend/webapp/views.py
T
2018-01-26 01:15:35 +02:00

173 lines
4.9 KiB
Python

"""Webapp views."""
from django.db.models import Count
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
import requests
from dealer.git import git
from webapp.models import Official, OhlhafvChallenge
from webapp.forms import OhlhafvForm
from webapp.tables import OhlhafvTable
from members.views.utils import *
from django.core.mail import send_mail
def send_email(to, subject, body):
try:
success = send_mail(
subject,
body,
settings.DEFAULT_EMAIL_FROM,
[to],
fail_silently=False,
)
if success == 0:
raise Exception('Failed to send email!')
except Exception as ex:
logging.exception('Failed to send email.')
@require_http_methods(["GET"])
def main_index(request, *args, **kwargs):
"""Render main page."""
return render(request, "main_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."""
latest_commit = "Not found"
latest_date = "Not found"
latest_tag = "Not found"
try:
repo = git.init_repo()
latest_commit = repo.git("rev-parse HEAD").decode('utf-8')
latest_date = repo.git("show -s --format=%ci " + latest_commit).decode('utf-8')
latest_tag = repo.git("describe --tags " + repo.git("rev-list --tags --max-count=1").decode('utf-8')).decode('utf-8')
except:
pass
context = {
'commit': latest_commit,
'date': latest_date,
'tag': latest_tag
}
return render(request, "about.html", context)
@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."""
kaikki = Official.objects.all()
context = {"kaikki": kaikki}
return render(request, "contact.html", context)
@require_http_methods(["GET"])
def ohlhafv_view(request, *args, **kwargs):
"""Render Ohlhafv form page."""
form = OhlhafvForm()
return render(request, 'ohlhafv/new.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()
else:
pass
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()
challenges = challenges.order_by('-id')
context = {
'challenges': challenges,
'challenge_count': len(challenges),
}
return render(request, 'ohlhafv/list.html', context)