Browse Source

#646: admin changes for inactive users

Rafał Pitoń 8 years ago
parent
commit
b589f24622

+ 12 - 3
misago/templates/misago/admin/users/list.html

@@ -35,7 +35,13 @@
   </a>
   </a>
 </td>
 </td>
 <td class="item-name {% if item.requires_activation %}text-muted{% endif %}">
 <td class="item-name {% if item.requires_activation %}text-muted{% endif %}">
-  <a href="{{ item.get_absolute_url }}">{{ item }}</a>
+  {% if item.is_active %}
+    <a href="{{ item.get_absolute_url }}">{{ item }}</a>
+  {% else %}
+    <a href="{{ item.get_absolute_url }}" title="{% trans "Is disabled by administrator" %}">
+      <del>{{ item }}</del>
+    </a>
+  {% endif %}
 </td>
 </td>
 <td class="lead text-muted">
 <td class="lead text-muted">
   {% if item.requires_activation_by_admin %}
   {% if item.requires_activation_by_admin %}
@@ -112,10 +118,13 @@
   </div>
   </div>
 </div>
 </div>
 <div class="row">
 <div class="row">
-  <div class="col-md-6">
+  <div class="col-md-4">
     {% form_row search_form.inactive %}
     {% form_row search_form.inactive %}
   </div>
   </div>
-  <div class="col-md-6">
+  <div class="col-md-4">
+    {% form_row search_form.disabled %}
+  </div>
+  <div class="col-md-4">
     {% form_row search_form.is_staff %}
     {% form_row search_form.is_staff %}
   </div>
   </div>
 </div>
 </div>

+ 4 - 0
misago/users/forms/admin.py

@@ -294,6 +294,7 @@ class SearchUsersFormBase(forms.Form):
     username = forms.CharField(label=_("Username starts with"), required=False)
     username = forms.CharField(label=_("Username starts with"), required=False)
     email = forms.CharField(label=_("E-mail starts with"), required=False)
     email = forms.CharField(label=_("E-mail starts with"), required=False)
     inactive = forms.YesNoSwitch(label=_("Inactive only"))
     inactive = forms.YesNoSwitch(label=_("Inactive only"))
+    disabled = forms.YesNoSwitch(label=_("Disabled only"))
     is_staff = forms.YesNoSwitch(label=_("Admins only"))
     is_staff = forms.YesNoSwitch(label=_("Admins only"))
 
 
     def filter_queryset(self, criteria, queryset):
     def filter_queryset(self, criteria, queryset):
@@ -314,6 +315,9 @@ class SearchUsersFormBase(forms.Form):
         if criteria.get('inactive'):
         if criteria.get('inactive'):
             queryset = queryset.filter(requires_activation__gt=0)
             queryset = queryset.filter(requires_activation__gt=0)
 
 
+        if criteria.get('disabled'):
+            queryset = queryset.filter(is_active=False)
+
         if criteria.get('is_staff'):
         if criteria.get('is_staff'):
             queryset = queryset.filter(is_staff=True)
             queryset = queryset.filter(is_staff=True)
 
 

+ 11 - 0
misago/users/tests/test_useradmin_views.py

@@ -47,6 +47,7 @@ class UserAdminViewsTests(AdminTestCase):
         User = get_user_model()
         User = get_user_model()
         user_a = User.objects.create_user('Tyrael', 't123@test.com', 'pass123')
         user_a = User.objects.create_user('Tyrael', 't123@test.com', 'pass123')
         user_b = User.objects.create_user('Tyrion', 't321@test.com', 'pass123')
         user_b = User.objects.create_user('Tyrion', 't321@test.com', 'pass123')
+        user_c = User.objects.create_user('Karen', 't432@test.com', 'pass123')
 
 
         # Search both
         # Search both
         response = self.client.get('%s&username=tyr' % link_base)
         response = self.client.get('%s&username=tyr' % link_base)
@@ -66,6 +67,16 @@ class UserAdminViewsTests(AdminTestCase):
         self.assertContains(response, user_a.username)
         self.assertContains(response, user_a.username)
         self.assertNotContains(response, user_b.username)
         self.assertNotContains(response, user_b.username)
 
 
+        # Search disabled
+        user_c.is_active = False
+        user_c.save()
+
+        response = self.client.get('%s&disabled=1' % link_base)
+        self.assertEqual(response.status_code, 200)
+        self.assertNotContains(response, user_a.username)
+        self.assertNotContains(response, user_b.username)
+        self.assertContains(response, '<del>%s</del>' % user_c.username)
+
     def test_mass_activation(self):
     def test_mass_activation(self):
         """users list activates multiple users"""
         """users list activates multiple users"""
         User = get_user_model()
         User = get_user_model()