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,)))
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, )))
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())
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))
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})
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), )
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), )
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'})
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})
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)})
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'))
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)})
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,)))
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'))
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))
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'))
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"))