def test_members_default_cutoffs(self): """Make sure default membership rules are obeyed.""" earliest, latest = default_membership_cutoff() members = get_members(earliest=earliest, latest=latest) self.assertIn(self.hermione, members) # taught recently self.assertNotIn(self.ron, members) # taught too long ago self.assertNotIn(self.harry, members) # only teaching in the future self.assertIn(self.spiderman, members) # explicit member self.assertEqual(len(members), 2)
def test_members_explicit_earliest(self): """Make sure membership rules are obeyed with explicit earliest date.""" # Set start date to exclude Hermione. earliest = datetime.date.today() - datetime.timedelta(days=1) _, latest = default_membership_cutoff() members = get_members(earliest=earliest, latest=latest) self.assertNotIn(self.hermione, members) # taught recently self.assertNotIn(self.ron, members) # taught too long ago self.assertNotIn(self.harry, members) # only teaching in the future self.assertIn(self.spiderman, members) # explicit member self.assertEqual(len(members), 1)
def get_queryset(self): earliest_default, latest_default = default_membership_cutoff() earliest = self.request.query_params.get('earliest', None) if earliest is not None: try: earliest = datetime.datetime.strptime(earliest, '%Y-%m-%d') \ .date() except ValueError: earliest = earliest_default else: earliest = earliest_default latest = self.request.query_params.get('latest', None) if latest is not None: try: latest = datetime.datetime.strptime(latest, '%Y-%m-%d').date() except ValueError: latest = latest_default else: latest = latest_default return get_members(earliest, latest)