diff --git a/src/db.sqlite3 b/src/db.sqlite3 index dc261cd..5d0665c 100644 Binary files a/src/db.sqlite3 and b/src/db.sqlite3 differ diff --git a/src/sherlock/models.py b/src/sherlock/models.py index d22ffcf..d504e1e 100644 --- a/src/sherlock/models.py +++ b/src/sherlock/models.py @@ -18,12 +18,16 @@ class Gauge(models.Model): class Diff(object): def __init__(self, mesure_1, mesure_2): - self.diff = mesure_1.diff(mesure_2) + self.increase = abs(mesure_1.diff(mesure_2)) + self.delta = abs(mesure_1.moment - mesure_2.moment) class Mesure(models.Model): moment = models.DateTimeField() value = models.DecimalField(max_digits=10, decimal_places=4) - gauge = models.ForeignKey(Gauge) + gauge = models.ForeignKey(Gauge, related_name='mesures') + + def __str__(self): + return "{} {}".format(self.moment, self.value) def diff(self, other_mesure): if self.category != other_mesure.category: @@ -31,9 +35,14 @@ class Mesure(models.Model): return self.value - other_mesure.value - def diff_number_of_days(self, other_mesure): - max(self.moment, other_mesure.moment) - min(self.moment, other_mesure.moment) - @property def category(self): - return self.gauge.category \ No newline at end of file + return self.gauge.category + + @property + def previous(self): + return self.gauge.mesures.filter(moment__lt=self.moment).order_by('-moment')[0] + + @property + def next(self): + return self.gauge.mesures.filter(moment__gt=self.moment).order_by('moment')[0] \ No newline at end of file diff --git a/src/sherlock/tests.py b/src/sherlock/tests.py index 0662981..5d8b054 100644 --- a/src/sherlock/tests.py +++ b/src/sherlock/tests.py @@ -35,6 +35,13 @@ class TestGaugeModel(TestCase): self.assertEqual(gauge_4, gauges_list[1]) self.assertEqual(gauge_2, gauges_list[2]) self.assertEqual(gauge_3, gauges_list[3]) + + def test_mesures_related_name(self): + cat_water = Category.objects.create(name='eau') + gauge_1 = Gauge.objects.create(serial_number='undefined', category=cat_water) + self.mesure_1 = Mesure.objects.create(moment=timezone.make_aware(datetime.now()), value=0.001, gauge=gauge_1) + + self.assertEqual(1, len(gauge_1.mesures.all())) class TestMesureModel(TestCase): @@ -45,8 +52,11 @@ class TestMesureModel(TestCase): self.gauge_1 = Gauge.objects.create(serial_number='undefined', category=self.cat_water) self.gauge_2 = Gauge.objects.create(serial_number='undefined', category=self.cat_gaz) - self.mesure_1 = Mesure.objects.create(moment=timezone.make_aware(datetime.now()), value=0.001, gauge=self.gauge_1) - self.mesure_2 = Mesure.objects.create(moment=timezone.make_aware(datetime.now()), value=0.002, gauge=self.gauge_2) + d1 = timezone.make_aware(datetime(2016, 1, 2)) + d2 = timezone.make_aware(datetime(2016, 1, 3)) + + self.mesure_1 = Mesure.objects.create(moment=d1, value=0.001, gauge=self.gauge_1) + self.mesure_2 = Mesure.objects.create(moment=d2, value=0.002, gauge=self.gauge_2) self.mesure_3 = Mesure.objects.create(moment=timezone.make_aware(datetime.now()), value=0.003, gauge=self.gauge_1) def test_category_property(self): @@ -60,3 +70,10 @@ class TestMesureModel(TestCase): with self.assertRaises(Exception): mesure_1.diff(mesure_2) + + def test_previous(self): + self.assertEqual(self.mesure_1, self.mesure_2.previous) + + def test_next(self): + self.assertEqual(self.mesure_2, self.mesure_1.next) +