def tables_quest_all(request, quest_id): quest = get_object_or_404(Quest, pk=quest_id, type=Quest.LINEAR, parent__isnull=True) request = is_quest_organizer_or_agent(request, quest) players = quest.players() missions = quest.missions().exclude(is_finish=True) keylogs = Keylog.right_keylogs(missions) context = {'quest': quest, 'players': players, 'missions': missions, 'keylogs': keylogs} return render(request, 'coordination/quests/tables/all.html', context)
def quest_missions(request, quest_id): quest = get_object_or_404(Quest, pk=quest_id, parent__isnull=True) if not quest.published: request = is_quest_organizer_or_agent(request, quest) if quest.multilinear: return redirect('coordination:quest_lines', quest_id=quest.id) missions = quest.missions() context = {'quest': quest, 'missions': missions} return render(request, 'coordination/missions/all.html', context)
def quest_lines(request, quest_id): quest = get_object_or_404(Quest, pk=quest_id, type=Quest.MULTILINEAR) if not quest.published: request = is_quest_organizer_or_agent(request, quest) mission_start = quest.start_mission() mission_finish = quest.finish_mission() lines = quest.lines() context = {'quest': quest, 'mission_start': mission_start, 'mission_finish': mission_finish, 'lines': lines} return render(request, 'coordination/missions/lines.html', context)
def picture_mission(request, mission_id): mission = get_object_or_404(Mission, pk=mission_id) if mission.picture: quest = mission.quest player = request.user can_user_view = quest.published and \ (quest.ended or (player.is_authenticated() and mission.is_completed(player)) or (player.is_authenticated() and mission.is_current(player))) if not can_user_view: request = is_quest_organizer_or_agent(request, quest) return sendfile(request, mission.picture.path) else: raise Http404
def tables_quest(request, quest_id): quest = get_object_or_404(Quest, pk=quest_id, parent__isnull=True) if quest.nonlinear or quest.multilinear: request = is_quest_organizer_or_agent(request, quest) rest_quest = 0 if quest.started: rest_quest = get_timedelta(quest.game_over) players = quest.players_ext() missions = quest.missions_ext() context = {'quest': quest, 'players': players, 'missions': missions, 'rest_quest': rest_quest} if quest.nonlinear: return render(request, 'coordination/quests/tables/nonlinear.html', context) else: return render(request, 'coordination/quests/tables/multilinear.html', context) else: return redirect('coordination:quest_tables_current', quest_id=quest_id)
def detail_mission(request, mission_id): mission = get_object_or_404(Mission, pk=mission_id) quest = mission.quest can_user_view = quest.published and \ (quest.ended or (request.user.is_authenticated() and mission.is_completed(request.user))) if not can_user_view: request = is_quest_organizer_or_agent(request, quest) hints = None hint_form = None if not mission.is_start and not mission.is_finish: hints = mission.hints() if request.method == 'POST': hint_form = HintForm(request.POST) if hint_form.is_valid(): hint = hint_form.save(commit=False) hint.mission = mission hint.save() return redirect('coordination:mission_detail', mission_id=mission.id) else: hint_form = HintForm(next_number=mission.next_hint_number()) context = {'quest': quest, 'mission': mission, 'hints': hints, 'hint_form': hint_form} return render(request, 'coordination/missions/detail.html', context)
def tables_quest_current(request, quest_id): quest = get_object_or_404(Quest, pk=quest_id, type=Quest.LINEAR, parent__isnull=True) request = is_quest_organizer_or_agent(request, quest) current_missions = quest.current_missions() context = {'quest': quest, 'current_missions': current_missions} return render(request, 'coordination/quests/tables/current.html', context)