rafalp 6 лет назад
Родитель
Сommit
7fa4119124

+ 5 - 0
misago/admin/templatetags/misago_admin_form.py

@@ -9,6 +9,11 @@ def form_row(field, label_class=None, field_class=None):
     return {"field": field, "label_class": label_class, "field_class": field_class}
 
 
+@register.inclusion_tag("misago/admin/form/checkbox_row.html")
+def form_checkbox_row(field, label_class=None, field_class=None):
+    return {"field": field, "label_class": label_class, "field_class": field_class}
+
+
 @register.inclusion_tag("misago/admin/form/input.html")
 def form_input(field):
     attrs = field.field.widget.attrs

+ 5 - 3
misago/legal/forms.py

@@ -58,14 +58,16 @@ class AgreementForm(forms.ModelForm):
 
 
 class FilterAgreementsForm(forms.Form):
-    type = forms.MultipleChoiceField(
-        label=_("Type"), required=False, choices=Agreement.TYPE_CHOICES
+    type = forms.ChoiceField(
+        label=_("Type"),
+        required=False,
+        choices=[("", _("All types")),] + Agreement.TYPE_CHOICES,
     )
     content = forms.CharField(label=_("Content"), required=False)
 
     def filter_queryset(self, criteria, queryset):
         if criteria.get("type") is not None:
-            queryset = queryset.filter(type__in=criteria["type"])
+            queryset = queryset.filter(type=criteria["type"])
 
         if criteria.get("content"):
             search_title = Q(title__icontains=criteria["content"])

+ 2 - 2
misago/templates/misago/admin/agreements/list.html

@@ -135,12 +135,12 @@
 
 {% block filters-modal-body %}
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.type %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.content %}
   </div>
 </div>

+ 4 - 4
misago/templates/misago/admin/attachments/list.html

@@ -79,22 +79,22 @@
 
 {% block filters-modal-body %}
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.uploader %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.filename %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.filetype %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.is_orphan %}
   </div>
 </div>

+ 8 - 4
misago/templates/misago/admin/bans/list.html

@@ -95,18 +95,22 @@
 
 {% block filters-modal-body %}
 <div class="row">
-  <div class="col-md-6">
+  <div class="col">
     {% form_row filter_form.check_type %}
   </div>
-  <div class="col-md-6">
+</div>
+<div class="row">
+  <div class="col">
     {% form_row filter_form.value %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-6">
+  <div class="col">
     {% form_row filter_form.registration_only %}
   </div>
-  <div class="col-md-6">
+</div>
+<div class="row">
+  <div class="col">
     {% form_row filter_form.state %}
   </div>
 </div>

+ 3 - 3
misago/templates/misago/admin/datadownloads/list.html

@@ -93,17 +93,17 @@
 
 {% block filters-modal-body %}
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.status %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.user %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.requested_by %}
   </div>
 </div>

+ 17 - 0
misago/templates/misago/admin/form/checkbox_row.html

@@ -0,0 +1,17 @@
+{% load misago_admin_form %}
+<div class="form-group{% if field.errors %} has-error{% endif %}">
+  <div class="custom-control custom-checkbox">
+    <input type="checkbox" class="custom-control-input{% if field_class %} {{ field_class }}{% endif %}" id="{{ field.id_for_label }}" name="{{ field.html_name }}" value="1"{% if field.required %} required{% endif %}{% if field.value %} checked{% endif %}>
+    <label class="custom-control-label{% if label_class %} {{ label_class }}{% endif %}" for="{{ field.id_for_label }}">
+      {{ field.label }}
+    </label>
+    {% for error in field.errors %}
+      <div class="text-danger">
+        <strong>{{ error }}</strong>
+      </div>
+    {% endfor %}
+    {% if field.help_text %}
+      <div class="help-block">{{ field.help_text }}</div>
+    {% endif %}
+  </div>
+</div>

+ 14 - 14
misago/templates/misago/admin/users/list.html

@@ -103,7 +103,7 @@
 
 
 {% block emptylist %}
