Source code for apps.managers.score_mgr.models

"""The model definition for scores."""

from django.db import models
from django.contrib.auth.models import User
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from apps.managers.cache_mgr import cache_mgr


[docs]class ScoreSetting(models.Model): """score settings models.""" name = models.CharField(default="Score Settings", max_length="30", editable=False, help_text="The settings label.") setup_points = models.IntegerField( default=5, help_text="The point amount for setting up the profile." ) active_threshold_points = models.IntegerField( default=50, help_text="The point amount for considering an active participant. It is also the " "threshold point amount for awarding referral bonus.", ) signup_bonus_points = models.IntegerField( default=2, help_text="The point amount for signing up a commitment or event." ) quest_bonus_points = models.IntegerField( default=0, help_text="The point amount for completing a quest." ) noshow_penalty_points = models.IntegerField( default=2, help_text="The point amount for no show penalty." ) feedback_bonus_points = models.IntegerField( default=0, help_text="The point amount for providing action feedback." ) admin_tool_tip = "The points awarded for completing various " + \ "actions and how many points are needed for a player to be 'active'." class Meta: """meta""" verbose_name = "point rubric" def __unicode__(self): return "point rubric"
[docs] def save(self, *args, **kwargs): """Custom save method.""" super(ScoreSetting, self).save(*args, **kwargs) cache_mgr.delete("score_setting")
[docs]class ReferralSetting(models.Model): """Defines the model of the dynamic referral settings.""" normal_referral_points = models.IntegerField( default=10, help_text="The point amount for normal referral bonus.", ) super_referral_points = models.IntegerField( default=20, help_text="The point amount for supper referral bonus, when the referral is from a team " "of participation rate from 20% to 40%", ) mega_referral_points = models.IntegerField( default=30, help_text="The point amount for mega referral bonus, when the referrals is from a team of" " participation rate les than 20%", ) start_dynamic_bonus = models.BooleanField( default=False, help_text="Start rewarding the dynamic referral bonus. set it to true if you want to " "reward referral bonus depends on referral's team participation." )
[docs] def save(self, *args, **kwargs): """Custom save method.""" super(ReferralSetting, self).save(*args, **kwargs) cache_mgr.delete("referral_setting")
[docs]class ScoreboardEntry(models.Model): """Defines the model that tracks user scores.""" profile = models.ForeignKey("player_mgr.Profile", editable=False) round_name = models.CharField( max_length="30", editable=False, help_text="The name of the round") points = models.IntegerField( default=0, help_text="Points for this round") last_awarded_submission = models.DateTimeField( null=True, blank=True, editable=False, help_text="Last award time") class Meta: """meta""" unique_together = (("profile", "round_name",),) ordering = ("round_name",)
[docs]class PointsTransaction(models.Model): """Entries that track points awarded to users.""" user = models.ForeignKey(User) points = models.IntegerField( help_text="The points for the transaction. negative number indicates a subtraction" ) transaction_date = models.DateTimeField( help_text="The date of the transaction" ) message = models.CharField( max_length=255, help_text="The message of the transcation.") object_id = models.PositiveIntegerField(null=True) content_type = models.ForeignKey(ContentType, null=True) related_object = generic.GenericForeignKey("content_type", "object_id") class Meta: """meta""" unique_together = (("user", "transaction_date", "message",),) ordering = ("-transaction_date",)