diff --git a/heima/sherlock/models.py b/heima/sherlock/models.py index 75ffbd7..0d31e3d 100644 --- a/heima/sherlock/models.py +++ b/heima/sherlock/models.py @@ -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() diff --git a/heima/sherlock/tests.py b/heima/sherlock/tests.py index 95e63d8..30de937 100644 --- a/heima/sherlock/tests.py +++ b/heima/sherlock/tests.py @@ -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):