Beispiel #1
0
    def get_diff(self, end, param, number, unit):
        
        params = {}
        
        if unit.startswith("day"): params['days'] = number
        if unit.startswith("week"): params['weeks'] = number
        if unit.startswith("month"): 
            params['days'] = number*30            
        if unit.startswith("year"): 
            params['days'] = number*365
        
        start = end - datetime.timedelta(**params)
        
        start_val = approximate_user_data_for_date(self.user.userdata_set.all(),param,start)
        end_val = approximate_user_data_for_date(self.user.userdata_set.all(),param,end)

        if end_val and start_val:
            return end_val - start_val
        else: return None
Beispiel #2
0
 def get_user_data(self,day=today()):
     """
     By default returns today's user data.
     If other date is set in day parameter tries to return that day user data.
     If no user data is created for this date it returns a new object, 
     if no other user_data is in the db it sets weight and waist to 0,
     else it sets weigth and waist to values from the latest user_data 
     """
     try:
         data = self.user.userdata_set.get(date=day)
         return data
     except UserData.DoesNotExist:
         # get the latest data
         approximated_weight = approximate_user_data_for_date(self.user.userdata_set.all(),"weight",day)
         if not approximated_weight: approximated_weight = 0
         return UserData(user=self.user, weight=approximated_weight, waist=0, date=day)
Beispiel #3
0
    def test_approximate_user_data_for_day(self):
        '''
        Sprawdzamy czy approximate_user_data zwraca poprawne wartosci dla konkretnych dni
        '''
        date_to = datetime.date(day=14,month=1,year=2009)
        date_from = date_to - datetime.timedelta(days=23)
        
        udl = []
                
        for i in [1,2,3,4,11,12,13,14,20,21,22,23,24,25,26]:

            udl.append(UserData(
                                weight=0 if i in [1,2,24,25,26] else 90 - i*0.5,
                                date=date_from+datetime.timedelta(days=i))
            )
        

        self.assertEqual(88.5,approximate_user_data_for_date(udl, 'weight', datetime.date(day=23,month=12,year=2008)))