X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/ecd9fa68ea62902f79744b458e4ea2ed95ce00ac..5f47561def34f5a8a807e6e0cca5ccc4ca6a87a2:/forum/models/user.py diff --git a/forum/models/user.py b/forum/models/user.py index cddfe35..339c02d 100644 --- a/forum/models/user.py +++ b/forum/models/user.py @@ -61,12 +61,18 @@ class AnonymousUser(DjangoAnonymousUser): def can_accept_answer(self, answer): return False + def can_create_tags(self): + return False + def can_edit_post(self, post): return False def can_wikify(self, post): return False + def can_cancel_wiki(self, post): + return False + def can_retag_questions(self): return False @@ -152,7 +158,7 @@ class User(BaseModel, DjangoUser): def get_vote_count_today(self): today = datetime.date.today() return self.actions.filter(canceled=False, action_type__in=("voteup", "votedown"), - action_date__range=(today - datetime.timedelta(days=1), today)).count() + action_date__gte=(today - datetime.timedelta(days=1))).count() def get_reputation_by_upvoted_today(self): today = datetime.datetime.now() @@ -164,7 +170,7 @@ class User(BaseModel, DjangoUser): def get_flagged_items_count_today(self): today = datetime.date.today() return self.actions.filter(canceled=False, action_type="flag", - action_date__range=(today - datetime.timedelta(days=1), today)).count() + action_date__gte=(today - datetime.timedelta(days=1))).count() @true_if_is_super_or_staff def can_view_deleted_post(self, post): @@ -214,15 +220,23 @@ class User(BaseModel, DjangoUser): def can_accept_answer(self, answer): return self == answer.question.author + @true_if_is_super_or_staff + def can_create_tags(self): + return self.reputation >= int(settings.REP_TO_CREATE_TAGS) + @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_cancel_wiki(self, post): + return self == post.author + @true_if_is_super_or_staff def can_retag_questions(self): return self.reputation >= int(settings.REP_TO_RETAG) @@ -248,6 +262,11 @@ class User(BaseModel, DjangoUser): def can_upload_files(self): return self.reputation >= int(settings.REP_TO_UPLOAD) + def check_password(self, old_passwd): + self.__dict__.update(self.__class__.objects.filter(id=self.id).values('password')[0]) + return DjangoUser.check_password(self, old_passwd) + + class Meta: app_label = 'forum'