Exemplo 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,)))
Exemplo 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, )))
Exemplo 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())
Exemplo 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())
Exemplo n.º 5
0
def index(request, error=''):
    user = request.user.get_profile().get_extension(SpecialQuestUser)
    tasks_done, tasks_not_done = SpecialQuestGame.tasks_for_user(user)
    today = date.today()
    tasks_not_done = [(t, (t.end_date - today).days + 1) for t in tasks_not_done]

    return render_to_response('specialquest/index.html',
                    {'tasks_done': tasks_done, 'tasks_not_done': tasks_not_done,
                     'squser': user, 'error': error},
                    context_instance=RequestContext(request))
Exemplo n.º 6
0
def sidebar_widget(request):
    if SpecialQuestGame.disabled():
        return ''
    user = request.user.get_profile().get_extension(SpecialQuestUser)
    count = len(user.active_tasks)

    if not count:
        return ''

    return render_to_string('specialquest/sidebar.html', {'not_done': count})
Exemplo n.º 7
0
def index(request, error=''):
    user = request.user.get_profile().get_extension(SpecialQuestUser)
    tasks_done, tasks_not_done = SpecialQuestGame.tasks_for_user(user)
    today = date.today()
    tasks_not_done = [(t, (t.end_date - today).days + 1) for t in tasks_not_done]

    return render_to_response('specialquest/index.html',
                    {'tasks_done': tasks_done, 'tasks_not_done': tasks_not_done,
                     'squser': user, 'error': error},
                    context_instance=RequestContext(request))
Exemplo 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__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),
    )
Exemplo n.º 9
0
def index(request, error=""):
    user = request.user.get_profile().get_extension(SpecialQuestUser)
    tasks_done, tasks_not_done = SpecialQuestGame.tasks_for_user(user)
    today = date.today()
    tasks_not_done = [(t, (t.end_date - today).days + 1) for t in tasks_not_done]

    return render_to_response(
        "specialquest/index.html",
        {"tasks_done": tasks_done, "tasks_not_done": tasks_not_done, "squser": user, "error": error},
        context_instance=RequestContext(request),
    )
Exemplo n.º 10
0
def sidebar_widget(context):
    user = context.get('user', None)
    if SpecialQuestGame.disabled() or not user or not user.is_authenticated():
        return ''
    user = user.get_profile().get_extension(SpecialQuestUser)
    count = len(user.active_tasks)

    if not count:
        return ''

    return render_to_string('specialquest/sidebar.html', {'not_done': count, 'id': 'specialquest'})
Exemplo n.º 11
0
def sidebar_widget(context):
    user = context.get('user', None)
    if SpecialQuestGame.disabled() or not user or not user.is_authenticated():
        return ''
    user = user.get_profile().get_extension(SpecialQuestUser)
    count = len(user.active_tasks)

    if not count:
        return ''

    return render_to_string('specialquest/sidebar.html', {'not_done': count})
Exemplo n.º 12
0
def sidebar_widget(request):
    if SpecialQuestGame.disabled():
        return ''
    user = request.user.get_profile().get_extension(SpecialQuestUser)
    tasks = SpecialQuestTask.objects.all()
    today = date.today()
    tasks = [t for t in tasks if t not in user.done_tasks.all() and t.start_date <= today <= t.end_date]

    if not tasks:
        return ''

    return render_to_string('specialquest/sidebar.html', {'not_done': len(tasks)})
Exemplo n.º 13
0
def header_link(request):
    profile = request.user.get_profile()
    if SpecialQuestGame.disabled():
        return None
    if profile:
        user = profile.get_extension(SpecialQuestUser)
        count = len(user.active_tasks)
    else:
        count = 0
    url = reverse('wouso.games.specialquest.views.index')

    return dict(link=url, count=count, text=_('Special'))
Exemplo n.º 14
0
def sidebar_widget(request):
    if SpecialQuestGame.disabled():
        return ""
    user = request.user.get_profile().get_extension(SpecialQuestUser)
    tasks = SpecialQuestTask.objects.all()
    today = date.today()
    tasks = [t for t in tasks if t not in user.done_tasks.all() and t.start_date <= today <= t.end_date]

    if not tasks:
        return ""

    return render_to_string("specialquest/sidebar.html", {"not_done": len(tasks)})
Exemplo n.º 15
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,)))
Exemplo n.º 16
0
def header_link(context):
    user = context.get('user', None)
    if not user or not user.is_authenticated() or SpecialQuestGame.disabled():
        return {}
    profile = user.get_profile()
    if profile:
        user = profile.get_extension(SpecialQuestUser)
        count = len(user.active_tasks)
    else:
        count = 0
    url = reverse('wouso.games.specialquest.views.index')

    return dict(link=url, count=count, text=_('Special'))
Exemplo n.º 17
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,)))
Exemplo n.º 18
0
def header_link(context):
    user = context.get('user', None)
    if not user or not user.is_authenticated() or SpecialQuestGame.disabled():
        return {}
    profile = user.get_profile()
    if profile:
        user = profile.get_extension(SpecialQuestUser)
        count = len(user.active_tasks)
    else:
        count = 0
    url = reverse('wouso.games.specialquest.views.index')

    return dict(link=url, count=count, text=_('Special'))
Exemplo n.º 19
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))
Exemplo n.º 20
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))
Exemplo n.º 21
0
def header_link(request):
    profile = request.user.get_profile()
    if SpecialQuestGame.disabled():
        return None
    if profile:
        user = profile.get_extension(SpecialQuestUser)
        tasks = SpecialQuestTask.objects.all()
        today = date.today()
        tasks = [t for t in tasks if t not in user.done_tasks.all() and t.start_date <= today <= t.end_date]

        count = len(tasks)
    else:
        count = 0
    url = reverse('wouso.games.specialquest.views.index')
    
    return dict(link=url, count=count, text=_('Special'))
Exemplo n.º 22
0
def header_link(request):
    profile = request.user.get_profile()
    if SpecialQuestGame.disabled():
        return None
    if profile:
        user = profile.get_extension(SpecialQuestUser)
        tasks = SpecialQuestTask.objects.all()
        today = date.today()
        tasks = [t for t in tasks if t not in user.done_tasks.all() and t.start_date <= today <= t.end_date]

        count = len(tasks)
    else:
        count = 0
    url = reverse("wouso.games.specialquest.views.index")

    return dict(link=url, count=count, text=_("Special"))