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
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
\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
@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