aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fietsboek/summaries.py28
1 files changed, 23 insertions, 5 deletions
diff --git a/fietsboek/summaries.py b/fietsboek/summaries.py
index aa8a84c..e3c58e6 100644
--- a/fietsboek/summaries.py
+++ b/fietsboek/summaries.py
@@ -2,11 +2,10 @@
import datetime
from dataclasses import dataclass
-from typing import Optional, Iterator
+from typing import Iterator, Optional
from babel.dates import format_date
from pyramid.i18n import Localizer
-from pyramid.i18n import TranslationString as _
from . import util
from .models.track import TrackWithMetadata
@@ -310,23 +309,42 @@ class YearContributions:
self.start_date -= datetime.timedelta(days=end_date.weekday())
assert (self.start_date - self.end_date).days <= 53 * 7
- self.tracks = {}
+ self.tracks: dict[datetime.date, list[TrackWithMetadata]] = {}
def add(self, track: TrackWithMetadata):
+ """Adds a track to this overview.
+
+ :param track: The track to add.
+ """
+ if track.date is None:
+ return
date = track.date.date()
- if date >= self.start_date and date <= self.end_date:
+ if self.start_date <= date <= self.end_date:
self.tracks.setdefault(date, []).append(track)
def rows(self) -> Iterator[Iterator[DayContributions]]:
+ """Returns the rows for the overview table.
+
+ Each row is a list of the cells. Seven rows will be returned, one for each weekday.
+
+ :return: An iterator over the rows to render.
+ """
for weekday in range(7):
row = []
day = self.start_date + datetime.timedelta(days=weekday)
while day <= self.end_date:
row.append(DayContributions(day, self.tracks.get(day, [])))
day += ONE_WEEK
- yield row
+ yield iter(row)
def header_row(self, localizer: Localizer) -> Iterator[str | None]:
+ """Returns the header row.
+
+ Each string marks a month name (spanning three columns), and a ``None`` is an empty column.
+
+ :param localizer: The localizer to use.
+ :return: An iterator over the column headers.
+ """
locale = localizer.locale_name
day = self.start_date
while day <= self.end_date: