Exemple #1
0
def overview(request, template="territory/territory.html"):
    somalia = ",".join([
        "[%s,%s]" % (x[0], x[1]) for x in Territory.convert_points(somalia_pts)
    ])
    user = gtc(request)
    if not Line.objects.filter(lineorder__character=user).exclude(
            faction=None).exists():
        messages.error(request, "You're not a member of any wargame factions.")
        return redirect('/')
    try:
        faction = Line.objects.filter(lineorder__character=user).exclude(
            faction=None)[0].faction
    except IndexError:
        raise Http404
    #    units = Unit.live_units().filter(faction=faction)
    territories = Territory.objects.all()
    owned_terrs = faction.territory_set.all()
    builds = BuildOrder.objects.filter(faction=faction,
                                       turn=GameBoard.get_turn())
    context = {
        'faction': faction,
        'gameboard': GameBoard,
        'w_turn': GameBoard.get_turn(),
        'last_w_turn': GameBoard.get_turn() - 1,  #ugh
        'orders': json.dumps(get_orders(faction.code)),
        'builds': builds,
        'somalia': somalia,
        'territories': territories,
        'owned_terrs': owned_terrs
    }
    return render(request, template, context)
Exemple #2
0
def overview(request, template="territory/territory.html"):
    somalia = ",".join(["[%s,%s]" % (x[0], x[1]) for x in Territory.convert_points(somalia_pts)])
    user = gtc(request)
    if not Line.objects.filter(lineorder__character=user).exclude(faction=None).exists():
        messages.error(request, "You're not a member of any wargame factions.")
        return redirect('/')
    try:
        faction = Line.objects.filter(lineorder__character=user).exclude(faction=None)[0].faction
    except IndexError:
        raise Http404
    #    units = Unit.live_units().filter(faction=faction)
    territories = Territory.objects.all()
    owned_terrs = faction.territory_set.all()
    builds = BuildOrder.objects.filter(faction=faction, turn=GameBoard.get_turn())
    context = {
        'faction': faction,
        'gameboard': GameBoard,
        'w_turn': GameBoard.get_turn(),
        'last_w_turn': GameBoard.get_turn()-1, #ugh
        'orders': json.dumps(get_orders(faction.code)),
        'builds': builds,
        'somalia': somalia,
        'territories': territories,
        'owned_terrs': owned_terrs
    }
    return render(request, template, context)
Exemple #3
0
def submit_build(request):
    context = {}
    try:
        if request.method == 'POST':
            f = Faction.objects.get(code=request.POST.get('build_f_id'))
            if request.POST.get('build_t1') and request.POST.get(
                    'build_t1') == request.POST.get('build_t2'):
                raise Exception("Can't build two units in the same territory!")
            if BuildOrder.objects.filter(turn=GameBoard.get_turn,
                                         faction=f).exists():
                bos = BuildOrder.objects.filter(turn=GameBoard.get_turn(),
                                                faction=f)
                bos.delete()
            if request.POST.get('build_t1'):
                build_terr_1 = Territory.objects.get(
                    code=request.POST.get('build_t1'))
                BuildOrder.objects.create(faction=f,
                                          territory=build_terr_1,
                                          turn=GameBoard.get_turn())
            if request.POST.get('build_t2'):
                build_terr_2 = Territory.objects.get(
                    code=request.POST.get('build_t2'))
                BuildOrder.objects.create(faction=f,
                                          territory=build_terr_2,
                                          turn=GameBoard.get_turn())
            context['status'] = 'iconized icon-ok-circle'
            context['message'] = 'Build orders accepted'
    except Exception, e:
        context['status'] = 'iconized icon-error'
        context['message'] = 'Server error: %s %s' % (e.message, type(e))
Exemple #4
0
def gm_overview(request, template="territory/territory.html"):
    if not request.user.is_superuser: raise Http404
    somalia = ",".join(["[%s,%s]" % (x[0], x[1]) for x in Territory.convert_points(somalia_pts)])
    territories = Territory.objects.all()
    context = {
        'orders': json.dumps(get_orders()),
        'somalia': somalia,
        'gameboard': GameBoard,
        'w_turn': GameBoard.get_turn(),
        'last_w_turn': GameBoard.get_turn() - 1, #ugh
        'territories': territories,
    }
    return render(request, template, context)
