Source code for apps.widgets.quests.views

"""Implemenat view processing for Quests."""
import re

# Create your views here.
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, Http404
from django.shortcuts import get_object_or_404

from apps.widgets.quests.models import Quest, QuestMember
from apps.widgets.quests.quests import get_quests_from_cache


[docs]def supply(request, page_name): """supply the quest view_objects""" _ = page_name return get_quests_from_cache(request.user)
@login_required
[docs]def accept(request, slug): """Accept the quest.""" if request.method == "POST": referer = request.META["HTTP_REFERER"] referer = re.sub(r'\?.*$', '', referer) # Chomp off the query parameters. quest = get_object_or_404(Quest, quest_slug=slug) if quest.can_add_quest(request.user): QuestMember.objects.get_or_create(user=request.user, quest=quest) return HttpResponseRedirect(referer) raise Http404
@login_required
[docs]def opt_out(request, slug): """opt_out of the quest""" if request.method == "POST": referer = request.META["HTTP_REFERER"] referer = re.sub(r'\?.*$', '', referer) # Chomp off the query parameters. quest = get_object_or_404(Quest, quest_slug=slug) if quest.can_add_quest(request.user): member, _ = QuestMember.objects.get_or_create(user=request.user, quest=quest) member.opt_out = True member.save() return HttpResponseRedirect(referer) raise Http404
@login_required
[docs]def cancel(request, slug): """cancel the quest""" if request.method == "POST": referer = request.META["HTTP_REFERER"] referer = re.sub(r'\?.*$', '', referer) # Chomp off the query parameters. member = get_object_or_404(QuestMember, quest__quest_slug=slug, user=request.user) member.delete() return HttpResponseRedirect(referer) raise Http404