From 028e95ab5e79b5b0a9ec783c5ade7c9798e7df7c Mon Sep 17 00:00:00 2001 From: Fred Pauchet Date: Mon, 8 Aug 2016 08:42:22 +0200 Subject: [PATCH] flake8 integration --- .gitlab-ci.yml | 3 ++- requirements/dev.txt | 3 ++- src/sherlock/admin.py | 2 ++ src/sherlock/models.py | 19 ++++++++++++------- src/sherlock/tests.py | 27 +++++++++++++++++---------- tox.ini | 3 +++ 6 files changed, 38 insertions(+), 19 deletions(-) create mode 100644 tox.ini diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bf67c4a..2d100f9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,5 +5,6 @@ test:python-3.4: stage: test image: python:3.4-slim script: + - flake8 src/ - coverage run src/manage.py test sherlock - - coverage report -m \ No newline at end of file + - coverage report -m diff --git a/requirements/dev.txt b/requirements/dev.txt index da23972..f9b8593 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -1,3 +1,4 @@ -r base.txt coverage -django_coverage_plugin \ No newline at end of file +django_coverage_plugin +flake8 \ No newline at end of file diff --git a/src/sherlock/admin.py b/src/sherlock/admin.py index b2ff9c2..2c03253 100644 --- a/src/sherlock/admin.py +++ b/src/sherlock/admin.py @@ -1,7 +1,9 @@ from django.contrib import admin + from .models import Category, Gauge, Mesure + class MesureAdmin(admin.ModelAdmin): model = Mesure diff --git a/src/sherlock/models.py b/src/sherlock/models.py index 5a60a82..630b7cf 100644 --- a/src/sherlock/models.py +++ b/src/sherlock/models.py @@ -1,34 +1,39 @@ from django.db import models + class Category(models.Model): name = models.CharField(max_length=255, unique=True) def __str__(self): return self.name + class Gauge(models.Model): serial_number = models.CharField(max_length=40) category = models.ForeignKey(Category) def __str__(self): return '{} ({})'.format(self.category, self.serial_number) - + class Meta: ordering = ['category'] + class Diff(object): def __init__(self, mesure_1, mesure_2): self.increase = abs(mesure_1.diff(mesure_2)) self.timedelta = abs(mesure_1.moment - mesure_2.moment) + class MesureManager(models.Manager): def create(self, moment, value, gauge_sn, category_label): - category, cat_created = Category.objects.get_or_create(name=category_label) - gauge, gauge_created = Gauge.objects.get_or_create(serial_number=gauge_sn, category=category) + cat, cat_created = Category.objects.get_or_create(name=category_label) + gauge, gauge_created = Gauge.objects.get_or_create(serial_number=gauge_sn, category=cat) mesure = Mesure.objects.create(moment=moment, value=value, gauge=gauge) return mesure + class Mesure(models.Model): moment = models.DateTimeField() value = models.DecimalField(max_digits=10, decimal_places=4) @@ -40,23 +45,23 @@ class Mesure(models.Model): def diff(self, other_mesure): if self.category != other_mesure.category: raise Exception('Cannot diff on two different categories') - + return self.value - other_mesure.value @property def category(self): return self.gauge.category - + @property def previous(self): try: return self.gauge.mesures.filter(moment__lt=self.moment).order_by('-moment')[0] except IndexError: return None - + @property def next(self): try: return self.gauge.mesures.filter(moment__gt=self.moment).order_by('moment')[0] except IndexError: - return None \ No newline at end of file + return None diff --git a/src/sherlock/tests.py b/src/sherlock/tests.py index a47e405..83581ca 100644 --- a/src/sherlock/tests.py +++ b/src/sherlock/tests.py @@ -1,10 +1,13 @@ from datetime import datetime + from django.test import TestCase from django.utils import timezone + from .models import Category, Gauge, Mesure + class TestCategoryModel(TestCase): def test_str(self): @@ -12,6 +15,7 @@ class TestCategoryModel(TestCase): self.assertEqual('test', str(cat)) + class TestGaugeModel(TestCase): def test_str(self): @@ -19,7 +23,7 @@ class TestGaugeModel(TestCase): gauge = Gauge.objects.create(serial_number='test', category=cat) self.assertEqual('eau (test)', str(gauge)) - + def test_default_ordering(self): cat_water = Category.objects.create(name='eau') cat_gaz = Category.objects.create(name='gaz') @@ -35,18 +39,22 @@ 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): + now = timezone.make_aware(datetime.now()) + 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.mesure_1 = Mesure.objects.create(moment=now, value=0.001, gauge=gauge_1) self.assertEqual(1, len(gauge_1.mesures.all())) + class TestMesureManager(TestCase): def test_create(self): raise Exception('not implemented yet') + class TestMesureModel(TestCase): 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_2 = Gauge.objects.create(serial_number='undefined', category=self.cat_gaz) - + d1 = timezone.make_aware(datetime(2016, 1, 1)) d2 = timezone.make_aware(datetime(2016, 1, 2)) 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_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) - - def test_category_property(self): + + def test_category_property(self): self.assertEqual(self.cat_water, self.mesure_1.category) def test_diff_value(self): @@ -74,13 +82,12 @@ class TestMesureModel(TestCase): def test_diff_raises_exception(self): with self.assertRaises(Exception): - mesure_1.diff(mesure_2) - + self.mesure_1.diff(self.mesure_2) + def test_previous(self): self.assertEqual(self.mesure_1, self.mesure_3.previous) self.assertIsNone(self.mesure_1.previous) - + def test_next(self): self.assertEqual(self.mesure_3, self.mesure_1.next) self.assertIsNone(self.mesure_3.next) - diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..df1bfa4 --- /dev/null +++ b/tox.ini @@ -0,0 +1,3 @@ +[flake8] +max-line-length = 100 +exclude = migrations, manage.py \ No newline at end of file