def make_report(conn, isodate='today'): """ Build a HTML report with the computations performed at the given isodate. Return the name of the report, which is saved in the current directory. """ if isodate == 'today': isodate = datetime.date.today().isoformat() curs = conn.cursor() fetcher = Fetcher(curs) tag_ids = [] tag_status = [] tag_contents = [] jobs = fetcher.query(ALL_JOBS, isodate, isodate)[1:] page = '<h2>%d job(s) finished before midnight of %s</h2>' % ( len(jobs), isodate) for job_id, user, status, ds_calc in jobs: tag_ids.append(job_id) tag_status.append(status) stats = fetcher.query(JOB_STATS, job_id)[1:] if not stats: continue (job_id, user, start_time, stop_time, status, duration) = stats[0] try: ds = read(job_id, datadir=os.path.dirname(ds_calc)) txt = view_fullreport('fullreport', ds).decode('utf-8') report = html_parts(txt) except Exception as exc: report = dict( html_title='Could not generate report: %s' % cgi.escape( unicode(exc), quote=True), fragment='') page = report['html_title'] job_stats = html(fetcher.query(JOB_STATS, job_id)) page += job_stats page += report['fragment'] tag_contents.append(page) page = make_tabs(tag_ids, tag_status, tag_contents) + ( 'Report last updated: %s' % datetime.datetime.now()) fname = 'jobs-%s.html' % isodate with open(fname, 'w') as f: f.write(PAGE_TEMPLATE % page.encode('utf-8')) return fname
def make_report(conn, isodate='today'): """ Build a HTML report with the computations performed at the given isodate. Return the name of the report, which is saved in the current directory. """ if isodate == 'today': isodate = datetime.date.today().isoformat() curs = conn.cursor() fetcher = Fetcher(curs) tag_ids = [] tag_status = [] tag_contents = [] jobs = fetcher.query(ALL_JOBS, isodate, isodate)[1:] page = '<h2>%d job(s) finished before midnight of %s</h2>' % (len(jobs), isodate) for job_id, user, status, ds_calc in jobs: tag_ids.append(job_id) tag_status.append(status) stats = fetcher.query(JOB_STATS, job_id)[1:] if not stats: continue (job_id, user, start_time, stop_time, status, duration) = stats[0] try: ds = read(job_id, datadir=os.path.dirname(ds_calc)) txt = view_fullreport('fullreport', ds).decode('utf-8') report = html_parts(txt) except Exception as exc: report = dict(html_title='Could not generate report: %s' % cgi.escape(unicode(exc), quote=True), fragment='') page = report['html_title'] job_stats = html(fetcher.query(JOB_STATS, job_id)) page += job_stats page += report['fragment'] tag_contents.append(page) page = make_tabs(tag_ids, tag_status, tag_contents) + ( 'Report last updated: %s' % datetime.datetime.now()) fname = 'jobs-%s.html' % isodate with open(fname, 'w') as f: f.write(PAGE_TEMPLATE % page.encode('utf-8')) return fname
def make_report(isodate='today'): """ Build a HTML report with the computations performed at the given isodate. Return the name of the report, which is saved in the current directory. """ if isodate == 'today': isodate = date.today() else: isodate = date(*time.strptime(isodate, '%Y-%m-%d')[:3]) isodate1 = isodate + timedelta(1) # +1 day tag_ids = [] tag_status = [] tag_contents = [] # the fetcher returns an header which is stripped with [1:] jobs = dbcmd( 'fetch', ALL_JOBS, isodate.isoformat(), isodate1.isoformat()) page = '<h2>%d job(s) finished before midnight of %s</h2>' % ( len(jobs), isodate) for job_id, user, status, ds_calc in jobs: tag_ids.append(job_id) tag_status.append(status) [stats] = dbcmd('fetch', JOB_STATS, job_id) (job_id, user, start_time, stop_time, status, duration) = stats try: ds = read(job_id, datadir=os.path.dirname(ds_calc)) txt = view_fullreport('fullreport', ds) report = html_parts(txt) except Exception as exc: report = dict( html_title='Could not generate report: %s' % cgi.escape( str(exc), quote=True), fragment='') page = report['html_title'] page += html([stats._fields, stats]) page += report['fragment'] tag_contents.append(page) page = make_tabs(tag_ids, tag_status, tag_contents) + ( 'Report last updated: %s' % datetime.now()) fname = 'jobs-%s.html' % isodate with open(fname, 'w') as f: f.write(PAGE_TEMPLATE % page.encode('utf-8')) return fname
def make_report(isodate='today'): """ Build a HTML report with the computations performed at the given isodate. Return the name of the report, which is saved in the current directory. """ if isodate == 'today': isodate = date.today() else: isodate = date(*time.strptime(isodate, '%Y-%m-%d')[:3]) isodate1 = isodate + timedelta(1) # +1 day tag_ids = [] tag_status = [] tag_contents = [] # the fetcher returns an header which is stripped with [1:] jobs = dbcmd('fetch', ALL_JOBS, isodate.isoformat(), isodate1.isoformat()) page = '<h2>%d job(s) finished before midnight of %s</h2>' % (len(jobs), isodate) for job_id, user, status, ds_calc in jobs: tag_ids.append(job_id) tag_status.append(status) [stats] = dbcmd('fetch', JOB_STATS, job_id) (job_id, user, start_time, stop_time, status, duration) = stats try: ds = read(job_id, datadir=os.path.dirname(ds_calc)) txt = view_fullreport('fullreport', ds) report = html_parts(txt) except Exception as exc: report = dict(html_title='Could not generate report: %s' % cgi.escape(str(exc), quote=True), fragment='') page = report['html_title'] page += html([stats._fields, stats]) page += report['fragment'] tag_contents.append(page) page = make_tabs(tag_ids, tag_status, tag_contents) + ( 'Report last updated: %s' % datetime.now()) if sys.version[0] == '2': # Python 2 page = page.encode('utf-8') fname = 'jobs-%s.html' % isodate with open(fname, 'w') as f: f.write(PAGE_TEMPLATE % page) return fname