def main(): #Define our connection string conn_string = "host='localhost' dbname='fidget' user='******' password='******'" # print the connection string we will use to connect print "Connecting to database\n ->%s" % (conn_string) # get a connection, if a connect cannot be made an exception will be raised here conn = psycopg2.connect(conn_string) # conn.cursor will return a cursor object, you can use this cursor to perform queries global cursor cursor = conn.cursor() print "Connected!\n" t = True if t: createUserTableObject(cursor) daysWherePeopleWhereActive(cursor) addUserGoals(cursor) addActivities(cursor) calcUserStats(cursor) turnUserAndDate() #pprint.pprint(users) #pprint.pprint(days) d = pivCSV(["active","notification", "robotyes", "robotno", "robotna", "standing_time", "sitting_time", "desk_time", "standing_achieved_time", "sitting_achieved_time", "desk_achieved_time", "breaks_day", "breaksum", "breaks_short", "breaks_achieved_day", "breaks_goal_achievement", "standing_goal_achievement", "overall_goal_achievement"]) #print d f = open('workfile.csv', 'w') f.write(d) #print make_rangeset(cursor, 3, "nyc", "standing", "2014-08-06") #print make_rangeset(cursor, 3, "nyc", "presence", "2014-08-06") presence_rs = make_rangeset(cursor, 3, "nyc", 'presence', "2014-08-06") standing_rs = make_rangeset(cursor, 3, "nyc", 'standing', "2014-08-06") mutual_overlaps = RangeSet.mutual_overlaps(presence_rs, standing_rs) actual_standing_time = mutual_overlaps.measure() if actual_standing_time != 0: actual_standing_time = actual_standing_time.total_seconds() / 3600 print presence_rs.measure().total_seconds()/ 3600 ## desk time print mutual_overlaps.measure().total_seconds()/ 3600 ## standing time
def calcUserStats(values): print "calcUserStats" #print users for a in users: sortArr = [] d = users[a]["days"] for sd in d: sortArr.append(sd) sortArr.sort() #print sortArr emptyBreakT = None emptyStandingTime = None emptySittingTime = None emptyDeskTime = None for s in sortArr: if emptyBreakT == None: #print "############--- !!!!!" #print users[a]["days"] emptyBreakT = users[a]["days"][s]["breaks_day"] try: emptyBreakT = users[a]["days"][s]["breaks_day"] except: users[a]["days"][s]["breaks_day"] = emptyBreakT #print "none" None if emptyStandingTime == None: #print "############--- !!!!!" #print users[a]["days"] emptyStandingTime = users[a]["days"][s]["standing_time"] try: emptyStandingTime = users[a]["days"][s]["standing_time"] except: users[a]["days"][s]["standing_time"] = emptyStandingTime #print "none" None if emptySittingTime == None: #print "############--- !!!!!" #print users[a]["days"] emptySittingTime = users[a]["days"][s]["sitting_time"] try: emptySittingTime = users[a]["days"][s]["sitting_time"] except: users[a]["days"][s]["sitting_time"] = emptySittingTime #print "none" None if emptyDeskTime == None: #print "############--- !!!!!" #print users[a]["days"] emptyDeskTime = users[a]["days"][s]["desk_time"] try: emptyDeskTime = users[a]["days"][s]["desk_time"] except: users[a]["days"][s]["desk_time"] = emptyDeskTime #print "none" None #print emptyBreakT try: users[a]["days"][s]["breaks_achieved_day"] = float(users[a]["days"][s]["breaksum"]*100)/float(emptyBreakT) except: users[a]["days"][s]["breaks_achieved_day"] = 0 try: users[a]["days"][s]["breaks_short"] = emptyBreakT - users[a]["days"][s]["breaksum"] except: users[a]["days"][s]["breaks_short"] = emptyBreakT #print users[a]["name"], users[a]["user_id"], s, users[a]["team"] presence_rs = make_rangeset(cursor, users[a]["user_id"], users[a]["team"], 'presence', s) standing_rs = make_rangeset(cursor, users[a]["user_id"], users[a]["team"], 'standing', s) notification_rs = make_rangeset(cursor, users[a]["user_id"], users[a]["team"], 'notification', s) mutual_overlaps = RangeSet.mutual_overlaps(presence_rs, standing_rs, notification_rs, minimum=3) actual_standing_time = mutual_overlaps.measure() if actual_standing_time != 0: actual_standing_time = actual_standing_time.total_seconds() / 3600 actual_deks_time = RangeSet.mutual_overlaps(presence_rs, notification_rs).measure() if actual_deks_time != 0: actual_deks_time = actual_deks_time.total_seconds() / 3600 #print presence_rs.measure().total_seconds()/ 3600 ## desk time #print mutual_overlaps.measure().total_seconds()/ 3600 ## standing time users[a]["days"][s]["standing_achieved_time"] = actual_standing_time users[a]["days"][s]["desk_achieved_time"] = actual_deks_time #print actual_standing_time #print actual_deks_time ##cals desk time and sitting time #print s #print users[a]["days"][s] # goal calculations try: users[a]["days"][s]["breaks_goal_achievement"] = float(users[a]["days"][s]["breaksum"])/float(emptyBreakT) except: users[a]["days"][s]["breaks_goal_achievement"] = 0 try: users[a]["days"][s]["standing_goal_achievement"] = float(actual_standing_time)/float(users[a]["days"][s]["standing_time"]) except: users[a]["days"][s]["standing_goal_achievement"] = 0 users[a]["days"][s]["overall_goal_achievement"] = (users[a]["days"][s]["breaks_goal_achievement"]+users[a]["days"][s]["standing_goal_achievement"])/2