Exemple #5
0
def gm_overview(request, template="territory/territory.html"):
    if not request.user.is_superuser: raise Http404
    somalia = ",".join([
        "[%s,%s]" % (x[0], x[1]) for x in Territory.convert_points(somalia_pts)
    ])
    territories = Territory.objects.all()
    context = {
        'orders': json.dumps(get_orders()),
        'somalia': somalia,
        'gameboard': GameBoard,
        'w_turn': GameBoard.get_turn(),
        'last_w_turn': GameBoard.get_turn() - 1,  #ugh
        'territories': territories,
    }
    return render(request, template, context)
Exemple #6
0
def game_tick(request):
    if not request.user.is_superuser: raise Http404

    GameBoard.objects.get().execute_turn()
    messages.success(request, 'Done! It is now turn %s' % GameBoard.get_turn())

    return redirect(gm_overview)
Exemple #7
0
def game_tick(request):
    if not request.user.is_superuser: raise Http404

    GameBoard.objects.get().execute_turn()
    messages.success(request, 'Done! It is now turn %s' % GameBoard.get_turn())

    return redirect(gm_overview)
Exemple #8
0
def get_orders(faction_code=None, turn=None):
    if not turn: turn=GameBoard.get_turn()
    actions = Action.objects.filter(turn=turn)
    if faction_code:
        actions = actions.filter(faction__code=faction_code)

    orders = {}

    for a in actions:
        orders[a.territory.code] = {
            'gm_str': str(a),
            'time': str(a.time),
            'str': a.p_str,
            'faction': a.faction.code,
            'turn': a.turn,
            'territory': a.territory.code,
            'type': a.type,
            'build': BuildOrder.objects.filter(territory=a.territory, turn=turn).exists(),
            'target': a.target.code,
            'special': a.special,
            'issuer': a.issuer.gto.name if a.issuer else None,
            'support_type': a.support_type,
            'support_to': a.support_to.code if a.support_to else None,
            'validation_level': validation_str(a.validation_level),
            'disband_priority': a.territory.unit.disband_priority if a.territory.has_unit else 0
        }
    return orders
Exemple #9
0
def submit_build(request):
    context = {}
    try:
        if request.method == 'POST':
            f = Faction.objects.get(code=request.POST.get('build_f_id'))
            if request.POST.get('build_t1') and request.POST.get('build_t1') == request.POST.get('build_t2'):
                raise Exception("Can't build two units in the same territory!")
            if BuildOrder.objects.filter(turn=GameBoard.get_turn, faction=f).exists():
                bos = BuildOrder.objects.filter(turn=GameBoard.get_turn(), faction=f)
                bos.delete()
            if request.POST.get('build_t1'):
                build_terr_1 = Territory.objects.get(code=request.POST.get('build_t1'))
                BuildOrder.objects.create(faction=f, territory=build_terr_1, turn=GameBoard.get_turn())
            if request.POST.get('build_t2'):
                build_terr_2 = Territory.objects.get(code=request.POST.get('build_t2'))
                BuildOrder.objects.create(faction=f, territory=build_terr_2, turn=GameBoard.get_turn())
            context['status'] = 'iconized icon-ok-circle'
            context['message'] = 'Build orders accepted'
    except Exception, e:
        context['status'] = 'iconized icon-error'
        context['message'] = 'Server error: %s %s' % (e.message, type(e))
Exemple #10
0
def get_orders(faction_code=None, turn=None):
    if not turn: turn = GameBoard.get_turn()
    actions = Action.objects.filter(turn=turn)
    if faction_code:
        actions = actions.filter(faction__code=faction_code)

    orders = {}

    for a in actions:
        orders[a.territory.code] = {
            'gm_str':
            str(a),
            'time':
            str(a.time),
            'str':
            a.p_str,
            'faction':
            a.faction.code,
            'turn':
            a.turn,
            'territory':
            a.territory.code,
            'type':
            a.type,
            'build':
            BuildOrder.objects.filter(territory=a.territory,
                                      turn=turn).exists(),
            'target':
            a.target.code,
            'special':
            a.special,
            'issuer':
            a.issuer.gto.name if a.issuer else None,
            'support_type':
            a.support_type,
            'support_to':
            a.support_to.code if a.support_to else None,
            'validation_level':
            validation_str(a.validation_level),
            'disband_priority':
            a.territory.unit.disband_priority if a.territory.has_unit else 0
        }
    return orders
