changeset 400:47f4259ce511

Fixing #197; add a badge for photo of the day.
author Brian Neal <bgneal@gmail.com>
date Sat, 26 Mar 2011 21:29:27 +0000
parents 24f1230f3ee3
children 463649d7698b
files gpp/bio/badges.py gpp/bio/fixtures/badges.json gpp/bio/signals.py
diffstat 3 files changed, 43 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/gpp/bio/badges.py	Sat Mar 26 03:08:05 2011 +0000
+++ b/gpp/bio/badges.py	Sat Mar 26 21:29:27 2011 +0000
@@ -7,7 +7,7 @@
 
 # Numeric ID's for badges that are awarded for user actions:
 (CONTRIBUTOR_PIN, CALENDAR_PIN, NEWS_PIN, LINK_PIN, DOWNLOAD_PIN,
-        SECURITY_PIN) = range(6)
+        SECURITY_PIN, POTD_PIN) = range(7)
 
 
 def award_badge(badge_id, user):
@@ -33,3 +33,5 @@
         # Already have this badge
         bo.count += 1
     bo.save()
+
+    logging.info('Awarded %s with the badge: %s', user.username, badge.name)
--- a/gpp/bio/fixtures/badges.json	Sat Mar 26 03:08:05 2011 +0000
+++ b/gpp/bio/fixtures/badges.json	Sat Mar 26 21:29:27 2011 +0000
@@ -66,12 +66,23 @@
         }
     }, 
     {
+        "pk": 10, 
+        "model": "bio.badge", 
+        "fields": {
+            "numeric_id": 6, 
+            "image": "badges/camera.png", 
+            "order": 6, 
+            "name": "POTD Pin", 
+            "description": "For submitting a photo of the day."
+        }
+    }, 
+    {
         "pk": 1, 
         "model": "bio.badge", 
         "fields": {
             "numeric_id": 100, 
             "image": "badges/award_star_bronze_1.png", 
-            "order": 6, 
+            "order": 7, 
             "name": "Bronze Star", 
             "description": "For service to the site and community."
         }
@@ -82,7 +93,7 @@
         "fields": {
             "numeric_id": 101, 
             "image": "badges/award_star_silver_2.png", 
-            "order": 7, 
+            "order": 8, 
             "name": "Silver Star", 
             "description": "For distinguished and dedicated service to the site and community."
         }
@@ -93,7 +104,7 @@
         "fields": {
             "numeric_id": 102, 
             "image": "badges/award_star_gold_3.png", 
-            "order": 8, 
+            "order": 9, 
             "name": "Gold Star", 
             "description": "For exceptional and meritorious service to the site and community."
         }
--- a/gpp/bio/signals.py	Sat Mar 26 03:08:05 2011 +0000
+++ b/gpp/bio/signals.py	Sat Mar 26 21:29:27 2011 +0000
@@ -10,6 +10,7 @@
 from weblinks.models import Link
 from downloads.models import Download
 from news.models import Story
+from potd.models import Photo
 
 
 def on_user_save(sender, **kwargs):
@@ -17,6 +18,7 @@
     This signal handler ensures that every User has a corresonding
     UserProfile. It is called after User instance is saved. It creates
     a UserProfile for the User if the created argument is True.
+
     """
     created = kwargs['created']
     if created:
@@ -27,9 +29,11 @@
 
 
 def on_donation_save(sender, **kwargs):
-    """This function is called after a Donation is saved.
+    """
+    This function is called after a Donation is saved.
     If the Donation was newly created and not anonymous,
     award the user a contributor pin.
+
     """
     if kwargs['created']:
         donation = kwargs['instance']
@@ -38,8 +42,10 @@
 
 
 def on_link_save(sender, **kwargs):
-    """This function is called after a Link is saved. If the Link was newly
+    """
+    This function is called after a Link is saved. If the Link was newly
     created, award the user a link pin.
+
     """
     if kwargs['created']:
         link = kwargs['instance']
@@ -47,8 +53,10 @@
 
 
 def on_download_save(sender, **kwargs):
-    """This function is called after a Download is saved. If the Download was
+    """
+    This function is called after a Download is saved. If the Download was
     newly created, award the user a download pin.
+
     """
     if kwargs['created']:
         download = kwargs['instance']
@@ -56,16 +64,30 @@
 
 
 def on_story_save(sender, **kwargs):
-    """This function is called after a Story is saved. If the Story was
+    """
+    This function is called after a Story is saved. If the Story was
     newly created, award the user a news pin.
+
     """
     if kwargs['created']:
         story = kwargs['instance']
         bio.badges.award_badge(bio.badges.NEWS_PIN, story.submitter)
 
 
+def on_photo_save(sender, **kwargs):
+    """
+    This function is called after a Photo is saved. If the Photo was
+    newly created, award the user a POTD pin.
+
+    """
+    if kwargs['created']:
+        photo = kwargs['instance']
+        bio.badges.award_badge(bio.badges.POTD_PIN, photo.user)
+
+
 post_save.connect(on_user_save, sender=User, dispatch_uid='bio.signals')
 post_save.connect(on_donation_save, sender=Donation, dispatch_uid='bio.signals')
 post_save.connect(on_link_save, sender=Link, dispatch_uid='bio.signals')
 post_save.connect(on_download_save, sender=Download, dispatch_uid='bio.signals')
 post_save.connect(on_story_save, sender=Story, dispatch_uid='bio.signals')
+post_save.connect(on_photo_save, sender=Photo, dispatch_uid='bio.signals')