-<td colspan="{{ 10|add:extra_actions_len }}">
+<td colspan="{{ 7|add:extra_actions_len }}">
   <p>{% trans "No users matching search criteria have been found." %}</p>
 </td>
 {% endblock emptylist %}
@@ -111,40 +111,40 @@
 
 {% block filters-modal-body %}
 <div class="row">
-  <div class="col-md-6">
+  <div class="col">
     {% form_row filter_form.username %}
   </div>
-  <div class="col-md-6">
+  <div class="col">
     {% form_row filter_form.email %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-6">
+  <div class="col">
     {% form_row filter_form.rank %}
   </div>
-  <div class="col-md-6">
+  <div class="col">
     {% form_row filter_form.role %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-12">
+  <div class="col">
     {% form_row filter_form.profilefields %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-6">
-    {% form_row filter_form.inactive %}
+  <div class="col">
+    {% form_checkbox_row filter_form.is_inactive %}
   </div>
-  <div class="col-md-6">
-    {% form_row filter_form.disabled %}
+  <div class="col">
+    {% form_checkbox_row filter_form.is_disabled %}
   </div>
 </div>
 <div class="row">
-  <div class="col-md-6">
-    {% form_row filter_form.is_deleting_account %}
+  <div class="col">
+    {% form_checkbox_row filter_form.is_deleting_account %}
   </div>
-  <div class="col-md-6">
-    {% form_row filter_form.is_staff %}
+  <div class="col">
+    {% form_checkbox_row filter_form.is_staff %}
   </div>
 </div>
 {% endblock filters-modal-body %}

+ 6 - 6
misago/users/forms/admin.py

@@ -311,10 +311,10 @@ class BaseFilterUsersForm(forms.Form):
     username = forms.CharField(label=_("Username starts with"), required=False)
     email = forms.CharField(label=_("E-mail starts with"), required=False)
     profilefields = forms.CharField(label=_("Profile fields contain"), required=False)
-    inactive = YesNoSwitch(label=_("Inactive only"))
-    disabled = YesNoSwitch(label=_("Disabled only"))
-    is_staff = YesNoSwitch(label=_("Admins only"))
-    is_deleting_account = YesNoSwitch(label=_("Deleting their accounts"))
+    is_inactive = forms.BooleanField(label=_("Requires activation"))
+    is_disabled = forms.BooleanField(label=_("Account disabled"))
+    is_staff = forms.BooleanField(label=_("Administrator"))
+    is_deleting_account = forms.BooleanField(label=_("Deletes their account"))
 
     def filter_queryset(self, criteria, queryset):
         if criteria.get("username"):
@@ -331,10 +331,10 @@ class BaseFilterUsersForm(forms.Form):
         if criteria.get("role"):
             queryset = queryset.filter(roles__id=criteria.get("role"))
 
-        if criteria.get("inactive"):
+        if criteria.get("is_inactive"):
             queryset = queryset.filter(requires_activation__gt=0)
 
-        if criteria.get("disabled"):
+        if criteria.get("is_disabled"):
             queryset = queryset.filter(is_active=False)
 
         if criteria.get("is_staff"):

+ 2 - 2
misago/users/tests/test_useradmin_views.py

@@ -68,7 +68,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_c.is_active = False
         user_c.save()
 
-        response = self.client.get("%s&disabled=1" % link_base)
+        response = self.client.get("%s&is_disabled=1" % link_base)
         self.assertEqual(response.status_code, 200)
         self.assertNotContains(response, user_a.username)
         self.assertNotContains(response, user_b.username)
@@ -84,7 +84,7 @@ class UserAdminViewsTests(AdminTestCase):
         self.assertNotContains(response, user_b.username)
         self.assertContains(response, user_c.username)
 
-        response = self.client.get("%s&disabled=1" % link_base)
+        response = self.client.get("%s&is_disabled=1" % link_base)
         self.assertEqual(response.status_code, 200)
         self.assertNotContains(response, user_a.username)
         self.assertNotContains(response, user_b.username)