示例#1
0
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
示例#2
0
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