from base import *\r
-from forum import const\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
\r
class AnonymousUser(DjangoAnonymousUser):\r
def get_visible_answers(self, question):\r
- return question.answers.filter(deleted=None)\r
+ return question.answers.filter_state(deleted=False)\r
\r
def can_view_deleted_post(self, post):\r
return False\r
def can_delete_comment(self, comment):\r
return False\r
\r
+ def can_convert_to_comment(self, answer):\r
+ return False\r
+\r
def can_accept_answer(self, answer):\r
return False\r
\r
def can_edit_post(self, post):\r
return False\r
\r
+ def can_wikify(self, post):\r
+ return False\r
+\r
+ def can_cancel_wiki(self, post):\r
+ return False\r
+\r
def can_retag_questions(self):\r
return False\r
\r
return mark_safe(profile_link)\r
\r
def get_visible_answers(self, question):\r
- return question.answers.filter(deleted=None, in_moderation=None)\r
+ return question.answers.filter_state(deleted=False)\r
\r
def get_vote_count_today(self):\r
today = datetime.date.today()\r
\r
def get_reputation_by_upvoted_today(self):\r
today = datetime.datetime.now()\r
- sum = self.reputes.filter(\r
- models.Q(reputation_type=TYPE_REPUTATION_GAIN_BY_UPVOTED) |\r
- models.Q(reputation_type=TYPE_REPUTATION_LOST_BY_UPVOTE_CANCELED),\r
- reputed_at__range=(today - datetime.timedelta(days=1), today)).aggregate(models.Sum('value'))\r
-\r
- if sum.get('value__sum', None) is not None: return sum['value__sum']\r
+ sum = self.reputes.filter(reputed_at__range=(today - datetime.timedelta(days=1), today)).aggregate(models.Sum('value'))\r
+ #todo: redo this, maybe transform in the daily cap\r
+ #if sum.get('value__sum', None) is not None: return sum['value__sum']\r
return 0\r
\r
def get_flagged_items_count_today(self):\r
def can_delete_comment(self, comment):\r
return self == comment.author or self.reputation >= int(settings.REP_TO_DELETE_COMMENTS)\r
\r
+ def can_convert_to_comment(self, answer):\r
+ return (not answer.marked) and (self.is_superuser or self.is_staff or answer.author == self or self.reputation >= int(settings.REP_TO_CONVERT_TO_COMMENT))\r
+\r
@true_if_is_super_or_staff\r
def can_accept_answer(self, answer):\r
return self == answer.question.author\r
@true_if_is_super_or_staff\r
def can_edit_post(self, post):\r
return self == post.author or self.reputation >= int(settings.REP_TO_EDIT_OTHERS\r
- ) or (post.wiki and self.reputation >= int(settings.REP_TO_EDIT_WIKI))\r
+ ) or (post.nis.wiki and self.reputation >= int(settings.REP_TO_EDIT_WIKI))\r
+\r
+ @true_if_is_super_or_staff\r
+ def can_wikify(self, post):\r
+ return self == post.author or self.reputation >= int(settings.REP_TO_WIKIFY)\r
+\r
+ @true_if_is_super_or_staff\r
+ def can_cancel_wiki(self, post):\r
+ return self == post.author\r
\r
@true_if_is_super_or_staff\r
def can_retag_questions(self):\r
def can_upload_files(self):\r
return self.reputation >= int(settings.REP_TO_UPLOAD)\r
\r
+ def check_password(self, old_passwd):\r
+ self.__dict__.update(self.__class__.objects.filter(id=self.id).values('password')[0])\r
+ return DjangoUser.check_password(self, old_passwd)\r
+\r
+\r
class Meta:\r
app_label = 'forum'\r
\r
enable_notifications = models.BooleanField(default=True)\r
\r
#notify if\r
- member_joins = models.CharField(max_length=1, default='n', choices=const.NOTIFICATION_CHOICES)\r
- new_question = models.CharField(max_length=1, default='d', choices=const.NOTIFICATION_CHOICES)\r
- new_question_watched_tags = models.CharField(max_length=1, default='i', choices=const.NOTIFICATION_CHOICES)\r
- subscribed_questions = models.CharField(max_length=1, default='i', choices=const.NOTIFICATION_CHOICES)\r
+ member_joins = models.CharField(max_length=1, default='n')\r
+ new_question = models.CharField(max_length=1, default='d')\r
+ new_question_watched_tags = models.CharField(max_length=1, default='i')\r
+ subscribed_questions = models.CharField(max_length=1, default='i')\r
\r
#auto_subscribe_to\r
all_questions = models.BooleanField(default=False)\r