def main(args): log = lutils.setupLog('worksetlogger', args.logfile) session = get_session() if args.ws: step = session.query(Process).filter_by(luid=args.ws).one() ws = lclasses.Workset_SQL(session, log, step) with open(args.conf) as conf_file: conf = yaml.load(conf_file, Loader=yaml.SafeLoader) couch = lutils.setupServer(conf) db = couch["worksets"] doc = {} for row in db.view('worksets/lims_id')[ws.obj['id']]: doc = db.get(row.id) final_doc = lutils.merge(ws.obj, doc) db.save(final_doc) elif args.recent: recent_processes = get_last_modified_processes( session, [8, 46, 117, 204, 1454, 1908], args.interval) processes_to_update = set() for p in recent_processes: if p.typeid in [ 117, 204 ] and p.daterun: #will only catch finished setup workset plate processes_to_update.add(p) else: processes_to_update.update( get_processes_in_history(session, p.processid, [117, 204])) log.info("the following processes will be updated : {0}".format( processes_to_update)) lpar.masterProcessSQL(args, processes_to_update, log)
def main(ws_id): log = lutils.setupLog('worksetlogger', "out.log") lims = Lims(BASEURI, USERNAME, PASSWORD) wsp = gent.Process(lims, id=ws_id) lc = lclasses.LimsCrawler(lims, wsp) lc.crawl() ws1 = lclasses.Workset(lims, lc, log) session = get_session() step = session.query(Process).filter_by(luid=ws_id).one() ws2 = lclasses.Workset_SQL(session, log, step) diffs = my_comp(ws1.obj, ws2.obj) if diffs: print "\n".join(diffs) #print "##########################" #pprint(ws1.obj) #print "##########################" #pprint(ws2.obj) else: print "no diff found"
def processWSULSQL(args, queue, logqueue): work=True session=get_session() with open(args.conf) as conf_file: conf=yaml.load(conf_file, Loader=yaml.SafeLoader) couch=lutils.setupServer(conf) db=couch["worksets"] procName = mp.current_process().name proclog = logging.getLogger(procName) proclog.setLevel(level=logging.INFO) mfh = QueueHandler(logqueue) mft = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') mfh.setFormatter(mft) proclog.addHandler(mfh) while work: #grabs project from queue try: ws_id = queue.get(block=True, timeout=3) proclog.info("Starting work on {}".format(ws_id)) except Queue.Empty: work = False proclog.info("exiting gracefully") break else: step=session.query(gt.Process).filter(gt.Process.processid == int(ws_id)).one() ws=lclasses.Workset_SQL(session, proclog, step) doc={} for row in db.view('worksets/lims_id')[ws.obj['id']]: doc=db.get(row.id) if doc: final_doc=lutils.merge(ws.obj, doc) else: final_doc=ws.obj #clean possible name duplicates for row in db.view('worksets/name')[ws.obj['name']]: doc=db.get(row.id) if doc['id'] != ws.obj['id']: proclog.warning("Duplicate name {} for worksets {} and {}".format(doc['name'], doc['id'], final_doc['id'])) db.delete(doc) db.save(final_doc) proclog.info("updating {0}".format(ws.obj['name'])) queue.task_done()