Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.stsci.edu/spst/UnixTransition/doc/caldecon.py
Дата изменения: Fri Feb 28 14:46:08 2014
Дата индексирования: Sat Mar 1 14:17:11 2014
Кодировка:
#!/usr/bin/env python
# Module caldecon.py
#
# Translated from Ron Downes' SQR by Don Chance
#
# Modification history:
# 08-19-2013 drc Initial translation.
#
import sys
import visit_util
import stpydb
import time_util
import spss_sys_util

ASSIST_DB = spss_sys_util.get_environ_variable("ASSIST_DB")[0]

def get_max_plan_window(visit):
"""Return the minimum plan window start and the maximum plan window
regardless of LRP.
"""
db = stpydb.stpydb(dbmsName=ASSIST_DB)
db.query('select min(window_begin) window_begin, max(window_end) window_end')
db.query('from plan_windows')
db.query('where prop_id = %i' % visit.get('prop_id'))
db.query('and visit_id = "%s"' % visit.get('visit_id'))
r = {}
while db.execute(r):
pw_begin = time_util.spss_time(r['window_begin'])
pw_end = time_util.spss_time(r['window_end'])
return pw_begin, pw_end

def run(*args):
"""Output a report of DECON and ANNEAL calibration visits for the input
cycle or cycles.

Defaults to the current cycle.
"""
cycles = []
if not args:
cycles.append(spss_sys_util.get_current_cycle())
for arg in args:
try:
cycles.append(int(arg))
except:
print "Invalid cycle number ", arg
return not spss_sys_util.SUCCESS
outfile = "caldecon.rpt"
now = time_util.spss_time()
outfileId = open(outfile, 'w')
for cycle in cycles:
outfileId.write('DECON/ANNEAL times for Cycle %i\n\n\n' % cycle)
outfileId.write('Type Prop ID Visit ID Plan Window Begin Plan Window end Status Report Date\n')

visits = visit_util.get_visits_by_cycle(cycle,
cp_types=('CAL%',),
pt_status=('pi', 'implementation', 'scheduling', 'completed', 'failed', 'n/a'))
visits.sort(key=lambda v: v.get('type'))
for v in visits:
for e in v.get_qelogsheet_data():
if e.get_opmode() in ('DECON','ANNEAL'):
pw_begin, pw_end = get_max_plan_window(v)
outfileId.write('%-8s %5i %2s %s %s %-14s %s\n' % (v.get('type'),
v.get('prop_id'),
v.get('visit_id'),
pw_begin.strftime('%d-%b-%Y'),
pw_end.strftime('%d-%b-%Y'),
v.get('status'),
now.strftime('%d-%b-%Y')))
break
print "Output sent to ", outfile


if __name__ == '__main__':
if len(sys.argv) > 1:
run(*tuple(sys.argv[1:]))
else:
run()