def countRecordedMeals(self, beneficiary_id): result = {} try: engine = db #create a Session Session = sessionmaker(bind=engine) session = Session() res = session.query( func.count(FoodAndBeverage.id).label("mealscounter")).filter( FoodAndBeverage.beneficiary_id == beneficiary_id).first() if res.mealscounter is None: awarded_points = 0 else: awarded_points = res.mealscounter result["NumberOfMeals"] = awarded_points result["Message"] = "Meals count obtained successfully" except Exception as e: result["NumberOfMeals"] = -1 result["Message"] = e session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def countRecordedMeals(self,beneficiary_id): result={} try: engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() res = session.query(func.count(FoodAndBeverage.id).label("mealscounter")).filter(FoodAndBeverage.beneficiary_id==beneficiary_id).first() if res.mealscounter is None: awarded_points=0; else: awarded_points=res.mealscounter result["NumberOfMeals"]=awarded_points result["Message"]="Meals count obtained successfully" except Exception as e: result["NumberOfMeals"]=-1 result["Message"]=e session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def retrieveIntermediaryClickPoints(self): result = {} try: #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) engine = db # create a Session Session = sessionmaker(bind=engine) session = Session() #if self.last_date_specified==1: # day=self.myjson["Day"] # if day=="Today": # day=datetime.date.today() #res= session.query(func.sum(Points.scoredpoints).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).filter(Points.datecaptured<=day).first() #get points by number of days an application has been used. #res=session.query(func.count(distinct(Points.datecaptured)).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).filter(Points.datecaptured<=day).first() #else: #res= session.query(func.sum(Points.scoredpoints).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).first() res = session.query( func.count(distinct(Points.datecaptured)).label("sum_points") ).filter(Points.intermediary_id == self.intermediary_id).first() retrieved_points_sum = 0 # initialize how many distinct dates are in the database #for retrieved_points_sum in res: # break if res.sum_points is None: retrieved_points_sum = "0" result["message"] = "You have no points" result["points"] = int(retrieved_points_sum) else: result["message"] = "You have some points so far." retrieved_points_sum = int(res.sum_points) result["points"] = int(retrieved_points_sum) session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result)) except Exception as e: #print "Content-type: text/html\n" session.close() engine.dispose() dbconn.close() result["message"] = "Error: %s" % e print "Exception thrown in function getIntermediaryClickPoints(): %s" % e print "The day captured=%s" % day return (json.JSONEncoder().encode(result))
def retrieveIntermediaryClickPoints(self): result={} try: #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) engine=db # create a Session Session = sessionmaker(bind=engine) session = Session() res=session.query(func.count(distinct(Points.datecaptured)).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).first() retrieved_points_sum=0# initialize how many distinct dates are in the database if res.sum_points is None: retrieved_points_sum="0" result["message"]="You have no points" result["points"]=int(retrieved_points_sum) else: result["message"]="You have some points so far." retrieved_points_sum=int(res.sum_points) result["points"]=int(retrieved_points_sum) session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result)) except Exception as e: #print "Content-type: text/html\n" session.close() engine.dispose() dbconn.close() result["message"]="Error: %s"%e print "Exception thrown in function getIntermediaryClickPoints(): %s"%e print "The day captured=%s"%day return (json.JSONEncoder().encode(result))
def retrieveIntermediaryClickPoints(self): result = {} try: #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) engine = db # create a Session Session = sessionmaker(bind=engine) session = Session() res = session.query( func.count(distinct(Points.datecaptured)).label("sum_points") ).filter(Points.intermediary_id == self.intermediary_id).first() retrieved_points_sum = 0 # initialize how many distinct dates are in the database if res.sum_points is None: retrieved_points_sum = "0" result["message"] = "You have no points" result["points"] = int(retrieved_points_sum) else: result["message"] = "You have some points so far." retrieved_points_sum = int(res.sum_points) result["points"] = int(retrieved_points_sum) session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result)) except Exception as e: #print "Content-type: text/html\n" session.close() engine.dispose() dbconn.close() result["message"] = "Error: %s" % e print "Exception thrown in function getIntermediaryClickPoints(): %s" % e print "The day captured=%s" % day return (json.JSONEncoder().encode(result))
def getSteps(self, beneficiary_id): try: engine = db #create a Session Session = sessionmaker(bind=engine) session = Session() currentdate = datetime.date.today() #get the date for the first day of this week day_of_week = currentdate.weekday() week_start_date = currentdate - datetime.timedelta( days=day_of_week) res = session.query( func.sum(PhysicalActivity.stepscounter).label("sum_steps") ).filter(PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured >= week_start_date).filter( PhysicalActivity.datecaptured <= currentdate).first() if res.sum_steps == None: sum_steps = 0 else: sum_steps = int(res.sum_steps) result = {} result["steps"] = sum_steps except Exception as e: print "Exception thrown in function getSteps(): %s" % e result["steps"] = 0 result["dates_counter"] = 1 #self.steps=sum_steps session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def getSteps(self, beneficiary_id): try: engine = db # create a Session Session = sessionmaker(bind=engine) session = Session() if self.last_date_specified == 1: day = self.myjson["Day"] if day == "Today": day = datetime.date.today() res = ( session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")) .filter(PhysicalActivity.beneficiary_id == beneficiary_id) .filter(PhysicalActivity.datecaptured <= day) .first() ) else: res = ( session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")) .filter(PhysicalActivity.beneficiary_id == beneficiary_id) .first() ) if res.sum_steps == None: sum_steps = 0 else: sum_steps = int(res.sum_steps) result = {} result["steps"] = sum_steps if self.last_date_specified == 1: res = ( session.query(func.min(PhysicalActivity.datecaptured).label("min_date")) .filter(PhysicalActivity.beneficiary_id == beneficiary_id) .filter(PhysicalActivity.datecaptured <= day) .first() ) else: res = ( session.query(func.min(PhysicalActivity.datecaptured).label("min_date")) .filter(PhysicalActivity.beneficiary_id == beneficiary_id) .first() ) min_date = res.min_date if self.last_date_specified == 1: max_date = self.myjson["Day"] if max_date == "Today": max_date = datetime.date.today() else: max_date = datetime.datetime.strptime(max_date, "%Y-%m-%d").date() else: max_date = datetime.date.today() if min_date is None: dates_difference = 1 else: delta = max_date - min_date dates_difference = delta.days + 1 if min_date > max_date: dates_difference = 1 result["dates_counter"] = dates_difference except Exception as e: print "Exception thrown in function getSteps(): %s" % e result["steps"] = 0 result["dates_counter"] = 1 # self.steps=sum_steps session.close() engine.dispose() dbconn.close() return json.JSONEncoder().encode(result)
def retrieveIntermediaryClickPoints(self): result = {} try: # engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) engine = db # create a Session Session = sessionmaker(bind=engine) session = Session() if self.last_date_specified == 1: day = self.myjson["Day"] if day == "Today": day = datetime.date.today() res = ( session.query(func.sum(Points.scoredpoints).label("sum_points")) .filter(Points.intermediary_id == self.intermediary_id) .filter(Points.datecaptured <= day) .first() ) else: res = ( session.query(func.sum(Points.scoredpoints).label("sum_points")) .filter(Points.intermediary_id == self.intermediary_id) .first() ) retrieved_points_sum = 0 # initialize how many distinct dates are in the database for retrieved_points_sum in res: break if res.sum_points is None: retrieved_points_sum = "0" result["message"] = "You have no points" result["points"] = int(retrieved_points_sum) else: result["message"] = "You have some points so far." result["points"] = int(retrieved_points_sum) if self.last_date_specified == 1: res = ( session.query(func.min(Points.datecaptured).label("min_date")) .filter(Points.intermediary_id == self.intermediary_id) .filter(Points.datecaptured <= day) .first() ) else: res = ( session.query(func.min(Points.datecaptured).label("min_date")) .filter(Points.intermediary_id == self.intermediary_id) .first() ) min_date = res.min_date if self.last_date_specified == 1: max_date = self.myjson["Day"] if max_date == "Today": max_date = datetime.date.today() else: max_date = datetime.datetime.strptime(max_date, "%Y-%m-%d").date() else: max_date = datetime.date.today() if min_date is None: dates_difference = 1 else: delta = max_date - min_date dates_difference = delta.days + 1 if min_date > max_date: dates_difference = 1 result["dates_counter"] = dates_difference session.close() engine.dispose() dbconn.close() return json.JSONEncoder().encode(result) except Exception as e: # print "Content-type: text/html\n" session.close() engine.dispose() dbconn.close() result["message"] = "Error: %s" % e print "Exception thrown in function getIntermediaryClickPoints(): %s" % e print "The day captured=%s" % day return json.JSONEncoder().encode(result)
def getSteps(self,beneficiary_id): try: engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() #if self.last_date_specified==1: # day=self.myjson["Day"] # if day == "Today": # day=datetime.date.today() # res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured<=day).first() #else: currentdate=datetime.date.today() #get the date for the first day of this week day_of_week=currentdate.weekday() week_start_date=currentdate-datetime.timedelta(days=day_of_week) res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured>=week_start_date).filter(PhysicalActivity.datecaptured<=currentdate).first() if res.sum_steps==None: sum_steps=0 else: sum_steps=int(res.sum_steps) result={} result["steps"]=sum_steps #comment code for counting the number of days ''' if self.last_date_specified==1: res=session.query(func.min(PhysicalActivity.datecaptured).label("min_date")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured<=day).first() else: res=session.query(func.min(PhysicalActivity.datecaptured).label("min_date")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).first() min_date=res.min_date if self.last_date_specified==1: max_date=self.myjson["Day"] if max_date=="Today": max_date=datetime.date.today() else: max_date=datetime.datetime.strptime(max_date , '%Y-%m-%d').date() else: max_date=datetime.date.today() if min_date is None: dates_difference=1 else: delta=max_date-min_date dates_difference=delta.days+1 if min_date>max_date: dates_difference=1 result["dates_counter"]=dates_difference ''' except Exception as e: print "Exception thrown in function getSteps(): %s"%e result["steps"]=0 result["dates_counter"]=1 #self.steps=sum_steps session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def retrieveIndividualBadge(self): result={} try: varmyjson={'Day':"Today"} myjson={'Fname':'Dummy','Lname':'Dummy','Username':self.intermediary_id} obj=RetrieveIntermediary(myjson) res=obj.isAssignedBeneficiary() beneficiary_tuple=json.loads(res) b_id=beneficiary_tuple["Id"] if b_id==None : raise ValueError('This individual is not assigned a beneficiary') clickPointsObj=RetrievePoints(varmyjson,self.intermediary_id,1) resclickpoints=clickPointsObj.retrieveIntermediaryClickPoints() resclickpoints=json.loads(resclickpoints) #clickpoints=int(resclickpoints["points"]/resclickpoints["dates_counter"]) clickpoints=int(resclickpoints["points"]) if clickpoints>18: clickpoints=18 ressteps=clickPointsObj.getSteps(b_id) ressteps=json.loads(ressteps) #stepspoints=int(ressteps["steps"]/(100*ressteps["dates_counter"])) stepspoints=int(ressteps["steps"]) if stepspoints>70000: stepspoints=70000 badges_urls=[] if stepspoints>=70000: if clickpoints>=18: badges.append("Queen") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/queen.jpeg") else: badges.append("No promotion") elif stepspoints>=63000: if clickpoints>=16: badges.append("Princess") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/princess.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/duchess.jpeg") elif stepspoints>=56000: if clickpoints>=14: badges.append("Duchess") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/duchess.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/grandmaster.jpeg") elif stepspoints>=49000: if clickpoints>=12: badges.append("Grand Master") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/grandmaster.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniormaster.jpeg") elif stepspoints>=42000: if clickpoints>=10: badges.append("Senior Master") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniormaster.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/master.jpeg") elif stepspoints>=31500: if clickpoints>=8: badges.append("Master") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/master.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/juniormaster.jpeg") if stepspoints>=21000: if clickpoints>=4: badges.append("Junior Master") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/juniormaster.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniorservant.jpeg") elif stepspoints>=14000: if clickpoints>=2: badges.append("Senior Servant") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniorservant.jpeg") else: badges.append("No Promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/servant.jpeg") if stepspoints>=7000: if clickpoints>=1: badges.append("Servant") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/servant.jpeg") else: badges.append("No promotion") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/slave.jpeg") else: badges.append("Slave") badges_urls.append("http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/slave.jpeg") num=randint(2,49) obj=RetrieveSound(num) res=obj.retrieveSoundUrl() res=json.loads(res) sound_url=res["url"] result={"R00":{"D0":"Badge Acquired","D1":badges_urls[0],"D2":sound_url}} except Exception as e: message="An exception was thrown in function retrieveIndividualScore(): %s"%e result={"R00":{"D0":message,"D1":"http://ict4d01.cs.uct.ac.za/static/django_facebook/images/nobadge.jpeg","D2":"Error"}} session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def get_monthly_steps(self,startdate,enddate): errorcode={} weekly_activity_tuple={} try: day_of_week = startdate.weekday() week_start_date=startdate #week_end_date=(startdate-datetime.timedelta(days=day_of_week))+datetime.timedelta(days=6) week_end_date=startdate+datetime.timedelta(days=6) key1="R" key2="F" first_posn=0 second_posn=0 days_iterator=0 weeks_iterator=1 total_weekly_steps=0 activity_tuples={} found_data=0 if(week_end_date>enddate): # make sure week end date is not greater than the current end date week_end_date=enddate daily_activity_tuple=None weekly_activity_tuple={} engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() while((week_start_date>=startdate) and (week_start_date<=enddate)): weekly_activity_tuple={} daily_activity_tuple=None total_weekly_steps=0 if week_end_date<enddate: days_iterator=7 else: diff=week_end_date-week_start_date days_iterator=diff.days+1 # daily_activity_tuple=json.loads(self.get_weekly_steps(week_start_date,week_end_date)) #steps=0 res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==self.b_id).filter(PhysicalActivity.datecaptured>=week_start_date).filter(PhysicalActivity.datecaptured<=week_end_date).order_by(PhysicalActivity.datecaptured).first() if res.sum_steps==None: pass else: total_weekly_steps=int(res.sum_steps) if total_weekly_steps > 0: found_data=found_data+1 #weekly_activity_tuple[key2+"%d"%second_posn]="Week %s"%weeks_iterator weekly_activity_tuple[key2+"%d"%second_posn]="%s-%s"%(week_start_date.strftime("%d"),week_end_date.strftime("%d")) second_posn=second_posn+1 weeks_iterator=weeks_iterator+1 if(days_iterator>0): weekly_activity_tuple[key2+"%d"%second_posn]=total_weekly_steps/days_iterator second_posn=0 else: weekly_activity_tuple[key2+"%d"%second_posn]=0 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=weekly_activity_tuple first_posn=first_posn+1 week_start_date=week_end_date+datetime.timedelta(days=1)# move to next monday week_end_date=week_start_date+datetime.timedelta(days=6)# move to next sunday if(week_end_date>enddate): week_end_date=enddate#for the next iteration session.close() engine.dispose() dbconn.close() if(found_data>0): return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) #errorcode["error"]=-4 activity_tuples={} first_posn=0 weekly_activity_tuple[key2+"%d"%second_posn]="No week" second_posn=second_posn+1 weekly_activity_tuple[key2+"%d"%second_posn]=-4 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=weekly_activity_tuple first_posn=first_posn+1 activity_tuple={} return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) except Exception as e: session.close() engine.dispose() dbconn.close() second_posn=0 weekly_activity_tuple[key2+"%d"%second_posn]="%s"%e second_posn=second_posn+1 weekly_activity_tuple[key2+"%d"%second_posn]=-1 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=weekly_activity_tuple first_posn=first_posn+1 weekly_activity_tuple={} return(json.JSONEncoder().encode(activity_tuples))
def get_weekly_steps(self,startdate,enddate): errorcode={} daily_activity_tuple={} try: key1="R" key2="F" first_posn=0 second_posn=0 #previousdate_string=None current_retrieved_date_string="" step_sum_by_date=0 activity_tuples={} #current_date_searched=startdate #number_of_tuples_counted=0 #week_num_of_days=7 # the week has seven days. We will use this variable to determine if the total number of dates counted from the database is less than number of days in week num_of_weekdays_iterated=0# keeping track of the positiion within a seven days week. weekdays_clusters=['Mon','Tue','Wed','Thur','Frid','Sat','Sun'] #weekday=enddate.weekday()# is for checking if a week is shorter when this function is used by get_manth_data found_data=0 day="" engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() #new code daily_activity_tuple={} while(startdate<=enddate): day_of_week=startdate.weekday() day=weekdays_clusters[day_of_week] #for week_day in weekdays_clusters: #activity_tuple=json.loads(self.get_daily_steps(startdate, startdate)) daily_activity_tuple={} hourly_activity_tuple=None total_daily_steps=0 #activity_tuple=json.JSONDecoder.decode(self.get_daily_steps(startdate, startdate)) #activity_tuple=json.JSONDecoder.decode(self.get_daily_steps(startdate, startdate), _w=WHITESPACE.match) #hourly_activity_tuple=json.loads(self.get_daily_steps(startdate, startdate)) #exception_info="" #steps=0 res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==self.b_id).filter(PhysicalActivity.datecaptured==startdate).order_by(PhysicalActivity.datecaptured).first() if res.sum_steps==None: pass else: total_daily_steps=int(res.sum_steps) startdate=startdate+datetime.timedelta(days=1)#move to the next day if total_daily_steps > 0: found_data=found_data+1 daily_activity_tuple[key2+"%d"%second_posn]=day second_posn=second_posn+1 daily_activity_tuple[key2+"%d"%second_posn]=total_daily_steps second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=daily_activity_tuple first_posn=first_posn+1 total_daily_steps=0 #if(num_of_weekdays_iterated==weekday):# we have encontered the end of the week. This is for shorter weeks within the month # break #num_of_weekdays_iterated=num_of_weekdays_iterated+1 #end of new code session.close() engine.dispose() dbconn.close() if(found_data > 0): return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) else: #errorcode["error"]=-4 activity_tuples={} first_posn=0 daily_activity_tuple[key2+"%d"%second_posn]="No day" second_posn=second_posn+1 daily_activity_tuple[key2+"%d"%second_posn]=-4 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=daily_activity_tuple first_posn=first_posn+1 activity_tuple={} return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) #return (json.JSONEncoder().encode(errorcode)) except Exception as e: session.close() engine.dispose() dbconn.close() second_posn=0 daily_activity_tuple[key2+"%d"%second_posn]="%s"%e second_posn=second_posn+1 daily_activity_tuple[key2+"%d"%second_posn]=-1 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=daily_activity_tuple first_posn=first_posn+1 daily_activity_tuple={} return(json.JSONEncoder().encode(activity_tuples))
def getSteps(self,beneficiary_id): try: engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() #if self.last_date_specified==1: # day=self.myjson["Day"] # if day == "Today": # day=datetime.date.today() # res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured<=day).first() #else: currentdate=datetime.date.today() #get the date for the first day of this week day_of_week=currentdate.weekday() week_start_date=currentdate-datetime.timedelta(days=day_of_week) #get the first and end date of last week previous_week_end_date=week_start_date-datetime.timedelta(days=1) #go to last sunday previous_week_start_date=previous_week_end_date-datetime.timedelta(days=6)#go to last monday #get the first and end date of the week before last week previous_previous_week_end_date=previous_week_start_date-datetime.timedelta(days=1) #go to last sunday of the week before last week previous_previous_week_start_date=previous_previous_week_end_date-datetime.timedelta(days=6)#go to last monday of the week before last week res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured>=previous_week_start_date).filter(PhysicalActivity.datecaptured<=previous_week_end_date).first() if res.sum_steps==None: sum_steps1=0 else: sum_steps1=int(res.sum_steps) result={} result["steps1"]=sum_steps1 res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured>=previous_previous_week_start_date).filter(PhysicalActivity.datecaptured<=previous_previous_week_end_date).first() if res.sum_steps==None: sum_steps2=0 else: sum_steps2=int(res.sum_steps) result["steps2"]=sum_steps2 except Exception as e: print "Exception thrown in function getSteps(): %s"%e result={} result["steps1"]=0 result["steps2"]=0 result["dates_counter"]=1 #self.steps=sum_steps session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def uploadActivity(self): self.lock.acquire() self.modify=1 self.counter=0 result={} try: stepsarray=self.myjson["header"]["steps"] datecapturedarray=self.myjson["header"]["datecaptured"] starthrarray=self.myjson["header"]["starthr"] endhrarray=self.myjson["header"]["endhr"] size=self.myjson["header"]["length"] IMEI=self.myjson["header"]["Intermediary"] #stepsarray=[400,600] #datecapturedarray=['2014-08-23','2014-08-24'] #starthrarray=['12:00','13:00'] #endhrarray=['12:59','13:59'] #size=2 #IMEI="*****@*****.**" except Exception as e: #print "Content-type: text/html\n" #print('There was an error in processing a JSON object') result["message"]=e return json.JSONEncoder().encode(result) #self.lock.release() #print "Content-Type: text/html\n" #get beneficiary_id through supplied IMEI #result["message"]={} #result["message"]=stepsarray[0] #return json.JSONEncoder().encode(result) try: engine=db # create a Session Session = sessionmaker(bind=engine) session = Session() # querying for a record in the physical_activity pattern table res = session.query(Beneficiary).filter(Beneficiary.intermediary_id==IMEI).first() if res is None: beneficiary_id=None else: beneficiary_id=res.id session.commit() session.close() except Exception as e: #print "Content-type: text/html\n" result["message"]=e #return json.JSONEncoder().encode(result) #first check if the last record arleady exists in the database and trying to update. Possibly this record is currently in use by the pedoemeter i=0 element_pop=0 try: #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) for i in range(size): #while size>=i: # create a Session #Session = sessionmaker(bind=engine) #session = Session() if element_pop >= 1: i=i-element_pop # querying for a record in the physical_activity pattern table res = session.query(PhysicalActivity).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured==datecapturedarray[i]).filter(PhysicalActivity.starttimecaptured==starthrarray[i]).first() if res is None: continue else: res.stepscounter=stepsarray[i] #size=size-1 #ignore the last value because it has arleady been updated #pop a record so that it doesn't get inserted stepsarray.pop(i) datecapturedarray.pop(i) starthrarray.pop(i) endhrarray.pop(i) self.counter=self.counter+1 element_pop=element_pop+1 session.commit() #result["message"]={} #result["message"]=stepsarray[0] #return json.JSONEncoder().encode(result) except Exception as e: result["message"]=e session.close() engine.dispose() dbconn.close() self.lock.release() return json.JSONEncoder().encode(result) #needs to be edited size=size-self.counter if self.modify == 1: try: engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) for i in range(size): # create a Session Session = sessionmaker(bind=engine) session = Session() # Create Activity Pattern #new_food=FoodAndBeverage('KTLNTW00',datetime.date(1988,12,01)) new_activity_pattern=PhysicalActivity(beneficiary_id,datecapturedarray[i],starthrarray[i],endhrarray[i],stepsarray[i]) # Add the record to the session object session.add(new_activity_pattern) # commit the record the database session.commit() except Exception as e: session.close() engine.dispose() dbconn.close() result["message"]=e self.lock.release() return json.JSONEncoder().encode(result) session.close() engine.dispose() result["message"]="STEP_SYNC_SUCCESS" self.lock.release() return json.JSONEncoder().encode(result)
def retrieveIntermediaryClickPoints(self): result={} try: #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) engine=db # create a Session Session = sessionmaker(bind=engine) session = Session() if self.last_date_specified==1: day=self.myjson["Day"] if day=="Today": day=datetime.date.today() res=session.query(func.count(distinct(Points.datecaptured)).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).filter(Points.datecaptured<=day).first() #res= session.query(func.sum(Points.scoredpoints).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).filter(Points.datecaptured<=day).first() #get points by number of days an application has been used. #res=session.query(func.count(distinct(Points.datecaptured)).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).filter(Points.datecaptured<=day).first() else: #res= session.query(func.sum(Points.scoredpoints).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).first() res=session.query(func.count(distinct(Points.datecaptured)).label("sum_points")).filter(Points.intermediary_id==self.intermediary_id).first() retrieved_points_sum=0# initialize how many distinct dates are in the database #for retrieved_points_sum in res: # break if res.sum_points is None: retrieved_points_sum="0" result["message"]="You have no points" result["points"]=int(retrieved_points_sum) else: result["message"]="You have some points so far." retrieved_points_sum=int(res.sum_points) result["points"]=int(retrieved_points_sum) session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result)) except Exception as e: #print "Content-type: text/html\n" session.close() engine.dispose() dbconn.close() result["message"]="Error: %s"%e print "Exception thrown in function getIntermediaryClickPoints(): %s"%e print "The day captured=%s"%day return (json.JSONEncoder().encode(result))
def uploadActivity(self): self.lock.acquire() self.modify = 1 self.counter = 0 result = {} try: stepsarray = self.myjson["header"]["steps"] datecapturedarray = self.myjson["header"]["datecaptured"] starthrarray = self.myjson["header"]["starthr"] endhrarray = self.myjson["header"]["endhr"] size = self.myjson["header"]["length"] IMEI = self.myjson["header"]["Intermediary"] #stepsarray=[400,600] #datecapturedarray=['2014-11-14','2012-08-24'] #starthrarray=['12:00','13:00'] #endhrarray=['12:59','13:59'] #size=2 #IMEI="*****@*****.**" except Exception as e: #print "Content-type: text/html\n" #print('There was an error in processing a JSON object') result["message"] = e return json.JSONEncoder().encode(result) #self.lock.release() #print "Content-Type: text/html\n" #get beneficiary_id through supplied IMEI #result["message"]={} #result["message"]=stepsarray[0] #return json.JSONEncoder().encode(result) try: engine = db # create a Session Session = sessionmaker(bind=engine) session = Session() # querying for a record in the physical_activity pattern table res = session.query(Beneficiary).filter( Beneficiary.intermediary_id == IMEI).first() if res is None: beneficiary_id = None else: beneficiary_id = res.id session.commit() session.close() except Exception as e: #print "Content-type: text/html\n" result["message"] = e #return json.JSONEncoder().encode(result) #first check if the last record arleady exists in the database and trying to update. Possibly this record is currently in use by the pedoemeter i = 0 element_pop = 0 try: #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) for i in range(size): #while size>=i: # create a Session #Session = sessionmaker(bind=engine) #session = Session() if element_pop >= 1: i = i - element_pop # querying for a record in the physical_activity pattern table res = session.query(PhysicalActivity).filter( PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured == datecapturedarray[i] ).filter(PhysicalActivity.starttimecaptured == starthrarray[i]).first() if res is None: continue else: res.stepscounter = stepsarray[i] session.commit() #size=size-1 #ignore the last value because it has arleady been updated #pop a record so that it doesn't get inserted stepsarray.pop(i) datecapturedarray.pop(i) starthrarray.pop(i) endhrarray.pop(i) self.counter = self.counter + 1 element_pop = element_pop + 1 #session.commit() #result["message"]={} #result["message"]=stepsarray[0] #return json.JSONEncoder().encode(result) except Exception as e: result["message"] = e session.close() engine.dispose() dbconn.close() self.lock.release() return json.JSONEncoder().encode(result) #needs to be edited size = size - self.counter if self.modify == 1: try: min_date_allowed = '2014-01-01' orig_min_date = datetime.datetime.strptime( min_date_allowed, '%Y-%m-%d').date() #engine=create_engine('mysql://*****:*****@localhost/wellness', echo=False) engine = db for i in range(size): # create a Session Session = sessionmaker(bind=engine) session = Session() # Create Activity Pattern #new_food=FoodAndBeverage('KTLNTW00',datetime.date(1988,12,01)) #new_activity_pattern=PhysicalActivity(beneficiary_id,datecapturedarray[i],starthrarray[i],endhrarray[i],stepsarray[i]) datecaptured = datecapturedarray[i] orig_date = datetime.datetime.strptime( datecaptured, '%Y-%m-%d').date() if orig_date < orig_min_date: print "rejected" else: new_activity_pattern = PhysicalActivity( beneficiary_id, datecapturedarray[i], starthrarray[i], endhrarray[i], stepsarray[i]) # Add the record to the session object session.add(new_activity_pattern) # commit the record the database session.commit() except Exception as e: session.close() engine.dispose() dbconn.close() result["message"] = e self.lock.release() return json.JSONEncoder().encode(result) session.close() engine.dispose() result["message"] = "STEP_SYNC_SUCCESS" self.lock.release() return json.JSONEncoder().encode(result)
def getSteps(self, beneficiary_id): try: engine = db #create a Session Session = sessionmaker(bind=engine) session = Session() #if self.last_date_specified==1: # day=self.myjson["Day"] # if day == "Today": # day=datetime.date.today() # res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured<=day).first() #else: currentdate = datetime.date.today() #get the date for the first day of this week day_of_week = currentdate.weekday() week_start_date = currentdate - datetime.timedelta( days=day_of_week) #get the first and end date of last week previous_week_end_date = week_start_date - datetime.timedelta( days=1) #go to last sunday previous_week_start_date = previous_week_end_date - datetime.timedelta( days=6) #go to last monday #get the first and end date of the week before last week previous_previous_week_end_date = previous_week_start_date - datetime.timedelta( days=1) #go to last sunday of the week before last week previous_previous_week_start_date = previous_previous_week_end_date - datetime.timedelta( days=6) #go to last monday of the week before last week res = session.query( func.sum(PhysicalActivity.stepscounter).label("sum_steps") ).filter(PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured >= previous_week_start_date ).filter(PhysicalActivity.datecaptured <= previous_week_end_date ).first() if res.sum_steps == None: sum_steps1 = 0 else: sum_steps1 = int(res.sum_steps) result = {} result["steps1"] = sum_steps1 res = session.query( func.sum(PhysicalActivity.stepscounter).label("sum_steps") ).filter(PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured >= previous_previous_week_start_date).filter( PhysicalActivity.datecaptured <= previous_previous_week_end_date).first() if res.sum_steps == None: sum_steps2 = 0 else: sum_steps2 = int(res.sum_steps) result["steps2"] = sum_steps2 except Exception as e: print "Exception thrown in function getSteps(): %s" % e result = {} result["steps1"] = 0 result["steps2"] = 0 result["dates_counter"] = 1 #self.steps=sum_steps session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def getSteps(self, beneficiary_id): try: engine = db #create a Session Session = sessionmaker(bind=engine) session = Session() pilotdateres = session.query(PilotCommencement).first() if pilotdateres is None: sys.exit else: datestarted = pilotdateres.datestarted if self.last_date_specified == 1: day = self.myjson["Day"] if day == "Today": day = datetime.date.today() res = session.query( func.sum(PhysicalActivity.stepscounter).label("sum_steps") ).filter( PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured >= datestarted).filter( PhysicalActivity.datecaptured <= day).first() else: res = session.query( func.sum(PhysicalActivity.stepscounter).label("sum_steps") ).filter( PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured >= datestarted).first() if res.sum_steps == None: sum_steps = 0 else: sum_steps = int(res.sum_steps) result = {} result["steps"] = sum_steps if self.last_date_specified == 1: res = session.query( func.min(PhysicalActivity.datecaptured).label("min_date") ).filter( PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured <= day).first() else: res = session.query( func.min(PhysicalActivity.datecaptured).label("min_date") ).filter( PhysicalActivity.beneficiary_id == beneficiary_id).first() min_date = res.min_date if self.last_date_specified == 1: max_date = self.myjson["Day"] if max_date == "Today": max_date = datetime.date.today() else: max_date = datetime.datetime.strptime( max_date, '%Y-%m-%d').date() else: max_date = datetime.date.today() if min_date is None: dates_difference = 1 else: delta = max_date - min_date dates_difference = delta.days + 1 if min_date > max_date: dates_difference = 1 result["dates_counter"] = dates_difference except Exception as e: print "Exception thrown in function getSteps(): %s" % e result["steps"] = 0 result["dates_counter"] = 1 #self.steps=sum_steps session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def get_daily_steps(self,startdate,enddate): errorcode={} try: engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() key1="R" key2="F" first_posn=0 second_posn=0 counted_dates=0 step_sum_by_date=0 activity_tuple={} activity_tuples={} # count if there are distinct dates. counted_dates=session.query(func.count(distinct(PhysicalActivity.datecaptured))).filter(PhysicalActivity.beneficiary_id==self.b_id).filter(PhysicalActivity.datecaptured>=startdate).filter(PhysicalActivity.datecaptured<=enddate).order_by(PhysicalActivity.datecaptured).first() retrieved_dates_counter=0# initialize how many distinct dates are in the database for retrieved_dates_counter in counted_dates: break if retrieved_dates_counter==0: #errorcode["error"]=-4 activity_tuple[key2+"%d"%second_posn]="12AM-12AM" second_posn=second_posn+1 activity_tuple[key2+"%d"%second_posn]=-4 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=activity_tuple first_posn=first_posn+1 activity_tuple={} return(json.JSONEncoder().encode(activity_tuples)) res = session.query(PhysicalActivity).filter(PhysicalActivity.beneficiary_id==self.b_id).filter(PhysicalActivity.datecaptured>=startdate).filter(PhysicalActivity.datecaptured<=enddate).order_by(PhysicalActivity.datecaptured).order_by(PhysicalActivity.starttimecaptured).all() #query result within time clusters of one date if retrieved_dates_counter<2 and retrieved_dates_counter>0 and startdate==enddate: #The condition startdate==enddate prevents a weeks with only one day of activities to be splitted into time intervals. time_clusters_str=['12AM-6AM','6AM-12PM','12PM-6PM','6PM-12AM'] steps_on_time_clusters=[0,0,0,0] #time_clusters=[['00:00','03:59'],['04:00','07:59'],['08:00','11:59'],['12:00','15:59'],['16:00','19:59'],['20:00','23:59']] end_time_clusters=['05:59','11:59','17:59','23:59'] time_clusters_counter=0 time_space_counter=0# for keeping track of time clustera # find which activity falls under a particular time cluster and add them together for end_time_cluster in end_time_clusters: activity_tuple={} for activity in res: initial_time=datetime.datetime.strptime(end_time_cluster, "%H:%M")-datetime.timedelta(hours=6)+datetime.timedelta(minutes=1)# get start time for time cluster. We add one minute at the end becuase we want start time to begin with 0 minutes final_time=datetime.datetime.strptime(end_time_cluster, "%H:%M") # now lets get the time from the database and compare if it is within range of start time and end time activity_time=datetime.datetime.strptime(activity.starttimecaptured, "%H:%M") #comparing if start time of an activity is within a specific time cluster if activity_time>=initial_time and activity_time<final_time: steps_on_time_clusters[time_space_counter]=steps_on_time_clusters[time_space_counter]+activity.stepscounter #add all the time that belong to one cluster #print steps_on_time_clusters[time_space_counter] activity_tuple[key2+"%d"%second_posn]=time_clusters_str[time_space_counter] second_posn=second_posn+1 #activity_tuple[key2+"%d"%second_posn]=activity.starttimecaptured #second_posn=second_posn+1 #activity_tuple[key2+"%d"%second_posn]=activity.endtimecaptured #second_posn=second_posn+1 activity_tuple[key2+"%d"%second_posn]=steps_on_time_clusters[time_space_counter] second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=activity_tuple first_posn=first_posn+1 time_space_counter=time_space_counter+1 session.close() engine.dispose() dbconn.close() return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) except Exception as e: session.close() engine.dispose() dbconn.close() second_posn=0 #errorcode["error"]=e #return (json.JSONEncoder().encode(errorcode)) #return errorcode activity_tuple[key2+"%d"%second_posn]="%s"%e second_posn=second_posn+1 activity_tuple[key2+"%d"%second_posn]=-1 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=activity_tuple first_posn=first_posn+1 activity_tuple={} return(json.JSONEncoder().encode(activity_tuples))
def retrieveIndividualBadge(self): result = {} try: varmyjson = {'Day': "Today"} myjson = { 'Fname': 'Dummy', 'Lname': 'Dummy', 'Username': self.intermediary_id } obj = RetrieveIntermediary(myjson) res = obj.isAssignedBeneficiary() beneficiary_tuple = json.loads(res) b_id = beneficiary_tuple["Id"] if b_id == None: raise ValueError( 'This individual is not assigned a beneficiary') clickPointsObj = RetrievePoints(varmyjson, self.intermediary_id, 1) resclickpoints = clickPointsObj.retrieveIntermediaryClickPoints() resclickpoints = json.loads(resclickpoints) #clickpoints=int(resclickpoints["points"]/resclickpoints["dates_counter"]) clickpoints = int(resclickpoints["points"]) if clickpoints > 18: clickpoints = 18 ressteps = clickPointsObj.getSteps(b_id) ressteps = json.loads(ressteps) #stepspoints=int(ressteps["steps"]/(100*ressteps["dates_counter"])) stepspoints = int(ressteps["steps"]) if stepspoints > 70000: stepspoints = 70000 badges_urls = [] if stepspoints >= 70000: if clickpoints >= 18: badges.append("Queen") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/queen.jpeg" ) else: badges.append("No promotion") elif stepspoints >= 63000: if clickpoints >= 16: badges.append("Princess") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/princess.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/duchess.jpeg" ) elif stepspoints >= 56000: if clickpoints >= 14: badges.append("Duchess") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/duchess.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/grandmaster.jpeg" ) elif stepspoints >= 49000: if clickpoints >= 12: badges.append("Grand Master") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/grandmaster.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniormaster.jpeg" ) elif stepspoints >= 42000: if clickpoints >= 10: badges.append("Senior Master") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniormaster.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/master.jpeg" ) elif stepspoints >= 31500: if clickpoints >= 8: badges.append("Master") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/master.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/juniormaster.jpeg" ) if stepspoints >= 21000: if clickpoints >= 4: badges.append("Junior Master") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/juniormaster.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniorservant.jpeg" ) elif stepspoints >= 14000: if clickpoints >= 2: badges.append("Senior Servant") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/seniorservant.jpeg" ) else: badges.append("No Promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/servant.jpeg" ) if stepspoints >= 7000: if clickpoints >= 1: badges.append("Servant") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/servant.jpeg" ) else: badges.append("No promotion") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/slave.jpeg" ) else: badges.append("Slave") badges_urls.append( "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/badges/slave.jpeg" ) num = randint(2, 49) obj = RetrieveSound(num) res = obj.retrieveSoundUrl() res = json.loads(res) sound_url = res["url"] result = { "R00": { "D0": "Badge Acquired", "D1": badges_urls[0], "D2": sound_url } } except Exception as e: message = "An exception was thrown in function retrieveIndividualScore(): %s" % e result = { "R00": { "D0": message, "D1": "http://ict4d01.cs.uct.ac.za/static/django_facebook/images/nobadge.jpeg", "D2": "Error" } } session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))
def get_three_months_steps(self,startdate,enddate): monthly_activity_tuple={} weekly_activity_tuple=None activity_tuples={} try: startTime=datetime.datetime.now() month_start_date=startdate month_end_date=self.last_day_of_month(startdate) key1="R" key2="F" first_posn=0 second_posn=0 weeks_iterator=0 months_iterator=1 total_monthly_steps=0 activity_tuples={} found_data=0 engine=db #create a Session Session = sessionmaker(bind=engine) session = Session() while ((month_start_date>=startdate) and (month_start_date<=enddate)): monthly_activity_tuple={} weekly_activity_tuple=None total_monthly_steps=0 weeks_iterator=0 #weekly_activity_tuple=json.loads(self.get_monthly_steps(month_start_date,month_end_date)) #steps=0 res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==self.b_id).filter(PhysicalActivity.datecaptured>=month_start_date).filter(PhysicalActivity.datecaptured<=month_end_date).order_by(PhysicalActivity.datecaptured).first() if res.sum_steps==None: pass else: total_monthly_steps=int(res.sum_steps) exception_info="" if total_monthly_steps > 0: found_data=found_data+1 #weekly_activity_tuple[key2+"%d"%second_posn]="Week %s"%weeks_iterator monthly_activity_tuple[key2+"%d"%second_posn]="%s"%month_start_date.strftime("%m/%Y") second_posn=second_posn+1 months_iterator=months_iterator+1 num_days_in_month=self.month_num_days(month_start_date) monthly_activity_tuple[key2+"%d"%second_posn]=total_monthly_steps/num_days_in_month #average if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=monthly_activity_tuple first_posn=first_posn+1 month_start_date=month_end_date+datetime.timedelta(days=1)# move to the begining of next month month_end_date=self.last_day_of_month(month_start_date)# move to the end of next month #if(month_end_date>enddate): # week_end_date=enddate#for the next iteration session.close() engine.dispose() dbconn.close() if(found_data>0): return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) else: #errorcode["error"]=-4 activity_tuples={} first_posn=0 monthly_activity_tuple[key2+"%d"%second_posn]="No month" second_posn=second_posn+1 monthly_activity_tuple[key2+"%d"%second_posn]=-4 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=monthly_activity_tuple first_posn=first_posn+1 activity_tuple={} return(json.JSONEncoder().encode(OrderedDict(sorted(activity_tuples.items(), key=lambda t: t[0])))) except Exception as e: session.close() engine.dispose() dbconn.close() second_posn=0 monthly_activity_tuple[key2+"%d"%second_posn]="%s"%e second_posn=second_posn+1 monthly_activity_tuple[key2+"%d"%second_posn]=-1 second_posn=0 if first_posn<10: key1="R0" else: key1="R" activity_tuples[key1+"%d"%first_posn]=monthly_activity_tuple first_posn=first_posn+1 weekly_activity_tuple={} return(json.JSONEncoder().encode(activity_tuples))
def getSteps(self, beneficiary_id): try: engine = db #create a Session Session = sessionmaker(bind=engine) session = Session() #if self.last_date_specified==1: # day=self.myjson["Day"] # if day == "Today": # day=datetime.date.today() # res=session.query(func.sum(PhysicalActivity.stepscounter).label("sum_steps")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured<=day).first() #else: currentdate = datetime.date.today() #get the date for the first day of this week day_of_week = currentdate.weekday() week_start_date = currentdate - datetime.timedelta( days=day_of_week) res = session.query( func.sum(PhysicalActivity.stepscounter).label("sum_steps") ).filter(PhysicalActivity.beneficiary_id == beneficiary_id).filter( PhysicalActivity.datecaptured >= week_start_date).filter( PhysicalActivity.datecaptured <= currentdate).first() if res.sum_steps == None: sum_steps = 0 else: sum_steps = int(res.sum_steps) result = {} result["steps"] = sum_steps #comment code for counting the number of days ''' if self.last_date_specified==1: res=session.query(func.min(PhysicalActivity.datecaptured).label("min_date")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).filter(PhysicalActivity.datecaptured<=day).first() else: res=session.query(func.min(PhysicalActivity.datecaptured).label("min_date")).filter(PhysicalActivity.beneficiary_id==beneficiary_id).first() min_date=res.min_date if self.last_date_specified==1: max_date=self.myjson["Day"] if max_date=="Today": max_date=datetime.date.today() else: max_date=datetime.datetime.strptime(max_date , '%Y-%m-%d').date() else: max_date=datetime.date.today() if min_date is None: dates_difference=1 else: delta=max_date-min_date dates_difference=delta.days+1 if min_date>max_date: dates_difference=1 result["dates_counter"]=dates_difference ''' except Exception as e: print "Exception thrown in function getSteps(): %s" % e result["steps"] = 0 result["dates_counter"] = 1 #self.steps=sum_steps session.close() engine.dispose() dbconn.close() return (json.JSONEncoder().encode(result))