71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
import logging
|
|
from django.shortcuts import render
|
|
from django.views.decorators.http import require_http_methods
|
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
|
from django.http import HttpResponseRedirect
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from django.template.loader import render_to_string
|
|
|
|
from sikweb.settings import URL
|
|
|
|
from ohlhafv.models import OhlhafvChallenge
|
|
from ohlhafv.forms import OhlhafvForm
|
|
from webapp.utils import send_email
|
|
from webapp.models import processHooks
|
|
|
|
|
|
@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()
|
|
challenge = form.instance
|
|
url = f"https://{URL}/ohlhafv/list"
|
|
|
|
email_body = render_to_string(
|
|
"ohlhafv:email.html",
|
|
{
|
|
"challenge": challenge,
|
|
"url": url,
|
|
},
|
|
)
|
|
|
|
to_email = form.cleaned_data.get("victim_email", "")
|
|
subject = "Sinut on haastettu Øhlhäfviin!"
|
|
send_email(to=to_email, subject=subject, body=email_body)
|
|
logging.debug(f"Sent ohlhafv email to recipient <{to_email}>")
|
|
|
|
try:
|
|
webhook_message = render_to_string(
|
|
"ohlhafv:tgmsg.tpl", {"challenge": challenge, "url": url}
|
|
)
|
|
processHooks(message=webhook_message, eventType="ohlhafv")
|
|
except Exception:
|
|
pass
|
|
|
|
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)
|