Exemplo n.º 1
0
def create_battles_for_judge(judge):
    from itertools import combinations
    existing_battles_matrix = {}
    existing_battles = Battle.objects.filter(judge=judge,
                                             pick_date__isnull=True)

    for battle in existing_battles:
        if battle.left.user_id > battle.right.user_id:
            existing_battles_matrix[battle.right.user_id] = battle.left.user_id
        else:
            existing_battles_matrix[battle.left.user_id] = battle.right.user_id

    preference_matches = PreferenceMatch.active.filter(profile=judge)
    target_profiles = [match.target for match in preference_matches]
    possible_battle_pairs = combinations(target_profiles, 2)

    new_battles = []
    for pair in possible_battle_pairs:
        if pair[0].user_id > pair[1].user_id:
            has_existing_battle = existing_battles_matrix.get(
                pair[1].user_id, None)
        else:
            has_existing_battle = existing_battles_matrix.get(
                pair[0].user_id, None)
        if not has_existing_battle:
            new_battles.append(Battle(judge=judge, left=pair[1],
                                      right=pair[0]))
    created_battles = Battle.objects.bulk_create(new_battles)
    print "created %d battles" % len(created_battles)
    return created_battles
Exemplo n.º 2
0
def war_request(request):
    if request.method == 'POST':
        up = UserProfile.objects.get(user=request.user)
        try:
            battle = Battle.objects.get(Q(attacker=up) | Q(defender=up),
                                        active=True)
            return HttpResponse(
                simplejson.dumps({'error': 'You are in battle'}))
        except Exception:
            try:
                territory = Territory.objects.get(pk=request.POST.get('id'))
                defender = UserProfile.objects.get(
                    user__username=request.POST.get('username'))
                Battle(attacker=up, defender=defender,
                       territory=territory).save()
                return HttpResponse(simplejson.dumps({'nice': 'Nice'}))
            except Territory.DoesNotExist:
                return HttpResponse(
                    simplejson.dumps({'error': "Territory doesn't exists!"}))

    else:
        return HttpResponse('Not here')