예제 #1
0
def home_view(request):
    latest_quiz_list = Quiz.objects.filter(draft=0,deleted=0).order_by('-created_date')[:10]
    popular_quiz_list = Quiz.objects.filter(draft=0,deleted=0).annotate(num_attempts=Count('quizattempt')).order_by('-num_attempts')[:10]
    leaderboard = Points.get_leaderboard(10)
    return render_to_response('mquiz/home.html',
                              {'latest_quiz_list': latest_quiz_list,
                               'popular_quiz_list':popular_quiz_list,
                               'leaderboard': leaderboard,}, 
                              context_instance=RequestContext(request))
def get_points(request):
    if not request.user.is_authenticated():
        return {'points': 0, 'badges':0 }
    else:
        points = Points.get_userscore(request.user)
        if points is None:
            points = 0
        badges = Award.get_userawards(request.user)
        if badges is None:
            badges = 0
    return {'points': points, 'badges':badges }
예제 #3
0
def signup_callback(sender, **kwargs):
    user = kwargs.get('instance')
    created = kwargs.get('created')
    if created:
        p = Points()
        p.points = 100
        p.type = 'signup'
        p.description = "Initial registration"
        p.user = user
        p.save()
    return
예제 #4
0
def module_download_callback(sender, **kwargs):
    user = kwargs.get('user')
    module = kwargs.get('module')
    
    # check not superuser
    if user.is_superuser:
        return 
    
    if not module.is_first_download(user):
        return 
    
    p = Points()
    p.points = 50
    p.type = 'moduledownloaded'
    p.description = "Module downloaded: " + module.get_title()
    p.user = user
    p.module = module
    p.cohort = Cohort.student_member_now(module,user)
    p.save()
    return
예제 #5
0
def badgeaward_callback(sender, **kwargs):
    award = kwargs.get('instance')
    
    # check not superuser
    if award.user.is_superuser:
        return 
    
    p = Points()
    p.points = award.badge.points
    p.type = 'badgeawarded'
    p.description = award.description
    p.user = award.user
    p.save()
    return
예제 #6
0
def createquiz_callback(sender, **kwargs):
    quiz = kwargs.get('instance')
    created = kwargs.get('created')
    # check not superuser
    if quiz.owner.is_superuser:
        return 
    
    if created:
        p = Points()
        p.points = 200
        p.type = 'quizcreated'
        p.description = "Quiz created: " + quiz.title
        p.user = quiz.owner
        p.save()
    return
예제 #7
0
def scoreboard_view(request):
    lb = Points.get_leaderboard()[:100]
    paginator = Paginator(lb, 25) # Show 25 contacts per page

    # Make sure page request is an int. If not, deliver first page.
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    # If page request (9999) is out of range, deliver last page of results.
    try:
        leaderboard = paginator.page(page)
    except (EmptyPage, InvalidPage):
        leaderboard = paginator.page(paginator.num_pages)

    return render_to_response('mquiz/scoreboard.html',{'page':leaderboard}, context_instance=RequestContext(request))
예제 #8
0
def tracker_callback(sender, **kwargs):
    tracker = kwargs.get('instance')
    
    # check not superuser
    if tracker.user.is_superuser:
        return 
    
    if not tracker.is_first_tracker_today():
        return
    
    if not tracker.activity_exists():
        return
    
    if not tracker.completed:
        return
    
    type = 'activitycompleted'
    points = 10
    if tracker.get_activity_type() == "media":
        description =  "Media played: " + tracker.get_activity_title()
        type = 'mediaplayed'
        points = 20
    else:
        description = "Activity completed: " + tracker.get_activity_title()    
       
    p = Points()
    p.points = points
    p.type = type
    p.description = description
    p.user = tracker.user
    p.module = tracker.module
    p.cohort = Cohort.student_member_now(tracker.module,tracker.user)
    p.save()
    
    # test if tracker submitted on time
    
    return
예제 #9
0
 def dehydrate_points(self,bundle):
     points = Points.get_userscore(User.objects.get(username__exact=bundle.data['username']))
     return points
예제 #10
0
 def dehydrate_points(self,bundle):
     points = Points.get_userscore(bundle.request.user)
     return points
예제 #11
0
def quizattempt_callback(sender, **kwargs):
    quiz_attempt = kwargs.get('instance')
    
    # Check user doesn't own the quiz
    quiz = quiz_attempt.quiz
    if quiz.owner == quiz_attempt.user:
        return
    
    # give 5 points to quiz owner
    if quiz_attempt.is_first_attempt_today() and not quiz.owner.is_superuser:
        p = Points()
        p.points = 5
        p.user = quiz.owner
        p.type = 'userquizattempt'
        p.description = quiz_attempt.user.username + " attempted your quiz: " + quiz.title
        p.save() 
     
    # check not superuser
    if quiz_attempt.user.is_superuser:
        return 
    
    # find out if this quiz is part of a module
    module = None
    digest = quiz_attempt.get_quiz_digest()
    if digest is not None:
        # TODO - what are chances of 2 modules having the exact same activity? and what to do if they do?
        acts = Activity.objects.filter(digest=digest)
        for a in acts:
            module = a.section.module
        
    # find out is user is part of the cohort for this module
    cohort = None
    if module is not None:
        cohort = Cohort.student_member_now(module,quiz_attempt.user)
              
    if quiz_attempt.is_first_attempt():
        # If it's the first time they've attempted this quiz award 20 points
        p = Points()
        p.points = 20
        p.type = 'firstattempt'
        p.user = quiz_attempt.user
        p.description = "Bonus points for your first attempt at: " + quiz.title
        p.module = module
        p.cohort = cohort
        p.save()
    
        # add percentage points for their first attempt
        if quiz_attempt.get_score_percent() > 0:
            p = Points()
            p.points = quiz_attempt.get_score_percent()
            p.type = 'firstattemptscore'
            p.description = "Score for first attempt at quiz: " + quiz.title
            p.user = quiz_attempt.user
            p.module = module
            p.cohort = cohort
            p.save()
        
        # if you get 100% on first attempt get bonus of 50 points
        if quiz_attempt.get_score_percent() == 100:
            p = Points()
            p.points = 50
            p.type = 'firstattemptbonus'
            p.description = "Bonus points for getting 100% in first attempt at quiz: " + quiz.title
            p.user = quiz_attempt.user
            p.module = module
            p.cohort = cohort
            p.save()
            
    elif quiz_attempt.is_first_attempt_today():
        # If it's the first time today they've attempted this quiz award 10 points
        p = Points()
        p.points = 10
        p.type = 'quizattempt'
        p.user = quiz_attempt.user
        p.description = "Quiz attempt at: " + quiz.title
        p.module = module
        p.cohort = cohort
        p.save()
    
    return
 def dehydrate_quiz_points(self,bundle):
     start_date = datetime.datetime.now() - datetime.timedelta(days=14)
     end_date = datetime.datetime.now()
     return Points.quiz_points(user=bundle.obj,start_date=start_date,end_date=end_date)
 def dehydrate_quiz_points(self, bundle):
     start_date = datetime.datetime.now() - datetime.timedelta(days=14)
     end_date = datetime.datetime.now()
     return Points.quiz_points(user=bundle.obj,
                               start_date=start_date,
                               end_date=end_date)
 def dehydrate_points(self, bundle):
     points = Points.get_userscore(bundle.request.user)
     return points