From 68092b51f8a977043a9884090c30681cf16ddef7 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Sat, 8 Jan 2022 11:31:01 +0100
Subject: [PATCH] Remove is_active field on Person because it was unused

---
 CHANGELOG.rst                                   |  1 +
 aleksis/core/filters.py                         |  4 ++--
 aleksis/core/forms.py                           |  2 --
 .../migrations/0031_remove_person_is_active.py  | 17 +++++++++++++++++
 aleksis/core/models.py                          |  1 -
 aleksis/core/views.py                           |  8 +++-----
 docs/dev/04_materialize_templates.rst           |  3 +--
 7 files changed, 24 insertions(+), 12 deletions(-)
 create mode 100644 aleksis/core/migrations/0031_remove_person_is_active.py

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 650f704a8..9d37a25ab 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -25,6 +25,7 @@ Fixed
 * GroupManager.get_queryset() returned an incomplete QuerySet
 * OAuth was broken by a non-semver-adhering django-oauth-toolkit update
 * Too long texts in chips didn't result in a larger chip.
+* The ``Person`` model had an ``is_active`` flag that was used in unclear ways; it is now removed
 
 Changed
 ~~~~~~~
diff --git a/aleksis/core/filters.py b/aleksis/core/filters.py
index eb5724b32..ea8a7cacd 100644
--- a/aleksis/core/filters.py
+++ b/aleksis/core/filters.py
@@ -72,11 +72,11 @@ class PersonFilter(FilterSet):
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.form.layout = Layout(Row("name", "contact"), Row("is_active", "sex", "primary_group"))
+        self.form.layout = Layout(Row("name", "contact"), Row("sex", "primary_group"))
 
     class Meta:
         model = Person
-        fields = ["sex", "is_active", "primary_group"]
+        fields = ["sex", "primary_group"]
 
 
 class PermissionFilter(FilterSet):
diff --git a/aleksis/core/forms.py b/aleksis/core/forms.py
index eb2465870..680da9d59 100644
--- a/aleksis/core/forms.py
+++ b/aleksis/core/forms.py
@@ -48,7 +48,6 @@ class PersonForm(ExtensibleForm):
             _("Base data"),
             "short_name",
             Row("user", "primary_group"),
-            "is_active",
             Row("first_name", "additional_name", "last_name"),
         ),
         Fieldset(_("Address"), Row("street", "housenumber"), Row("postal_code", "place")),
@@ -66,7 +65,6 @@ class PersonForm(ExtensibleForm):
         model = Person
         fields = [
             "user",
-            "is_active",
             "first_name",
             "last_name",
             "additional_name",
diff --git a/aleksis/core/migrations/0031_remove_person_is_active.py b/aleksis/core/migrations/0031_remove_person_is_active.py
new file mode 100644
index 000000000..a3c3f7a44
--- /dev/null
+++ b/aleksis/core/migrations/0031_remove_person_is_active.py
@@ -0,0 +1,17 @@
+# Generated by Django 3.2.11 on 2022-01-08 10:30
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0030_user_attributes'),
+    ]
+
+    operations = [
+        migrations.RemoveField(
+            model_name='person',
+            name='is_active',
+        ),
+    ]
diff --git a/aleksis/core/models.py b/aleksis/core/models.py
index 133af2022..dbc5ed5bf 100644
--- a/aleksis/core/models.py
+++ b/aleksis/core/models.py
@@ -176,7 +176,6 @@ class Person(ExtensibleModel):
         related_name="person",
         verbose_name=_("Linked user"),
     )
-    is_active = models.BooleanField(verbose_name=_("Is person active?"), default=True)
 
     first_name = models.CharField(verbose_name=_("First name"), max_length=255)
     last_name = models.CharField(verbose_name=_("Last name"), max_length=255)
diff --git a/aleksis/core/views.py b/aleksis/core/views.py
index cfb9cd5b3..0d7812384 100644
--- a/aleksis/core/views.py
+++ b/aleksis/core/views.py
@@ -297,9 +297,7 @@ def persons(request: HttpRequest) -> HttpResponse:
     context = {}
 
     # Get all persons
-    persons = get_objects_for_user(
-        request.user, "core.view_person", Person.objects.filter(is_active=True)
-    )
+    persons = get_objects_for_user(request.user, "core.view_person", Person.objects.all())
 
     # Get filter
     persons_filter = PersonFilter(request.GET, queryset=persons)
@@ -346,7 +344,7 @@ def group(request: HttpRequest, id_: int) -> HttpResponse:
     group = Group.objects.get(pk=id_)
 
     # Get members
-    members = group.members.filter(is_active=True)
+    members = group.members.all()
 
     # Build table
     members_table = PersonsTable(members)
@@ -354,7 +352,7 @@ def group(request: HttpRequest, id_: int) -> HttpResponse:
     context["members_table"] = members_table
 
     # Get owners
-    owners = group.owners.filter(is_active=True)
+    owners = group.owners.all()
 
     # Build table
     owners_table = PersonsTable(owners)
diff --git a/docs/dev/04_materialize_templates.rst b/docs/dev/04_materialize_templates.rst
index 3e7979cf1..882604168 100644
--- a/docs/dev/04_materialize_templates.rst
+++ b/docs/dev/04_materialize_templates.rst
@@ -111,7 +111,6 @@ In your ``forms.py`` you can configure the layout of the fields like in the Edit
             _("Base data"),
             "short_name",
             Row("user", "primary_group"),
-            "is_active",
             Row("first_name", "additional_name", "last_name"),
         ),
         Fieldset(_("Address"), Row("street", "housenumber"), Row("postal_code", "place")),
@@ -136,4 +135,4 @@ After you've loaded the template tag, you can simply generate the table like thi
 
 .. _MaterializeCSS: https://materializecss.com/
 .. _django-material: https://pypi.org/project/django-material/
-.. _Extended Navbar with Tabs: https://materializecss.com/navbar.html#navbar-tabs
\ No newline at end of file
+.. _Extended Navbar with Tabs: https://materializecss.com/navbar.html#navbar-tabs
-- 
GitLab