def report_run(domain, strict=True): last_successful_run = ReportRun.last_success(domain) last_run = ReportRun.last_run(domain) start_date = get_start_date(last_successful_run) end_date = datetime.utcnow() if last_run and last_run.has_error: run = last_run run.complete = False run.save() else: if start_date == end_date: return # start new run run = ReportRun.objects.create(start=start_date, end=end_date, start_run=datetime.utcnow(), domain=domain) has_error = True try: populate_report_data(run.start, run.end, domain, run, strict=strict) has_error = False except Exception, e: # just in case something funky happened in the DB if isinstance(e, DatabaseError): try: transaction.rollback() except: pass has_error = True raise
def report_run(domain): last_successful_run = ReportRun.last_success(domain) last_run = ReportRun.last_run(domain) start_date = (datetime.min if not last_successful_run else last_successful_run.end) end_date = datetime.utcnow() running = ReportRun.objects.filter(complete=False, domain=domain) if running.count() > 0: raise Exception("Warehouse already running, will do nothing...") if last_run and last_run.has_error: run = last_run run.complete = False run.save() else: # start new run run = ReportRun.objects.create(start=start_date, end=end_date, start_run=datetime.utcnow(), domain=domain) try: run.has_error = True populate_report_data(start_date, end_date, domain, run) run.has_error = False except Exception, e: # just in case something funky happened in the DB if isinstance(e, DatabaseError): try: transaction.rollback() except: pass run.has_error = True raise
def report_run(domain, strict=True): last_successful_run = ReportRun.last_success(domain) last_run = ReportRun.last_run(domain) start_date = get_start_date(last_successful_run) end_date = datetime.utcnow() if last_run and last_run.has_error: run = last_run run.complete = False run.save() else: if start_date == end_date: return # start new run run = ReportRun.objects.create(start=start_date, end=end_date, start_run=datetime.utcnow(), domain=domain) has_error = True try: populate_report_data(run.start, run.end, domain, run, strict=strict) has_error = False except Exception as e: # just in case something funky happened in the DB if isinstance(e, DatabaseError): try: transaction.rollback() except: pass has_error = True raise finally: # complete run run = ReportRun.objects.get(pk=run.id) run.has_error = has_error run.end_run = datetime.utcnow() run.complete = True run.save() logging.info("ILSGateway report runner end time: %s" % datetime.utcnow()) if not has_error: recalculation_on_location_change.delay(domain, last_successful_run)
def report_run(domain, locations=None, strict=True): last_successful_run = ReportRun.last_success(domain) recalculation_on_location_change(domain, last_successful_run) last_run = ReportRun.last_run(domain) start_date = (datetime.min if not last_successful_run else last_successful_run.end) stock_data_checkpoint = StockDataCheckpoint.objects.get(domain=domain) # TODO Change this to datetime.utcnow() when project goes live end_date = stock_data_checkpoint.date running = ReportRun.objects.filter(complete=False, domain=domain) if running.count() > 0: raise Exception("Warehouse already running, will do nothing...") if last_run and last_run.has_error: run = last_run run.complete = False run.save() else: if start_date == end_date: return # start new run run = ReportRun.objects.create(start=start_date, end=end_date, start_run=datetime.utcnow(), domain=domain) has_error = True try: populate_report_data(run.start, run.end, domain, run, locations, strict=strict) has_error = False except Exception, e: # just in case something funky happened in the DB if isinstance(e, DatabaseError): try: transaction.rollback() except: pass has_error = True raise
def change_runner_date_to_last_migration(request, domain): checkpoint = StockDataCheckpoint.objects.get(domain=domain) last_run = ReportRun.last_success(domain) last_run.end = checkpoint.date last_run.save() return HttpResponse('OK')