def __format_calendar(self, year, month, rows): """ カレンダー形式のレスポンスに整形 """ # 日曜始まり cl = TextCalendar(firstweekday=6) # 週単位での日付と曜日を取得 weeks = cl.monthdays2calendar(year, month) res = [] for week in weeks: week_data = [] for day in week: current_date, weekday = day data = next( (row for row in rows if row['sales_day'] == current_date), None) is_saturday = True if weekday == self.SATURDAY else False is_sunday = True if weekday == self.SUNDAY else False sales_day = None total_price = None if data is not None: sales_day = data['sales_date'].strftime('%Y-%m-%d') total_price = int(data['total_price']) week_data.append({ 'sales_date': current_date, 'sales_day': sales_day, 'amount': total_price, 'is_saturday': is_saturday, 'is_holiday': is_sunday, 'daily_sales_url': '' }) res.append(week_data) return res