Browse Source

#400: Refactored warning level model

Rafał Pitoń 10 years ago
parent
commit
a5bca490fa

+ 1 - 7
misago/templates/misago/admin/warnings/form.html

@@ -40,15 +40,9 @@ class="form-horizontal"
 <div class="form-body">
   {% with label_class="col-md-3" field_class="col-md-9" %}
   <fieldset>
-    <legend>{% trans "Name and description" %}</legend>
+    <legend>{% trans "Basic options" %}</legend>
 
     {% form_row form.name label_class field_class %}
-    {% form_row form.description label_class field_class %}
-
-  </fieldset>
-  <fieldset>
-    <legend>{% trans "Expiration time" %}</legend>
-
     {% form_row form.length_in_minutes label_class field_class %}
 
   </fieldset>

+ 2 - 2
misago/templates/misago/profile/warnings.html

@@ -66,7 +66,7 @@
       <div class="panel-footer">
         <ul class="list-unstyled pull-left">
           <li>
-            {% if warning.canceled %}
+            {% if warning.is_canceled %}
             <strong class="state-canceled">
               <span class="fa fa-ban fa-fw"></span>
               {% trans "Canceled" %}
@@ -100,7 +100,7 @@
             </a>
             {% endif %}
           </li>
-          {% if warning.canceled %}
+          {% if warning.is_canceled %}
           <li>
             <span class="fa fa-ban"></span>
             {% capture trimmed as canceler %}

+ 6 - 2
misago/users/migrations/0001_initial.py

@@ -166,7 +166,6 @@ class Migration(migrations.Migration):
             fields=[
                 ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
                 ('name', models.CharField(max_length=255)),
-                ('description', models.TextField(null=True, blank=True)),
                 ('level', models.PositiveIntegerField(default=1, db_index=True)),
                 ('length_in_minutes', models.PositiveIntegerField(default=0)),
                 ('restricts_posting_replies', models.PositiveIntegerField(default=0)),
@@ -184,7 +183,7 @@ class Migration(migrations.Migration):
                 ('given_on', models.DateTimeField(default=django.utils.timezone.now)),
                 ('giver_username', models.CharField(max_length=255)),
                 ('giver_slug', models.CharField(max_length=255)),
-                ('canceled', models.BooleanField(default=False)),
+                ('is_canceled', models.BooleanField(default=False)),
                 ('canceled_on', models.DateTimeField(null=True, blank=True)),
                 ('canceler_username', models.CharField(max_length=255)),
                 ('canceler_slug', models.CharField(max_length=255)),
@@ -196,4 +195,9 @@ class Migration(migrations.Migration):
             },
             bases=(models.Model,),
         ),
+        CreatePartialIndex(
+            field='UserWarning.is_canceled',
+            index_name='misago_userwarning_is_canceled_partial',
+            condition='is_canceled = FALSE',
+        ),
     ]

+ 3 - 4
misago/users/models/warnings.py

@@ -59,7 +59,6 @@ class WarningLevelManager(models.Manager):
 
 class WarningLevel(models.Model):
     name = models.CharField(max_length=255)
-    description = models.TextField(null=True, blank=True)
     level = models.PositiveIntegerField(default=1, db_index=True)
     length_in_minutes = models.PositiveIntegerField(default=0)
     restricts_posting_replies = models.PositiveIntegerField(
@@ -125,7 +124,7 @@ class UserWarning(models.Model):
                                  related_name="+")
     giver_username = models.CharField(max_length=255)
     giver_slug = models.CharField(max_length=255)
