def conditional_fetch(report_date, refetch=False): daily_report = DailyReport.query.filter( DailyReport.report_date == report_date).first() if daily_report is None: daily_report = DailyReport(report_date=report_date) db.session.add(daily_report) if daily_report.report_html is None or refetch: try: daily_report.report_html = fetch_daily_report( report_date.strftime("%Y-%m-%d")).encode('utf-8') daily_report.fetch_timestamp = datetime.utcnow() except (URLError, ReportFetchError, ReportNotFoundError): raise db.session.commit() return daily_report.report_html