def do_inject(config): sugar_db = litesugarcrm.LiteSugarCRM(config['sugar.user'], config['sugar.password']) mysql_conf = {'user': config['mysql.user'], 'passwd': config['mysql.password'], 'db': config['mysql.db'], 'host': config['mysql.host'], 'charset': 'utf8'} sql_db = MySQLdb.connect(**mysql_conf) def my_config(binder): binder.bind(SugarDb, sugar_db) binder.bind(SQLDb, sql_db) inject.configure(my_config) Logger.info('Starting')
def do_run(config): observers = (sqlobservers.UserListObserver(), sqlobservers.TimesheetsObserver()) disp = Dispatcher() users = lazycollect.UserLazyList(observers[0].pre_load()) disp.register_event(users, 'updated') disp.subscribe(observers[0], users, 'updated') ts = lazycollect.TimesheetsLazyList({k: None for k in users.values()}) ts.year = config['year'] ts.month = config['month'] disp.register_event(ts, 'updated') disp.subscribe(observers[1], ts, 'updated') Logger.info('Year:{} and month:{}'.format(ts.year, ts.month)) u = {v: k for k, v in users.iteritems()} logstr = '' for uid, time_sheets in ts.iteritems(): hrs = 0 if time_sheets: hrs = sum(map(float, [s[1] for s in time_sheets])) logstr += "[{}: {} hrs]".format(u[uid], hrs) Logger.info('Timesheets: {}'.format(logstr)) for o in observers: o.flush() Logger.info('Done')
if start_date <= d_created <= finish_date: # it might happens too! ts.append([w.id, w.comment, float(w.timeSpentSeconds) / 3600, d_created]) Logger.debug("Timesheets for user {} are {}".format(user, ts)) return {user: ts} if __name__ == "__main__": config = do_parse(sys.argv[1:]) from primitives.logger import set_logging set_logging(config) do_inject() users = get_users() emails = users.keys() max_threads = int(config.get("jira.max_threads", 5)) Logger.info("Starting {} threads {}".format(max_threads, time.clock())) pool = Pool(max_threads) results = pool.map(report_worker, users) pool.close() pool.join() Logger.info("Stopping {}".format(time.clock())) timesheets = [] for r in results: for u, ts in r.iteritems(): Logger.debug("{}->{} hrs".format(u, sum([t[2] for t in ts]) / 3600)) Logger.debug("User: {} and timesheet {}".format(users[u], ts)) for t in ts: timesheets.append([users[u]] + t + ['JIRA']) set_timesheets(timesheets) Logger.debug("All done")