from collections import defaultdict import datetime def per_manager(timesheets): per_manager = defaultdict(list) # filter timesheets per manager for timesheet in [t for t in timesheets if not t.is_done()]: manager_id = timesheet.approver per_manager[manager_id].append(timesheet) return per_manager def employees(timesheets): return dict([(t.employee.id, t.employee) for t in timesheets]) def previous_monday(date=None): today = date or datetime.date.today() return today + datetime.timedelta(days=-today.weekday(), weeks=-1)