Titivillus/quest/views.py

53 lines
1.5 KiB
Python

#!/usr/bin/env python3
"""
Quest and quest accessory views.
"""
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Quest, DiceRoll, PollOption, PollVote, PageTitle
from .forms import EditQuest
def index(request):
"""
/quest page index. Possibly not needed.
"""
return HttpResponse("Hello, world. You're at the quest index.")
def quest(request, quest_id, page_num=1):
"""
Arbituary quest page view.
"""
quest = Quest.objects.get(id=quest_id)
pages = PageTitle.objects.filter(quest=quest).order_by('page_num')
messages = quest.message_set.all()
posts = quest.post_set.all()
dice_rolls = DiceRoll.objects.filter(dicecall__post__quest=quest)
poll_options = PollOption.objects.filter(poll__post__quest=quest)
poll_votes = PollVote.objects.filter(option__poll__post__quest=quest)
ip_address = request.META['REMOTE_ADDR']
context = locals()
return render(request, 'quest/quest.html', context)
def edit_quest(request, quest_id, page_num=1):
"""
Edit quest page. Only available to the QM.
"""
quest = Quest.objects.get(id=quest_id)
if quest.owner != request.user:
return redirect('quest:quest', quest_id=quest_id, page_num=page_num)
if request.method == 'POST':
form = EditQuest(request.POST)
if form.is_valid():
quest.anon_name = form.cleaned_data['anon_name']
quest.save()
return redirect('quest:quest',quest_id=quest.id, page_num=page_num)
else:
messages.error(request, "Error")
else:
pass
context = locals()
return render(request, 'quest/edit_quest.html', context)