def serialize(self): return { "iso_week": Week.fromordinal(self.week).isoformat(), "week_date": Week.fromordinal(self.week).monday().isoformat(), "user_id": self.user_id, "id": self.id, "project_id": self.project_id, "hours": self.hours, }
def serialize(self): return { "team_id": self.team_id, "date": self.date.isoformat(), "hours_off": self.hours_off, "week": Week.fromordinal(self.week).isoformat(), }
def test_constructors(self): w = Week(2011,1) self.assertTrue(w) self.assertEqual(str(w), "2011W01") w = Week(2011,0) self.assertEqual(str(w), "2010W52") w = Week(2011,-1) self.assertEqual(str(w), "2010W51") w = Week(2011,52) self.assertEqual(str(w), "2011W52") w = Week(2011,53) self.assertEqual(str(w), "2012W01") w = Week(2011,54) self.assertEqual(str(w), "2012W02") w = Week(2009,51) self.assertEqual(str(w), "2009W51") w = Week(2009,52) self.assertEqual(str(w), "2009W52") w = Week(2009,53) self.assertEqual(str(w), "2010W01") w = Week(2009,54) self.assertEqual(str(w), "2010W02") w = Week.thisweek() self.assertTrue(w) w = Week.fromordinal(1) self.assertEqual(str(w), "0001W01") w = Week.fromordinal(2) self.assertEqual(str(w), "0001W02") w = Week.fromordinal(521723) self.assertEqual(str(w), "9999W52") w = Week.fromstring("2011W01") self.assertEqual(str(w), "2011W01") w = Week.fromstring("2011-W01") self.assertEqual(str(w), "2011W01") from datetime import date w = Week.withdate(date(2011, 5, 17)) self.assertEqual(str(w), "2011W20") self.assertEqual(Week.last_week_of_year(2009), Week(2009, 52)) self.assertEqual(Week.last_week_of_year(2010), Week(2010, 52)) self.assertEqual(Week.last_week_of_year(2011), Week(2011, 52)) self.assertEqual(Week.last_week_of_year(9999), Week(9999, 52)) self.assertRaises(ValueError, lambda: Week(0, 0)) self.assertRaises(ValueError, lambda: Week.fromstring("0000W00")) self.assertRaises(ValueError, lambda: Week.fromstring("foo")) self.assertRaises(ValueError, lambda: Week.fromordinal(-1)) self.assertRaises(ValueError, lambda: Week.fromordinal(0)) self.assertRaises(ValueError, lambda: Week.fromordinal(521724)) self.assertRaises(ValueError, lambda: Week.last_week_of_year(0)) self.assertRaises(ValueError, lambda: Week.last_week_of_year(10000))
def get_schedule(user_id: int): if not user_util.get_from_id(user_id): return api_error_helpers.item_not_found("user", "id", user_id) year = request.args.get("year", default=None, type=int) if not year: return api_error_helpers.missing_url_arg("year") start_week = Week(year, 1) end_week = Week.last_week_of_year(year) user_projects = user_util.get_projects_for_period(user_id=user_id, start_week=start_week, end_week=end_week) project_index = { proj.id: index for index, proj in enumerate(user_projects) } full_schedule = [[0 for project in user_projects] for week in Week.weeks_of_year(year)] schedule_dict = schedule_util.get_user_schedules(user_id, start_week.toordinal(), end_week.toordinal()) print(schedule_dict) for week_project, schedule in schedule_dict.items(): week_index = Week.fromordinal(week_project.week).week - 1 full_schedule[week_index][project_index[ week_project.project_id]] = schedule.hours return jsonify( projects=list(map(lambda x: x.serialize(), user_projects)), schedule=full_schedule, )
def test_constructors(self): w = Week(2011, 1) self.assertTrue(w) self.assertEqual(str(w), "2011W01") w = Week(2011, 0) self.assertEqual(str(w), "2010W52") w = Week(2011, -1) self.assertEqual(str(w), "2010W51") w = Week(2011, 52) self.assertEqual(str(w), "2011W52") w = Week(2011, 53) self.assertEqual(str(w), "2012W01") w = Week(2011, 54) self.assertEqual(str(w), "2012W02") w = Week(2009, 51) self.assertEqual(str(w), "2009W51") w = Week(2009, 52) self.assertEqual(str(w), "2009W52") w = Week(2009, 53) self.assertEqual(str(w), "2009W53") w = Week(2009, 54) self.assertEqual(str(w), "2010W01") w = Week.thisweek() self.assertTrue(w) w = Week.fromordinal(1) self.assertEqual(str(w), "0001W01") w = Week.fromordinal(2) self.assertEqual(str(w), "0001W02") w = Week.fromordinal(521723) self.assertEqual(str(w), "9999W52") w = Week.fromstring("2011W01") self.assertEqual(str(w), "2011W01") w = Week.fromstring("2011-W01") self.assertEqual(str(w), "2011W01") from datetime import date w = Week.withdate(date(2011, 5, 17)) self.assertEqual(str(w), "2011W20") weeks = list(Week.weeks_of_year(2009)) self.assertEqual(len(weeks), 53) self.assertEqual(weeks[0], Week(2009, 1)) self.assertEqual(weeks[-1], Week(2009, 53)) weeks = list(Week.weeks_of_year(2011)) self.assertEqual(len(weeks), 52) self.assertEqual(weeks[0], Week(2011, 1)) self.assertEqual(weeks[-1], Week(2011, 52)) self.assertEqual(Week.last_week_of_year(2009), Week(2009, 53)) self.assertEqual(Week.last_week_of_year(2010), Week(2010, 52)) self.assertEqual(Week.last_week_of_year(2011), Week(2011, 52)) self.assertEqual(Week.last_week_of_year(9999), Week(9999, 52)) self.assertRaises(ValueError, lambda: Week(0, 0)) self.assertRaises(ValueError, lambda: Week.fromstring("0000W00")) self.assertRaises(ValueError, lambda: Week.fromstring("foo")) self.assertRaises(ValueError, lambda: Week.fromordinal(-1)) self.assertRaises(ValueError, lambda: Week.fromordinal(0)) self.assertRaises(ValueError, lambda: Week.fromordinal(521724)) self.assertRaises(ValueError, lambda: Week.last_week_of_year(0)) self.assertRaises(ValueError, lambda: Week.last_week_of_year(10000))
def weeks(start: date, end: date) -> Iterator[Week]: for week in range( Week.withdate(start).toordinal(), Week.withdate(end).toordinal() + 1): yield Week.fromordinal(week)