diff --git a/reviewboard/site/context_processors.py b/reviewboard/site/context_processors.py
index 1b8e4a8749ed33beb4fbf1faf1a82bb0cf43a2ee..f385a591afa8590437f2eadb1e2cffaa5fc6dff2 100644
--- a/reviewboard/site/context_processors.py
+++ b/reviewboard/site/context_processors.py
@@ -7,8 +7,8 @@ from reviewboard.site.models import LocalSite
 
 
 class AllPermsLookupDict(PermLookupDict):
-    def __init__(self, user, module_name, perms_wrapper):
-        super(AllPermsLookupDict, self).__init__(user, module_name)
+    def __init__(self, user, app_label, perms_wrapper):
+        super(AllPermsLookupDict, self).__init__(user, app_label)
 
         self.perms_wrapper = perms_wrapper
 
@@ -17,7 +17,7 @@ class AllPermsLookupDict(PermLookupDict):
             self.perms_wrapper.get_local_site()))
 
     def __getitem__(self, perm_name):
-        return self.user.has_perm('%s.%s' % (self.module_name, perm_name),
+        return self.user.has_perm('%s.%s' % (self.app_label, perm_name),
                                   self.perms_wrapper.get_local_site())
 
     def __nonzero__(self):
@@ -34,8 +34,8 @@ class AllPermsWrapper(PermWrapper):
         self.local_site_name = local_site_name
         self.local_site = None
 
-    def __getitem__(self, module_name):
-        return AllPermsLookupDict(self.user, module_name, self)
+    def __getitem__(self, app_label):
+        return AllPermsLookupDict(self.user, app_label, self)
 
     def get_local_site(self):
         if self.local_site_name is None:
diff --git a/reviewboard/site/tests.py b/reviewboard/site/tests.py
index 9ecb9fe46ffb038dcf394a7bb016018a900c65a8..a175af08dfb5a2b49b803f165f39fe1a5d851d6d 100644
--- a/reviewboard/site/tests.py
+++ b/reviewboard/site/tests.py
@@ -1,12 +1,15 @@
 from __future__ import unicode_literals
 
-from django.contrib.auth.models import User
+from django.contrib.auth.models import Permission, User
 from django.http import HttpRequest
 from django.template import Context, Template
-from django.test import TestCase
+from djblets.testing.decorators import add_fixtures
 
+from reviewboard.accounts.models import LocalSiteProfile
+from reviewboard.site.context_processors import AllPermsWrapper
 from reviewboard.site.models import LocalSite
 from reviewboard.site.urlresolvers import local_site_reverse
+from reviewboard.testing.testcase import TestCase
 
 
 class BasicTests(TestCase):
@@ -62,6 +65,43 @@ class BasicTests(TestCase):
             '/users/sample-user/')
 
 
+class PermissionWrapperTests(TestCase):
+    """Testing the LocalSite-aware permissions wrapper."""
+    def setUp(self):
+        super(PermissionWrapperTests, self).setUp()
+
+        self.user = User.objects.get(username='doc')
+        self.assertFalse(self.user.is_superuser)
+
+    @add_fixtures(['test_users', 'test_site'])
+    def test_lookup_global_permission(self):
+        """Testing AllPermsWrapper with global permission lookup"""
+        self.user.user_permissions.add(
+            Permission.objects.get(codename='delete_reviewrequest'))
+
+        perms = AllPermsWrapper(self.user, self.local_site_name)
+
+        self.assertIn('reviews.delete_reviewrequest', perms)
+        self.assertNotIn('reviews.fake_permission', perms)
+
+    @add_fixtures(['test_users', 'test_site'])
+    def test_lookup_site_permission(self):
+        """Testing AllPermsWrapper with site permission lookup"""
+        local_site  = LocalSite.objects.get(name=self.local_site_name)
+
+        local_site_profile = LocalSiteProfile.objects.create(
+            user=self.user,
+            profile=self.user.get_profile(),
+            local_site=local_site)
+        local_site_profile.permissions['reviews.can_change_status'] = True
+        local_site_profile.save()
+
+        perms = AllPermsWrapper(self.user, self.local_site_name)
+
+        self.assertIn('reviews.can_change_status', perms)
+        self.assertNotIn('reviews.fake_permission', perms)
+
+
 class TemplateTagTests(TestCase):
     def test_local_site_url_with_no_local_site(self):
         """Testing localsite's {% url %} with no local site"""
