X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/87e592dc4c9e0321635350da8c9f1624554a604f..160d1ba325585d57e013437f68b06bc90ac341d0:/forum/models/user.py diff --git a/forum/models/user.py b/forum/models/user.py index 3e92e16..a3714ae 100644 --- a/forum/models/user.py +++ b/forum/models/user.py @@ -26,7 +26,7 @@ class UserManager(CachedManager): class AnonymousUser(DjangoAnonymousUser): def get_visible_answers(self, question): - return question.answers.filter(deleted=None) + return question.answers.filter_state(deleted=False) def can_view_deleted_post(self, post): return False @@ -55,12 +55,18 @@ class AnonymousUser(DjangoAnonymousUser): def can_delete_comment(self, comment): return False + def can_convert_to_comment(self, answer): + return False + def can_accept_answer(self, answer): return False def can_edit_post(self, post): return False + def can_wikify(self, post): + return False + def can_retag_questions(self): return False @@ -141,7 +147,7 @@ class User(BaseModel, DjangoUser): return mark_safe(profile_link) def get_visible_answers(self, question): - return question.answers.filter(deleted=None, in_moderation=None) + return question.answers.filter_state(deleted=False) def get_vote_count_today(self): today = datetime.date.today() @@ -201,6 +207,9 @@ class User(BaseModel, DjangoUser): def can_delete_comment(self, comment): return self == comment.author or self.reputation >= int(settings.REP_TO_DELETE_COMMENTS) + def can_convert_to_comment(self, answer): + 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)) + @true_if_is_super_or_staff def can_accept_answer(self, answer): return self == answer.question.author @@ -208,7 +217,11 @@ class User(BaseModel, DjangoUser): @true_if_is_super_or_staff def can_edit_post(self, post): return self == post.author or self.reputation >= int(settings.REP_TO_EDIT_OTHERS - ) or (post.wiki and self.reputation >= int(settings.REP_TO_EDIT_WIKI)) + ) or (post.nis.wiki and self.reputation >= int(settings.REP_TO_EDIT_WIKI)) + + @true_if_is_super_or_staff + def can_wikify(self, post): + return self == post.author or self.reputation >= int(settings.REP_TO_WIKIFY) @true_if_is_super_or_staff def can_retag_questions(self):