From b6dc3185c4d13c1db38bdad375a8cdd997d643e4 Mon Sep 17 00:00:00 2001 From: Artur Barseghyan Date: Thu, 26 Mar 2015 01:27:17 +0100 Subject: [PATCH] prepare 0.4.33; add checkbox select multiple plugin; minor improvements of foundation 5 theme; initial config for tox tests; general code clean-up --- CHANGELOG.rst | 56 ++++-- QUICK_START.rst | 26 ++- README.rst | 13 ++ TODOS.rst | 8 +- ...ango15.txt => requirements_django_1_5.txt} | 3 + ...ango16.txt => requirements_django_1_6.txt} | 3 + ...ango17.txt => requirements_django_1_7.txt} | 2 + ...ango18.txt => requirements_django_1_8.txt} | 2 + ...er-bootstrap3-theme-django-1-7-captcha.sh} | 2 +- ...3-theme-django-1-7-feincms_integration.sh} | 2 +- ... runserver-bootstrap3-theme-django-1-7.sh} | 2 +- ... runserver-bootstrap3-theme-django-1-8.sh} | 2 +- ...otstrap3-theme-djangocms-2-integration.sh} | 0 ...> settings_bootstrap3_theme_django_1_7.py} | 0 ...gs_bootstrap3_theme_django_1_7_captcha.py} | 0 ...gs_bootstrap3_theme_django_1_7_feincms.py} | 0 ...> settings_bootstrap3_theme_django_1_8.py} | 0 scripts/install_django_1_5.sh | 2 +- scripts/install_django_1_6.bat | 2 +- scripts/install_django_1_6.sh | 2 +- scripts/install_django_1_7.sh | 10 +- scripts/install_django_1_8.sh | 10 +- scripts/test_django_1_7.sh | 2 +- scripts/test_django_1_8.sh | 2 +- setup.py | 2 +- src/fobi/__init__.py | 4 +- .../checkbox_select_multiple/settings.py | 7 +- .../foundation5/snippets/form_snippet.html | 24 ++- .../fobi/generic/snippets/form_snippet.html | 9 + src/fobi/templatetags/fobi_tags.py | 3 + tox.ini | 163 ++++++++++-------- 31 files changed, 241 insertions(+), 122 deletions(-) rename examples/{requirements_django15.txt => requirements_django_1_5.txt} (79%) rename examples/{requirements_django16.txt => requirements_django_1_6.txt} (79%) rename examples/{requirements_django17.txt => requirements_django_1_7.txt} (82%) rename examples/{requirements_django18.txt => requirements_django_1_8.txt} (84%) rename examples/simple/{runserver-bootstrap3-theme-django17-captcha.sh => runserver-bootstrap3-theme-django-1-7-captcha.sh} (55%) rename examples/simple/{runserver-bootstrap3-theme-django17-feincms_integration.sh => runserver-bootstrap3-theme-django-1-7-feincms_integration.sh} (55%) rename examples/simple/{runserver-bootstrap3-theme-django17.sh => runserver-bootstrap3-theme-django-1-7.sh} (59%) rename examples/simple/{runserver-bootstrap3-theme-django18.sh => runserver-bootstrap3-theme-django-1-8.sh} (59%) rename examples/simple/{runserver-bootstrap3-theme-djangocms2-integration.sh => runserver-bootstrap3-theme-djangocms-2-integration.sh} (100%) rename examples/simple/{settings_bootstrap3_theme_django17.py => settings_bootstrap3_theme_django_1_7.py} (100%) rename examples/simple/{settings_bootstrap3_theme_django17_captcha.py => settings_bootstrap3_theme_django_1_7_captcha.py} (100%) rename examples/simple/{settings_bootstrap3_theme_django17_feincms.py => settings_bootstrap3_theme_django_1_7_feincms.py} (100%) rename examples/simple/{settings_bootstrap3_theme_django18.py => settings_bootstrap3_theme_django_1_8.py} (100%) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index d454cef71..f05ee8c38 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -15,13 +15,31 @@ are used for versioning (schema follows below): 0.3.4 to 0.4). - All backwards incompatible changes are mentioned in this document. -0.4.33 +0.5 ------------------------------------- yyyy-mm-ddd (not yet released). -- Checkbox select multiple field added - `fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple - `_. +This release contains minor backwards incompatible changes, related to the +change of the name of the "simple" theme into "django_admin_style" theme. + +- Mailchimp support. +- Kube framework integration (theme). +- PureCSS framework integration (theme). +- Skeleton framework integration (theme). +- Baseline framework integration (theme). +- Amazium framework integration (theme). +- The "simple" theme has been renamed to "django_admin_style". + +0.4.33 +------------------------------------- +2015-03-25 + +- `Checkbox select multiple + `_ + field added. +- Minor improvements (styling) in the Foundation 5 theme. +- Initial configuration for tox tests. +- Clean up requirements (for example setups and tests). 0.4.32 ------------------------------------- @@ -52,18 +70,24 @@ yyyy-mm-ddd (not yet released). ------------------------------------- 2015-03-20 -- Decimal field added `fobi.contrib.plugins.form_elements.fields.decimal - `_. -- Float field added `fobi.contrib.plugins.form_elements.fields.float - `_. -- Slug field added `fobi.contrib.plugins.form_elements.fields.slug - `_. -- IP address field added `fobi.contrib.plugins.form_elements.fields.ip_address - `_. -- Null boolean field `fobi.contrib.plugins.form_elements.fields.null_boolean - `_. -- Time field added `fobi.contrib.plugins.form_elements.fields.time - `_. +- `Decimal + `_ + field added. +- `Float + `_ + field added. +- `Slug + `_ + field added . +- `IP address + `_ + field added. +- `Null boolean + `_ + field added. +- `Time + `_ + field added. - From now on using `simplejson` package in favour of `json`, since it can handle decimal data. - Minor improvements of the date plugins (`datetime`, `date`). diff --git a/QUICK_START.rst b/QUICK_START.rst index b137af0c4..e487f1851 100644 --- a/QUICK_START.rst +++ b/QUICK_START.rst @@ -52,20 +52,30 @@ Add ``fobi`` core and the plugins to the ``INSTALLED_APPS`` of the your .. code-block:: python 'fobi.contrib.plugins.form_elements.fields.boolean', + 'fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple', 'fobi.contrib.plugins.form_elements.fields.date', + 'fobi.contrib.plugins.form_elements.fields.date_drop_down', 'fobi.contrib.plugins.form_elements.fields.datetime', + 'fobi.contrib.plugins.form_elements.fields.decimal', 'fobi.contrib.plugins.form_elements.fields.email', 'fobi.contrib.plugins.form_elements.fields.file', + 'fobi.contrib.plugins.form_elements.fields.float', 'fobi.contrib.plugins.form_elements.fields.hidden', + 'fobi.contrib.plugins.form_elements.fields.input', 'fobi.contrib.plugins.form_elements.fields.integer', + 'fobi.contrib.plugins.form_elements.fields.ip_address', + 'fobi.contrib.plugins.form_elements.fields.null_boolean', 'fobi.contrib.plugins.form_elements.fields.password', 'fobi.contrib.plugins.form_elements.fields.radio', + 'fobi.contrib.plugins.form_elements.fields.regex', 'fobi.contrib.plugins.form_elements.fields.select', 'fobi.contrib.plugins.form_elements.fields.select_model_object', 'fobi.contrib.plugins.form_elements.fields.select_multiple', 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', + 'fobi.contrib.plugins.form_elements.fields.slug', 'fobi.contrib.plugins.form_elements.fields.text', 'fobi.contrib.plugins.form_elements.fields.textarea', + 'fobi.contrib.plugins.form_elements.fields.time', 'fobi.contrib.plugins.form_elements.fields.url', 4. The presentational form elements (images, texts, videos). @@ -81,9 +91,9 @@ Add ``fobi`` core and the plugins to the ``INSTALLED_APPS`` of the your .. code-block:: python - 'fobi.contrib.plugins.form_handlers.db_store', - 'fobi.contrib.plugins.form_handlers.http_repost', - 'fobi.contrib.plugins.form_handlers.mail', + 'fobi.contrib.plugins.form_handlers.db_store', + 'fobi.contrib.plugins.form_handlers.http_repost', + 'fobi.contrib.plugins.form_handlers.mail', Putting all together, you would have something like this. @@ -99,20 +109,30 @@ Putting all together, you would have something like this. # Form field plugins 'fobi.contrib.plugins.form_elements.fields.boolean', + 'fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple', 'fobi.contrib.plugins.form_elements.fields.date', + 'fobi.contrib.plugins.form_elements.fields.date_drop_down', 'fobi.contrib.plugins.form_elements.fields.datetime', + 'fobi.contrib.plugins.form_elements.fields.decimal', 'fobi.contrib.plugins.form_elements.fields.email', 'fobi.contrib.plugins.form_elements.fields.file', + 'fobi.contrib.plugins.form_elements.fields.float', 'fobi.contrib.plugins.form_elements.fields.hidden', + 'fobi.contrib.plugins.form_elements.fields.input', 'fobi.contrib.plugins.form_elements.fields.integer', + 'fobi.contrib.plugins.form_elements.fields.ip_address', + 'fobi.contrib.plugins.form_elements.fields.null_boolean', 'fobi.contrib.plugins.form_elements.fields.password', 'fobi.contrib.plugins.form_elements.fields.radio', + 'fobi.contrib.plugins.form_elements.fields.regex', 'fobi.contrib.plugins.form_elements.fields.select', 'fobi.contrib.plugins.form_elements.fields.select_model_object', 'fobi.contrib.plugins.form_elements.fields.select_multiple', 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', + 'fobi.contrib.plugins.form_elements.fields.slug', 'fobi.contrib.plugins.form_elements.fields.text', 'fobi.contrib.plugins.form_elements.fields.textarea', + 'fobi.contrib.plugins.form_elements.fields.time', 'fobi.contrib.plugins.form_elements.fields.url', # Form element plugins diff --git a/README.rst b/README.rst index 11435dbe3..53cad353c 100644 --- a/README.rst +++ b/README.rst @@ -200,20 +200,30 @@ Or latest stable version from BitBucket: # Fobi form elements - fields 'fobi.contrib.plugins.form_elements.fields.boolean', + 'fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple', 'fobi.contrib.plugins.form_elements.fields.date', + 'fobi.contrib.plugins.form_elements.fields.date_drop_down', 'fobi.contrib.plugins.form_elements.fields.datetime', + 'fobi.contrib.plugins.form_elements.fields.decimal', 'fobi.contrib.plugins.form_elements.fields.email', 'fobi.contrib.plugins.form_elements.fields.file', + 'fobi.contrib.plugins.form_elements.fields.float', 'fobi.contrib.plugins.form_elements.fields.hidden', + 'fobi.contrib.plugins.form_elements.fields.input', 'fobi.contrib.plugins.form_elements.fields.integer', + 'fobi.contrib.plugins.form_elements.fields.ip_address', + 'fobi.contrib.plugins.form_elements.fields.null_boolean', 'fobi.contrib.plugins.form_elements.fields.password', 'fobi.contrib.plugins.form_elements.fields.radio', + 'fobi.contrib.plugins.form_elements.fields.regex', 'fobi.contrib.plugins.form_elements.fields.select', 'fobi.contrib.plugins.form_elements.fields.select_model_object', 'fobi.contrib.plugins.form_elements.fields.select_multiple', 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', + 'fobi.contrib.plugins.form_elements.fields.slug', 'fobi.contrib.plugins.form_elements.fields.text', 'fobi.contrib.plugins.form_elements.fields.textarea', + 'fobi.contrib.plugins.form_elements.fields.time', 'fobi.contrib.plugins.form_elements.fields.url', # Fobi form elements - content elements @@ -1410,6 +1420,7 @@ need additional processing. There are 3 behaviours taken into consideration: The following plugins have been made configurable in such a way, that developers can choose the desired behaviour in projects' settings: +- ``FOBI_FORM_ELEMENT_CHECKBOX_SELECT_MULTIPLE_SUBMIT_VALUE_AS`` - ``FOBI_FORM_ELEMENT_RADIO_SUBMIT_VALUE_AS`` - ``FOBI_FORM_ELEMENT_SELECT_SUBMIT_VALUE_AS`` - ``FOBI_FORM_ELEMENT_SELECT_MULTIPLE_SUBMIT_VALUE_AS`` @@ -1418,6 +1429,8 @@ developers can choose the desired behaviour in projects' settings: See the README.rst in each of the following plugins for more information. +- `Checkbox select multiple (multiple checkboxes) + `__ - `Radio select (radio button) `__ - `Select (drop-down) diff --git a/TODOS.rst b/TODOS.rst index b5c9b9b7b..7690d5380 100644 --- a/TODOS.rst +++ b/TODOS.rst @@ -296,6 +296,9 @@ Should haves value (repr). + Document the `SUBMIT_VALUE_AS` in main documentation and mention in the readme of all appropriate plugins. ++ In ``db_store` plugin, at the moment if labels are not unique, some data + loss happens. Either, make the labels unique in a single form or avoid data + loss in some other way. - Fix the issue with `db_store` plugin and `allow_multiple` property (if set to True tests fail). - Fix the issue with `initial` for `select_multiple` plugin. At the moment, @@ -324,9 +327,6 @@ Should haves "barseghyanartur/test-form-1" instead of "test-form-1-N"). - Once the form ordering has been changed, show a message and warn if user is about to leave the page without saving the changes. -- In ``db_store` plugin, at the moment if labels are not unique, some data - loss happens. Either, make the labels unique in a single form or avoid data - loss in some other way. - Make it possible to create fieldsets (implement as containers). - Think of adding hooks so that custom actions are possible without template changes (for example, add a new import app for importing the forms from @@ -348,6 +348,8 @@ Could haves + Finish select multiple model objects plugin (issue with processing form data on form submit). + Make a django theme for jQuery UI. +- Think of delegating the form rendering completely to third-party library + like `django-crispy-forms`. - Make it possible to use something else than Django's ORM (django-mongoengine, SQLAlchemy). - Make it possible for themes to override the ``fobi.forms.FormEntryForm`` diff --git a/examples/requirements_django15.txt b/examples/requirements_django_1_5.txt similarity index 79% rename from examples/requirements_django15.txt rename to examples/requirements_django_1_5.txt index 2fee05834..036067832 100644 --- a/examples/requirements_django15.txt +++ b/examples/requirements_django_1_5.txt @@ -4,8 +4,11 @@ Jinja2 MarkupSafe #MySQL-python Sphinx +South>=0.8.2 +django-admin-tools==0.5.2 django-autoslug>=1.7.1 django-debug-toolbar>=0.11.0 +django-localeurl>=2.0.2 django-registration-redux>=1.1 docutils ipdb diff --git a/examples/requirements_django16.txt b/examples/requirements_django_1_6.txt similarity index 79% rename from examples/requirements_django16.txt rename to examples/requirements_django_1_6.txt index 39ca22d4a..975947ebf 100644 --- a/examples/requirements_django16.txt +++ b/examples/requirements_django_1_6.txt @@ -4,8 +4,11 @@ Jinja2 MarkupSafe #MySQL-python Sphinx +South>=0.8.2 +django-admin-tools==0.5.2 django-autoslug>=1.7.1 django-debug-toolbar>=0.11.0 +django-localeurl>=2.0.2 django-registration-redux>=1.1 docutils ipdb diff --git a/examples/requirements_django17.txt b/examples/requirements_django_1_7.txt similarity index 82% rename from examples/requirements_django17.txt rename to examples/requirements_django_1_7.txt index 718508130..2a936af3b 100644 --- a/examples/requirements_django17.txt +++ b/examples/requirements_django_1_7.txt @@ -4,8 +4,10 @@ Jinja2 MarkupSafe MySQL-python Sphinx +django-admin-tools>=0.5.2 django-autoslug==1.7.1 django-debug-toolbar==0.11.0 +django-localeurl>=2.0.2 django-registration-redux>=1.1 docutils ipdb diff --git a/examples/requirements_django18.txt b/examples/requirements_django_1_8.txt similarity index 84% rename from examples/requirements_django18.txt rename to examples/requirements_django_1_8.txt index cd6a07fac..6a7b76347 100644 --- a/examples/requirements_django18.txt +++ b/examples/requirements_django_1_8.txt @@ -4,8 +4,10 @@ Jinja2 MarkupSafe MySQL-python Sphinx +django-admin-tools>=0.5.2 django-autoslug==1.7.1 django-debug-toolbar==0.11.0 +django-localeurl>=2.0.2 django-registration-redux>=1.1 docutils ipdb diff --git a/examples/simple/runserver-bootstrap3-theme-django17-captcha.sh b/examples/simple/runserver-bootstrap3-theme-django-1-7-captcha.sh similarity index 55% rename from examples/simple/runserver-bootstrap3-theme-django17-captcha.sh rename to examples/simple/runserver-bootstrap3-theme-django-1-7-captcha.sh index 8f398f696..106e73c10 100755 --- a/examples/simple/runserver-bootstrap3-theme-django17-captcha.sh +++ b/examples/simple/runserver-bootstrap3-theme-django-1-7-captcha.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17_captcha --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django_1_7_captcha --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-django17-feincms_integration.sh b/examples/simple/runserver-bootstrap3-theme-django-1-7-feincms_integration.sh similarity index 55% rename from examples/simple/runserver-bootstrap3-theme-django17-feincms_integration.sh rename to examples/simple/runserver-bootstrap3-theme-django-1-7-feincms_integration.sh index 7bb6cfbfb..af2000970 100755 --- a/examples/simple/runserver-bootstrap3-theme-django17-feincms_integration.sh +++ b/examples/simple/runserver-bootstrap3-theme-django-1-7-feincms_integration.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17_feincms --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django_1_7_feincms --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-django17.sh b/examples/simple/runserver-bootstrap3-theme-django-1-7.sh similarity index 59% rename from examples/simple/runserver-bootstrap3-theme-django17.sh rename to examples/simple/runserver-bootstrap3-theme-django-1-7.sh index fcf348caf..286054210 100755 --- a/examples/simple/runserver-bootstrap3-theme-django17.sh +++ b/examples/simple/runserver-bootstrap3-theme-django-1-7.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django17 --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-django18.sh b/examples/simple/runserver-bootstrap3-theme-django-1-8.sh similarity index 59% rename from examples/simple/runserver-bootstrap3-theme-django18.sh rename to examples/simple/runserver-bootstrap3-theme-django-1-8.sh index 26451d2b1..bf9c75316 100755 --- a/examples/simple/runserver-bootstrap3-theme-django18.sh +++ b/examples/simple/runserver-bootstrap3-theme-django-1-8.sh @@ -1,2 +1,2 @@ #workon fobi -./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django18 --traceback -v 3 +./manage.py runserver 0.0.0.0:8000 --traceback -v 3 --settings=settings_bootstrap3_theme_django_1_8 --traceback -v 3 diff --git a/examples/simple/runserver-bootstrap3-theme-djangocms2-integration.sh b/examples/simple/runserver-bootstrap3-theme-djangocms-2-integration.sh similarity index 100% rename from examples/simple/runserver-bootstrap3-theme-djangocms2-integration.sh rename to examples/simple/runserver-bootstrap3-theme-djangocms-2-integration.sh diff --git a/examples/simple/settings_bootstrap3_theme_django17.py b/examples/simple/settings_bootstrap3_theme_django_1_7.py similarity index 100% rename from examples/simple/settings_bootstrap3_theme_django17.py rename to examples/simple/settings_bootstrap3_theme_django_1_7.py diff --git a/examples/simple/settings_bootstrap3_theme_django17_captcha.py b/examples/simple/settings_bootstrap3_theme_django_1_7_captcha.py similarity index 100% rename from examples/simple/settings_bootstrap3_theme_django17_captcha.py rename to examples/simple/settings_bootstrap3_theme_django_1_7_captcha.py diff --git a/examples/simple/settings_bootstrap3_theme_django17_feincms.py b/examples/simple/settings_bootstrap3_theme_django_1_7_feincms.py similarity index 100% rename from examples/simple/settings_bootstrap3_theme_django17_feincms.py rename to examples/simple/settings_bootstrap3_theme_django_1_7_feincms.py diff --git a/examples/simple/settings_bootstrap3_theme_django18.py b/examples/simple/settings_bootstrap3_theme_django_1_8.py similarity index 100% rename from examples/simple/settings_bootstrap3_theme_django18.py rename to examples/simple/settings_bootstrap3_theme_django_1_8.py diff --git a/scripts/install_django_1_5.sh b/scripts/install_django_1_5.sh index 0cf727fb6..564c162a5 100755 --- a/scripts/install_django_1_5.sh +++ b/scripts/install_django_1_5.sh @@ -1,6 +1,6 @@ #pip install -r examples/requirements.txt --allow-all-external --allow-unverified django-admin-tools #cd .. -pip install -r examples/requirements_django15.txt +pip install -r examples/requirements_django_1_5.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 diff --git a/scripts/install_django_1_6.bat b/scripts/install_django_1_6.bat index 2068da3ce..2be34032e 100644 --- a/scripts/install_django_1_6.bat +++ b/scripts/install_django_1_6.bat @@ -1,6 +1,6 @@ #pip install -r examples/requirements.txt --allow-all-external --allow-unverified django-admin-tools #cd .. -pip install -r examples\requirements_django16.txt +pip install -r examples\requirements_django_1_6.txt python setup.py install mkdir examples\logs mkdir examples\db diff --git a/scripts/install_django_1_6.sh b/scripts/install_django_1_6.sh index 73e77dd97..99e4ef4af 100755 --- a/scripts/install_django_1_6.sh +++ b/scripts/install_django_1_6.sh @@ -1,6 +1,6 @@ #pip install -r examples/requirements.txt --allow-all-external --allow-unverified django-admin-tools #cd .. -pip install -r examples/requirements_django16.txt +pip install -r examples/requirements_django_1_6.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 diff --git a/scripts/install_django_1_7.sh b/scripts/install_django_1_7.sh index 3813327f1..63e9f3b87 100755 --- a/scripts/install_django_1_7.sh +++ b/scripts/install_django_1_7.sh @@ -1,11 +1,11 @@ #pip install -r examples/requirements.txt --allow-all-external --allow-unverified django-admin-tools #cd .. -pip install -r examples/requirements_django17.txt +pip install -r examples/requirements_django_1_7.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_django17 --traceback -v 3 -python examples/simple/manage.py syncdb --noinput --settings=settings_bootstrap3_theme_django17 --traceback -v 3 -python examples/simple/manage.py migrate --noinput --settings=settings_bootstrap3_theme_django17 --traceback -v 3 -python examples/simple/manage.py fobi_create_test_data --settings=settings_bootstrap3_theme_django17 --traceback -v 3 +python examples/simple/manage.py collectstatic --noinput --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 +python examples/simple/manage.py syncdb --noinput --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 +python examples/simple/manage.py migrate --noinput --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 +python examples/simple/manage.py fobi_create_test_data --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 #cd scripts \ No newline at end of file diff --git a/scripts/install_django_1_8.sh b/scripts/install_django_1_8.sh index 8957a0d7d..0fac2be57 100755 --- a/scripts/install_django_1_8.sh +++ b/scripts/install_django_1_8.sh @@ -1,12 +1,12 @@ #pip install -r examples/requirements.txt --allow-all-external --allow-unverified django-admin-tools #cd .. pip uninstall south -y -pip install -r examples/requirements_django18.txt +pip install -r examples/requirements_django_1_8.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_django17 --traceback -v 3 -python examples/simple/manage.py syncdb --noinput --settings=settings_bootstrap3_theme_django17 --traceback -v 3 -python examples/simple/manage.py migrate --noinput --settings=settings_bootstrap3_theme_django17 --traceback -v 3 -python examples/simple/manage.py fobi_create_test_data --settings=settings_bootstrap3_theme_django17 --traceback -v 3 +python examples/simple/manage.py collectstatic --noinput --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 +python examples/simple/manage.py syncdb --noinput --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 +python examples/simple/manage.py migrate --noinput --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 +python examples/simple/manage.py fobi_create_test_data --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 #cd scripts \ No newline at end of file diff --git a/scripts/test_django_1_7.sh b/scripts/test_django_1_7.sh index 88fc23db6..34d73f559 100755 --- a/scripts/test_django_1_7.sh +++ b/scripts/test_django_1_7.sh @@ -2,5 +2,5 @@ reset ./scripts/uninstall.sh ./scripts/install_django_1_7.sh #cd .. -python examples/simple/manage.py test fobi --settings=settings_bootstrap3_theme_django17 --traceback -v 3 +python examples/simple/manage.py test fobi --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 #cd scripts \ No newline at end of file diff --git a/scripts/test_django_1_8.sh b/scripts/test_django_1_8.sh index 4d17aae2b..913dc4fc4 100755 --- a/scripts/test_django_1_8.sh +++ b/scripts/test_django_1_8.sh @@ -2,5 +2,5 @@ reset ./scripts/uninstall.sh ./scripts/install_django_1_8.sh #cd .. -python examples/simple/manage.py test fobi --settings=settings_bootstrap3_theme_django18 --traceback -v 3 +python examples/simple/manage.py test fobi --settings=settings_bootstrap3_theme_django_1_8 --traceback -v 3 #cd scripts \ No newline at end of file diff --git a/setup.py b/setup.py index 0912b34fb..d20498698 100644 --- a/setup.py +++ b/setup.py @@ -63,7 +63,7 @@ for locale_dir in locale_dirs: locale_files += [os.path.join(locale_dir, f) for f in os.listdir(locale_dir)] -version = '0.4.32' +version = '0.4.33' install_requires = [ 'Pillow>=2.0.0', diff --git a/src/fobi/__init__.py b/src/fobi/__init__.py index 842f13c8d..2529d03fa 100644 --- a/src/fobi/__init__.py +++ b/src/fobi/__init__.py @@ -1,6 +1,6 @@ __title__ = 'django-fobi' -__version__ = '0.4.32' -__build__ = 0x000035 +__version__ = '0.4.33' +__build__ = 0x000036 __author__ = 'Artur Barseghyan ' __copyright__ = '2014-2015 Artur Barseghyan' __license__ = 'GPL 2.0/LGPL 2.1' diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py index 97807e640..9eb9e7b79 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py @@ -1,13 +1,12 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.settings' +__title__ = 'fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple.settings' __author__ = 'Artur Barseghyan ' __copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' __license__ = 'GPL 2.0/LGPL 2.1' __all__ = ('SUBMIT_VALUE_AS',) from fobi.helpers import validate_submit_value_as -from fobi.contrib.plugins.form_elements.fields.select_multiple.conf import ( - get_setting - ) +from fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple.conf \ + import get_setting SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') diff --git a/src/fobi/contrib/themes/foundation5/templates/foundation5/snippets/form_snippet.html b/src/fobi/contrib/themes/foundation5/templates/foundation5/snippets/form_snippet.html index c0f007b05..853b50bd7 100644 --- a/src/fobi/contrib/themes/foundation5/templates/foundation5/snippets/form_snippet.html +++ b/src/fobi/contrib/themes/foundation5/templates/foundation5/snippets/form_snippet.html @@ -29,7 +29,29 @@
- {{ field }} + {% get_form_field_type field as form_field_type %} + + {% if form_field_type.is_radio %} + {% for choice_value, choice_label in field.field.choices %} +
+ +
+ {% endfor %} + {% elif form_field_type.is_checkbox_multiple %} + {% for choice_value, choice_label in field.field.choices %} +
+ +
+ {% endfor %} + {% else %} + {{ field }} + {% endif %} {% if field.errors %} diff --git a/src/fobi/templates/fobi/generic/snippets/form_snippet.html b/src/fobi/templates/fobi/generic/snippets/form_snippet.html index 9a4b25c60..e1dab0ddd 100644 --- a/src/fobi/templates/fobi/generic/snippets/form_snippet.html +++ b/src/fobi/templates/fobi/generic/snippets/form_snippet.html @@ -38,6 +38,15 @@
{% endfor %} + {% elif form_field_type.is_checkbox_multiple %} + {% for choice_value, choice_label in field.field.choices %} +
+ +
+ {% endfor %} {% else %} {{ field }} {% endif %} diff --git a/src/fobi/templatetags/fobi_tags.py b/src/fobi/templatetags/fobi_tags.py index 3c854fdb8..1124984b9 100644 --- a/src/fobi/templatetags/fobi_tags.py +++ b/src/fobi/templatetags/fobi_tags.py @@ -306,6 +306,9 @@ def render(self, context): if isinstance(field.field.widget, forms.CheckboxInput): properties.append('is_checkbox') + if isinstance(field.field.widget, forms.CheckboxSelectMultiple): + properties.append('is_checkbox_multiple') + if isinstance(field.field.widget, forms.RadioSelect): properties.append('is_radio') diff --git a/tox.ini b/tox.ini index df6ac9962..778d7bc7f 100644 --- a/tox.ini +++ b/tox.ini @@ -1,75 +1,92 @@ [tox] envlist = - py26_django15, - py27_django15, - py33_django15, -# py26_django16, -# py27_django16, -# py33_django16 - -[testenv:py26_django15] -deps=unittest2 -commands= -# pip uninstall django-fobi -y - pip install -r examples/requirements.txt --upgrade - {envpython} setup.py install - {envpython} examples/simple/manage.py syncdb --noinput --traceback -v 3 - {envpython} examples/simple/manage.py migrate --noinput --traceback -v 3 - {envpython} examples/simple/manage.py test fobi --traceback -v 3 - -[testenv:py27_django15] -deps=unittest2 -commands= -# pip uninstall django-fobi -y - pip install -r examples/requirements.txt --upgrade - {envpython} setup.py install - {envpython} examples/simple/manage.py syncdb --noinput --traceback -v 3 - {envpython} examples/simple/manage.py migrate --noinput --traceback -v 3 - {envpython} examples/simple/manage.py test fobi --traceback -v 3 - -[testenv:py33_django15] -basepython=/opt/python3.3/bin/python3.3 -commands= -# pip uninstall django-fobi -y - pip install -r examples/requirements.txt --upgrade -# pip uninstall django-localeurl -y - pip install -r examples/requirements3.txt --upgrade - {envpython} setup.py install - {envpython} examples/simple/manage.py syncdb --noinput --traceback -v 3 - {envpython} examples/simple/manage.py migrate --noinput --traceback -v 3 - {envpython} examples/simple/manage.py test fobi --traceback -v 3 - -[testenv:py26_django16] -deps=unittest2 -commands= -# pip uninstall django-fobi -y - pip install -r examples/requirements.txt --upgrade - pip install Django==1.6 - {envpython} setup.py install - {envpython} examples/simple/manage.py syncdb --noinput --traceback -v 3 - {envpython} examples/simple/manage.py migrate --noinput --traceback -v 3 - {envpython} examples/simple/manage.py test fobi --traceback -v 3 - -[testenv:py27_django16] -deps=unittest2 -commands= -# pip uninstall django-fobi -y - pip install -r examples/requirements.txt --upgrade - pip install Django==1.6 - {envpython} setup.py install - {envpython} examples/simple/manage.py syncdb --noinput --traceback -v 3 - {envpython} examples/simple/manage.py migrate --noinput --traceback -v 3 - {envpython} examples/simple/manage.py test fobi --traceback -v 3 - -[testenv:py33_django16] -basepython=/opt/python3.3/bin/python3.3 -commands= -# pip uninstall django-fobi -y - pip install -r examples/requirements.txt --upgrade -# pip uninstall django-localeurl -y - pip install -r examples/requirements3.txt --upgrade - pip install Django==1.6 - {envpython} setup.py install - {envpython} examples/simple/manage.py syncdb --noinput --traceback -v 3 - {envpython} examples/simple/manage.py migrate --noinput --traceback -v 3 - {envpython} examples/simple/manage.py test fobi --traceback -v 3 \ No newline at end of file + py26-1.5.x, + py27-1.5.x, + py33-1.5.x, + py26-1.6.x, + py27-1.6.x, + py33-1.6.x, + py27-1.7.x, + py33-1.7.x, + py27-1.8.x, + py33-1.8.x, + +[testenv] +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + + +[testenv:py26-1.5.x] +basepython = python2.6 +deps=-r{toxinidir}/examples/requirements_django_1_5.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + +[testenv:py27-1.5.x] +basepython = python2.7 +deps=-r{toxinidir}/examples/requirements_django_1_5.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + +[testenv:py33-1.5.x] +basepython = python3.3 +deps=-r{toxinidir}/examples/requirements_django_1_5.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + + +[testenv:py26-1.6.x] +basepython = python2.6 +deps=-r{toxinidir}/examples/requirements_django_1_6.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + +[testenv:py27-1.6.x] +basepython = python2.7 +deps=-r{toxinidir}/examples/requirements_django_1_6.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + +[testenv:py33-1.6.x] +basepython = python3.3 +deps=-r{toxinidir}/examples/requirements_django_1_6.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings --traceback -v 3 + + +[testenv:py26-1.7.x] +basepython = python2.6 +deps=-r{toxinidir}/examples/requirements_django_1_7.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 + +[testenv:py27-1.7.x] +basepython = python2.7 +deps=-r{toxinidir}/examples/requirements_django_1_7.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 + +[testenv:py33-1.7.x] +basepython = python3.3 +deps=-r{toxinidir}/examples/requirements_django_1_7.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings_bootstrap3_theme_django_1_7 --traceback -v 3 + + +[testenv:py26-1.8.x] +basepython = python2.6 +deps=-r{toxinidir}/examples/requirements_django_1_8.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings_bootstrap3_theme_django_1_8 --traceback -v 3 + +[testenv:py27-1.8.x] +basepython = python2.7 +deps=-r{toxinidir}/examples/requirements_django_1_8.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings_bootstrap3_theme_django_1_8 --traceback -v 3 + +[testenv:py33-1.8.x] +basepython = python3.3 +deps=-r{toxinidir}/examples/requirements_django_1_8.txt +commands = + {envpython} examples/simple/manage.py test {posargs:fobi} --settings=settings_bootstrap3_theme_django_1_8 --traceback -v 3