diff --git a/circle/dashboard/tests/test_views.py b/circle/dashboard/tests/test_views.py
index 6bb83d5..3a34197 100644
--- a/circle/dashboard/tests/test_views.py
+++ b/circle/dashboard/tests/test_views.py
@@ -533,6 +533,9 @@ class GroupDetailTest(LoginMixin, TestCase):
         self.u2 = User.objects.create(username='user2', is_staff=True)
         self.u2.set_password('password')
         self.u2.save()
+        self.u3 = User.objects.create(username='user3')
+        self.u3.set_password('password')
+        self.u3.save()
         self.us = User.objects.create(username='superuser', is_superuser=True)
         self.us.set_password('password')
         self.us.save()
@@ -567,6 +570,47 @@ class GroupDetailTest(LoginMixin, TestCase):
         response = c.get('/dashboard/group/1/')
         self.assertEqual(response.status_code, 302)
 
+    def test_superuser_group_page(self):
+        c = Client()
+        self.login(c, 'superuser')
+        response = c.get('/dashboard/group/1/')
+        self.assertEqual(response.status_code, 200)
+
+    def test_acluser_group_page(self):
+        Group.objects.get(pk=1).profile.set_user_level(self.u1, 'operator')
+        c = Client()
+        self.login(c, 'user1')
+        response = c.get('/dashboard/group/1/')
+        self.assertEqual(response.status_code, 200)
+
+    def test_acluser2_group_page(self):
+        Group.objects.get(pk=1).profile.set_user_level(self.u1, 'owner')
+        c = Client()
+        self.login(c, 'user1')
+        response = c.get('/dashboard/group/1/')
+        self.assertEqual(response.status_code, 200)
+
+    def test_unpermitted_user_group_page(self):
+        c = Client()
+        self.login(c, 'user1')
+        response = c.get('/dashboard/group/1/')
+        self.assertEqual(response.status_code, 403)
+
+    def test_user_in_userlist_group_page(self):
+        Group.objects.get(pk=1).user_set.add(self.u1)
+        c = Client()
+        self.login(c, 'user1')
+        response = c.get('/dashboard/group/1/')
+        self.assertEqual(response.status_code, 403)
+
+    def test_groupmember_group_page(self):
+        # user1 is member of g1 - setUp
+        Group.objects.get(pk=1).profile.set_group_level(self.g1, 'owner')
+        c = Client()
+        self.login(c, 'user1')
+        response = c.get('/dashboard/group/1/')
+        self.assertEqual(response.status_code, 200)
+
     def test_permitted_group_delete(self):
         num_of_groups = Group.objects.count()
         c = Client()
@@ -578,11 +622,20 @@ class GroupDetailTest(LoginMixin, TestCase):
     def test_unpermitted_group_delete(self):
         num_of_groups = Group.objects.count()
         c = Client()
-        self.login(c, 'user1')
+        self.login(c, 'user3')
         response = c.post('/dashboard/group/delete/1/')
         self.assertEqual(response.status_code, 302)
         self.assertEqual(Group.objects.count(), num_of_groups)
 
+    def test_acl_group_delete(self):
+        num_of_groups = Group.objects.count()
+        Group.objects.get(pk=1).profile.set_user_level(self.u1, 'owner')
+        c = Client()
+        self.login(c, 'user1')
+        response = c.post('/dashboard/group/delete/1/')
+        self.assertEqual(response.status_code, 302)
+        self.assertEqual(Group.objects.count(), num_of_groups - 1)
+
     def test_anon_group_delete(self):
         num_of_groups = Group.objects.count()
         c = Client()
diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py
index 1f3273b..85ca0ba 100644
--- a/circle/dashboard/views.py
+++ b/circle/dashboard/views.py
@@ -1082,12 +1082,16 @@ class GroupRemoveAclGroupView(GroupRemoveUserView):
         return _("Acl group successfully removed from group!")
 
 
-class GroupDelete(LoginRequiredMixin, SuperuserRequiredMixin, DeleteView):
+class GroupDelete(CheckedDetailView, DeleteView):
 
     """This stuff deletes the group.
     """
     model = Group
     template_name = "dashboard/confirm/base-delete.html"
+    read_level = 'operator'
+
+    def get_has_level(self):
+        return self.object.profile.has_level
 
     def get_template_names(self):
         if self.request.is_ajax():
@@ -1095,12 +1099,6 @@ class GroupDelete(LoginRequiredMixin, SuperuserRequiredMixin, DeleteView):
         else:
             return ['dashboard/confirm/base-delete.html']
 
-    def get_context_data(self, **kwargs):
-        # this is redundant now, but if we wanna add more to print
-        # we'll need this
-        context = super(GroupDelete, self).get_context_data(**kwargs)
-        return context
-
     # github.com/django/django/blob/master/django/views/generic/edit.py#L245
     def delete(self, request, *args, **kwargs):
         object = self.get_object()