Example #1
0
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')
Example #2
0
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')
Example #3
0
            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")