diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 6058a91f..e1d97aed 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -15,6 +15,12 @@ are used for versioning (schema follows below):
0.3.4 to 0.4).
- All backwards incompatible changes are mentioned in this document.
+0.10.6
+------
+2017-02-14
+
+- Minor Python 3 fixes for integer, float and decimal fields.
+
0.10.5
------
2017-02-13
diff --git a/examples/requirements/django_1_11.txt b/examples/requirements/django_1_11.txt
index f4193cd3..76e758d5 100644
--- a/examples/requirements/django_1_11.txt
+++ b/examples/requirements/django_1_11.txt
@@ -2,12 +2,12 @@
Django==1.11a1
django-admin-tools>=0.8.0
-#django-autoslug==1.9.3
django-debug-toolbar==1.5
-#django-formtools==1.0
-#django-nine>=0.1.10
-#django-nonefield==0.1
django-registration-redux>=1.4
-#easy-thumbnails==2.3
-#vishap>=0.1.5
sqlparse==0.2.2
+
+# easy-thumbnails, compatible with Django 1.11
+https://github.com/django/django-formtools/archive/master.tar.gz
+
+# django-formtools, compatible with Django 1.11
+https://github.com/SmileyChris/easy-thumbnails/archive/master.tar.gz
diff --git a/examples/simple/bar/forms.py b/examples/simple/bar/forms.py
new file mode 100644
index 00000000..456efd2b
--- /dev/null
+++ b/examples/simple/bar/forms.py
@@ -0,0 +1,6 @@
+from django import forms
+
+class MyForm(forms.Form):
+ """Test form."""
+
+ number = forms.IntegerField(max_value=200)
diff --git a/examples/simple/bar/templates/bar/form.html b/examples/simple/bar/templates/bar/form.html
new file mode 100644
index 00000000..ab70a5ce
--- /dev/null
+++ b/examples/simple/bar/templates/bar/form.html
@@ -0,0 +1,17 @@
+
+
+
+
+ Title
+
+
+
+
+
+
+
diff --git a/examples/simple/bar/urls.py b/examples/simple/bar/urls.py
new file mode 100644
index 00000000..34a6f602
--- /dev/null
+++ b/examples/simple/bar/urls.py
@@ -0,0 +1,8 @@
+from django.conf.urls import include, url
+from django.utils.translation import ugettext_lazy as _
+
+from .views import my_view
+
+urlpatterns = [
+ url(_(r'^$'), my_view, name='bar.my_view'),
+]
diff --git a/examples/simple/bar/views.py b/examples/simple/bar/views.py
new file mode 100644
index 00000000..7e44ff68
--- /dev/null
+++ b/examples/simple/bar/views.py
@@ -0,0 +1,13 @@
+from django.shortcuts import render
+
+from .forms import MyForm
+
+def my_view(request):
+ if request.method == 'POST':
+ form = MyForm(data=request.POST)
+ else:
+ form = MyForm()
+
+ context = {'form': form}
+
+ return render(request, 'bar/form.html', context)
\ No newline at end of file
diff --git a/examples/simple/runserver/bootstrap3-theme-django-1-11.sh b/examples/simple/runserver/bootstrap3-theme-django-1-11.sh
new file mode 100755
index 00000000..b2ef79e6
--- /dev/null
+++ b/examples/simple/runserver/bootstrap3-theme-django-1-11.sh
@@ -0,0 +1 @@
+./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings.bootstrap3_theme_django_1_11 --traceback -v 3
diff --git a/examples/simple/settings/bootstrap3_theme_django_1_11.py b/examples/simple/settings/bootstrap3_theme_django_1_11.py
new file mode 100644
index 00000000..4a5d0b53
--- /dev/null
+++ b/examples/simple/settings/bootstrap3_theme_django_1_11.py
@@ -0,0 +1,19 @@
+from .base import *
+
+INSTALLED_APPS = list(INSTALLED_APPS)
+
+try:
+ INSTALLED_APPS.remove('south') if 'south' in INSTALLED_APPS else None
+ INSTALLED_APPS.remove('tinymce') if 'tinymce' in INSTALLED_APPS else None
+except Exception as err:
+ pass
+
+try:
+ INSTALLED_APPS.remove('admin_tools') \
+ if 'admin_tools' in INSTALLED_APPS else None
+ INSTALLED_APPS.remove('admin_tools.menu') \
+ if 'admin_tools.menu' in INSTALLED_APPS else None
+ INSTALLED_APPS.remove('admin_tools.dashboard') \
+ if 'admin_tools.dashboard' in INSTALLED_APPS else None
+except Exception as err:
+ pass
diff --git a/examples/simple/urls.py b/examples/simple/urls.py
index b723034e..52ea6504 100644
--- a/examples/simple/urls.py
+++ b/examples/simple/urls.py
@@ -57,6 +57,9 @@ url_patterns_args = [
# foo URLs:
url(r'^foo/', include('foo.urls')),
+ # bar URLs:
+ # url(r'^bar/', include('bar.urls')),
+
url(r'^$', TemplateView.as_view(template_name=fobi_home_template)),
# django-fobi public forms contrib app:
diff --git a/scripts/install_django_1_11.sh b/scripts/install_django_1_11.sh
new file mode 100755
index 00000000..acef833b
--- /dev/null
+++ b/scripts/install_django_1_11.sh
@@ -0,0 +1,8 @@
+pip uninstall south -y
+pip install -r examples/requirements/django_1_11.txt
+python setup.py install
+mkdir -p examples/logs examples/db examples/media examples/media/static examples/media/fobi_plugins/content_image
+mkdir -p examples/media/fobi_plugins/file
+python examples/simple/manage.py collectstatic --noinput --settings=settings.bootstrap3_theme_django_1_11 --traceback -v 3
+python examples/simple/manage.py migrate --noinput --settings=settings.bootstrap3_theme_django_1_11 --traceback -v 3
+python examples/simple/manage.py fobi_create_test_data --settings=settings.bootstrap3_theme_django_1_11 --traceback -v 3
diff --git a/setup.py b/setup.py
index 6fdb1c05..dc0f26c5 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ import sys
from distutils.version import LooseVersion
from setuptools import setup, find_packages
-version = '0.10.5'
+version = '0.10.6'
# ***************************************************************************
# ************************** Python version *********************************
diff --git a/src/fobi/__init__.py b/src/fobi/__init__.py
index 2bb6c016..69733cf5 100644
--- a/src/fobi/__init__.py
+++ b/src/fobi/__init__.py
@@ -1,6 +1,6 @@
__title__ = 'django-fobi'
-__version__ = '0.10.5'
-__build__ = 0x000078
+__version__ = '0.10.6'
+__build__ = 0x000079
__author__ = 'Artur Barseghyan '
__copyright__ = '2014-2017 Artur Barseghyan'
__license__ = 'GPL 2.0/LGPL 2.1'
diff --git a/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py b/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py
index 1a9e2278..42ace84b 100644
--- a/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py
+++ b/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py
@@ -1,5 +1,7 @@
from __future__ import absolute_import
+import decimal
+
from django.forms.fields import DecimalField
from django.utils.translation import ugettext_lazy as _
@@ -41,19 +43,24 @@ class DecimalInputPlugin(FormFieldPlugin):
'initial': self.data.initial,
'required': self.data.required,
}
+
if self.data.max_value:
- field_kwargs['max_value'] = self.data.max_value
- widget_attrs['max'] = self.data.max_value
+ data_max_value = decimal.Decimal(self.data.max_value)
+ field_kwargs['max_value'] = data_max_value
+ widget_attrs['max'] = data_max_value
+
if self.data.min_value:
- field_kwargs['min_value'] = self.data.min_value
- widget_attrs['min'] = self.data.min_value
+ data_min_value = decimal.Decimal(self.data.min_value)
+ field_kwargs['min_value'] = data_min_value
+ widget_attrs['min'] = data_min_value
if self.data.max_digits:
- field_kwargs['max_digits'] = self.data.max_digits
- widget_attrs['max'] = self.data.max_value
+ data_max_digits = int(self.data.max_digits)
+ field_kwargs['max_digits'] = data_max_digits
+
if self.data.decimal_places:
- field_kwargs['decimal_places'] = self.data.decimal_places
- widget_attrs['min'] = self.data.min_value
+ data_decimal_places = int(self.data.decimal_places)
+ field_kwargs['decimal_places'] = data_decimal_places
field_kwargs['widget'] = NumberInput(attrs=widget_attrs)
diff --git a/src/fobi/contrib/plugins/form_elements/fields/float/base.py b/src/fobi/contrib/plugins/form_elements/fields/float/base.py
index 59182a25..c7909c40 100644
--- a/src/fobi/contrib/plugins/form_elements/fields/float/base.py
+++ b/src/fobi/contrib/plugins/form_elements/fields/float/base.py
@@ -34,18 +34,23 @@ class FloatInputPlugin(FormFieldPlugin):
'type': 'number',
'placeholder': self.data.placeholder,
}
+
field_kwargs = {
'label': self.data.label,
'help_text': self.data.help_text,
'initial': self.data.initial,
'required': self.data.required,
}
+
if self.data.max_value:
- field_kwargs['max_value'] = self.data.max_value
- widget_attrs['max'] = self.data.max_value
+ data_max_value = float(data.max_value)
+ field_kwargs['max_value'] = data_max_value
+ widget_attrs['max'] = data_max_value
+
if self.data.min_value:
- field_kwargs['min_value'] = self.data.min_value
- widget_attrs['min'] = self.data.min_value
+ data_min_value = float(self.data.min_value)
+ field_kwargs['min_value'] = data_min_value
+ widget_attrs['min'] = data_min_value
field_kwargs['widget'] = NumberInput(attrs=widget_attrs)
diff --git a/src/fobi/contrib/plugins/form_elements/fields/integer/base.py b/src/fobi/contrib/plugins/form_elements/fields/integer/base.py
index 0a73c7a1..859c0544 100644
--- a/src/fobi/contrib/plugins/form_elements/fields/integer/base.py
+++ b/src/fobi/contrib/plugins/form_elements/fields/integer/base.py
@@ -41,11 +41,13 @@ class IntegerInputPlugin(FormFieldPlugin):
'required': self.data.required,
}
if self.data.max_value:
- field_kwargs['max_value'] = self.data.max_value
- widget_attrs['max'] = self.data.max_value
+ data_max_value = int(self.data.max_value)
+ field_kwargs['max_value'] = data_max_value
+ widget_attrs['max'] = data_max_value
if self.data.min_value:
- field_kwargs['min_value'] = self.data.min_value
- widget_attrs['min'] = self.data.min_value
+ data_min_value = int(self.data.min_value)
+ field_kwargs['min_value'] = data_min_value
+ widget_attrs['min'] = data_min_value
field_kwargs['widget'] = NumberInput(attrs=widget_attrs)