Skip to content

Commit f10ba17

Browse files
sort by latest entries first and add multiselect in the admin panel
1 parent dafce97 commit f10ba17

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

rest/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ behave-django==0.3.0
99
selenium==2.53.6
1010
gunicorn==19.7.1
1111
django-import-export==0.7.0
12-
django-admin-rangefilter==0.3.1
12+
django-admin-rangefilter==0.3.1
13+
django-admin-multiple-choice-list-filter==0.1.1

rest/rest/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
'corsheaders',
4747

4848
'time_tracker',
49+
'django_admin_multiple_choice_list_filter',
4950

5051
'behave_django'
5152
]

rest/time_tracker/admin/time_report.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,33 @@
44
from rangefilter.filter import DateRangeFilter
55
from 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

829
class 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

Comments
 (0)