Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Admin > Venteliste: 3 nye filtre: Mulige deltagere til aktivitet, Minimum alder og Maksimum alder #1175

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 70 additions & 1 deletion members/admin/waitinglist_admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,81 @@
from django.urls import reverse
from django.utils.safestring import mark_safe
from django.utils.html import escape
from datetime import date
from django.utils.translation import gettext_lazy as _

from members.models import Union, Department, AdminUserInformation, Municipality
from members.models import (
Union,
Department,
AdminUserInformation,
Municipality,
Activity,
)

import members.models.emailtemplate

# import members.admin.admin_actions
from members.admin.admin_actions import AdminActions


class WaitingListActivityFilter(admin.SimpleListFilter):
title = _("Mulige deltagere til en aktivitet")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hvad med Alders-filter baseret på aktivitet?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eller Korrekt alder for aktivitet?

parameter_name = "activity"

def lookups(self, request, model_admin):
activities = []
for activity in Activity.objects.filter(
activitytype__id__in=["FORLØB", "ARRANGEMENT"], end_date__gte=timezone.now()
).order_by("name"):
activities.append((str(activity.pk), activity.name))
return activities

def queryset(self, request, queryset):
if self.value():
activity = Activity.objects.get(pk=self.value())
min_birth_date = activity.start_date.replace(
year=activity.start_date.year - activity.min_age
)
max_birth_date = activity.start_date.replace(
year=activity.start_date.year - activity.max_age - 1
)
return queryset.filter(
person__birthday__lte=min_birth_date,
person__birthday__gte=max_birth_date,
)
return queryset


class WaitingListMinAgeFilter(admin.SimpleListFilter):
title = _("Minimum alder")
parameter_name = "min_age"

def lookups(self, request, model_admin):
return [(str(age), str(age)) for age in range(0, 101)]

def queryset(self, request, queryset):
if self.value():
min_age = int(self.value())
min_birth_date = date.today().replace(year=date.today().year - min_age)
return queryset.filter(person__birthday__lte=min_birth_date)
return queryset


class WaitingListMaxAgeFilter(admin.SimpleListFilter):
title = _("Maksimum alder")
parameter_name = "max_age"

def lookups(self, request, model_admin):
return [(str(age), str(age)) for age in range(0, 101)]

def queryset(self, request, queryset):
if self.value():
max_age = int(self.value())
max_birth_date = date.today().replace(year=date.today().year - max_age - 1)
return queryset.filter(person__birthday__gte=max_birth_date)
return queryset


class person_waitinglist_union_filter(admin.SimpleListFilter):
title = "Forening"
parameter_name = ""
Expand Down Expand Up @@ -118,6 +184,9 @@ def get_form(self, request, obj=None, change=False, **kwargs):
person_waitinglist_union_filter,
person_waitinglist_department_filter,
person_waitinglist_municipality_filter,
WaitingListActivityFilter, # Add the activity filter
WaitingListMinAgeFilter, # Add the minimum age filter
WaitingListMaxAgeFilter, # Add the maximum age filter
"person__gender",
)

Expand Down
Loading