add next & previous methods on Mesure. Untested in all cases.
This commit is contained in:
parent
115b699b08
commit
66cf258ed6
BIN
src/db.sqlite3
BIN
src/db.sqlite3
Binary file not shown.
|
@ -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
|
||||
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]
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue