Exemple #1
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',
        })
Exemple #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),
        })
Exemple #3
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,)))
Exemple #4
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,)))
Exemple #5
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,
        })
Exemple #6
0
def create_game(request):
    """ Creates a new game and sets the existing user as the administrator """
    if request.method == 'POST':
        form = AddGameForm(request.POST)
        if form.is_valid():
            game_obj = form.save()
            assassin_obj = Assassin(user=request.user)
            assassin_obj.squad = None
            assassin_obj.is_admin = True
            assassin_obj.game = game_obj
            assassin_obj.resurrect(commit=False)
            assassin_obj.save()

            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:create', game=url)
            except:
                pass
            return HttpResponseRedirect(reverse('assassins_manager.game.views.game_admin', args=(game_obj.name,)))
    else:
        form = AddGameForm()

    return render_with_metadata(request, 'form.html', '', {
        'form': form,
        'formname': 'Create Game',
        })
Exemple #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, })
Exemple #8
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,
        })
Exemple #9
0
def render_assassins_list(request, game, assassins, listtitle, page_length=25):
    """ Helper method to paginate assassins list """
    page = request.GET.get('page')

    if request.GET.get('pagelen'):
        page_length = request.GET.get('pagelen')

    paginator = Paginator(assassins, page_length)

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

    if request.GET.get('showfbid') == 'yes':
        showfbid = True
    else:
        showfbid = False

    return render_with_metadata(request, 'game/assassins.html', game, {
        'assassins': a_list,
        'listtitle': listtitle,
        'showfbid': showfbid,
        })
Exemple #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',
        })
Exemple #11
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
        })
Exemple #12
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,
        })
Exemple #13
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',
        })
Exemple #14
0
def gamelist(request, page_length=25):
    """ Shows a list of all games, ordered by status """
    games = Game.objects.all().order_by('status')
    page = request.GET.get('page')

    paginator = Paginator(games, page_length)

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

    return render_with_metadata(request, 'game/list.html', '', {
        'games': g_list,
        })
Exemple #15
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,)))
Exemple #16
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
        })
Exemple #17
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,)))
Exemple #18
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,
        })
Exemple #19
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,
        })
Exemple #20
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,)))
Exemple #21
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',
        })
Exemple #22
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,)))
Exemple #23
0
def about(request):
    return render_with_metadata(request, 'about/about.html')