From 8b321e67f9f726c16a767b7c04812a63a07eb956 Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 10:26:50 -0400 Subject: [PATCH 1/7] ignoring .venv in .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 8efd63d..9560634 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ docs/_build /.idea *.ropeproject *.swp +.venv + From 605c248790598257a9fc7b013d486189c2623901 Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 11:18:47 -0400 Subject: [PATCH 2/7] removing py34 from tox --- tox.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/tox.ini b/tox.ini index ccbfa17..4a0e897 100644 --- a/tox.ini +++ b/tox.ini @@ -5,7 +5,6 @@ envlist = [testenv] basepython = py27: python2.7 - py34: python3.4 py36: python3.6 pypy: pypy pypy3: pypy3 From a846fa5d87fb68b770df38955153a68bbe1c91e5 Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 11:19:06 -0400 Subject: [PATCH 3/7] enforcing failure in Makefile in tests for tox --- Makefile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 30e071c..cb3a613 100644 --- a/Makefile +++ b/Makefile @@ -52,11 +52,9 @@ test: python tests/manage.py test ${TEST_FLAGS} test-coverage: clean-test - -coverage run ${COVER_FLAGS} tests/manage.py test ${TEST_FLAGS} - @exit_code=$? - @-coverage report -m - @-coverage html - @exit ${exit_code} + coverage run ${COVER_FLAGS} tests/manage.py test ${TEST_FLAGS} + coverage report -m + coverage html test-all: tox From d58ca706ec9decbb31a80c54e14a48162cdcf925 Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 11:20:04 -0400 Subject: [PATCH 4/7] using absolute imports --- drf_braces/fields/__init__.py | 2 ++ drf_braces/fields/_fields.py | 2 +- drf_braces/fields/custom.py | 2 +- drf_braces/fields/mixins.py | 2 +- drf_braces/fields/modified.py | 2 +- drf_braces/forms/fields.py | 2 +- drf_braces/forms/serializer_form.py | 2 +- drf_braces/mixins.py | 2 +- drf_braces/parsers.py | 2 +- drf_braces/serializers/enforce_validation_serializer.py | 2 +- drf_braces/serializers/form_serializer.py | 2 +- drf_braces/tests/fields/test_custom.py | 2 +- drf_braces/tests/fields/test_fields.py | 2 +- drf_braces/tests/fields/test_mixins.py | 2 +- drf_braces/tests/fields/test_modified.py | 2 +- drf_braces/tests/forms/test_fields.py | 2 +- drf_braces/tests/forms/test_serializer_form.py | 2 +- .../tests/serializers/test_enforce_validation_serializer.py | 2 +- drf_braces/tests/serializers/test_form_serialzier.py | 2 +- drf_braces/tests/test_mixins.py | 2 +- drf_braces/tests/test_parsers.py | 2 +- drf_braces/tests/test_utils.py | 2 +- drf_braces/utils.py | 2 +- tests/manage.py | 2 +- tests/settings.py | 2 +- tests/urls.py | 2 +- 26 files changed, 27 insertions(+), 25 deletions(-) diff --git a/drf_braces/fields/__init__.py b/drf_braces/fields/__init__.py index d9fc336..0cf2940 100644 --- a/drf_braces/fields/__init__.py +++ b/drf_braces/fields/__init__.py @@ -1,3 +1,5 @@ +from __future__ import absolute_import, print_function, unicode_literals + from ._fields import * # noqa from .custom import * # noqa from .modified import * # noqa diff --git a/drf_braces/fields/_fields.py b/drf_braces/fields/_fields.py index 28059de..9047495 100644 --- a/drf_braces/fields/_fields.py +++ b/drf_braces/fields/_fields.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import inspect from rest_framework import fields diff --git a/drf_braces/fields/custom.py b/drf_braces/fields/custom.py index 35e0b9e..031de91 100644 --- a/drf_braces/fields/custom.py +++ b/drf_braces/fields/custom.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import inspect import pytz diff --git a/drf_braces/fields/mixins.py b/drf_braces/fields/mixins.py index b4b901c..22f89f7 100644 --- a/drf_braces/fields/mixins.py +++ b/drf_braces/fields/mixins.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import six from rest_framework.fields import CharField, empty diff --git a/drf_braces/fields/modified.py b/drf_braces/fields/modified.py index 82f3919..9a04b04 100644 --- a/drf_braces/fields/modified.py +++ b/drf_braces/fields/modified.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import inspect from . import _fields as fields diff --git a/drf_braces/forms/fields.py b/drf_braces/forms/fields.py index 0964b79..b908ef0 100644 --- a/drf_braces/forms/fields.py +++ b/drf_braces/forms/fields.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import six from dateutil.parser import parse diff --git a/drf_braces/forms/serializer_form.py b/drf_braces/forms/serializer_form.py index 45d39cf..0b4e56c 100644 --- a/drf_braces/forms/serializer_form.py +++ b/drf_braces/forms/serializer_form.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import inspect import six diff --git a/drf_braces/mixins.py b/drf_braces/mixins.py index 079fc46..f5d90e5 100644 --- a/drf_braces/mixins.py +++ b/drf_braces/mixins.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals from .parsers import StrippingJSONParser diff --git a/drf_braces/parsers.py b/drf_braces/parsers.py index c8ff5d6..a3087cc 100644 --- a/drf_braces/parsers.py +++ b/drf_braces/parsers.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import json from collections import OrderedDict diff --git a/drf_braces/serializers/enforce_validation_serializer.py b/drf_braces/serializers/enforce_validation_serializer.py index d18ca86..bf2ead6 100644 --- a/drf_braces/serializers/enforce_validation_serializer.py +++ b/drf_braces/serializers/enforce_validation_serializer.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import inspect from rest_framework import fields, serializers diff --git a/drf_braces/serializers/form_serializer.py b/drf_braces/serializers/form_serializer.py index b8c0a64..4ce9511 100644 --- a/drf_braces/serializers/form_serializer.py +++ b/drf_braces/serializers/form_serializer.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals from collections import OrderedDict import six diff --git a/drf_braces/tests/fields/test_custom.py b/drf_braces/tests/fields/test_custom.py index f978c41..ebd1884 100644 --- a/drf_braces/tests/fields/test_custom.py +++ b/drf_braces/tests/fields/test_custom.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from collections import OrderedDict from decimal import Decimal diff --git a/drf_braces/tests/fields/test_fields.py b/drf_braces/tests/fields/test_fields.py index eedafc7..0721578 100644 --- a/drf_braces/tests/fields/test_fields.py +++ b/drf_braces/tests/fields/test_fields.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from drf_braces.fields import _fields diff --git a/drf_braces/tests/fields/test_mixins.py b/drf_braces/tests/fields/test_mixins.py index 4e2671c..7c64d62 100644 --- a/drf_braces/tests/fields/test_mixins.py +++ b/drf_braces/tests/fields/test_mixins.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest import mock diff --git a/drf_braces/tests/fields/test_modified.py b/drf_braces/tests/fields/test_modified.py index 8e5671d..09534cc 100644 --- a/drf_braces/tests/fields/test_modified.py +++ b/drf_braces/tests/fields/test_modified.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from decimal import Decimal diff --git a/drf_braces/tests/forms/test_fields.py b/drf_braces/tests/forms/test_fields.py index 722771b..7905f92 100644 --- a/drf_braces/tests/forms/test_fields.py +++ b/drf_braces/tests/forms/test_fields.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from datetime import datetime diff --git a/drf_braces/tests/forms/test_serializer_form.py b/drf_braces/tests/forms/test_serializer_form.py index 4cba54d..236f949 100644 --- a/drf_braces/tests/forms/test_serializer_form.py +++ b/drf_braces/tests/forms/test_serializer_form.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from datetime import datetime diff --git a/drf_braces/tests/serializers/test_enforce_validation_serializer.py b/drf_braces/tests/serializers/test_enforce_validation_serializer.py index 9f92b5a..117d8f9 100644 --- a/drf_braces/tests/serializers/test_enforce_validation_serializer.py +++ b/drf_braces/tests/serializers/test_enforce_validation_serializer.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest import mock diff --git a/drf_braces/tests/serializers/test_form_serialzier.py b/drf_braces/tests/serializers/test_form_serialzier.py index c488803..e378e8b 100644 --- a/drf_braces/tests/serializers/test_form_serialzier.py +++ b/drf_braces/tests/serializers/test_form_serialzier.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from collections import OrderedDict from datetime import datetime diff --git a/drf_braces/tests/test_mixins.py b/drf_braces/tests/test_mixins.py index 2c41db4..5745cf2 100644 --- a/drf_braces/tests/test_mixins.py +++ b/drf_braces/tests/test_mixins.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest import mock diff --git a/drf_braces/tests/test_parsers.py b/drf_braces/tests/test_parsers.py index cacf438..3db3fb1 100644 --- a/drf_braces/tests/test_parsers.py +++ b/drf_braces/tests/test_parsers.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import json import unittest from collections import OrderedDict diff --git a/drf_braces/tests/test_utils.py b/drf_braces/tests/test_utils.py index 1809e1e..7c72877 100644 --- a/drf_braces/tests/test_utils.py +++ b/drf_braces/tests/test_utils.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import unittest from rest_framework import fields diff --git a/drf_braces/utils.py b/drf_braces/utils.py index ced3b2c..0b49f97 100644 --- a/drf_braces/utils.py +++ b/drf_braces/utils.py @@ -1,4 +1,4 @@ -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import inspect import itertools diff --git a/tests/manage.py b/tests/manage.py index 2258a7f..ad8ebc8 100755 --- a/tests/manage.py +++ b/tests/manage.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import os import sys diff --git a/tests/settings.py b/tests/settings.py index 326aca1..551f226 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals import os import django diff --git a/tests/urls.py b/tests/urls.py index 0a48d4d..a8ab943 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals urlpatterns = [] From 75651e907ef76eec7fb86ef3a61ef37e2a1b8a41 Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 11:20:24 -0400 Subject: [PATCH 5/7] fixed issues in RoundedDecimalField --- drf_braces/fields/custom.py | 13 +++++++------ drf_braces/tests/fields/test_custom.py | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/drf_braces/fields/custom.py b/drf_braces/fields/custom.py index 031de91..12f4b32 100644 --- a/drf_braces/fields/custom.py +++ b/drf_braces/fields/custom.py @@ -63,18 +63,15 @@ class NumericField(ValueAsTextFieldMixin, fields.IntegerField): } -__all__ = [name for name, value in locals().items() - if inspect.isclass(value) and issubclass(value, fields.Field)] - - class RoundedDecimalField(fields.DecimalField): """ Currency field subclass of Decimal used for rounding currencies to two decimal places. """ - def __init__(self, max_digits=100, decimal_places=2, *args, **kwargs): - super(fields.DecimalField, self).__init__( + def __init__(self, max_digits=None, decimal_places=2, *args, **kwargs): + max_digits = max_digits or self.MAX_STRING_LENGTH + super(RoundedDecimalField, self).__init__( max_digits=max_digits, decimal_places=decimal_places, *args, **kwargs @@ -85,3 +82,7 @@ def to_internal_value(self, data): def validate_precision(self, data): return data + + +__all__ = [name for name, value in locals().items() + if inspect.isclass(value) and issubclass(value, fields.Field)] diff --git a/drf_braces/tests/fields/test_custom.py b/drf_braces/tests/fields/test_custom.py index ebd1884..9700f96 100644 --- a/drf_braces/tests/fields/test_custom.py +++ b/drf_braces/tests/fields/test_custom.py @@ -6,7 +6,7 @@ import mock import pytz -from drf_braces.fields.custom import ( +from drf_braces.fields import ( NonValidatingChoiceField, PositiveIntegerField, RoundedDecimalField, @@ -59,7 +59,7 @@ def test_to_internal_value(self): self.assertEqual(field.to_internal_value('haha'), 'haha') -class TestCurrencyField(unittest.TestCase): +class TestRoundedDecimalField(unittest.TestCase): def test_init(self): field = RoundedDecimalField() self.assertIsNotNone(field.max_digits) @@ -67,6 +67,19 @@ def test_init(self): def test_to_internal_value(self): field = RoundedDecimalField() + self.assertEqual(field.to_internal_value(5), Decimal('5')) + self.assertEqual(field.to_internal_value(5.2), Decimal('5.2')) + self.assertEqual(field.to_internal_value(5.23), Decimal('5.23')) + self.assertEqual(field.to_internal_value(5.2345), Decimal('5.23')) + self.assertEqual(field.to_internal_value(5.2356), Decimal('5.24')) + self.assertEqual(field.to_internal_value('5'), Decimal('5')) + self.assertEqual(field.to_internal_value('5.2'), Decimal('5.2')) + self.assertEqual(field.to_internal_value('5.23'), Decimal('5.23')) + self.assertEqual(field.to_internal_value('5.2345'), Decimal('5.23')) + self.assertEqual(field.to_internal_value('5.2356'), Decimal('5.24')) + self.assertEqual(field.to_internal_value(Decimal('5')), Decimal('5')) + self.assertEqual(field.to_internal_value(Decimal('5.2')), Decimal('5.2')) + self.assertEqual(field.to_internal_value(Decimal('5.23')), Decimal('5.23')) self.assertEqual(field.to_internal_value(Decimal('5.2345')), Decimal('5.23')) self.assertEqual(field.to_internal_value(Decimal('5.2356')), Decimal('5.24')) self.assertEqual(field.to_internal_value(Decimal('4.2399')), Decimal('4.24')) From 3cb865db8e44ba007c601e8fc6a09daa21fe9db7 Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 11:23:47 -0400 Subject: [PATCH 6/7] reversing import change and added absolute import in __init__ --- .gitignore | 1 - drf_braces/__init__.py | 2 +- drf_braces/tests/fields/test_custom.py | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 9560634..7450d94 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,3 @@ docs/_build *.ropeproject *.swp .venv - diff --git a/drf_braces/__init__.py b/drf_braces/__init__.py index 85d65b7..870a863 100755 --- a/drf_braces/__init__.py +++ b/drf_braces/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from __future__ import print_function, unicode_literals +from __future__ import absolute_import, print_function, unicode_literals __author__ = 'Miroslav Shubernetskiy' diff --git a/drf_braces/tests/fields/test_custom.py b/drf_braces/tests/fields/test_custom.py index 9700f96..355010c 100644 --- a/drf_braces/tests/fields/test_custom.py +++ b/drf_braces/tests/fields/test_custom.py @@ -6,7 +6,7 @@ import mock import pytz -from drf_braces.fields import ( +from drf_braces.fields.custom import ( NonValidatingChoiceField, PositiveIntegerField, RoundedDecimalField, From 7c8898917b73d9c2ecef10d10337059138f1f94a Mon Sep 17 00:00:00 2001 From: Miroslav Shubernetskiy Date: Thu, 27 Apr 2017 11:24:11 -0400 Subject: [PATCH 7/7] bumping version to 0.2.1 --- HISTORY.rst | 5 +++++ drf_braces/__init__.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index b30ddd0..332b639 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -3,6 +3,11 @@ History ------- +0.2.1 (2017-04-27) +~~~~~~~~~~~~~~~~~~ + +* Fixed bugs in ``RoundedDecimalField`` + 0.2.0 (2017-04-25) ~~~~~~~~~~~~~~~~~~ diff --git a/drf_braces/__init__.py b/drf_braces/__init__.py index 870a863..b2ec3c0 100755 --- a/drf_braces/__init__.py +++ b/drf_braces/__init__.py @@ -4,4 +4,4 @@ __author__ = 'Miroslav Shubernetskiy' __email__ = 'miroslav@miki725.com' -__version__ = '0.2.0' +__version__ = '0.2.1'