def test_date_range_creation(self): q_a = ( { # Five days (though it looks like four) "q": { "start": datetime.date(2017, 1, 1), "end": datetime.date(2017, 1, 5), "gap": 7, }, "a": [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 5))], }, { # Six days (though it looks like five) "q": { "start": datetime.date(2017, 1, 1), "end": datetime.date(2017, 1, 6), "gap": 7, }, "a": [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 6))], }, { # Eight days (though it looks like seven) "q": { "start": datetime.date(2017, 1, 1), "end": datetime.date(2017, 1, 8), "gap": 7, }, "a": [ (datetime.date(2017, 1, 1), datetime.date(2017, 1, 7)), (datetime.date(2017, 1, 8), datetime.date(2017, 1, 8)), ], }, { # Gap bigger than range "q": { "start": datetime.date(2017, 1, 1), "end": datetime.date(2017, 1, 5), "gap": 1000, }, "a": [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 5))], }, { # Ends before starts "q": { "start": datetime.date(2017, 1, 5), "end": datetime.date(2017, 1, 1), "gap": 7, }, "a": [], }, ) for test in q_a: result = make_date_range_tuples(**test["q"]) with self.subTest("Checking dates", test=test["q"]): self.assertEqual(result, test["a"])
def test_date_range_creation(self): q_a = ( { # Six days (though it looks like five) 'q': { 'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 5), 'gap': 7 }, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 5))], }, { # Seven days (though it looks like six) 'q': { 'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 6), 'gap': 7 }, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 6))], }, { # Eight days (though it looks like seven) 'q': { 'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 8), 'gap': 7 }, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 7)), (datetime.date(2017, 1, 8), datetime.date(2017, 1, 8))], }, { # Gap bigger than range 'q': { 'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 5), 'gap': 1000 }, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 5))], }, { # Ends before starts 'q': { 'start': datetime.date(2017, 1, 5), 'end': datetime.date(2017, 1, 1), 'gap': 7 }, 'a': [], }) for test in q_a: result = make_date_range_tuples(**test['q']) self.assertEqual(result, test['a'])
def date_search(options): """Collects a list of cases from a date range and adds them to the db. :return: None """ start = options["start"] end = options["end"] logger.info("Getting cases between %s and %s, inclusive", start, end) end = min(end, date.today()) date_ranges = make_date_range_tuples(start, end, gap=7) for start, end in date_ranges: tasks.fetch_date_range.apply_async(kwargs={ "start": start, "end": end }, queue=options["queue"])
def query(self, start, end, sort='date_filed', day_span=7): """Query the Free Opinions report one day at a time. :param start: a date object representing the date you want to start at. :param end: a date object representing the date you want to end at. :param sort: the order you wish the results to be in, either `date_filed` or `case_number`. :param day_span: The number of days to query at a time. Defaults to one week. """ if self.court_id in self.EXCLUDED_COURT_IDS: logger.error("Cannot get written opinions report from '%s'. It is " "not provided by the court or is in disuse." % self.court_id) return [] dates = make_date_range_tuples(start, end, gap=day_span) responses = [] for start, end in dates: start = start.strftime('%m/%d/%Y') end = end.strftime('%m/%d/%Y') # Iterate one day at a time. Any more and PACER chokes. logger.info("Querying written opinions report for '%s' between %s " "and %s, ordered by %s" % (self.court_id, start, end, sort)) data = { 'filed_from': start, 'filed_to': end, 'ShowFull': '1', 'Key1': self._normalize_sort_param(sort), 'all_case_ids': '0' } response = self.session.post(self.url + '?1-L_1_0-1', data=data) responses.append(response) return responses
def test_date_range_creation(self): q_a = ({ # Six days (though it looks like five) 'q': {'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 5), 'gap': 7}, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 5))], }, { # Seven days (though it looks like six) 'q': {'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 6), 'gap': 7}, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 6))], }, { # Eight days (though it looks like seven) 'q': {'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 8), 'gap': 7}, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 7)), (datetime.date(2017, 1, 8), datetime.date(2017, 1, 8))], }, { # Gap bigger than range 'q': {'start': datetime.date(2017, 1, 1), 'end': datetime.date(2017, 1, 5), 'gap': 1000}, 'a': [(datetime.date(2017, 1, 1), datetime.date(2017, 1, 5))], }, { # Ends before starts 'q': {'start': datetime.date(2017, 1, 5), 'end': datetime.date(2017, 1, 1), 'gap': 7}, 'a': [], }) for test in q_a: result = make_date_range_tuples(**test['q']) self.assertEqual(result, test['a'])