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
|
||||
|
||||
|
||||
|
@ -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()
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
Loading…
Reference in New Issue