-    canceled = models.BooleanField(default=False)
+    is_canceled = models.BooleanField(default=False)
     canceled_on = models.DateTimeField(null=True, blank=True)
     canceler = models.ForeignKey(settings.AUTH_USER_MODEL,
                                     null=True, blank=True,
@@ -135,14 +134,14 @@ class UserWarning(models.Model):
     canceler_slug = models.CharField(max_length=255)
 
     def cancel(self, canceler):
-        self.canceled = True
+        self.is_canceled = True
         self.canceled_on = timezone.now()
         self.canceler = canceler
         self.canceler_username = canceler.username
         self.canceler_slug = canceler.slug
 
         self.save(update_fields=(
-            'canceled',
+            'is_canceled',
             'canceled_on',
             'canceler',
             'canceler_username',

+ 1 - 1
misago/users/permissions/warnings.py

@@ -128,7 +128,7 @@ def allow_cancel_warning(user, target):
         if target.giver_id != user.pk:
             message = _("You can't cancel warnings issued by other users.")
             raise PermissionDenied(message)
-    if target.canceled:
+    if target.is_canceled:
         raise PermissionDenied(_("This warning is already canceled."))
 can_cancel_warning = return_boolean(allow_cancel_warning)
 

+ 5 - 5
misago/users/tests/test_warnings_views.py

@@ -159,7 +159,7 @@ class CancelWarningTests(WarningTestCase):
                 'warning_id': warning.pk
             }))
         self.assertEqual(response.status_code, 403)
-        self.assertFalse(self.test_user.warnings.get(id=warning.pk).canceled)
+        self.assertFalse(self.test_user.warnings.get(id=warning.pk).is_canceled)
 
     def test_no_permission_other(self):
         """can't cancel other mod warnings"""
@@ -179,7 +179,7 @@ class CancelWarningTests(WarningTestCase):
                 'warning_id': warning.pk
             }))
         self.assertEqual(response.status_code, 403)
-        self.assertFalse(self.test_user.warnings.get(id=warning.pk).canceled)
+        self.assertFalse(self.test_user.warnings.get(id=warning.pk).is_canceled)
 
         warning = warn_user(self.test_admin, self.test_user)
         response = self.client.post(
@@ -191,7 +191,7 @@ class CancelWarningTests(WarningTestCase):
         self.assertEqual(response.status_code, 302)
 
         warning = self.test_user.warnings.get(id=warning.pk)
-        self.assertTrue(self.test_user.warnings.get(id=warning.pk).canceled)
+        self.assertTrue(self.test_user.warnings.get(id=warning.pk).is_canceled)
 
     def test_cancel_other_and_owned_warnings(self):
         """cancel everyone's warnings"""
@@ -211,7 +211,7 @@ class CancelWarningTests(WarningTestCase):
                 'warning_id': warning.pk
             }))
         self.assertEqual(response.status_code, 302)
-        self.assertTrue(self.test_user.warnings.get(id=warning.pk).canceled)
+        self.assertTrue(self.test_user.warnings.get(id=warning.pk).is_canceled)
 
         warning = warn_user(self.test_admin, self.test_user)
         response = self.client.post(
@@ -221,7 +221,7 @@ class CancelWarningTests(WarningTestCase):
                 'warning_id': warning.pk
             }))
         self.assertEqual(response.status_code, 302)
-        self.assertTrue(self.test_user.warnings.get(id=warning.pk).canceled)
+        self.assertTrue(self.test_user.warnings.get(id=warning.pk).is_canceled)
 
 
 class DeleteWarningTests(WarningTestCase):

+ 1 - 1
misago/users/views/profile.py

@@ -90,7 +90,7 @@ def warnings(request, profile=None, page=0):
 
     active_warnings = warning_level - warnings.start_index() + 1
     for warning in warnings.object_list:
-        if warning.canceled:
+        if warning.is_canceled:
             warning.is_active = False
         else:
             warning.is_active = active_warnings > 0

+ 1 - 1
misago/users/warnings.py

@@ -17,7 +17,7 @@ def fetch_user_valid_warnings(user):
         return []
 
     # build initial list of valid exceptions
-    queryset = user.warnings.exclude(canceled=True)
+    queryset = user.warnings.exclude(is_canceled=True)
     warnings = [w for w in queryset.order_by('-id')[:max_level]]
 
     if not warnings: