Example #1
0
def start_game(request, game):
    """ Starts the game """
    game_obj = get_game(game)

    if is_admin(request.user, game_obj):
        if request.method == 'POST':
            form = VerifyForm(request.POST)
            if form.is_valid():
                if form.cleaned_data.get('are_you_sure'):
                    game_obj.start_game() # calls save internally
                    try:
                        fb = api.get_persistent_graph(request, access_token=request.user.columbiauserprofile.access_token)
                        if fb:
                            url = 'http://assassins.columbiaesc.com' + reverse('assassins_manager.game.views.details', args=(game_obj.name,))
                            result = fb.set('me/cuassassins:start', game=url)
                    except:
                        pass
                    return HttpResponseRedirect(reverse('assassins_manager.game.views.game_admin', args=(game,)))
        else:
            form = VerifyForm()
        return render_with_metadata(request, 'form.html', game, {
            'form': form,
            'formname': 'Start Game',
            })
    else:
        return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
Example #2
0
def squads(request, game, page_length=25):
    """ Shows all squads in the game, sorted by status and kills """
    game_obj = get_game(game)

    if request.GET.get('sortby') == 'kills':
        squads = game_obj.squad_set.order_by('-kills', '-alive')
        l = 'Squads by kills'
    else:
        squads = game_obj.squad_set.order_by('-alive', '-kills')
        l = 'Squads by ranking'

    page = request.GET.get('page')

    paginator = Paginator(squads, page_length)

    try:
        s_list = paginator.page(page)
    except PageNotAnInteger:
        s_list = paginator.page(1)
    except EmptyPage:
        s_list = paginator.page(paginator.num_pages)


    return render_with_metadata(request, 'game/squads.html', game, {
        'listtitle': l,
        'squads': s_list,
        'squadsize': range(1, game_obj.squadsize + 1),
        })
Example #3
0
def report_kill_admin(request, game):
    game_obj = get_game(game)
    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None or not assassin_obj.is_admin:
        raise Http404

    if request.method == 'POST':
        form = AdminKillForm(request.POST, game=game_obj)
        if form.is_valid():
            killtype = form.cleaned_data.get('type')
            user = form.cleaned_data.get('killer').user
            corpse = form.cleaned_data.get('corpse')
            report = form.cleaned_data.get('report')
            contract = form.cleaned_data.get('contract')

            k = process_kill(None, user, game_obj, killtype, corpse, contract, report)

            return HttpResponseRedirect(reverse('assassins_manager.report.views.killreport', args=(game, k.id,)))
    else:
        form = AdminKillForm(game=game_obj)

    return render_with_metadata(request, 'form.html', game, {
        'form': form,
        'formname': 'Report a Kill',
        })
Example #4
0
def game_admin(request, game):
    """ Shows the game administration page """
    game_obj = get_game(game)
    if is_admin(request.user, game_obj):
        return render_with_metadata(request, 'game/admin.html', game)
    else:
        return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
Example #5
0
def police(request, game):
    """ Shows all police in the game """
    game_obj = get_game(game)

    assassins = game_obj.players().filter(role=AssassinType.POLICE).order_by('-kills', '-alive')

    return render_assassins_list(request, game, assassins, 'Police', 1000)
Example #6
0
def disavowed(request, game):
    """ Shows all disavowed assassins in the game, sorted by kills """
    game_obj = get_game(game)

    assassins = game_obj.players().filter(role=AssassinType.DISAVOWED).order_by('-alive', '-kills')

    return render_assassins_list(request, game, assassins, 'Disavowed Assassins', 1000)
Example #7
0
def details(request, game):
    """ Shows general game details """
    game_obj = get_game(game)
    app_id = settings.FACEBOOK_APP_ID

    return render_with_metadata(request, 'game/details.html', game, { 'app_id':
        app_id, })
Example #8
0
def details(request, game, username):
    """ View of any user's details """
    game_obj = get_game(game)

    try:
        user = get_user_model().objects.get(username=username)
    except get_user_model().DoesNotExist:
        raise Http404

    assassin_obj = game_obj.getAssassin(user)
    if assassin_obj is None:
        raise Http404

    if not game_obj.getAssassin(request.user) is None:
        squad = game_obj.getAssassin(request.user).squad

    if request.method == 'POST':
        form = AssassinEditForm(request.POST, request.FILES, instance=user.columbiauserprofile)
        if form.is_valid():
            form.save()
    else:
        form = AssassinEditForm(instance=user.columbiauserprofile)

    show_lifecode = user == request.user or (assassin_obj.squad == squad and assassin_obj.squad != None)

    # if user != request.user:
    #    form = None 

    return render_with_metadata(request, 'assassin/details.html', game, {
        'assassin': assassin_obj,
        'show_lifecode': show_lifecode,
        'game_started': game_obj.status != GameStatus.REGISTRATION,
        'form': form,
        })
Example #9
0
def join_squad(request, game):
    """ View to join a squad """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404

    if request.method == 'POST':
        form = JoinForm(request.POST, assassin=assassin_obj)
        if form.is_valid():
            squad = form.cleaned_data.get('squad')
            squad.add_assassin(assassin_obj, commit=True)
            try:
                fb = api.get_persistent_graph(request, access_token=request.user.columbiauserprofile.access_token)
                if fb:
                    url = 'http://assassins.columbiaesc.com' + reverse('assassins_manager.squad.views.details', args=(game_obj.name, squad.id, ))
                    result = fb.set('me/cuassassins:join', squad=url)
            except:
                pass
            return HttpResponseRedirect(reverse('assassins_manager.squad.views.details', args=(game, squad.id,)))
    else:
        form = JoinForm(assassin=assassin_obj)

    return render_with_metadata(request, 'form.html', game, {
        'formname': 'Join Squad',
        'form': form,
        })
Example #10
0
def report_kill(request, game):
    """ View for reporting kills """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404

    if request.method == 'POST':
        form = KillForm(request.POST, assassin=assassin_obj)
        if form.is_valid():
            killtype = form.cleaned_data.get('type')
            corpse = form.cleaned_data.get('corpse')
            report = form.cleaned_data.get('report')
            contract = form.cleaned_data.get('contract')

            k = process_kill(request, request.user, game_obj, killtype, corpse, contract, report)

            return HttpResponseRedirect(reverse('assassins_manager.report.views.killreport', args=(game, k.id,)))
    else:
        form = KillForm(assassin=assassin_obj)

    return render_with_metadata(request, 'form.html', game, {
        'form': form,
        'formname': 'Report a Corpse',
        })
Example #11
0
def my_details(request, game):
    """ View to show current squad details """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404
    if assassin_obj.squad is None:
        return HttpResponseRedirect(reverse('assassins_manager.squad.views.join_squad', args=(game,)))
    else:
        return details(request, game, assassin_obj.squad.id)
Example #12
0
def assassins(request, game, page_length=25):
    """ Shows all assassins in the game, sorted by squad """
    game_obj = get_game(game)

    if request.GET.get('sortby') == 'kills':
        assassins = game_obj.players().order_by('-kills', '-alive', 'role')
        l = 'Assassins by kills'
    else:
        assassins = game_obj.players().order_by('-alive', 'role', '-kills')
        l = 'Assassins by status'

    return render_assassins_list(request, game, assassins, l, page_length)
Example #13
0
def my_contracts(request, game):
    """ View to show current squad contracts """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404

    squad = assassin_obj.squad
    contracts = Contract.objects.filter(holder=squad).order_by('status')
    return render_with_metadata(request, 'squad/contracts.html', game, {
        'squad': squad,
        'contracts': contracts
        })
Example #14
0
def killreport(request, game, report):
    """ Shows a given kill report """
    game_obj = get_game(game)

    try:
        report = KillReport.objects.get(game=game_obj, id=report)
    except KillReport.DoesNotExist:
        raise Http404

    app_id = settings.FACEBOOK_APP_ID

    return render_with_metadata(request, 'report/detail.html', game, {
        'report': report,
        'app_id': app_id,
        })
Example #15
0
def join_game(request, game):
    """ Joins an asssassin to the game """
    game_obj = get_game(game)
    assassin_obj = game_obj.getAssassin(request.user)

    if request.method == 'POST':
        form = JoinGameForm(request.POST, instance=assassin_obj)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
    else:
        form = JoinGameForm(instance=assassin_obj)

    return render_with_metadata(request, 'form.html', game, {
        'form': form,
        'formname': 'Join Game',
        })
Example #16
0
def delete_game(request, game):
    """ Deletes the game """
    game_obj = get_game(game)

    if is_admin(request.user, game_obj):
        if request.method == 'POST':
            form = VerifyForm(request.POST)
            if form.is_valid():
                if form.cleaned_data.get('are_you_sure'):
                    game_obj.delete()
                    return HttpResponseRedirect(reverse('assassins_manager.game.views.gamelist'))
        else:
            form = VerifyForm()
        return render_with_metadata(request, 'form.html', game, {
            'form': form,
            'formname': 'Delete Game',
            })
    else:
        return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
Example #17
0
def details(request, game, contract):
    """ Displays details of any contract """
    game_obj = get_game(game)

    try:
        contract_obj = Contract.objects.get(id=contract, game=game_obj)
    except Contract.DoesNotExist:
        raise Http404

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404

    access = is_admin(request.user, game_obj) or contract_obj.holder == assassin_obj.squad

    return render_with_metadata(request, 'contract/details.html', game, {
        'contract': contract_obj,
        'access': access
        })
