Ejemplo n.º 1
0
def manage_player_set(request, player_id, task_id):
    player = get_object_or_404(SpecialQuestUser, id=player_id)
    task = get_object_or_404(SpecialQuestTask, id=task_id)

    if task not in player.done_tasks.all():
        if player.group:
            members = player.group.members
            player.group.set_task_done(task)
        else:
            members = (player,)

        for member in members:
            if task not in member.done_tasks.all():
                member.done_tasks.add(task)
                scoring.score(member, SpecialQuestGame, 'specialquest-passed',external_id=task.id, value=task.value)

                signal_msg = ugettext_noop('completed special quest {task_name} and earned {value} gold')
                action_msg = 'specialq-ok-gold'
                signals.addActivity.send(sender=None, user_from=member, \
                                         user_to=member, \
                                         message=signal_msg,
                                         arguments=dict(task_name=task.name, value=task.value), \
                                         game=SpecialQuestGame.get_instance(),
                                         action=action_msg)

    return HttpResponseRedirect(reverse('specialquest_manage', args=(player.id,)))
Ejemplo n.º 2
0
def manage_player_set(request, player_id, task_id):
    player = get_object_or_404(SpecialQuestUser, id=player_id)
    task = get_object_or_404(SpecialQuestTask, id=task_id)

    if task not in player.done_tasks.all():
        if player.group:
            members = player.group.members
            player.group.set_task_done(task)
        else:
            members = (player, )

        for member in members:
            if task not in member.done_tasks.all():
                member.done_tasks.add(task)
                scoring.score(member,
                              SpecialQuestGame,
                              'specialquest-passed',
                              external_id=task.id,
                              value=task.value)

                signal_msg = ugettext_noop(
                    'completed special quest {task_name} and earned {value} gold'
                )
                action_msg = 'specialq-ok-gold'
                signals.addActivity.send(sender=None, user_from=member, \
                                         user_to=member, \
                                         message=signal_msg,
                                         arguments=dict(task_name=task.name, value=task.value), \
                                         game=SpecialQuestGame.get_instance(),
                                         action=action_msg)

    return HttpResponseRedirect(
        reverse('specialquest_manage', args=(player.id, )))
Ejemplo n.º 3
0
    def test_user_create_group(self):
        group = SpecialQuestGroup.create(head=self.special_user, name='le group')

        self.assertTrue(group)
        self.assertEqual(group.head, self.special_user)
        self.assertEqual(group.name, 'le group')
        self.assertEqual(group.owner, SpecialQuestGame.get_instance())

        self.assertTrue(self.user.get_profile() in group.players.all())
Ejemplo n.º 4
0
    def test_user_create_group(self):
        group = SpecialQuestGroup.create(head=self.special_user, name='le group')

        self.assertTrue(group)
        self.assertEqual(group.head, self.special_user)
        self.assertEqual(group.name, 'le group')
        self.assertEqual(group.owner, SpecialQuestGame.get_instance())

        self.assertTrue(self.user.get_profile() in group.players.all())
Ejemplo n.º 5
0
def manage_player(request, player_id):
    player = get_object_or_404(Player, pk=player_id)
    player = player.get_extension(SpecialQuestUser)
    tasks_not_done = SpecialQuestTask.objects.exclude(id__in=player.done_tasks.all().values("id")).all()

    # TODO: use smth like django-flash for this
    message, error = "", ""

    if request.method == "POST":
        # do bonuses
        if request.POST.get("gold", False):
            try:
                amount = int(request.POST.get("gold", 0))
            except ValueError:
                amount = 0
            if amount > 0:
                scoring.score(player, None, "bonus-gold", external_id=request.user.get_profile().id, gold=amount)
                message = "Successfully given bonus"
                if request.POST.get("comment", None):
                    signal_msg = ugettext_noop("received {gold} gold bonus for {comment}")
                    signals.addActivity.send(
                        sender=None,
                        user_from=player,
                        user_to=player,
                        message=signal_msg,
                        arguments=dict(gold=amount, comment=request.POST["comment"]),
                        game=SpecialQuestGame.get_instance(),
                    )
            else:
                error = "Invalid amount"
        elif request.POST.get("points", False):
            try:
                amount = int(request.POST.get("points", 0))
                # assert amount > 0
            except (ValueError, AssertionError):
                error = "Invalid amount"
            else:
                scoring.score(player, None, "penalty-points", external_id=request.user.get_profile().id, points=amount)
                message = "Successfully punished"

    bonuses = scoring.History.objects.filter(user=player, formula__id="bonus-gold").order_by("-timestamp")
    penalties = scoring.History.objects.filter(user=player, formula__id="penalty-points").order_by("-timestamp")

    return render_to_response(
        "specialquest/cpanel_manage.html",
        dict(
            mplayer=player,
            tasks_not_done=tasks_not_done,
            message=message,
            error=error,
            bonuses=bonuses,
            penalties=penalties,
        ),
        context_instance=RequestContext(request),
    )
