Skip to content

Commit

Permalink
Merge pull request #17 from dealertrack/rounded
Browse files Browse the repository at this point in the history
Rounded bugfixes
  • Loading branch information
miki725 committed Apr 27, 2017
2 parents 8669b20 + 7c88989 commit 53cc64a
Show file tree
Hide file tree
Showing 31 changed files with 59 additions and 40 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -46,3 +46,4 @@ docs/_build
/.idea
*.ropeproject
*.swp
.venv
5 changes: 5 additions & 0 deletions HISTORY.rst
Expand Up @@ -3,6 +3,11 @@
History
-------

0.2.1 (2017-04-27)
~~~~~~~~~~~~~~~~~~

* Fixed bugs in ``RoundedDecimalField``

0.2.0 (2017-04-25)
~~~~~~~~~~~~~~~~~~

Expand Down
8 changes: 3 additions & 5 deletions Makefile
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions drf_braces/__init__.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals
from __future__ import absolute_import, print_function, unicode_literals


__author__ = 'Miroslav Shubernetskiy'
__email__ = 'miroslav@miki725.com'
__version__ = '0.2.0'
__version__ = '0.2.1'
2 changes: 2 additions & 0 deletions 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
2 changes: 1 addition & 1 deletion 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
Expand Down
15 changes: 8 additions & 7 deletions 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
Expand Down Expand Up @@ -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
Expand All @@ -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)]
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
17 changes: 15 additions & 2 deletions 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
Expand Down Expand Up @@ -59,14 +59,27 @@ 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)
self.assertEqual(field.decimal_places, 2)

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'))
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
@@ -1,4 +1,4 @@
from __future__ import print_function, unicode_literals
from __future__ import absolute_import, print_function, unicode_literals
import unittest

import mock
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
2 changes: 1 addition & 1 deletion 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

Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
2 changes: 1 addition & 1 deletion 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 = []
1 change: 0 additions & 1 deletion tox.ini
Expand Up @@ -5,7 +5,6 @@ envlist =
[testenv]
basepython =
py27: python2.7
py34: python3.4
py36: python3.6
pypy: pypy
pypy3: pypy3
Expand Down

0 comments on commit 53cc64a

Please sign in to comment.