]> git.openstreetmap.org Git - osqa.git/commitdiff
OSQA-497, adding a new settings that allows to specify whether the permissions to...
authorjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Wed, 6 Jul 2011 08:56:06 +0000 (08:56 +0000)
committerjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Wed, 6 Jul 2011 08:56:06 +0000 (08:56 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1104 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/models/user.py
forum/settings/minrep.py

index 6ee7f663918b84674ad10ae7e7d46ad860adb261..84801fb0e0acd12879cec4c7b8726f0ce098ffa1 100644 (file)
@@ -362,7 +362,17 @@ class User(BaseModel, DjangoUser):
 
     @true_if_is_super_or_staff
     def can_reopen_question(self, question):
-        return self == question.author and self.reputation >= int(settings.REP_TO_REOPEN_OWN)
+        # Check whether the setting to Unify close and reopen permissions has been activated
+        if bool(settings.UNIFY_PERMISSIONS_TO_CLOSE_AND_REOPEN):
+            # If we unify close to reopen check whether the user has permissions to close.
+            # If he has -- he can reopen his question too.
+            can_reopen = (
+                self == question.author and self.reputation >= int(settings.REP_TO_CLOSE_OWN)
+            ) or self.reputation >= int(settings.REP_TO_CLOSE_OTHERS)
+        else:
+            # Check whether the user is the author and has the required permissions to reopen
+            can_reopen = self == question.author and self.reputation >= int(settings.REP_TO_REOPEN_OWN)
+        return can_reopen
 
     @true_if_is_super_or_staff
     def can_delete_post(self, post):
index 820682345ace7bef79d8bd2e579807ebf52aec3b..1c9e17d34d697b2094a2c801df5ec103902306b1 100644 (file)
@@ -39,6 +39,11 @@ REP_TO_CLOSE_OWN = Setting('REP_TO_CLOSE_OWN', 250, MIN_REP_SET, dict(
 label = _("Minimum reputation to close own question"),\r
 help_text = _("The minimum reputation an user must have to be allowed to close his own question.")))\r
 \r
+UNIFY_PERMISSIONS_TO_CLOSE_AND_REOPEN = Setting('UNIFY_PERMISSIONS_TO_CLOSE_AND_REOPEN', True, MIN_REP_SET, dict(\r
+label = _("Unify close and reopen permissions"),\r
+help_text = _("If checked the same permissions as the ones to close question will be required to reopen it."),\r
+required=False))\r
+\r
 REP_TO_REOPEN_OWN = Setting('REP_TO_REOPEN_OWN', 500, MIN_REP_SET, dict(\r
 label = _("Minimum reputation to reopen own question"),\r
 help_text = _("The minimum reputation an user must have to be allowed to reopen his own question.")))\r