Mercurial > public > sg101
view gpp/bio/badges.py @ 507:8631d32e6b16
Some users are still having problems with the pop-up login. I think they are actually getting 403s because of the CSRF protection. So I have modified the base template to always have a javascript variable called csrf_token available when they aren't logged in. The ajax_login.js script was then modified to send this value with the ajax post. Fingers crossed.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sun, 04 Dec 2011 03:05:21 +0000 |
parents | 47f4259ce511 |
children |
line wrap: on
line source
"""This module contains user profile badge-related functionality.""" import logging from bio.models import Badge from bio.models import BadgeOwnership # Numeric ID's for badges that are awarded for user actions: (CONTRIBUTOR_PIN, CALENDAR_PIN, NEWS_PIN, LINK_PIN, DOWNLOAD_PIN, SECURITY_PIN, POTD_PIN) = range(7) def award_badge(badge_id, user): """This function awards the badge specified by badge_id to the given user. If the user already has the badge, the badge count is incremented by one. """ try: badge = Badge.objects.get(numeric_id=badge_id) except Badge.DoesNotExist: logging.error("Can't award badge with numeric_id = %d", badge_id) return profile = user.get_profile() # Does the user already have badges of this type? try: bo = BadgeOwnership.objects.get(profile=profile, badge=badge) except BadgeOwnership.DoesNotExist: # No badge of this type, yet bo = BadgeOwnership(profile=profile, badge=badge, count=1) else: # Already have this badge bo.count += 1 bo.save() logging.info('Awarded %s with the badge: %s', user.username, badge.name)