add with_diffs to MeasureManager; it allows to generate a dynamic property which generate diff value between two instances.
This commit is contained in:
parent
cfa1e31311
commit
7b58db2c90
|
@ -1,3 +1,4 @@
|
||||||
|
from datetime import date
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +26,16 @@ class DiffMeasure(object):
|
||||||
self.timedelta = abs(measure_1.moment - measure_2.moment)
|
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):
|
class MeasureManager(models.Manager):
|
||||||
def create_with_deps(self, moment, value, gauge_sn, category_label):
|
def create_with_deps(self, moment, value, gauge_sn, category_label):
|
||||||
cat, cat_created = Category.objects.get_or_create(name=category_label)
|
cat, cat_created = Category.objects.get_or_create(name=category_label)
|
||||||
|
@ -33,6 +44,12 @@ class MeasureManager(models.Manager):
|
||||||
|
|
||||||
return measure
|
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):
|
class Measure(models.Model):
|
||||||
moment = models.DateTimeField()
|
moment = models.DateTimeField()
|
||||||
|
|
|
@ -85,6 +85,8 @@ class TestMeasureManager(TestCase):
|
||||||
self.assertEqual(cat, m2.category)
|
self.assertEqual(cat, m2.category)
|
||||||
self.assertEqual(gauge, m2.gauge)
|
self.assertEqual(gauge, m2.gauge)
|
||||||
|
|
||||||
|
def test_with_diffs(self):
|
||||||
|
raise NotImplementedError('Not implemented yet')
|
||||||
|
|
||||||
class TestMeasureModel(TestCase):
|
class TestMeasureModel(TestCase):
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue