]> 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 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
 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
     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
 \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
 \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
 \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
 \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
     @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
 \r
         if self.activity_type in (const.TYPE_ACTIVITY_UPDATE_ANSWER, const.TYPE_ACTIVITY_UPDATE_QUESTION):\r
             return self.content_object.node.leaf            \r