indexden is now optional
[oweals/karmaworld.git] / karmaworld / apps / users / models.py
index d6a9657b1cc33ee4d152bc5d49b24f6af45e2057..c34917582d5074a4cf0fee51884ac3e5fd18d377 100644 (file)
@@ -22,12 +22,14 @@ class UserProfileManager(models.Manager):
 
 
 class UserProfile(models.Model):
-    user      = models.OneToOneField(User)
-
-    school    = models.ForeignKey(School, blank=True, null=True)
+    user = models.OneToOneField(User)
+    thanked_notes = models.ManyToManyField('notes.Note', related_name='users_thanked', blank=True, null=True)
+    flagged_notes = models.ManyToManyField('notes.Note', related_name='users_flagged', blank=True, null=True)
+    flagged_courses = models.ManyToManyField('courses.Course', related_name='users_flagged', blank=True, null=True)
+    school = models.ForeignKey(School, blank=True, null=True)
 
     def natural_key(self):
-        return (self.user)
+        return (self.user,)
 
     def get_points(self):
         sum = 0
@@ -38,6 +40,12 @@ class UserProfile(models.Model):
 
         return sum
 
+    def get_id(self):
+        return self.user.id
+
+    def has_staff_status(self):
+        return self.user.is_staff
+
     NO_BADGE = 0
     PROSPECT = 1
     BEGINNER = 2
@@ -93,7 +101,7 @@ def give_email_confirm_karma(sender, **kwargs):
 class BaseKarmaEventManager(models.Manager):
     """ Handle restoring data. """
     def get_by_natural_key(self, points, user, timestamp):
-        return self.get(points=points, user=user, timestamp=timestamp)
+        return self.get(user=user, timestamp=timestamp)
 
 
 class BaseKarmaEvent(models.Model):
@@ -106,7 +114,7 @@ class BaseKarmaEvent(models.Model):
         unique_together = ('points', 'user', 'timestamp')
 
     def natural_key(self):
-        return (self.points, self.user, self.timestamp)
+        return (self.user, self.timestamp)
 
     def get_message(self):
         raise NotImplemented()
@@ -157,6 +165,7 @@ class NoteKarmaEvent(BaseKarmaEvent):
     GET_FLAGGED  = 'get_flagged'
     DOWNLOADED_NOTE = 'downloaded'
     HAD_NOTE_DOWNLOADED = 'was_downloaded'
+    CREATED_KEYWORD = 'created_keyword'
 
     EVENT_TYPE_CHOICES = (
         (UPLOAD,       "You uploaded a note"),
@@ -166,6 +175,7 @@ class NoteKarmaEvent(BaseKarmaEvent):
         (GET_FLAGGED,  "Your note was flagged as spam"),
         (DOWNLOADED_NOTE,  "You downloaded a note"),
         (HAD_NOTE_DOWNLOADED,  "Your note was downloaded"),
+        (CREATED_KEYWORD,  "You created a keyword"),
     )
     note = models.ForeignKey('notes.Note')
     event_type = models.CharField(max_length=15, choices=EVENT_TYPE_CHOICES)
@@ -178,6 +188,7 @@ class NoteKarmaEvent(BaseKarmaEvent):
         GET_FLAGGED: -100,
         DOWNLOADED_NOTE: -2,
         HAD_NOTE_DOWNLOADED: 2,
+        CREATED_KEYWORD: 1,
     }
 
     def get_message(self):