Exemple #11
0
def submit_order(request):
    context = {}
    try:
        if request.method == 'POST':
            print request.POST
            if request.POST.get('gm_sekrit', False):
                c = None
            else:
                c = Character.objects.get(id=request.POST.get('u_id'))
            t = Territory.objects.get(code=request.POST.get('t_id'))
            f = Faction.objects.get(name=request.POST.get('f_id'))
            if t.owner != f:
                context['status'] = 'iconized icon-error'
                context[
                    'message'] = "Can't issue order for territory not yours"
                return HttpResponse(json.dumps(context),
                                    mimetype="application/json")

            created = False
            try:
                a = Action.objects.get(territory=t,
                                       faction=f,
                                       turn=GameBoard.get_turn())
            except Action.DoesNotExist:
                a = Action(territory=t, faction=f, turn=GameBoard.get_turn())
                created = True
            if not created:
                if a.issuer and f.rank(a.issuer) < f.rank(c):
                    context['status'] = 'iconized icon-error'
                    context[
                        'message'] = "Can't change an order from someone who outranks you!"
                    return HttpResponse(json.dumps(context),
                                        mimetype="application/json")

            a.type = request.POST.get('order_type')
            if c:
                a.issuer = c

            if a.type == MOVE:
                a.target = Territory.objects.get(
                    code=request.POST.get('move_to'))
            elif a.type == SUPP:
                a.support_type = request.POST.get('support_type')
                if a.support_type == MOVE:
                    a.target = Territory.objects.get(
                        code=request.POST.get('support_from'))
                    a.support_to = Territory.objects.get(
                        code=request.POST.get('support_to'))
                else:
                    a.target = Territory.objects.get(
                        code=request.POST.get('support_to'))
            elif a.type == SPEC:
                a.special = request.POST.get('special')
            else:
                a.target = None
            try:
                a.save()
            except Action.InvalidMoveError, e:
                context['status'] = 'iconized icon-error'

                context['message'] = 'Invalid move: %s ' % e.message
                return HttpResponse(json.dumps(context),
                                    mimetype="application/json")
            context['order'] = str(a)
            if created:
                context['message'] = 'Order created'
            else:
                context['status'] = 'iconized icon-ok-circle'
                context['message'] = 'Order accepted'

    except ValidationError, e:
        context['status'] = 'iconized icon-error'
        context['message'] = 'Invalid move: %s' % str(e.message_dict)
Exemple #12
0
def submit_order(request):
    context = {}
    try:
        if request.method == 'POST':
            print request.POST
            if request.POST.get('gm_sekrit', False):
                c = None
            else:
                c = Character.objects.get(id=request.POST.get('u_id'))
            t = Territory.objects.get(code=request.POST.get('t_id'))
            f = Faction.objects.get(name=request.POST.get('f_id'))
            if t.owner != f:
                context['status'] = 'iconized icon-error'
                context['message'] = "Can't issue order for territory not yours"
                return HttpResponse(json.dumps(context), mimetype="application/json")

            created = False
            try:
                a = Action.objects.get(territory=t, faction=f, turn=GameBoard.get_turn())
            except Action.DoesNotExist:
                a = Action(territory=t, faction=f, turn=GameBoard.get_turn())
                created = True
            if not created:
                if a.issuer and f.rank(a.issuer) < f.rank(c):
                    context['status'] = 'iconized icon-error'
                    context['message'] = "Can't change an order from someone who outranks you!"
                    return HttpResponse(json.dumps(context), mimetype="application/json")

            a.type = request.POST.get('order_type')
            if c:
                a.issuer = c

            if a.type == MOVE:
                a.target = Territory.objects.get(code=request.POST.get('move_to'))
            elif a.type == SUPP:
                a.support_type = request.POST.get('support_type')
                if a.support_type == MOVE:
                    a.target = Territory.objects.get(code=request.POST.get('support_from'))
                    a.support_to = Territory.objects.get(code=request.POST.get('support_to'))
                else:
                    a.target = Territory.objects.get(code=request.POST.get('support_to'))
            elif a.type == SPEC:
                a.special = request.POST.get('special')
            else:
                a.target = None
            try:
                a.save()
            except Action.InvalidMoveError, e:
                context['status'] = 'iconized icon-error'

                context['message'] = 'Invalid move: %s ' % e.message
                return HttpResponse(json.dumps(context), mimetype="application/json")
            context['order'] = str(a)
            if created:
                context['message'] = 'Order created'
            else:
                context['status'] = 'iconized icon-ok-circle'
                context['message'] = 'Order accepted'

    except ValidationError, e:
        context['status'] = 'iconized icon-error'
        context['message'] = 'Invalid move: %s' % str(e.message_dict)