diff --git a/members/admin/user_admin.py b/members/admin/user_admin.py index 67e4da64..e4c331ef 100644 --- a/members/admin/user_admin.py +++ b/members/admin/user_admin.py @@ -29,7 +29,7 @@ class AdminUserGroupListFilter(admin.SimpleListFilter): parameter_name = "group" def lookups(self, request, model_admin): - groupList = () + groupList = [("none", "(ingen gruppe)")] for aGroup in Group.objects.all().order_by("name"): groupList += ( ( @@ -41,6 +41,8 @@ def lookups(self, request, model_admin): def queryset(self, request, queryset): group_id = request.GET.get(self.parameter_name, None) + if group_id == "none": + return queryset.filter(groups__isnull=True) if group_id: return queryset.filter(groups=group_id) return queryset @@ -51,7 +53,7 @@ class AdminUserUnionListFilter(admin.SimpleListFilter): parameter_name = "union" def lookups(self, request, model_admin): - unionList = () + unionList = [("none", "(ingen forening)"), ("any", "(mindst en forening)")] for aUnion in Union.objects.all().order_by("name"): unionList += ( ( @@ -63,8 +65,12 @@ def lookups(self, request, model_admin): def queryset(self, request, queryset): union_id = request.GET.get(self.parameter_name, None) - if union_id: - return queryset.filter(groups=union_id) + if union_id == "none": + return queryset.filter(adminuserinformation__unions__isnull=True) + elif union_id == "any": + return queryset.exclude(adminuserinformation__unions__isnull=True) + elif union_id: + return queryset.filter(adminuserinformation__unions=union_id) return queryset @@ -73,7 +79,7 @@ class AdminUserDepartmentListFilter(admin.SimpleListFilter): parameter_name = "department" def lookups(self, request, model_admin): - departmentList = () + departmentList = [("none", "(ingen afdeling)"), ("any", "(mindst en afdeling)")] for aDepartment in Department.objects.all().order_by("name"): departmentList += ( ( @@ -84,9 +90,13 @@ def lookups(self, request, model_admin): return departmentList def queryset(self, request, queryset): - union_id = request.GET.get(self.parameter_name, None) - if union_id: - return queryset.filter(groups=union_id) + department_id = request.GET.get(self.parameter_name, None) + if department_id == "none": + return queryset.filter(adminuserinformation__departments__isnull=True) + elif department_id == "any": + return queryset.exclude(adminuserinformation__departments__isnull=True) + if department_id: + return queryset.filter(adminuserinformation__departments=department_id) return queryset