本文整理汇总了Python中wouso.core.scoring.score函数的典型用法代码示例。如果您正苦于以下问题:Python score函数的具体用法?Python score怎么用?Python score使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了score函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: bonus
def bonus(request, player_id):
player = get_object_or_404(Player, pk=player_id)
if request.method == 'POST':
form = BonusForm(request.POST)
if form.is_valid():
coin, amount = form.cleaned_data['coin'], form.cleaned_data['amount']
formula = Formula.get('bonus-%s' % coin.name)
if formula is None:
messages.error(request, 'No such formula, bonus-%s' % coin.name)
else:
scoring.score(player, None, formula, external_id=request.user.get_profile().id, **{coin.name: amount})
if form.cleaned_data['reason']:
add_activity(player, _('received {amount} {coin} bonus for {reason}'), amount=amount, coin=coin, reason=form.cleaned_data['reason'])
messages.info(request, 'Successfully given bonus')
return redirect('player_profile', id=player.id)
else:
form = BonusForm()
bonuses = scoring.History.objects.filter(user=player, formula__name__startswith='bonus-').order_by('-timestamp')
penalties = scoring.History.objects.filter(user=player, formula__name__startswith='penalty-').order_by('-timestamp')
return render_to_response('cpanel/bonus.html', {'target_player': player, 'form': form, 'bonuses': bonuses, 'penalties': penalties},
context_instance=RequestContext(request)
)
开发者ID:alexukf,项目名称:wouso,代码行数:25,代码来源:views.py
示例2: infraction_recheck
def infraction_recheck(request):
""" Rerun an infraction check on the current challenge history
The view should allow for other infraction additions. """
try:
inf_list = History.objects.filter(coin__name='penalty',
formula__name='chall-was-set-up-infraction').delete()
except:
pass
all_participants = Participant.objects.filter(seconds_took__lt=15).exclude(
seconds_took=None)
formula = Formula.objects.get(name='chall-was-set-up-infraction')
for p in all_participants:
id = None
if p.user_from.count():
if p.user_from.all()[0].status == 'P' and p.user_from.all()[
0].winner.id != p.user.id:
user = p.user.player_ptr
id = p.user_from.all()[0].id
if p.user_to.count():
if p.user_to.all()[0].status == 'P' and p.user_to.all()[
0].winner.id != p.user.id:
user = p.user.player_ptr
id = p.user_to.all()[0].id
if id:
scoring.score(user=user, game=None, formula=formula, external_id=id)
return HttpResponseRedirect(reverse('wouso.interface.cpanel.views.players'))
开发者ID:TobyWanKenobi,项目名称:wouso,代码行数:28,代码来源:views.py
示例3: check_answer
def check_answer(self, user, answer):
if user.current_quest != self:
user.finish_quest()
user.set_current(self)
return False
try:
question = self.levels[user.current_level]
except IndexError:
logging.error("No such question")
user_hash = hashlib.sha1(
'%s%s%s' % (user.last_name[::-1], question.answers.all()[0].text, user.first_name)
)
if not user.current_level == self.count and \
answer.lower() == user_hash.hexdigest():
# score current progress
scoring.score(user, QuestGame, self.get_formula('quest-ok'), level=(user.current_level + 1))
user.current_level += 1
if user.current_level == self.count:
user.finish_quest()
# score finishing
scoring.score(user, QuestGame, self.get_formula('quest-finish-ok'))
user.save()
return True
return False
开发者ID:alexef,项目名称:wouso,代码行数:26,代码来源:models.py
示例4: create
def create(self, request, coin, tocoin):
try:
coin = Coin.objects.get(id=coin)
tocoin = Coin.objects.get(id=tocoin)
except Coin.DoesNotExist:
return {'success': False, 'error': 'Invalid coin'}
attrs = self.flatten_dict(request.POST)
if 'amount' not in attrs.keys():
return {'success': False, 'error': 'Amount not provided'}
player = request.user.get_profile()
try:
amount = int(attrs['amount'])
assert amount > 0
except (ValueError, AssertionError):
return {'success': False, 'error': 'Invalid Amount'}
if player.coins[coin.id] < amount:
return {'success': False, 'error': 'Insufficient amount'}
# TODO: change me
if coin.id == 'points':
scoring.score(player, None, 'points-gold-rate', points=amount)
elif coin.id == 'gold':
scoring.score(player, None, 'gold-points-rate', gold=amount)
return {'success': True, 'coins': player.coins}
开发者ID:ciprianf,项目名称:wouso,代码行数:28,代码来源:handlers.py
示例5: question_switch
def question_switch(request, id):
""" Accept a proposed question
"""
question = get_object_or_404(Question, pk=id)
# qproposal - endorse part
proposed_cat = Category.objects.filter(name='proposed')[0]
if question.category == proposed_cat:
if not question.endorsed_by:
player = question.proposed_by.get_profile()
staff_user = request.user
question.endorsed_by = staff_user
question.save()
amount = 0
for tag in question.tags.all():
if tag.name == 'qotd':
amount = QOTD_GOLD
elif tag.name == 'challenge':
amount = CHALLENGE_GOLD
elif tag.name == 'quest':
amount = QUEST_GOLD
scoring.score(player, None, 'bonus-gold', external_id=staff_user.id,
gold=amount)
# regular activation of question
else:
question.active = not question.active
question.save()
go_back = request.META.get('HTTP_REFERER', None)
if not go_back:
go_back = reverse('wouso.interface.cpanel.views.qpool_home')
return HttpResponseRedirect(go_back)
开发者ID:dennisplosceanu,项目名称:wouso,代码行数:34,代码来源:views.py
示例6: manage_player_set
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,)))
开发者ID:cvicentiu,项目名称:wouso,代码行数:26,代码来源:cpanel.py
示例7: manage_player
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
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'
else:
error = 'Invalid amount'
bonuses = scoring.History.objects.filter(user=player, formula__id='bonus-gold')
return render_to_response('specialquest/cpanel_manage.html',
dict(mplayer=player, tasks_not_done=tasks_not_done, message=message, error=error, bonuses=bonuses),
context_instance=RequestContext(request))
开发者ID:MathPlayer,项目名称:wouso--older-,代码行数:25,代码来源:cpanel.py
示例8: user_post_save
def user_post_save(sender, instance, **kwargs):
profile, new = Player.objects.get_or_create(user=instance)
if new:
# add in default group
from wouso.core.config.models import ChoicesSetting
try:
default_group = PlayerGroup.objects.get(pk=int(ChoicesSetting.get('default_group').get_value()))
except (PlayerGroup.DoesNotExist, ValueError):
pass
else:
profile.groups.add(default_group)
try:
default_series = PlayerGroup.objects.get(pk=int(ChoicesSetting.get('default_series').get_value()))
except (PlayerGroup.DoesNotExist, ValueError):
pass
else:
profile.groups.add(default_series)
# kick some activity
signal_msg = ugettext_noop('has joined the game.')
signals.addActivity.send(sender=None, user_from=profile,
user_to=profile,
message=signal_msg,
game=None)
# give 15 bonus points
from wouso.core.scoring import score
from wouso.settings import STARTING_POINTS
try:
score(profile, None, 'bonus-points', points=STARTING_POINTS)
except: pass # This might fail when formulas are not set-up, i.e. superuser syncdb profile creation
开发者ID:MathPlayer,项目名称:wouso--older-,代码行数:31,代码来源:models.py
示例9: karma_group_view
def karma_group_view(request, group):
group_id = group
group = get_object_or_404(PlayerGroup, pk=group)
players = group.players.all()
if request.method == 'POST':
form = KarmaBonusForm(request.POST, players=players)
if form.is_valid():
formula = Formula.get('bonus-karma')
if formula is None:
messages.error(request, 'No such formula, bonus-karma')
else:
for player, entry in zip(players, form.fields):
# get amount of karma points for current player
karma_points = form.cleaned_data[entry]
# if karma points are zero then skip
if karma_points == 0:
continue
# compute formula and calculate amount of bonus given
amount = eval(formula.expression.format(**{'karma_points': karma_points}).split('=')[1])
# apply scoring
scoring.score(player, None, formula, external_id=request.user.get_profile().id, **{'karma_points': karma_points})
# add activity (parse formula expression to get the coin from formula)
add_activity(player, _(
'received {amount} {coin} bonus for {karma_points} Karma Points'),
amount=amount, coin=formula.expression.split('=')[0], karma_points=karma_points,
reason='Bonus for Karma')
messages.info(request, 'Successfully given bonus')
return redirect('karma_group', **{'group': group_id})
else:
form = KarmaBonusForm(players=players)
return render_to_response('cpanel/karma_group.html',
{'form':form, 'group':group},
context_instance=RequestContext(request))
开发者ID:adibranescu,项目名称:wouso,代码行数:33,代码来源:views.py
示例10: create
def create(user_from, user_to, ignore_questions = False):
""" Assigns questions, and returns the number of assigned q """
questions = [q for q in get_questions_with_category('challenge')]
if (len(questions) < 5) and not ignore_questions:
raise ChallengeException('Too few questions')
shuffle(questions)
uf, ut = Participant(user=user_from), Participant(user=user_to)
uf.save(), ut.save()
c = Challenge(user_from=uf, user_to=ut, date=datetime.now())
c.save()
# TODO: better question selection
#limit = 5
for q in questions[:Challenge.LIMIT]:
c.questions.add(q)
# set last_launched
user_from.last_launched = datetime.now()
user_from.save()
# take 3 points from user_from
scoring.score(user_from, ChallengeGame, 'chall-warranty', external_id=c.id)
return c
开发者ID:alexef,项目名称:wouso-1,代码行数:26,代码来源:models.py
示例11: bazaar_buy
def bazaar_buy(request, spell):
spell = get_object_or_404(Spell, pk=spell)
player = request.user.get_profile()
error, message = '',''
if Bazaar.disabled():
error = _("Magic is disabled")
elif spell.price > player.coins.get('gold', 0):
error = _("Insufficient gold amount")
elif spell.available == False:
error = _("Spell is not available")
elif spell.level_required > player.level_no:
error = _("Level {level} is required to buy this spell").format(level=spell.level_required)
else:
player.magic.add_spell(spell)
scoring.score(player, None, 'buy-spell', external_id=spell.id,
price=spell.price)
signal_msg = ugettext_noop('bought a spell')
action_msg = 'spell-buy'
signals.addActivity.send(sender=None, user_from=player,
user_to=player,
message=signal_msg,
game=None,
action=action_msg,
public=False)
SpellHistory.bought(player, spell)
message = _("Successfully aquired")
return bazaar(request, message=message, error=error)
开发者ID:cvicentiu,项目名称:wouso,代码行数:30,代码来源:views.py
示例12: quest_bonus
def quest_bonus(request, quest):
quest = get_object_or_404(Quest, pk=quest)
# TODO: move logic to models
for i, r in enumerate(quest.top_results()):
player = r.user.get_extension(Player)
scoring.score(player, QuestGame, 'quest-finish-bonus', position=i + 1, external_id=quest.id)
return redirect('quest_home')
开发者ID:cvicentiu,项目名称:wouso,代码行数:9,代码来源:cpanel.py
示例13: manage_player
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),
)
开发者ID:TomyRO,项目名称:wouso,代码行数:55,代码来源:cpanel.py
示例14: answered
def answered(user, question, choice):
correct = False
for i, a in enumerate(question.answers):
if a.id == choice:
if a.correct:
correct = True
break
user.set_answered(choice, correct) # answer id
if correct:
scoring.score(user, QotdGame, 'qotd-ok')
开发者ID:LucianU,项目名称:wouso,代码行数:12,代码来源:models.py
示例15: give_level_bonus
def give_level_bonus(self):
for level in xrange(len(self.levels)):
users = QuestUser.objects.filter(current_level=level)
for user in users:
scoring.score(
user,
QuestGame,
self.get_formula('finalquest-ok'),
level=level,
level_users=users.count()
)
开发者ID:mgax,项目名称:wouso,代码行数:12,代码来源:models.py
示例16: pass_level
def pass_level(self, quest):
"""
Pass current level. Increment current level and score.
"""
if self.current_quest != quest:
return None
scoring.score(self, QuestGame, quest.get_formula('quest-ok'), level=(self.current_level + 1), external_id=quest.id)
self.current_level += 1
if self.current_level == quest.count:
self.finish_quest()
scoring.score(self, QuestGame, quest.get_formula('quest-finish-ok'), external_id=quest.id)
self.save()
return self.current_level
开发者ID:iuliam,项目名称:wouso,代码行数:13,代码来源:models.py
示例17: testScore
def testScore(self):
formula = Formula.objects.create(id="_test_formula_sc", formula="_test=13", owner=self.game)
scoring.score(self.user.get_profile(), self.game, formula, external_id=3)
hs = scoring.history_for(self.user, self.game, external_id=3)
self.assertTrue(isinstance(hs, QuerySet))
history = list(hs)[0]
# check if specific coin has been updated
self.assertEqual(history.coin, self.coin)
self.assertEqual(history.amount, 13)
开发者ID:andreip,项目名称:wouso,代码行数:13,代码来源:tests.py
示例18: _give_bonus
def _give_bonus(self, points, gold):
if self.best_attempt is not None:
if points > self.best_attempt.points:
points = points - self.best_attempt.points
gold = gold - self.best_attempt.gold
scoring.score(self.user, None, "bonus-points", points=points)
scoring.score(self.user, None, "bonus-gold", gold=gold)
add_activity(
self.user,
_(
"received {points} points and "
"{gold} gold bonus"
" for beating his/her "
"highscore at quiz {quiz_name}"
),
points=points,
gold=gold,
quiz_name=self.quiz.name,
)
else:
scoring.score(self.user, None, "bonus-points", points=points)
scoring.score(self.user, None, "bonus-gold", gold=gold)
add_activity(
self.user,
_("received {points} points" " and {gold} gold bonus" " for submitting quiz {quiz_name}"),
points=points,
gold=gold,
quiz_name=self.quiz.name,
)
开发者ID:gabrielivascu,项目名称:wouso,代码行数:29,代码来源:models.py
示例19: manage_player_set
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.all()
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)
return HttpResponseRedirect(reverse('specialquest_manage', args=(player.id,)))
开发者ID:MathPlayer,项目名称:wouso--older-,代码行数:15,代码来源:cpanel.py
示例20: manage_player
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))
开发者ID:ArmandNM,项目名称:wouso,代码行数:48,代码来源:cpanel.py
注:本文中的wouso.core.scoring.score函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论