]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/models/user.py
a amanager to many
[osqa.git] / forum / models / user.py
index ab5941435b12ed06580972b2864be96334f8f01a..eaa1516b8fd0509f5b901d39e2967a5348158efe 100644 (file)
@@ -3,7 +3,10 @@ from forum import const
 from django.contrib.contenttypes.models import ContentType\r
 from django.contrib.auth.models import User as DjangoUser, AnonymousUser as DjangoAnonymousUser\r
 from django.db.models import Q\r
-from hashlib import md5\r
+try:\r
+    from hashlib import md5\r
+except:\r
+    import md5\r
 import string\r
 from random import Random\r
 \r
@@ -77,11 +80,11 @@ class User(BaseModel, DjangoUser):
     is_approved = models.BooleanField(default=False)\r
     email_isvalid = models.BooleanField(default=False)\r
     email_key = models.CharField(max_length=32, null=True)\r
-    reputation = models.PositiveIntegerField(default=1)\r
+    reputation = DenormalizedField(default=1)\r
 \r
-    gold = models.SmallIntegerField(default=0)\r
-    silver = models.SmallIntegerField(default=0)\r
-    bronze = models.SmallIntegerField(default=0)\r
+    gold = DenormalizedField(default=0)\r
+    silver = DenormalizedField(default=0)\r
+    bronze = DenormalizedField(default=0)\r
 \r
     questions_per_page = models.SmallIntegerField(choices=QUESTIONS_PER_PAGE_CHOICES, default=10)\r
     hide_ignored_questions = models.BooleanField(default=False)\r
@@ -97,7 +100,7 @@ class User(BaseModel, DjangoUser):
 \r
     @property\r
     def gravatar(self):\r
-        return hashlib.md5(self.email).hexdigest()\r
+        return md5(self.email).hexdigest()\r
 \r
     def save(self, *args, **kwargs):\r
         if self.reputation < 0:\r
@@ -240,11 +243,8 @@ class Activity(GenericContent):
     @property\r
     def node(self):\r
         if self.activity_type in (const.TYPE_ACTIVITY_ANSWER, const.TYPE_ACTIVITY_ASK_QUESTION,\r
-                const.TYPE_ACTIVITY_MARK_ANSWER):\r
-            return self.content_object\r
-\r
-        if self.activity_type in (const.TYPE_ACTIVITY_COMMENT_QUESTION, const.TYPE_ACTIVITY_COMMENT_ANSWER):\r
-            return self.content_object.parent.leaf\r
+                const.TYPE_ACTIVITY_MARK_ANSWER, const.TYPE_ACTIVITY_COMMENT_QUESTION, const.TYPE_ACTIVITY_COMMENT_ANSWER):\r
+            return self.content_object.leaf\r
 \r
         if self.activity_type in (const.TYPE_ACTIVITY_UPDATE_ANSWER, const.TYPE_ACTIVITY_UPDATE_QUESTION):\r
             return self.content_object.node.leaf            \r