From 9798b7e920b52e12faa610f40ef35040570d1c9d Mon Sep 17 00:00:00 2001 From: Artur Barseghyan Date: Sat, 11 Aug 2018 02:22:30 +0200 Subject: [PATCH] prepare 0.13.4 --- CHANGELOG.rst | 6 ++++++ README.rst | 4 ++-- docs/changelog.rst | 6 ++++++ docs/index.rst | 4 ++-- examples/simple/urls.py | 2 +- requirements/django_2_1.txt | 10 ++++++++++ setup.py | 5 ++--- src/fobi/base.py | 4 ++-- .../plugins/form_elements/fields/textarea/base.py | 6 +++++- src/fobi/contrib/plugins/form_handlers/mail/widgets.py | 7 +++++-- src/fobi/reusable/markdown_widget/widgets.py | 2 +- src/fobi/widgets.py | 7 ++++--- 12 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 requirements/django_2_1.txt diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6ff9f9915..fdb2db60d 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.13.4 +------ +2018-08-11 + +- Django 2.1 support (initial). + 0.13.3 ------ 2018-07-10 diff --git a/README.rst b/README.rst index c1144513b..eda7f4f44 100644 --- a/README.rst +++ b/README.rst @@ -10,8 +10,8 @@ handling the submitted form data). Prerequisites ============= -- Django 1.8, 1.9, 1.10, 1.11 and 2.0. -- Python 2.7, 3.4, 3.5, 3.6 and PyPy. +- Django 1.8, 1.9, 1.10, 1.11, 2.0 and 2.1. +- Python 2.7, 3.4, 3.5, 3.6, 3.7 and PyPy. Key concepts ============ diff --git a/docs/changelog.rst b/docs/changelog.rst index 6ff9f9915..fdb2db60d 100644 --- a/docs/changelog.rst +++ b/docs/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.13.4 +------ +2018-08-11 + +- Django 2.1 support (initial). + 0.13.3 ------ 2018-07-10 diff --git a/docs/index.rst b/docs/index.rst index b3afc8b3c..e43a87ac0 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,8 +10,8 @@ handling the submitted form data). Prerequisites ============= -- Django 1.8, 1.9, 1.10, 1.11 and 2.0. -- Python 2.7, 3.4, 3.5, 3.6 and PyPy. +- Django 1.8, 1.9, 1.10, 1.11, 2.0 and 2.1. +- Python 2.7, 3.4, 3.5, 3.6, 3.7 and PyPy. Key concepts ============ diff --git a/examples/simple/urls.py b/examples/simple/urls.py index fdefebfcb..c8812e9f1 100644 --- a/examples/simple/urls.py +++ b/examples/simple/urls.py @@ -157,7 +157,7 @@ getattr(settings, 'DEBUG_TOOLBAR', False): import debug_toolbar - if versions.DJANGO_GTE_2_1: + if versions.DJANGO_GTE_2_2: urlpatterns = [ url(r'^__debug__/', debug_toolbar.urls), ] + urlpatterns diff --git a/requirements/django_2_1.txt b/requirements/django_2_1.txt new file mode 100644 index 000000000..2031a084e --- /dev/null +++ b/requirements/django_2_1.txt @@ -0,0 +1,10 @@ +django-autoslug-iplweb +django-formtools>=2.0 +django-nine>=0.1.13 +django-nonefield>=0.3 +easy-thumbnails>=2.5.0 +Pillow>=2.0.0 +requests>=1.0.0 +six>=1.9 +Unidecode>=0.04.1 +vishap>=0.1.5,<2.0 diff --git a/setup.py b/setup.py index 611a8d6fd..54c6f91b7 100644 --- a/setup.py +++ b/setup.py @@ -317,7 +317,7 @@ 'django-autoslug-iplweb', 'django-formtools>=2.0', 'django-nine>=0.1.13', - 'django-nonefield>=0.1', + 'django-nonefield>=0.3', # 'ordereddict>=1.1', 'Pillow>=2.0.0', 'requests>=1.0.0', @@ -394,13 +394,12 @@ "customisable, modular, user- and developer- friendly.", long_description="{0}{1}".format(readme, screenshots), classifiers=[ - # "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", - # "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", "Environment :: Web Environment", "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", "License :: OSI Approved :: GNU Lesser General Public License v2 or " diff --git a/src/fobi/base.py b/src/fobi/base.py index 5d6dfe22f..206b3ba32 100644 --- a/src/fobi/base.py +++ b/src/fobi/base.py @@ -2752,14 +2752,14 @@ def __new__(cls, name, bases, attrs): ) return new_class - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, **kwargs): """Smart render.""" widget = plugin.get_widget() if widget.hasattr('render') and callable(widget.render): return widget.render(name, value, attrs=attrs) else: super(DeclarativeMetaclass, self).render( - name, value, attrs=attrs + name, value, attrs=attrs, **kwargs ) class WrappedWidget(with_metaclass(DeclarativeMetaclass, base_class)): diff --git a/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py b/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py index 26d0699cf..047159430 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py @@ -41,7 +41,11 @@ def get_form_field_instances(self, request=None, form_entry=None, 'widget': Textarea(attrs=widget_attrs) } - if self.data.max_length is not None: + # if self.data.max_length is not None: + if self.data.max_length: field_kwargs['max_length'] = self.data.max_length + else: + field_kwargs['max_length'] = None + field_kwargs['max_length'] = None return [(self.data.name, CharField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_handlers/mail/widgets.py b/src/fobi/contrib/plugins/form_handlers/mail/widgets.py index 43f1ebb98..e572b943b 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/widgets.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/widgets.py @@ -30,7 +30,10 @@ def prep_value(self, value): return MULTI_EMAIL_FIELD_VALUE_SPLITTER.join(value) raise ValidationError('Invalid format.') - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, **kwargs): """Render.""" value = self.prep_value(value) - return super(MultiEmailWidget, self).render(name, value, attrs) + return super(MultiEmailWidget, self).render(name, + value, + attrs, + **kwargs) diff --git a/src/fobi/reusable/markdown_widget/widgets.py b/src/fobi/reusable/markdown_widget/widgets.py index be83ccce4..fb428a259 100644 --- a/src/fobi/reusable/markdown_widget/widgets.py +++ b/src/fobi/reusable/markdown_widget/widgets.py @@ -16,7 +16,7 @@ class MarkdownWidget(Textarea): """Markdown widget based on remarkable.""" - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, **kwargs): if value is None: value = '' diff --git a/src/fobi/widgets.py b/src/fobi/widgets.py index 76a763cca..0f2b7f927 100644 --- a/src/fobi/widgets.py +++ b/src/fobi/widgets.py @@ -83,7 +83,7 @@ def __init__(self, attrs=None, choices=(), prepend_html=None, else None super(RichSelect, self).__init__(attrs=attrs, choices=choices) - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, **kwargs): """Renders the element, having prepended and appended extra parts.""" if self.override_name is not None: name = self.override_name @@ -91,7 +91,8 @@ def render(self, name, value, attrs=None): rendered_select = super(RichSelect, self).render( name=name, value=value, - attrs=attrs + attrs=attrs, + **kwargs ) return mark_safe( @@ -114,7 +115,7 @@ class RichSelectInverseQuotes(RichSelect): 'rich_select_inverse_option.html' elif versions.DJANGO_GTE_1_10: - def render(self, name, value, attrs=None): + def render(self, name, value, attrs=None, **kwargs): if self.override_name is not None: name = self.override_name