Example #18
0
def add_police(request, game):
    """ Adds police to the game """
    game_obj = get_game(game)

    if is_admin(request.user, game_obj):
        if request.method == 'POST':
            form = AddPoliceForm(request.POST, game=game_obj)
            if form.is_valid():
                p = form.cleaned_data.get('police')
                if not p is None:
                    p.set_role(AssassinType.POLICE)
                return HttpResponseRedirect(reverse('assassins_manager.game.views.police', args=(game,)))
        else:
            form = AddPoliceForm(game=game_obj)
        return render_with_metadata(request, 'form.html', game, {
            'form': form,
            'formname': 'Add Police',
            })
    else:
        return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
Example #19
0
def killreports(request, game, reports=None, page_length=25):
    """ Shows kill reports """
    game_obj = get_game(game)

    if reports is None:
        reports = KillReport.objects.filter(game=game_obj)

    page = request.GET.get('page')

    paginator = Paginator(reports.order_by('-date'), page_length)

    try:
        r_list = paginator.page(page)
    except PageNotAnInteger:
        r_list = paginator.page(1)
    except EmptyPage:
        r_list = paginator.page(paginator.num_pages)

    return render_with_metadata(request, 'report/list.html', game, {
        'reports': r_list,
        })
Example #20
0
def details(request, game, squad):
    """ View to show squad details """
    game_obj = get_game(game)

    app_id = settings.FACEBOOK_APP_ID

    try:
        squad_obj = game_obj.squad_set.get(id=squad)
    except Squad.DoesNotExist:
        raise Http404

    assassin_obj = None

    if request.user.is_authenticated():
        assassin_obj = game_obj.getAssassin(user=request.user)
    show_code = not assassin_obj is None and assassin_obj.squad == squad_obj

    return render_with_metadata(request, 'squad/details.html', game, {
        'squad': squad_obj,
        'show_code': show_code,
        'app_id': app_id,
        })
Example #21
0
def leave_game(request, game):
    game_obj = get_game(game)
    if game_obj.status == GameStatus.REGISTRATION:
        if request.method == 'POST':
            form = VerifyForm(request.POST)
            if form.is_valid():
                if form.cleaned_data.get('are_you_sure'):
                    assassin_obj = game_obj.getAssassin(request.user)
                    if assassin_obj:
                        if assassin_obj.squad:
                            assassin_obj.squad.remove_assassin(assassin_obj, commit=False)
                        assassin_obj.squad = None
                        assassin_obj.role = AssassinType.NOT_IN_GAME
                        assassin_obj.save()
                    return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
        else:
            form = VerifyForm()
        return render_with_metadata(request, 'form.html', game, {
            'form': form,
            'formname': 'Leave Game',
            })
    return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
Example #22
0
def leave_squad(request, game):
    """ View to leave the current squad """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassin(request.user)
    if assassin_obj is None:
        raise Http404

    if request.method == 'POST':
        form = LeaveForm(request.POST, assassin=assassin_obj)
        if form.is_valid():
            sq = assassin_obj.squad
            sq.remove_assassin(assassin_obj, commit=True)
            if not sq is None:
                if not sq.assassin_set.exists():
                    sq.delete()
            return HttpResponseRedirect(reverse('assassins_manager.game.views.details', args=(game,)))
    else:
        form = LeaveForm(assassin=assassin_obj)
    return render_with_metadata(request, 'form.html', game, {
        'form': form,
        'formname': 'Leave Squad',
        })
Example #23
0
def contracts(request, game, page_length=25):
    """ Shows all contracts in the game -- ADMIN ONLY -- """
    game_obj = get_game(game)

    if is_admin(request.user, game_obj):
        contracts = game_obj.contract_set.order_by('status')

        page = request.GET.get('page')

        paginator = Paginator(contracts, page_length)

        try:
            c_list = paginator.page(page)
        except PageNotAnInteger:
            c_list = paginator.page(1)
        except EmptyPage:
            c_list = paginator.page(paginator.num_pages)
        
        return render_with_metadata(request, 'game/contracts.html', game, {
            'contracts': c_list,
            })
    else:
        return HttpResponseRedirect(reverse('assassins_manager.squad.views.my_contracts', args=(game,)))
Example #24
0
def playerdeaths(request, game, username):
    """ Shows kills made by a given player """
    game_obj = get_game(game)

    assassin_obj = game_obj.getAssassinByUsername(username)
    return killreports(request, game, assassin_obj.deathreports())