#!/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)