Ejemplo n.º 6
0
def manage_player_unset(request, player_id, task_id):
    player = get_object_or_404(SpecialQuestUser, id=player_id)
    task = get_object_or_404(SpecialQuestTask, id=task_id)

    if task in player.done_tasks.all():
        player.done_tasks.remove(task)
        scoring.unset(player, SpecialQuestGame, 'specialquest-passed', external_id=task.id)
        signal_msg = ugettext_noop('completed special quest {task_name}')
        arguments = dict(task_name=task.name)
        from wouso.interface.activity.models import Activity
        Activity.delete(SpecialQuestGame.get_instance(), player, player, signal_msg, arguments)

    return HttpResponseRedirect(reverse('specialquest_manage', args=(player.id,)))
Ejemplo n.º 7
0
def manage_player_unset(request, player_id, task_id):
    player = get_object_or_404(SpecialQuestUser, id=player_id)
    task = get_object_or_404(SpecialQuestTask, id=task_id)

    if task in player.done_tasks.all():
        player.done_tasks.remove(task)
        scoring.unset(player, SpecialQuestGame, 'specialquest-passed', external_id=task.id)
        signal_msg = ugettext_noop('completed special quest {task_name}')
        arguments = dict(task_name=task.name)
        from wouso.interface.activity.models import Activity
        Activity.delete(SpecialQuestGame.get_instance(), player, player, signal_msg, arguments)

    return HttpResponseRedirect(reverse('specialquest_manage', args=(player.id,)))
Ejemplo n.º 8
0
def manage_player(request, player_id):
    player = get_object_or_404(Player, pk=player_id)
    player = player.get_extension(SpecialQuestUser)
    tasks_not_done = SpecialQuestTask.objects.exclude(id__in=player.done_tasks.all().values('id')).all()

    # TODO: use smth like django-flash for this
    message, error = '', ''

    if request.method == "POST":
        # do bonuses
        if request.POST.get('gold', False):
            try:
                amount = int(request.POST.get('gold', 0))
            except ValueError:
                amount = 0
            if amount > 0:
                scoring.score(player, None, 'bonus-gold', external_id=request.user.get_profile().id, gold=amount)
                message = 'Successfully given bonus'
                if request.POST.get('comment', None):
                    signal_msg = ugettext_noop('received {gold} gold bonus for {comment}')
                    signals.addActivity.send(sender=None, user_from=player, user_to=player, message=signal_msg,
                                        arguments=dict(gold=amount, comment=request.POST['comment']),
                                        game=SpecialQuestGame.get_instance()
                    )
            else:
                error = 'Invalid amount'
        elif request.POST.get('points', False):
            try:
                amount = int(request.POST.get('points', 0))
                #assert amount > 0
            except (ValueError, AssertionError):
                error = 'Invalid amount'
            else:
                scoring.score(player, None, 'penalty-points', external_id=request.user.get_profile().id, points=amount)
                message = 'Successfully punished'

    bonuses = scoring.History.objects.filter(user=player, formula__name='bonus-gold').order_by('-timestamp')
    penalties = scoring.History.objects.filter(user=player, formula__name='penalty-points').order_by('-timestamp')

    if error:
        messages.error(request, error)
    if messages:
        messages.success(request, message)

    return render_to_response('specialquest/cpanel_manage.html',
                    dict(mplayer=player, tasks_not_done=tasks_not_done,
                         bonuses=bonuses, penalties=penalties),
                    context_instance=RequestContext(request))
Ejemplo n.º 9
0
def manage_player(request, player_id):
    player = get_object_or_404(Player, pk=player_id)
    player = player.get_extension(SpecialQuestUser)
    tasks_not_done = SpecialQuestTask.objects.exclude(id__in=player.done_tasks.all().values('id')).all()

    # TODO: use smth like django-flash for this
    message, error = '', ''

    if request.method == "POST":
        # do bonuses
        if request.POST.get('gold', False):
            try:
                amount = int(request.POST.get('gold', 0))
            except ValueError:
                amount = 0
            if amount > 0:
                scoring.score(player, None, 'bonus-gold', external_id=request.user.get_profile().id, gold=amount)
                message = 'Successfully given bonus'
                if request.POST.get('comment', None):
                    signal_msg = ugettext_noop('received {gold} gold bonus for {comment}')
                    signals.addActivity.send(sender=None, user_from=player, user_to=player, message=signal_msg,
                                        arguments=dict(gold=amount, comment=request.POST['comment']),
                                        game=SpecialQuestGame.get_instance()
                    )
            else:
                error = 'Invalid amount'
        elif request.POST.get('points', False):
            try:
                amount = int(request.POST.get('points', 0))
                #assert amount > 0
            except (ValueError, AssertionError):
                error = 'Invalid amount'
            else:
                scoring.score(player, None, 'penalty-points', external_id=request.user.get_profile().id, points=amount)
                message = 'Successfully punished'

    bonuses = scoring.History.objects.filter(user=player, formula__name='bonus-gold').order_by('-timestamp')
    penalties = scoring.History.objects.filter(user=player, formula__name='penalty-points').order_by('-timestamp')

    if error:
        messages.error(request, error)
    if messages:
        messages.success(request, message)

    return render_to_response('specialquest/cpanel_manage.html',
                    dict(mplayer=player, tasks_not_done=tasks_not_done,
                         bonuses=bonuses, penalties=penalties),
                    context_instance=RequestContext(request))