From d1619b3f3c05fc930ea8cdcb9fb48f393b5f9bee Mon Sep 17 00:00:00 2001 From: Jessica McKellar Date: Tue, 19 Nov 2013 14:21:12 -0500 Subject: [PATCH] Use a more accurate "is admin?" check. UserProfile.show_admin was intended to be a check for users that have administrative rights in other realms, which we've harmlessly but erroneously been using to check if they are an admin in their realm. Use the more straightforward check instead, with a more intuitive name. (imported from commit d81050c7dbbb19e59c5e31750be303a4630e1456) --- static/js/subs.js | 4 ++-- static/js/zulip.js | 2 +- templates/zerver/index.html | 2 +- templates/zerver/navbar.html | 2 +- zerver/models.py | 9 ++------- zerver/views/__init__.py | 4 ++-- 6 files changed, 9 insertions(+), 14 deletions(-) diff --git a/static/js/subs.js b/static/js/subs.js index b9aceecf09..6819db4d9d 100644 --- a/static/js/subs.js +++ b/static/js/subs.js @@ -228,7 +228,7 @@ function add_email_hint(row) { function add_sub_to_table(sub) { $('#create_stream_row').after(templates.render( 'subscription', - _.extend(sub, {'allow_rename': page_params.show_admin}))); + _.extend(sub, {'allow_rename': page_params.is_admin}))); settings_for_sub(sub).collapse('show'); add_email_hint(sub); } @@ -408,7 +408,7 @@ exports.setup_page = function () { // Add in admin options. var sub_rows = []; _.each(all_subs, function (sub) { - sub = _.extend(sub, {'allow_rename': page_params.show_admin}); + sub = _.extend(sub, {'allow_rename': page_params.is_admin}); sub_rows.push(sub); }); diff --git a/static/js/zulip.js b/static/js/zulip.js index b375b2616a..58b37c9d45 100644 --- a/static/js/zulip.js +++ b/static/js/zulip.js @@ -556,7 +556,7 @@ function set_topic_edit_properties(message) { // to encourage updating them. Admins can also edit any topic. if (message.subject === compose.empty_subject_placeholder()) { message.always_visible_topic_edit = true; - } else if (page_params.show_admin) { + } else if (page_params.is_admin) { message.on_hover_topic_edit = true; } } diff --git a/templates/zerver/index.html b/templates/zerver/index.html index 0169667e4c..95a2802b92 100644 --- a/templates/zerver/index.html +++ b/templates/zerver/index.html @@ -53,7 +53,7 @@ var page_params = {{ page_params }};
{% include "zerver/subscriptions.html" %}
- {% if show_admin %} + {% if is_admin %}
{% include "zerver/administration.html" %}
diff --git a/templates/zerver/navbar.html b/templates/zerver/navbar.html index eaaa16ea55..4231dac2d1 100644 --- a/templates/zerver/navbar.html +++ b/templates/zerver/navbar.html @@ -77,7 +77,7 @@
  • - {% if show_admin %} + {% if is_admin %}
  • Administration diff --git a/zerver/models.py b/zerver/models.py index 328998aab0..37644c7d0e 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -254,13 +254,8 @@ class UserProfile(AbstractBaseUser, PermissionsMixin): else: return False - @property - def show_admin(self): - # Logic to determine if the user should see the administration tools. - # Do NOT use this to check if a user is authorized to perform a specific action! - return 0 < self.userobjectpermission_set.filter( - content_type__name="realm", - permission__codename="administer").count() + def is_admin(self): + return self.has_perm('administer', self.realm) @property def public_streams_disabled(self): diff --git a/zerver/views/__init__.py b/zerver/views/__init__.py index df5d192760..61fa03b2a6 100644 --- a/zerver/views/__init__.py +++ b/zerver/views/__init__.py @@ -725,7 +725,7 @@ def home(request): staging = settings.STAGING_DEPLOYED or not settings.DEPLOYED, alert_words = register_ret['alert_words'], muted_topics = register_ret['muted_topics'], - show_admin = user_profile.show_admin, + is_admin = user_profile.is_admin(), notify_for_streams_by_default = notify_for_streams_by_default(user_profile), name_changes_disabled = settings.NAME_CHANGES_DISABLED, has_mobile_devices = num_push_devices_for_user(user_profile) > 0 @@ -749,7 +749,7 @@ def home(request): 'show_debug': settings.DEBUG and ('show_debug' in request.GET), 'show_invites': show_invites, - 'show_admin': user_profile.show_admin, + 'is_admin': user_profile.is_admin(), 'show_webathena': user_profile.realm.domain == "mit.edu", 'enable_feedback': settings.ENABLE_FEEDBACK },