def test_last_weight_entry(self): ''' Tests that the last weight entry is correctly returned ''' self.user_login('test') user = User.objects.get(pk=2) entry = WeightEntry() entry.creation_date = datetime.datetime.today() entry.user = user entry.weight = 100 entry.save() self.assertEqual(user.userprofile.weight, 100) entry.weight = 150 entry.save() self.assertEqual(user.userprofile.weight, 150)
def user_bodyweight(self, weight): ''' Create a new weight entry as needed ''' if (not WeightEntry.objects.filter(user=self.user).exists() or (datetime.date.today() - WeightEntry.objects.filter(user=self.user).latest().creation_date > datetime.timedelta(days=3))): entry = WeightEntry() entry.weight = weight entry.user = self.user entry.creation_date = datetime.date.today() entry.save() # Update the last entry else: entry = WeightEntry.objects.filter(user=self.user).latest() entry.weight = weight entry.save() return entry
def calculate(request): ''' Calculates the BMI ''' data = [] form = BmiForm(request.POST, instance=request.user.userprofile) if form.is_valid(): form.save() # Create a new weight entry as needed if (not WeightEntry.objects.filter(user=request.user).exists() or (datetime.date.today() - WeightEntry.objects.filter(user=request.user).latest().creation_date > datetime.timedelta(1))): entry = WeightEntry() entry.weight = form.cleaned_data['weight'] entry.user = request.user entry.creation_date = datetime.date.today() entry.save() # Update the last entry else: entry = WeightEntry.objects.filter(user=request.user).latest() entry.weight = form.cleaned_data['weight'] entry.save() bmi = request.user.userprofile.calculate_bmi() result = {'bmi': '{0:.2f}'.format(bmi), 'weight': form.cleaned_data['weight'], 'height': request.user.userprofile.height} data = json.dumps(result, cls=helpers.DecimalJsonEncoder) # Return the results to the client return HttpResponse(data, 'application/json')