add with_diffs to MeasureManager; it allows to generate a dynamic property which generate diff value between two instances.

This commit is contained in:
Fred Pauchet 2017-02-10 21:49:02 +01:00
parent cfa1e31311
commit 7b58db2c90
2 changed files with 19 additions and 0 deletions

View File

@ -1,3 +1,4 @@
from datetime import date
from django.db import models
@ -25,6 +26,16 @@ class DiffMeasure(object):
self.timedelta = abs(measure_1.moment - measure_2.moment)
def diff_from_measures(measure1, measure2):
"""Generate the diff between the two measures.
Returns:
The daily difference between the two measures.
"""
number_of_days = measure2.moment - measure1.moment
return (measure2.value - measure1.value) / number_of_days
class MeasureManager(models.Manager):
def create_with_deps(self, moment, value, gauge_sn, category_label):
cat, cat_created = Category.objects.get_or_create(name=category_label)
@ -33,6 +44,12 @@ class MeasureManager(models.Manager):
return measure
def with_diffs(self):
default_measure = None
for measure in self.get_queryset().iterator():
if default_measure:
setattr(Measure, 'diff', diff_from_measures(default_measure, measure))
class Measure(models.Model):
moment = models.DateTimeField()

View File

@ -85,6 +85,8 @@ class TestMeasureManager(TestCase):
self.assertEqual(cat, m2.category)
self.assertEqual(gauge, m2.gauge)
def test_with_diffs(self):
raise NotImplementedError('Not implemented yet')
class TestMeasureModel(TestCase):