diff --git a/CHANGES.rst b/CHANGES.rst index c141f54..fa822dc 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -7,6 +7,10 @@ Changelog of TRS - Date input fields now use the browser's much nicer regular date input widget. +- Big UI upgrade: moved from the old bootrap 2 to tailwindcss+daisyui. + +- Project xls export is now date-based instead of week-based. + 3.0 (2026-01-26) ---------------- diff --git a/src/trs/views.py b/src/trs/views.py index 337a931..55de599 100644 --- a/src/trs/views.py +++ b/src/trs/views.py @@ -2961,14 +2961,19 @@ def weeks(self): ) @cached_property - def bookings_per_week_per_person(self): - bookings = ( - Booking.objects.filter(booked_on=self.project, year_week__in=self.weeks) - .values("booked_by", "year_week") - .annotate(models.Sum("hours")) - ) + def days(self): + result = [] + for week in self.weeks: + result += week.days() + return result + + @cached_property + def bookings_per_day_per_person(self): + bookings = Booking.objects.filter( + booked_on=self.project, year_week__in=self.weeks + ).values("booked_by", "date", "hours") return { - (booking["booked_by"], booking["year_week"]): (booking["hours__sum"]) + (booking["booked_by"], booking["date"]): (booking["hours"]) for booking in bookings } @@ -2997,7 +3002,7 @@ def header_line(self): "Verlies", "", ] - result += [week.as_param() for week in self.weeks] + result += [day.isoformat() for day in self.days] return result @property @@ -3020,8 +3025,8 @@ def excel_lines(self): "", ] result += [ - self.bookings_per_week_per_person.get((person.pk, week.pk), 0) - for week in self.weeks + self.bookings_per_day_per_person.get((person.pk, day), 0) + for day in self.days ] yield result