From 82e04d8e1487934e237e2e6efa775a61aff6f396 Mon Sep 17 00:00:00 2001 From: Artur Barseghyan Date: Tue, 14 Feb 2017 20:50:05 +0100 Subject: [PATCH] prepare 0.10.6 --- CHANGELOG.rst | 6 +++++ examples/requirements/django_1_11.txt | 12 +++++----- examples/simple/bar/forms.py | 6 +++++ examples/simple/bar/templates/bar/form.html | 17 ++++++++++++++ examples/simple/bar/urls.py | 8 +++++++ examples/simple/bar/views.py | 13 +++++++++++ .../runserver/bootstrap3-theme-django-1-11.sh | 1 + .../settings/bootstrap3_theme_django_1_11.py | 19 +++++++++++++++ examples/simple/urls.py | 3 +++ scripts/install_django_1_11.sh | 8 +++++++ setup.py | 2 +- src/fobi/__init__.py | 4 ++-- .../form_elements/fields/decimal/base.py | 23 ++++++++++++------- .../form_elements/fields/float/base.py | 13 +++++++---- .../form_elements/fields/integer/base.py | 10 ++++---- 15 files changed, 120 insertions(+), 25 deletions(-) create mode 100644 examples/simple/bar/forms.py create mode 100644 examples/simple/bar/templates/bar/form.html create mode 100644 examples/simple/bar/urls.py create mode 100644 examples/simple/bar/views.py create mode 100755 examples/simple/runserver/bootstrap3-theme-django-1-11.sh create mode 100644 examples/simple/settings/bootstrap3_theme_django_1_11.py create mode 100755 scripts/install_django_1_11.sh 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 + + + +
+ {% csrf_token %} + {{ form.non_field_errors }} + {{ form }} + +
+ + + 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)