Skip to content

Commit

Permalink
Added filter bewaartermijn in Django admin
Browse files Browse the repository at this point in the history
  • Loading branch information
remyvdwereld committed Sep 27, 2024
1 parent e974bce commit 9ddf11d
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion app/apps/cases/admin.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import date
from datetime import date, timedelta

from apps.cases.models import (
Advertisement,
Expand All @@ -20,6 +20,9 @@
from django import forms
from django.contrib import admin
from django.contrib.contenttypes.models import ContentType
from django.db.models import Exists, OuterRef
from django.utils import timezone
from django.utils.translation import gettext_lazy as _


class LabelThemeModelChoiceField(forms.ModelChoiceField):
Expand Down Expand Up @@ -109,6 +112,43 @@ class CaseDocumentAdmin(admin.ModelAdmin):
search_fields = ("case__id",)


class BewaartermijnFilter(admin.SimpleListFilter):
title = _("Verlopen Bewaartermijnen")
parameter_name = "bewaartermijn"

def lookups(self, request, model_admin):
"""Options that will appear in the filter dropdown."""
return (
("toezicht_5_jaar", _("Toezicht bewaartermijn (5 jaar)")),
("handhaving_10_jaar", _("Handhaving bewaartermijn (10 jaar)")),
)

def queryset(self, request, queryset):
"""Filter the queryset based on the selected filter option."""
if self.value() == "toezicht_5_jaar":
# Filter cases that ended more than 5 years ago and have NO status HANDHAVING
five_years_ago = timezone.now().date() - timedelta(days=5 * 365)
return queryset.exclude(
Exists(
CaseState.objects.filter(
case=OuterRef("pk"), status=CaseState.CaseStateChoice.HANDHAVING
)
)
).filter(end_date__lt=five_years_ago)
elif self.value() == "handhaving_10_jaar":
# Filter cases that ended more than 10 years ago and have a status HANDHAVING
ten_years_ago = timezone.now().date() - timedelta(days=10 * 365)
return queryset.filter(
Exists(
CaseState.objects.filter(
case=OuterRef("pk"), status=CaseState.CaseStateChoice.HANDHAVING
)
),
end_date__lt=ten_years_ago,
)
return queryset


@admin.register(Case)
class CaseAdmin(admin.ModelAdmin):
form = CaseAdminForm
Expand All @@ -122,6 +162,7 @@ class CaseAdmin(admin.ModelAdmin):
)
list_filter = (
"theme",
BewaartermijnFilter,
"start_date",
"end_date",
"address__housing_corporation",
Expand Down

0 comments on commit 9ddf11d

Please sign in to comment.