flake8 integration
This commit is contained in:
parent
37f389d593
commit
028e95ab5e
|
@ -5,5 +5,6 @@ test:python-3.4:
|
||||||
stage: test
|
stage: test
|
||||||
image: python:3.4-slim
|
image: python:3.4-slim
|
||||||
script:
|
script:
|
||||||
|
- flake8 src/
|
||||||
- coverage run src/manage.py test sherlock
|
- coverage run src/manage.py test sherlock
|
||||||
- coverage report -m
|
- coverage report -m
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
-r base.txt
|
-r base.txt
|
||||||
coverage
|
coverage
|
||||||
django_coverage_plugin
|
django_coverage_plugin
|
||||||
|
flake8
|
|
@ -1,7 +1,9 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
|
|
||||||
from .models import Category, Gauge, Mesure
|
from .models import Category, Gauge, Mesure
|
||||||
|
|
||||||
|
|
||||||
class MesureAdmin(admin.ModelAdmin):
|
class MesureAdmin(admin.ModelAdmin):
|
||||||
model = Mesure
|
model = Mesure
|
||||||
|
|
||||||
|
|
|
@ -1,34 +1,39 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
class Category(models.Model):
|
class Category(models.Model):
|
||||||
name = models.CharField(max_length=255, unique=True)
|
name = models.CharField(max_length=255, unique=True)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
class Gauge(models.Model):
|
class Gauge(models.Model):
|
||||||
serial_number = models.CharField(max_length=40)
|
serial_number = models.CharField(max_length=40)
|
||||||
category = models.ForeignKey(Category)
|
category = models.ForeignKey(Category)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{} ({})'.format(self.category, self.serial_number)
|
return '{} ({})'.format(self.category, self.serial_number)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['category']
|
ordering = ['category']
|
||||||
|
|
||||||
|
|
||||||
class Diff(object):
|
class Diff(object):
|
||||||
def __init__(self, mesure_1, mesure_2):
|
def __init__(self, mesure_1, mesure_2):
|
||||||
self.increase = abs(mesure_1.diff(mesure_2))
|
self.increase = abs(mesure_1.diff(mesure_2))
|
||||||
self.timedelta = abs(mesure_1.moment - mesure_2.moment)
|
self.timedelta = abs(mesure_1.moment - mesure_2.moment)
|
||||||
|
|
||||||
|
|
||||||
class MesureManager(models.Manager):
|
class MesureManager(models.Manager):
|
||||||
def create(self, moment, value, gauge_sn, category_label):
|
def create(self, moment, value, gauge_sn, category_label):
|
||||||
category, cat_created = Category.objects.get_or_create(name=category_label)
|
cat, cat_created = Category.objects.get_or_create(name=category_label)
|
||||||
gauge, gauge_created = Gauge.objects.get_or_create(serial_number=gauge_sn, category=category)
|
gauge, gauge_created = Gauge.objects.get_or_create(serial_number=gauge_sn, category=cat)
|
||||||
mesure = Mesure.objects.create(moment=moment, value=value, gauge=gauge)
|
mesure = Mesure.objects.create(moment=moment, value=value, gauge=gauge)
|
||||||
|
|
||||||
return mesure
|
return mesure
|
||||||
|
|
||||||
|
|
||||||
class Mesure(models.Model):
|
class Mesure(models.Model):
|
||||||
moment = models.DateTimeField()
|
moment = models.DateTimeField()
|
||||||
value = models.DecimalField(max_digits=10, decimal_places=4)
|
value = models.DecimalField(max_digits=10, decimal_places=4)
|
||||||
|
@ -40,23 +45,23 @@ class Mesure(models.Model):
|
||||||
def diff(self, other_mesure):
|
def diff(self, other_mesure):
|
||||||
if self.category != other_mesure.category:
|
if self.category != other_mesure.category:
|
||||||
raise Exception('Cannot diff on two different categories')
|
raise Exception('Cannot diff on two different categories')
|
||||||
|
|
||||||
return self.value - other_mesure.value
|
return self.value - other_mesure.value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def category(self):
|
def category(self):
|
||||||
return self.gauge.category
|
return self.gauge.category
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def previous(self):
|
def previous(self):
|
||||||
try:
|
try:
|
||||||
return self.gauge.mesures.filter(moment__lt=self.moment).order_by('-moment')[0]
|
return self.gauge.mesures.filter(moment__lt=self.moment).order_by('-moment')[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def next(self):
|
def next(self):
|
||||||
try:
|
try:
|
||||||
return self.gauge.mesures.filter(moment__gt=self.moment).order_by('moment')[0]
|
return self.gauge.mesures.filter(moment__gt=self.moment).order_by('moment')[0]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
|
|
||||||
from .models import Category, Gauge, Mesure
|
from .models import Category, Gauge, Mesure
|
||||||
|
|
||||||
|
|
||||||
class TestCategoryModel(TestCase):
|
class TestCategoryModel(TestCase):
|
||||||
|
|
||||||
def test_str(self):
|
def test_str(self):
|
||||||
|
@ -12,6 +15,7 @@ class TestCategoryModel(TestCase):
|
||||||
|
|
||||||
self.assertEqual('test', str(cat))
|
self.assertEqual('test', str(cat))
|
||||||
|
|
||||||
|
|
||||||
class TestGaugeModel(TestCase):
|
class TestGaugeModel(TestCase):
|
||||||
|
|
||||||
def test_str(self):
|
def test_str(self):
|
||||||
|
@ -19,7 +23,7 @@ class TestGaugeModel(TestCase):
|
||||||
gauge = Gauge.objects.create(serial_number='test', category=cat)
|
gauge = Gauge.objects.create(serial_number='test', category=cat)
|
||||||
|
|
||||||
self.assertEqual('eau (test)', str(gauge))
|
self.assertEqual('eau (test)', str(gauge))
|
||||||
|
|
||||||
def test_default_ordering(self):
|
def test_default_ordering(self):
|
||||||
cat_water = Category.objects.create(name='eau')
|
cat_water = Category.objects.create(name='eau')
|
||||||
cat_gaz = Category.objects.create(name='gaz')
|
cat_gaz = Category.objects.create(name='gaz')
|
||||||
|
@ -35,18 +39,22 @@ class TestGaugeModel(TestCase):
|
||||||
self.assertEqual(gauge_4, gauges_list[1])
|
self.assertEqual(gauge_4, gauges_list[1])
|
||||||
self.assertEqual(gauge_2, gauges_list[2])
|
self.assertEqual(gauge_2, gauges_list[2])
|
||||||
self.assertEqual(gauge_3, gauges_list[3])
|
self.assertEqual(gauge_3, gauges_list[3])
|
||||||
|
|
||||||
def test_mesures_related_name(self):
|
def test_mesures_related_name(self):
|
||||||
|
now = timezone.make_aware(datetime.now())
|
||||||
|
|
||||||
cat_water = Category.objects.create(name='eau')
|
cat_water = Category.objects.create(name='eau')
|
||||||
gauge_1 = Gauge.objects.create(serial_number='undefined', category=cat_water)
|
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.mesure_1 = Mesure.objects.create(moment=now, value=0.001, gauge=gauge_1)
|
||||||
|
|
||||||
self.assertEqual(1, len(gauge_1.mesures.all()))
|
self.assertEqual(1, len(gauge_1.mesures.all()))
|
||||||
|
|
||||||
|
|
||||||
class TestMesureManager(TestCase):
|
class TestMesureManager(TestCase):
|
||||||
def test_create(self):
|
def test_create(self):
|
||||||
raise Exception('not implemented yet')
|
raise Exception('not implemented yet')
|
||||||
|
|
||||||
|
|
||||||
class TestMesureModel(TestCase):
|
class TestMesureModel(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@ -55,7 +63,7 @@ class TestMesureModel(TestCase):
|
||||||
|
|
||||||
self.gauge_1 = Gauge.objects.create(serial_number='undefined', category=self.cat_water)
|
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.gauge_2 = Gauge.objects.create(serial_number='undefined', category=self.cat_gaz)
|
||||||
|
|
||||||
d1 = timezone.make_aware(datetime(2016, 1, 1))
|
d1 = timezone.make_aware(datetime(2016, 1, 1))
|
||||||
d2 = timezone.make_aware(datetime(2016, 1, 2))
|
d2 = timezone.make_aware(datetime(2016, 1, 2))
|
||||||
d3 = timezone.make_aware(datetime(2016, 1, 3))
|
d3 = timezone.make_aware(datetime(2016, 1, 3))
|
||||||
|
@ -63,8 +71,8 @@ class TestMesureModel(TestCase):
|
||||||
self.mesure_1 = Mesure.objects.create(moment=d1, value=0.001, gauge=self.gauge_1)
|
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_2 = Mesure.objects.create(moment=d2, value=0.002, gauge=self.gauge_2)
|
||||||
self.mesure_3 = Mesure.objects.create(moment=d3, value=0.003, gauge=self.gauge_1)
|
self.mesure_3 = Mesure.objects.create(moment=d3, value=0.003, gauge=self.gauge_1)
|
||||||
|
|
||||||
def test_category_property(self):
|
def test_category_property(self):
|
||||||
self.assertEqual(self.cat_water, self.mesure_1.category)
|
self.assertEqual(self.cat_water, self.mesure_1.category)
|
||||||
|
|
||||||
def test_diff_value(self):
|
def test_diff_value(self):
|
||||||
|
@ -74,13 +82,12 @@ class TestMesureModel(TestCase):
|
||||||
def test_diff_raises_exception(self):
|
def test_diff_raises_exception(self):
|
||||||
|
|
||||||
with self.assertRaises(Exception):
|
with self.assertRaises(Exception):
|
||||||
mesure_1.diff(mesure_2)
|
self.mesure_1.diff(self.mesure_2)
|
||||||
|
|
||||||
def test_previous(self):
|
def test_previous(self):
|
||||||
self.assertEqual(self.mesure_1, self.mesure_3.previous)
|
self.assertEqual(self.mesure_1, self.mesure_3.previous)
|
||||||
self.assertIsNone(self.mesure_1.previous)
|
self.assertIsNone(self.mesure_1.previous)
|
||||||
|
|
||||||
def test_next(self):
|
def test_next(self):
|
||||||
self.assertEqual(self.mesure_3, self.mesure_1.next)
|
self.assertEqual(self.mesure_3, self.mesure_1.next)
|
||||||
self.assertIsNone(self.mesure_3.next)
|
self.assertIsNone(self.mesure_3.next)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue