44from rangefilter .filter import DateRangeFilter
55from time_tracker .resources import TimeReportResource
66
7+ from django .contrib import admin
8+
9+ from django_admin_multiple_choice_list_filter .list_filters import MultipleChoiceListFilter
10+
11+ from time_tracker .models .time_report import TimeReport
12+ from time_tracker .models .profile import Profile
13+ from time_tracker .models .project import Project
14+
15+ class NamesFilter (MultipleChoiceListFilter ):
16+ title = 'Profile'
17+ parameter_name = 'profile__in'
18+
19+ def lookups (self , request , model_admin ):
20+ return [(profile .id ,profile .full_name ) for profile in Profile .objects .order_by ('first_name' , 'last_name' ).all ()]
21+
22+ class ProjectFilter (MultipleChoiceListFilter ):
23+ title = 'Project'
24+ parameter_name = 'project__in'
25+
26+ def lookups (self , request , model_admin ):
27+ return [(project .id ,project .name ) for project in Project .objects .order_by ('name' ).all ()]
728
829class TimeReportAdmin (ExportMixin , admin .ModelAdmin ):
930 search_fields = ("id" , "name" ,)
10- ordering = ("date" ,)
31+ ordering = ("- date" ,)
1132 list_display = ("date" , "project_name" , "profile_full_name" , "name" , "hours" , "is_active" ,)
12- list_filter = (('date' , DateRangeFilter ), "profile" , "project" , "is_active" ,)
33+ list_filter = (('date' , DateRangeFilter ), NamesFilter , ProjectFilter , "is_active" ,)
1334 resource_class = TimeReportResource
1435
1536 def profile_full_name (self , obj ):
@@ -22,3 +43,4 @@ def project_name(self, obj):
2243
2344 profile_full_name .short_description = 'Profile'
2445 project_name .short_description = 'Project'
46+
0 commit comments