def main(): file_manager = FileManager() file_manager.create_download_directory() last_run_date = file_manager.get_most_recent_download_date() if last_run_date is None: start_date = constants.EARLIEST_GRANT_AWARD_DATE else: start_date = last_run_date + datetime.timedelta(days=1) if start_date <= constants.MOST_RECENT_GRANT_AWARD_DATE: download_period = DownloadPeriod(start_date) while download_period: # This is really inefficient, but we're going to create a new browser session for each request. This is # because of how report results are presented. It would be difficult to determine which results go with which # date ranges otherwise. with Scraper() as scraper: if scraper.get_query_results(file_manager, download_period): download_period = download_period.increment_period() else: download_period.downgrade_period() else: print "Downloads directory is up to date. Quitting."
def test_iteration(self): d = DownloadPeriod(date(1999, 7, 15), date(2001, 12, 5)) self.assertEqual(d.current_start_date, date(1999, 7, 15)) self.assertEqual(d.current_end_date, date(1999, 12, 31)) d.increment_period() self.assertEqual(d.current_start_date, date(2000, 1, 1)) self.assertEqual(d.current_end_date, date(2000, 12, 31)) d.downgrade_period() self.assertEqual(d.current_start_date, date(2000, 1, 1)) self.assertEqual(d.current_end_date, date(2000, 1, 31)) d.increment_period() self.assertEqual(d.current_start_date, date(2000, 2, 1)) self.assertEqual(d.current_end_date, date(2000, 2, 29)) d.increment_period() self.assertEqual(d.current_start_date, date(2000, 3, 1)) self.assertEqual(d.current_end_date, date(2000, 3, 31)) d.downgrade_period() self.assertEqual(d.current_start_date, date(2000, 3, 1)) self.assertEqual(d.current_end_date, date(2000, 3, 5)) d.increment_period() d.increment_period() d.increment_period() d.increment_period() self.assertEqual(d.current_start_date, date(2000, 3, 27)) self.assertEqual(d.current_end_date, date(2000, 3, 31)) d.increment_period() self.assertEqual(d.current_start_date, date(2000, 4, 1)) self.assertEqual(d.current_end_date, date(2000, 4, 30)) d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() self.assertEqual(d.current_start_date, date(2001, 1, 1)) self.assertEqual(d.current_end_date, date(2001, 12, 5)) d.downgrade_period() d.downgrade_period() d.downgrade_period() self.assertEqual(d.current_start_date, date(2001, 1, 1)) self.assertEqual(d.current_end_date, date(2001, 1, 1)) d.increment_period() self.assertEqual(d.current_start_date, date(2001, 1, 2)) self.assertEqual(d.current_end_date, date(2001, 1, 2)) d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() self.assertEqual(d.current_start_date, date(2001, 1, 8)) self.assertEqual(d.current_end_date, date(2001, 1, 14)) d.increment_period() d.increment_period() d.increment_period() self.assertEqual(d.current_start_date, date(2001, 1, 29)) self.assertEqual(d.current_end_date, date(2001, 1, 31)) d.increment_period() self.assertEqual(d.current_start_date, date(2001, 2, 1)) self.assertEqual(d.current_end_date, date(2001, 2, 28)) d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() d.increment_period() self.assertEqual(d.current_start_date, date(2001, 12, 1)) self.assertEqual(d.current_end_date, date(2001, 12, 5)) end_year = 2001 start_year = end_year - 3 d = DownloadPeriod(date(start_year, 7, 15), date(end_year, 12, 31)) while d: self.assertEqual(d.current_end_date, date(start_year, 12, 31)) start_year += 1 d = d.increment_period()