diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 4f07e20f..1cc1a414 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -15,6 +15,48 @@ are used for versioning (schema follows below): 0.3.4 to 0.4). - All backwards incompatible changes are mentioned in this document. +0.4.28 +------------------------------------- +yyyy-mm-dd (not yet released) + +- From now it's possible to have some control/configure the following plugins + for the submitted value: + + * fobi.contrib.plugins.form_elements.fields.select_model_object + * fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects + + The only thing needs to be done is to specify the appropriate variable + in the settings module of the project (settings.py). + + * FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_SUBMIT_VALUE_AS + * FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MODEL_OBJECTS_SUBMIT_VALUE_AS + + Allowed values are: "val", "repr", "mix". + +0.4.27 +------------------------------------- +2015-03-12 + +- Temporary allow the `db_store` plugin to be used multiple times per form, + until the bug with not being able to assign the `db_store` plugin to the form + due to incorrect handling of restrictions (`allow_multiple`) introduced in + previous version is properly fixed. +- From now it's possible to have some control/configure the following plugins + for the submitted value: + + * fobi.contrib.plugins.form_elements.fields.radio + * fobi.contrib.plugins.form_elements.fields.select + * fobi.contrib.plugins.form_elements.fields.select_multiple + + The only thing needs to be done is to specify the appropriate variable + in the settings module of the project (settings.py). + + * FOBI_FORM_ELEMENT_RADIO_SUBMIT_VALUE_AS + * FOBI_FORM_ELEMENT_SELECT_SUBMIT_VALUE_AS + * FOBI_FORM_ELEMENT_SELECT_MULTIPLE_SUBMIT_VALUE_AS + + Allowed values are: "val", "repr", "mix". + 0.4.26 ------------------------------------- 2015-03-06 diff --git a/TODOS.rst b/TODOS.rst index e0348fca..9d7ee99e 100644 --- a/TODOS.rst +++ b/TODOS.rst @@ -262,9 +262,28 @@ Should haves + At the moment Captcha data is also being saved (db_store form handler). Think of fixing that by allowing to exclude certain fields from being processed by form handlers. ++ Add a property "allow_multiple" to the form handlers, for form handlers. +- 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, + setting initial doesn't seem to work. +- Document the `SUBMIT_VALUE_AS` in main documentation and mention in the + readme of all appropriate plugins. +- Make it possible for developers to decide (in settings) what kind of + values do they want to have saved. By default, return the label for + select-like fields (`radio`, `select`, `select_multiple`), the str/unicode + for foreign keys (`select_model_object`, `select_multiple_model_objects`). + For that, introduce a new setting `SUBMIT_VALUE_AS`. It should be a string + which allows the following options: "val", "repr", "mixed". Default would + be the "repr". In that case, the value would be the human readable + representation of the chosen option. In case of "val", the actual value is + submitted. Mix is a mix of the "val" and "repr" as "repr (val)". For foreign + keys, it would be as follows: app.module.pk.value (mix), app.module.pk (val), + value (repr). +- Document the changes. +- Find out why subclassing the ``select_model_object`` plugin didn't work. - Rename the ``simple`` theme into ``django_admin_style_theme``. - Make a real ``birthday`` field (with no year selection). -- Add a property "allow_multiple" to the form handlers, for form handlers. - Fix the view saved form entries template (nicer look) for Foundation 5 theme. - Fix the ``input_format`` option in the date and datetime fields. diff --git a/docs/fobi.contrib.plugins.form_elements.fields.radio.rst b/docs/fobi.contrib.plugins.form_elements.fields.radio.rst index 5e82cd09..90050e39 100644 --- a/docs/fobi.contrib.plugins.form_elements.fields.radio.rst +++ b/docs/fobi.contrib.plugins.form_elements.fields.radio.rst @@ -12,6 +12,22 @@ fobi.contrib.plugins.form_elements.fields.radio.apps module :undoc-members: :show-inheritance: +fobi.contrib.plugins.form_elements.fields.radio.conf module +----------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.radio.conf + :members: + :undoc-members: + :show-inheritance: + +fobi.contrib.plugins.form_elements.fields.radio.defaults module +--------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.radio.defaults + :members: + :undoc-members: + :show-inheritance: + fobi.contrib.plugins.form_elements.fields.radio.fobi_form_elements module ------------------------------------------------------------------------- @@ -28,6 +44,14 @@ fobi.contrib.plugins.form_elements.fields.radio.forms module :undoc-members: :show-inheritance: +fobi.contrib.plugins.form_elements.fields.radio.settings module +--------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.radio.settings + :members: + :undoc-members: + :show-inheritance: + Module contents --------------- diff --git a/docs/fobi.contrib.plugins.form_elements.fields.select.rst b/docs/fobi.contrib.plugins.form_elements.fields.select.rst index a0a57003..05d7b611 100644 --- a/docs/fobi.contrib.plugins.form_elements.fields.select.rst +++ b/docs/fobi.contrib.plugins.form_elements.fields.select.rst @@ -12,6 +12,22 @@ fobi.contrib.plugins.form_elements.fields.select.apps module :undoc-members: :show-inheritance: +fobi.contrib.plugins.form_elements.fields.select.conf module +------------------------------------------------------------ + +.. automodule:: fobi.contrib.plugins.form_elements.fields.select.conf + :members: + :undoc-members: + :show-inheritance: + +fobi.contrib.plugins.form_elements.fields.select.defaults module +---------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.select.defaults + :members: + :undoc-members: + :show-inheritance: + fobi.contrib.plugins.form_elements.fields.select.fobi_form_elements module -------------------------------------------------------------------------- @@ -28,6 +44,14 @@ fobi.contrib.plugins.form_elements.fields.select.forms module :undoc-members: :show-inheritance: +fobi.contrib.plugins.form_elements.fields.select.settings module +---------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.select.settings + :members: + :undoc-members: + :show-inheritance: + Module contents --------------- diff --git a/docs/fobi.contrib.plugins.form_elements.fields.select_multiple.rst b/docs/fobi.contrib.plugins.form_elements.fields.select_multiple.rst index c3c22fd2..98f4614b 100644 --- a/docs/fobi.contrib.plugins.form_elements.fields.select_multiple.rst +++ b/docs/fobi.contrib.plugins.form_elements.fields.select_multiple.rst @@ -12,6 +12,22 @@ fobi.contrib.plugins.form_elements.fields.select_multiple.apps module :undoc-members: :show-inheritance: +fobi.contrib.plugins.form_elements.fields.select_multiple.conf module +--------------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.select_multiple.conf + :members: + :undoc-members: + :show-inheritance: + +fobi.contrib.plugins.form_elements.fields.select_multiple.defaults module +------------------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.select_multiple.defaults + :members: + :undoc-members: + :show-inheritance: + fobi.contrib.plugins.form_elements.fields.select_multiple.fobi_form_elements module ----------------------------------------------------------------------------------- @@ -28,6 +44,14 @@ fobi.contrib.plugins.form_elements.fields.select_multiple.forms module :undoc-members: :show-inheritance: +fobi.contrib.plugins.form_elements.fields.select_multiple.settings module +------------------------------------------------------------------------- + +.. automodule:: fobi.contrib.plugins.form_elements.fields.select_multiple.settings + :members: + :undoc-members: + :show-inheritance: + Module contents --------------- diff --git a/examples/simple/locale/de/LC_MESSAGES/django.po b/examples/simple/locale/de/LC_MESSAGES/django.po index 5164d490..eb6d1dd9 100644 --- a/examples/simple/locale/de/LC_MESSAGES/django.po +++ b/examples/simple/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-27 23:49+0100\n" +"POT-Creation-Date: 2015-03-10 13:19+0100\n" "PO-Revision-Date: 2015-02-27 23:52+0100\n" "Last-Translator: Artur Barseghyan \n" "Language-Team: Maximilian Kindshofer \n" @@ -38,85 +38,103 @@ msgstr "" msgid "German" msgstr "" -#: settings.py:306 -#: settings.py:320 +#: settings.py:307 settings.py:321 msgid "Custom bootstrap3 embed form view template" msgstr "" -#: settings.py:312 -#: settings.py:326 +#: settings.py:313 settings.py:327 msgid "Custom bootstrap3 embed form entry submitted template" msgstr "" -#: settings.py:342 -#: settings.py:356 +#: settings.py:343 settings.py:357 msgid "Custom foundation5 embed form view template" msgstr "" -#: settings.py:348 -#: settings.py:362 +#: settings.py:349 settings.py:363 msgid "Custom foundation5 embed form entry submitted template" msgstr "" -#: settings.py:381 +#: settings.py:382 msgid "© django-fobi example site 2014" msgstr "" -#: admin_tools_dashboard/__init__.py:29 -#: admin_tools_dashboard/menu.py:28 +#: admin_tools_dashboard/__init__.py:29 admin_tools_dashboard/menu.py:28 msgid "Foo" msgstr "" -#: admin_tools_dashboard/__init__.py:37 -#: admin_tools_dashboard/menu.py:34 +#: admin_tools_dashboard/__init__.py:37 admin_tools_dashboard/menu.py:34 msgid "Fobi" msgstr "Fobi" -#: admin_tools_dashboard/__init__.py:40 -#: admin_tools_dashboard/menu.py:36 +#: admin_tools_dashboard/__init__.py:40 admin_tools_dashboard/menu.py:36 #, fuzzy msgid "Plugins" msgstr "Plugin" -#: admin_tools_dashboard/__init__.py:41 -#: admin_tools_dashboard/menu.py:37 +#: admin_tools_dashboard/__init__.py:41 admin_tools_dashboard/menu.py:37 #, fuzzy msgid "Forms" msgstr "Formular" -#: admin_tools_dashboard/__init__.py:42 -#: admin_tools_dashboard/menu.py:38 +#: admin_tools_dashboard/__init__.py:42 admin_tools_dashboard/menu.py:38 msgid "Data" msgstr "Daten" -#: admin_tools_dashboard/__init__.py:49 -#: admin_tools_dashboard/menu.py:45 +#: admin_tools_dashboard/__init__.py:49 admin_tools_dashboard/menu.py:45 msgid "FeinCMS Pages" msgstr "" -#: admin_tools_dashboard/__init__.py:58 -#: admin_tools_dashboard/menu.py:52 +#: admin_tools_dashboard/__init__.py:58 admin_tools_dashboard/menu.py:52 msgid "DjangoCMS Pages" msgstr "" -#: admin_tools_dashboard/__init__.py:66 -#: admin_tools_dashboard/menu.py:58 +#: admin_tools_dashboard/__init__.py:66 admin_tools_dashboard/menu.py:58 #, fuzzy msgid "Administration" msgstr "Django-Administration" -#: admin_tools_dashboard/__init__.py:73 -#: admin_tools_dashboard/__init__.py:87 +#: admin_tools_dashboard/__init__.py:73 admin_tools_dashboard/__init__.py:87 #, fuzzy msgid "Recent Actions" msgstr "Aktionen" -#: admin_tools_dashboard/menu.py:24 -#: templates/home/base.html:38 +#: admin_tools_dashboard/menu.py:24 templates/home/base.html:38 #: templates/home/foundation5.html:32 msgid "Dashboard" msgstr "Dashboard" +#: override_select_model_object_plugin/fobi_form_elements.py:19 +msgid "Select model object" +msgstr "Modelobjekt Auswahl" + +#: override_select_model_object_plugin/fobi_form_elements.py:20 +msgid "Fields" +msgstr "Felder" + +#: override_select_model_object_plugin/forms.py:25 +msgid "Label" +msgstr "Label" + +#: override_select_model_object_plugin/forms.py:30 +msgid "Name" +msgstr "Name" + +#: override_select_model_object_plugin/forms.py:35 +msgid "Model" +msgstr "Model" + +#: override_select_model_object_plugin/forms.py:41 +msgid "Help text" +msgstr "Hilfetext" + +#: override_select_model_object_plugin/forms.py:46 +msgid "Initial" +msgstr "Vorausgefüllt" + +#: override_select_model_object_plugin/forms.py:51 +msgid "Required" +msgstr "Pflichtfeld" + #: page/models.py:14 msgid "Base template" msgstr "" @@ -156,8 +174,7 @@ msgstr "" msgid "DjangoCMS Foundation 5 example" msgstr "" -#: templates/cms_page/foundation5/base.html:99 -#: templates/home/base.html:12 +#: templates/cms_page/foundation5/base.html:99 templates/home/base.html:12 msgid "Home" msgstr "Startseite" @@ -175,26 +192,26 @@ msgid "" " template for rendering the form for the theme %(fobi_theme_uid)s given." msgstr "" -#: templates/home/base.html:13 -#: templates/page/base.html:13 +#: templates/home/base.html:13 templates/page/base.html:13 msgid "django-fobi example site" msgstr "" -#: templates/home/base.html:22 -#: templates/home/foundation5.html:16 +#: templates/home/base.html:22 templates/home/foundation5.html:16 msgid "" "\n" "

\n" -" Welcome to `django-fobi` (later on named just `Fobi`) - a customisable, modular, developer-friendly form\n" -" builder application for Django. With `Fobi` you can build Django forms using a user-friendly GUI,\n" -" save or mail posted form data. Developer-friendly API allows you to build your own form elements\n" +" Welcome to `django-fobi` (later on named just `Fobi`) - a customisable, " +"modular, developer-friendly form\n" +" builder application for Django. With `Fobi` you can build Django forms " +"using a user-friendly GUI,\n" +" save or mail posted form data. Developer-friendly API allows you to " +"build your own form elements\n" " and form handlers (mechanisms for handling the submitted form data).\n" "

\n" " " msgstr "" -#: templates/home/base.html:30 -#: templates/home/foundation5.html:24 +#: templates/home/base.html:30 templates/home/foundation5.html:24 msgid "Learn more" msgstr "" @@ -202,14 +219,15 @@ msgstr "" #, python-format msgid "" "\n" -"

The `Fobi` dashboard, where you can see all the forms you have created, edit them (add/remove elements,\n" +"

The `Fobi` dashboard, where you can see all the forms you have " +"created, edit them (add/remove elements,\n" " form handlers), create new forms as well as remove existing ones.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " msgstr "" -#: templates/home/base.html:47 -#: templates/home/foundation5.html:41 +#: templates/home/base.html:47 templates/home/foundation5.html:41 #, fuzzy msgid "Create a form" msgstr "Formular erstellen" @@ -218,13 +236,14 @@ msgstr "Formular erstellen" #, python-format msgid "" "\n" -"

Create your first form using awesome user-friendly GUI. Choose what to do with the posted data.

\n" -"

Create form »

\n" +"

Create your first form using awesome user-friendly GUI. Choose what " +"to do with the posted data.

\n" +"

Create form »

\n" " " msgstr "" -#: templates/home/base.html:55 -#: templates/home/foundation5.html:49 +#: templates/home/base.html:55 templates/home/foundation5.html:49 msgid "See the admin part" msgstr "" @@ -232,9 +251,11 @@ msgstr "" #, python-format msgid "" "\n" -"

See the Django-admin for saved data, as well as choose who to grant with permissions of using\n" +"

See the Django-admin for saved data, as well as choose who to grant " +"with permissions of using\n" " one or another `Fobi` plugin (form element or form handler).

\n" -"

Go to admin »

\n" +"

Go to admin »

\n" " " msgstr "" @@ -242,9 +263,11 @@ msgstr "" #, python-format msgid "" "\n" -"

The `Fobi` dashboard, where you can see all the forms you have created, edit them (add/remove elements,\n" +"

The `Fobi` dashboard, where you can see all the forms you have " +"created, edit them (add/remove elements,\n" " form handlers), create new forms as well as remove existing ones.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " msgstr "" @@ -252,8 +275,10 @@ msgstr "" #, python-format msgid "" "\n" -"

Create your first form using awesome user-friendly GUI. Choose what to do with the posted data.

\n" -"

Create form »

\n" +"

Create your first form using awesome user-friendly GUI. Choose what " +"to do with the posted data.

\n" +"

Create form »

\n" " " msgstr "" @@ -261,9 +286,11 @@ msgstr "" #, python-format msgid "" "\n" -"

See the Django-admin for saved data, as well as choose who to grant with permissions of using\n" +"

See the Django-admin for saved data, as well as choose who to grant " +"with permissions of using\n" " one or another `Fobi` plugin (form element or form handler).

\n" -"

Go to admin »

\n" +"

Go to admin »

\n" " " msgstr "" @@ -284,19 +311,23 @@ msgstr "" msgid "" "\n" " Thanks %(account)s, activation complete!\n" -" You may now login using the username and password you set at registration.\n" +" You may now login using the username " +"and password you set at registration.\n" " " msgstr "" #: templates/registration/activate.html:22 -msgid "Oops – it seems that your activation key is invalid. Please check the url again." +msgid "" +"Oops – it seems that your activation key is invalid. Please check the " +"url again." msgstr "" #: templates/registration/activation_complete.html:16 #, python-format msgid "" "\n" -" Thanks, activation complete! You may now login using the username and password you set at registration.\n" +" Thanks, activation complete! You may now login using the username and password you set at registration.\n" " " msgstr "" @@ -308,13 +339,15 @@ msgid "" "

\n" "You (or someone pretending to be you) have asked to register an account at\n" "%(sitename)s.
\n" -"If this wasn't you, please ignore this email and your address will be removed\n" +"If this wasn't you, please ignore this email and your address will be " +"removed\n" "from our records.\n" "

\n" "

\n" "To activate this account, please click the following link within the next \n" "%(expiration_days)s days:
\n" -"http://%(sitedomain)s%(activation_key_url)s\n" +"http://%(sitedomain)s" +"%(activation_key_url)s\n" "

\n" "

\n" "Sincerely,
\n" @@ -361,8 +394,7 @@ msgid "" " Need an account?" msgstr "" -#: templates/registration/logout.html:5 -#: templates/registration/logout.html:12 +#: templates/registration/logout.html:5 templates/registration/logout.html:12 #, fuzzy msgid "Logged out" msgstr "Log out" @@ -444,10 +476,12 @@ msgstr "Testen" #, python-format msgid "" "You are receiving this email because you (or someone pretending to be you)\n" -"requested that your password be reset on the %(domain)s site. If you do not \n" +"requested that your password be reset on the %(domain)s site. If you do " +"not \n" "wish to reset your password, please ignore this message.\n" "\n" -"To reset your password, please click the following link, or copy and paste it\n" +"To reset your password, please click the following link, or copy and paste " +"it\n" "into your web browser:" msgstr "" @@ -471,7 +505,8 @@ msgstr "Passwort" #: templates/registration/password_reset_form_ajax.html:10 msgid "" "\n" -" Forgot your password? Enter your email in the form below and we'll send you\n" +" Forgot your password? Enter your email in the form below and we'll " +"send you\n" " instructions for creating a new one.\n" " " msgstr "" @@ -519,18 +554,6 @@ msgstr "" #~ msgid "Build your forms" #~ msgstr "Erstelle dein Forular" -#~ msgid "Name" -#~ msgstr "Name" - -#~ msgid "Label" -#~ msgstr "Label" - -#~ msgid "Help text" -#~ msgstr "Hilfetext" - -#~ msgid "Required" -#~ msgstr "Pflichtfeld" - #~ msgid "Duplicate field name!" #~ msgstr "Feldname bereits vorhanden!" @@ -874,12 +897,6 @@ msgstr "" #~ msgid "Boolean" #~ msgstr "Wahr/Falsch-Schalter" -#~ msgid "Fields" -#~ msgstr "Felder" - -#~ msgid "Initial" -#~ msgstr "Vorausgefüllt" - #~ msgid "Date" #~ msgstr "Datum" @@ -1001,12 +1018,6 @@ msgstr "" #~ msgid "Select" #~ msgstr "Auswahl" -#~ msgid "Select model object" -#~ msgstr "Modelobjekt Auswahl" - -#~ msgid "Model" -#~ msgstr "Model" - #~ msgid "Select multiple" #~ msgstr "Mehrfachauswahl" diff --git a/examples/simple/locale/nl/LC_MESSAGES/django.po b/examples/simple/locale/nl/LC_MESSAGES/django.po index 6c8a923c..17177396 100644 --- a/examples/simple/locale/nl/LC_MESSAGES/django.po +++ b/examples/simple/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-27 23:49+0100\n" +"POT-Creation-Date: 2015-03-10 13:19+0100\n" "PO-Revision-Date: 2015-02-27 23:52+0100\n" "Last-Translator: Artur Barseghyan \n" "Language-Team: LANGUAGE \n" @@ -37,81 +37,99 @@ msgstr "" msgid "German" msgstr "" -#: settings.py:306 -#: settings.py:320 +#: settings.py:307 settings.py:321 msgid "Custom bootstrap3 embed form view template" msgstr "" -#: settings.py:312 -#: settings.py:326 +#: settings.py:313 settings.py:327 msgid "Custom bootstrap3 embed form entry submitted template" msgstr "" -#: settings.py:342 -#: settings.py:356 +#: settings.py:343 settings.py:357 msgid "Custom foundation5 embed form view template" msgstr "" -#: settings.py:348 -#: settings.py:362 +#: settings.py:349 settings.py:363 msgid "Custom foundation5 embed form entry submitted template" msgstr "" -#: settings.py:381 +#: settings.py:382 msgid "© django-fobi example site 2014" msgstr "" -#: admin_tools_dashboard/__init__.py:29 -#: admin_tools_dashboard/menu.py:28 +#: admin_tools_dashboard/__init__.py:29 admin_tools_dashboard/menu.py:28 msgid "Foo" msgstr "" -#: admin_tools_dashboard/__init__.py:37 -#: admin_tools_dashboard/menu.py:34 +#: admin_tools_dashboard/__init__.py:37 admin_tools_dashboard/menu.py:34 msgid "Fobi" msgstr "" -#: admin_tools_dashboard/__init__.py:40 -#: admin_tools_dashboard/menu.py:36 +#: admin_tools_dashboard/__init__.py:40 admin_tools_dashboard/menu.py:36 msgid "Plugins" msgstr "" -#: admin_tools_dashboard/__init__.py:41 -#: admin_tools_dashboard/menu.py:37 +#: admin_tools_dashboard/__init__.py:41 admin_tools_dashboard/menu.py:37 msgid "Forms" msgstr "" -#: admin_tools_dashboard/__init__.py:42 -#: admin_tools_dashboard/menu.py:38 +#: admin_tools_dashboard/__init__.py:42 admin_tools_dashboard/menu.py:38 msgid "Data" msgstr "" -#: admin_tools_dashboard/__init__.py:49 -#: admin_tools_dashboard/menu.py:45 +#: admin_tools_dashboard/__init__.py:49 admin_tools_dashboard/menu.py:45 msgid "FeinCMS Pages" msgstr "" -#: admin_tools_dashboard/__init__.py:58 -#: admin_tools_dashboard/menu.py:52 +#: admin_tools_dashboard/__init__.py:58 admin_tools_dashboard/menu.py:52 msgid "DjangoCMS Pages" msgstr "" -#: admin_tools_dashboard/__init__.py:66 -#: admin_tools_dashboard/menu.py:58 +#: admin_tools_dashboard/__init__.py:66 admin_tools_dashboard/menu.py:58 msgid "Administration" msgstr "" -#: admin_tools_dashboard/__init__.py:73 -#: admin_tools_dashboard/__init__.py:87 +#: admin_tools_dashboard/__init__.py:73 admin_tools_dashboard/__init__.py:87 msgid "Recent Actions" msgstr "" -#: admin_tools_dashboard/menu.py:24 -#: templates/home/base.html:38 +#: admin_tools_dashboard/menu.py:24 templates/home/base.html:38 #: templates/home/foundation5.html:32 msgid "Dashboard" msgstr "" +#: override_select_model_object_plugin/fobi_form_elements.py:19 +msgid "Select model object" +msgstr "" + +#: override_select_model_object_plugin/fobi_form_elements.py:20 +msgid "Fields" +msgstr "" + +#: override_select_model_object_plugin/forms.py:25 +msgid "Label" +msgstr "" + +#: override_select_model_object_plugin/forms.py:30 +msgid "Name" +msgstr "" + +#: override_select_model_object_plugin/forms.py:35 +msgid "Model" +msgstr "" + +#: override_select_model_object_plugin/forms.py:41 +msgid "Help text" +msgstr "" + +#: override_select_model_object_plugin/forms.py:46 +msgid "Initial" +msgstr "" + +#: override_select_model_object_plugin/forms.py:51 +msgid "Required" +msgstr "" + #: page/models.py:14 msgid "Base template" msgstr "" @@ -151,8 +169,7 @@ msgstr "" msgid "DjangoCMS Foundation 5 example" msgstr "" -#: templates/cms_page/foundation5/base.html:99 -#: templates/home/base.html:12 +#: templates/cms_page/foundation5/base.html:99 templates/home/base.html:12 msgid "Home" msgstr "" @@ -170,26 +187,26 @@ msgid "" " template for rendering the form for the theme %(fobi_theme_uid)s given." msgstr "" -#: templates/home/base.html:13 -#: templates/page/base.html:13 +#: templates/home/base.html:13 templates/page/base.html:13 msgid "django-fobi example site" msgstr "" -#: templates/home/base.html:22 -#: templates/home/foundation5.html:16 +#: templates/home/base.html:22 templates/home/foundation5.html:16 msgid "" "\n" "

\n" -" Welcome to `django-fobi` (later on named just `Fobi`) - a customisable, modular, developer-friendly form\n" -" builder application for Django. With `Fobi` you can build Django forms using a user-friendly GUI,\n" -" save or mail posted form data. Developer-friendly API allows you to build your own form elements\n" +" Welcome to `django-fobi` (later on named just `Fobi`) - a customisable, " +"modular, developer-friendly form\n" +" builder application for Django. With `Fobi` you can build Django forms " +"using a user-friendly GUI,\n" +" save or mail posted form data. Developer-friendly API allows you to " +"build your own form elements\n" " and form handlers (mechanisms for handling the submitted form data).\n" "

\n" " " msgstr "" -#: templates/home/base.html:30 -#: templates/home/foundation5.html:24 +#: templates/home/base.html:30 templates/home/foundation5.html:24 msgid "Learn more" msgstr "" @@ -197,14 +214,15 @@ msgstr "" #, python-format msgid "" "\n" -"

The `Fobi` dashboard, where you can see all the forms you have created, edit them (add/remove elements,\n" +"

The `Fobi` dashboard, where you can see all the forms you have " +"created, edit them (add/remove elements,\n" " form handlers), create new forms as well as remove existing ones.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " msgstr "" -#: templates/home/base.html:47 -#: templates/home/foundation5.html:41 +#: templates/home/base.html:47 templates/home/foundation5.html:41 msgid "Create a form" msgstr "" @@ -212,13 +230,14 @@ msgstr "" #, python-format msgid "" "\n" -"

Create your first form using awesome user-friendly GUI. Choose what to do with the posted data.

\n" -"

Create form »

\n" +"

Create your first form using awesome user-friendly GUI. Choose what " +"to do with the posted data.

\n" +"

Create form »

\n" " " msgstr "" -#: templates/home/base.html:55 -#: templates/home/foundation5.html:49 +#: templates/home/base.html:55 templates/home/foundation5.html:49 msgid "See the admin part" msgstr "" @@ -226,9 +245,11 @@ msgstr "" #, python-format msgid "" "\n" -"

See the Django-admin for saved data, as well as choose who to grant with permissions of using\n" +"

See the Django-admin for saved data, as well as choose who to grant " +"with permissions of using\n" " one or another `Fobi` plugin (form element or form handler).

\n" -"

Go to admin »

\n" +"

Go to admin »

\n" " " msgstr "" @@ -236,9 +257,11 @@ msgstr "" #, python-format msgid "" "\n" -"

The `Fobi` dashboard, where you can see all the forms you have created, edit them (add/remove elements,\n" +"

The `Fobi` dashboard, where you can see all the forms you have " +"created, edit them (add/remove elements,\n" " form handlers), create new forms as well as remove existing ones.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " msgstr "" @@ -246,8 +269,10 @@ msgstr "" #, python-format msgid "" "\n" -"

Create your first form using awesome user-friendly GUI. Choose what to do with the posted data.

\n" -"

Create form »

\n" +"

Create your first form using awesome user-friendly GUI. Choose what " +"to do with the posted data.

\n" +"

Create form »

\n" " " msgstr "" @@ -255,9 +280,11 @@ msgstr "" #, python-format msgid "" "\n" -"

See the Django-admin for saved data, as well as choose who to grant with permissions of using\n" +"

See the Django-admin for saved data, as well as choose who to grant " +"with permissions of using\n" " one or another `Fobi` plugin (form element or form handler).

\n" -"

Go to admin »

\n" +"

Go to admin »

\n" " " msgstr "" @@ -278,19 +305,23 @@ msgstr "" msgid "" "\n" " Thanks %(account)s, activation complete!\n" -" You may now login using the username and password you set at registration.\n" +" You may now login using the username " +"and password you set at registration.\n" " " msgstr "" #: templates/registration/activate.html:22 -msgid "Oops – it seems that your activation key is invalid. Please check the url again." +msgid "" +"Oops – it seems that your activation key is invalid. Please check the " +"url again." msgstr "" #: templates/registration/activation_complete.html:16 #, python-format msgid "" "\n" -" Thanks, activation complete! You may now login using the username and password you set at registration.\n" +" Thanks, activation complete! You may now login using the username and password you set at registration.\n" " " msgstr "" @@ -302,13 +333,15 @@ msgid "" "

\n" "You (or someone pretending to be you) have asked to register an account at\n" "%(sitename)s.
\n" -"If this wasn't you, please ignore this email and your address will be removed\n" +"If this wasn't you, please ignore this email and your address will be " +"removed\n" "from our records.\n" "

\n" "

\n" "To activate this account, please click the following link within the next \n" "%(expiration_days)s days:
\n" -"http://%(sitedomain)s%(activation_key_url)s\n" +"http://%(sitedomain)s" +"%(activation_key_url)s\n" "

\n" "

\n" "Sincerely,
\n" @@ -355,8 +388,7 @@ msgid "" " Need an account?" msgstr "" -#: templates/registration/logout.html:5 -#: templates/registration/logout.html:12 +#: templates/registration/logout.html:5 templates/registration/logout.html:12 msgid "Logged out" msgstr "" @@ -432,10 +464,12 @@ msgstr "" #, python-format msgid "" "You are receiving this email because you (or someone pretending to be you)\n" -"requested that your password be reset on the %(domain)s site. If you do not \n" +"requested that your password be reset on the %(domain)s site. If you do " +"not \n" "wish to reset your password, please ignore this message.\n" "\n" -"To reset your password, please click the following link, or copy and paste it\n" +"To reset your password, please click the following link, or copy and paste " +"it\n" "into your web browser:" msgstr "" @@ -458,7 +492,8 @@ msgstr "" #: templates/registration/password_reset_form_ajax.html:10 msgid "" "\n" -" Forgot your password? Enter your email in the form below and we'll send you\n" +" Forgot your password? Enter your email in the form below and we'll " +"send you\n" " instructions for creating a new one.\n" " " msgstr "" @@ -484,4 +519,3 @@ msgstr "" #: templates/registration/registration_form_ajax.html:12 msgid "Send activation email" msgstr "" - diff --git a/examples/simple/locale/ru/LC_MESSAGES/django.po b/examples/simple/locale/ru/LC_MESSAGES/django.po index 9868fdf7..535585db 100644 --- a/examples/simple/locale/ru/LC_MESSAGES/django.po +++ b/examples/simple/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-27 23:49+0100\n" +"POT-Creation-Date: 2015-03-10 13:19+0100\n" "PO-Revision-Date: 2015-02-27 23:52+0100\n" "Last-Translator: Artur Barseghyan \n" "Language-Team: LANGUAGE \n" @@ -15,7 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: settings.py:43 msgid "English" @@ -37,81 +38,99 @@ msgstr "" msgid "German" msgstr "" -#: settings.py:306 -#: settings.py:320 +#: settings.py:307 settings.py:321 msgid "Custom bootstrap3 embed form view template" msgstr "" -#: settings.py:312 -#: settings.py:326 +#: settings.py:313 settings.py:327 msgid "Custom bootstrap3 embed form entry submitted template" msgstr "" -#: settings.py:342 -#: settings.py:356 +#: settings.py:343 settings.py:357 msgid "Custom foundation5 embed form view template" msgstr "" -#: settings.py:348 -#: settings.py:362 +#: settings.py:349 settings.py:363 msgid "Custom foundation5 embed form entry submitted template" msgstr "" -#: settings.py:381 +#: settings.py:382 msgid "© django-fobi example site 2014" msgstr "© пример django-fobi сайта 2014" -#: admin_tools_dashboard/__init__.py:29 -#: admin_tools_dashboard/menu.py:28 +#: admin_tools_dashboard/__init__.py:29 admin_tools_dashboard/menu.py:28 msgid "Foo" msgstr "" -#: admin_tools_dashboard/__init__.py:37 -#: admin_tools_dashboard/menu.py:34 +#: admin_tools_dashboard/__init__.py:37 admin_tools_dashboard/menu.py:34 msgid "Fobi" msgstr "" -#: admin_tools_dashboard/__init__.py:40 -#: admin_tools_dashboard/menu.py:36 +#: admin_tools_dashboard/__init__.py:40 admin_tools_dashboard/menu.py:36 msgid "Plugins" msgstr "" -#: admin_tools_dashboard/__init__.py:41 -#: admin_tools_dashboard/menu.py:37 +#: admin_tools_dashboard/__init__.py:41 admin_tools_dashboard/menu.py:37 msgid "Forms" msgstr "" -#: admin_tools_dashboard/__init__.py:42 -#: admin_tools_dashboard/menu.py:38 +#: admin_tools_dashboard/__init__.py:42 admin_tools_dashboard/menu.py:38 msgid "Data" msgstr "" -#: admin_tools_dashboard/__init__.py:49 -#: admin_tools_dashboard/menu.py:45 +#: admin_tools_dashboard/__init__.py:49 admin_tools_dashboard/menu.py:45 msgid "FeinCMS Pages" msgstr "" -#: admin_tools_dashboard/__init__.py:58 -#: admin_tools_dashboard/menu.py:52 +#: admin_tools_dashboard/__init__.py:58 admin_tools_dashboard/menu.py:52 msgid "DjangoCMS Pages" msgstr "" -#: admin_tools_dashboard/__init__.py:66 -#: admin_tools_dashboard/menu.py:58 +#: admin_tools_dashboard/__init__.py:66 admin_tools_dashboard/menu.py:58 msgid "Administration" msgstr "" -#: admin_tools_dashboard/__init__.py:73 -#: admin_tools_dashboard/__init__.py:87 +#: admin_tools_dashboard/__init__.py:73 admin_tools_dashboard/__init__.py:87 msgid "Recent Actions" msgstr "" -#: admin_tools_dashboard/menu.py:24 -#: templates/home/base.html:38 +#: admin_tools_dashboard/menu.py:24 templates/home/base.html:38 #: templates/home/foundation5.html:32 msgid "Dashboard" msgstr "" +#: override_select_model_object_plugin/fobi_form_elements.py:19 +msgid "Select model object" +msgstr "" + +#: override_select_model_object_plugin/fobi_form_elements.py:20 +msgid "Fields" +msgstr "" + +#: override_select_model_object_plugin/forms.py:25 +msgid "Label" +msgstr "" + +#: override_select_model_object_plugin/forms.py:30 +msgid "Name" +msgstr "" + +#: override_select_model_object_plugin/forms.py:35 +msgid "Model" +msgstr "" + +#: override_select_model_object_plugin/forms.py:41 +msgid "Help text" +msgstr "" + +#: override_select_model_object_plugin/forms.py:46 +msgid "Initial" +msgstr "" + +#: override_select_model_object_plugin/forms.py:51 +msgid "Required" +msgstr "" + #: page/models.py:14 msgid "Base template" msgstr "" @@ -151,8 +170,7 @@ msgstr "" msgid "DjangoCMS Foundation 5 example" msgstr "" -#: templates/cms_page/foundation5/base.html:99 -#: templates/home/base.html:12 +#: templates/cms_page/foundation5/base.html:99 templates/home/base.html:12 msgid "Home" msgstr "" @@ -170,34 +188,37 @@ msgid "" " template for rendering the form for the theme %(fobi_theme_uid)s given." msgstr "" -#: templates/home/base.html:13 -#: templates/page/base.html:13 +#: templates/home/base.html:13 templates/page/base.html:13 msgid "django-fobi example site" msgstr "" -#: templates/home/base.html:22 -#: templates/home/foundation5.html:16 +#: templates/home/base.html:22 templates/home/foundation5.html:16 msgid "" "\n" "

\n" -" Welcome to `django-fobi` (later on named just `Fobi`) - a customisable, modular, developer-friendly form\n" -" builder application for Django. With `Fobi` you can build Django forms using a user-friendly GUI,\n" -" save or mail posted form data. Developer-friendly API allows you to build your own form elements\n" +" Welcome to `django-fobi` (later on named just `Fobi`) - a customisable, " +"modular, developer-friendly form\n" +" builder application for Django. With `Fobi` you can build Django forms " +"using a user-friendly GUI,\n" +" save or mail posted form data. Developer-friendly API allows you to " +"build your own form elements\n" " and form handlers (mechanisms for handling the submitted form data).\n" "

\n" " " msgstr "" "\n" "

\n" -" Добро пожаловать в `django-fobi` (далее просто `Fobi`) настраиваемый, модульный, удобный разработчику пакет \n" -" для создания форм в Django. С помощью `Fobi` вы можете создать форму для Django используя удобный графический интерфейс,\n" -" сохранить или отослать отправленные данные по эл. почте. Дружелюбный разработчику API позволит вам создать ваши собственные элементы- и \n" +" Добро пожаловать в `django-fobi` (далее просто `Fobi`) настраиваемый, " +"модульный, удобный разработчику пакет \n" +" для создания форм в Django. С помощью `Fobi` вы можете создать форму для " +"Django используя удобный графический интерфейс,\n" +" сохранить или отослать отправленные данные по эл. почте. Дружелюбный " +"разработчику API позволит вам создать ваши собственные элементы- и \n" " обработчики- форм (механизм для обработки отправленых данных).\n" "

\n" " " -#: templates/home/base.html:30 -#: templates/home/foundation5.html:24 +#: templates/home/base.html:30 templates/home/foundation5.html:24 msgid "Learn more" msgstr "Узнать подробнее" @@ -205,19 +226,22 @@ msgstr "Узнать подробнее" #, python-format msgid "" "\n" -"

The `Fobi` dashboard, where you can see all the forms you have created, edit them (add/remove elements,\n" +"

The `Fobi` dashboard, where you can see all the forms you have " +"created, edit them (add/remove elements,\n" " form handlers), create new forms as well as remove existing ones.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " msgstr "" "\n" -"

Приборная панель `Fobi`, в которой вы можете просмотреть ранее созданные формы изменить их (добавить/удалить элементы,\n" +"

Приборная панель `Fobi`, в которой вы можете просмотреть ранее " +"созданные формы изменить их (добавить/удалить элементы,\n" " обработчики), создать новые формы или удалить существующие.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " -#: templates/home/base.html:47 -#: templates/home/foundation5.html:41 +#: templates/home/base.html:47 templates/home/foundation5.html:41 msgid "Create a form" msgstr "Создать форму" @@ -225,17 +249,20 @@ msgstr "Создать форму" #, python-format msgid "" "\n" -"

Create your first form using awesome user-friendly GUI. Choose what to do with the posted data.

\n" -"

Create form »

\n" +"

Create your first form using awesome user-friendly GUI. Choose what " +"to do with the posted data.

\n" +"

Create form »

\n" " " msgstr "" "\n" -"

Создайте свою первую форму, используя удобный графический интерфейс. Выберите что делать с отправленными данными.

\n" -"

Создать форму »

\n" +"

Создайте свою первую форму, используя удобный графический " +"интерфейс. Выберите что делать с отправленными данными.

\n" +"

Создать форму »

\n" " " -#: templates/home/base.html:55 -#: templates/home/foundation5.html:49 +#: templates/home/base.html:55 templates/home/foundation5.html:49 msgid "See the admin part" msgstr "Перейти к административной части" @@ -243,52 +270,67 @@ msgstr "Перейти к административной части" #, python-format msgid "" "\n" -"

See the Django-admin for saved data, as well as choose who to grant with permissions of using\n" +"

See the Django-admin for saved data, as well as choose who to grant " +"with permissions of using\n" " one or another `Fobi` plugin (form element or form handler).

\n" -"

Go to admin »

\n" +"

Go to admin »

\n" " " msgstr "" "\n" -"

Используйте Django-admin для просмотра сохраненных данных, а также для распределения доступа \n" -" к тому или иному `Fobi` плагину (элемента- или обработчика- формы).

\n" -"

Go to admin »

\n" +"

Используйте Django-admin для просмотра сохраненных данных, а также " +"для распределения доступа \n" +" к тому или иному `Fobi` плагину (элемента- или обработчика- формы).\n" +"

Go to admin »

\n" " " #: templates/home/foundation5.html:34 #, python-format msgid "" "\n" -"

The `Fobi` dashboard, where you can see all the forms you have created, edit them (add/remove elements,\n" +"

The `Fobi` dashboard, where you can see all the forms you have " +"created, edit them (add/remove elements,\n" " form handlers), create new forms as well as remove existing ones.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " msgstr "" "\n" -"

Приборная панель `Fobi`, в которой вы можете просмотреть ранее созданные формы изменить их (добавить/удалить элементы,\n" +"

Приборная панель `Fobi`, в которой вы можете просмотреть ранее " +"созданные формы изменить их (добавить/удалить элементы,\n" " обработчики), создать новые формы или удалить существующие.

\n" -"

Go to dashboard »

\n" +"

Go to dashboard »

\n" " " #: templates/home/foundation5.html:43 #, python-format msgid "" "\n" -"

Create your first form using awesome user-friendly GUI. Choose what to do with the posted data.

\n" -"

Create form »

\n" +"

Create your first form using awesome user-friendly GUI. Choose what " +"to do with the posted data.

\n" +"

Create form »

\n" " " msgstr "" "\n" -"

Создайте свою первую форму, используя удобный графический интерфейс. Выберите что делать с отправленными данными.

\n" -"

Создать форму »

\n" +"

Создайте свою первую форму, используя удобный графический " +"интерфейс. Выберите что делать с отправленными данными.

\n" +"

Создать форму »

\n" " " #: templates/home/foundation5.html:51 #, python-format msgid "" "\n" -"

See the Django-admin for saved data, as well as choose who to grant with permissions of using\n" +"

See the Django-admin for saved data, as well as choose who to grant " +"with permissions of using\n" " one or another `Fobi` plugin (form element or form handler).

\n" -"

Go to admin »

\n" +"

Go to admin »

\n" " " msgstr "" @@ -309,19 +351,23 @@ msgstr "" msgid "" "\n" " Thanks %(account)s, activation complete!\n" -" You may now login using the username and password you set at registration.\n" +" You may now login using the username " +"and password you set at registration.\n" " " msgstr "" #: templates/registration/activate.html:22 -msgid "Oops – it seems that your activation key is invalid. Please check the url again." +msgid "" +"Oops – it seems that your activation key is invalid. Please check the " +"url again." msgstr "" #: templates/registration/activation_complete.html:16 #, python-format msgid "" "\n" -" Thanks, activation complete! You may now login using the username and password you set at registration.\n" +" Thanks, activation complete! You may now login using the username and password you set at registration.\n" " " msgstr "" @@ -333,13 +379,15 @@ msgid "" "

\n" "You (or someone pretending to be you) have asked to register an account at\n" "%(sitename)s.
\n" -"If this wasn't you, please ignore this email and your address will be removed\n" +"If this wasn't you, please ignore this email and your address will be " +"removed\n" "from our records.\n" "

\n" "

\n" "To activate this account, please click the following link within the next \n" "%(expiration_days)s days:
\n" -"http://%(sitedomain)s%(activation_key_url)s\n" +"http://%(sitedomain)s" +"%(activation_key_url)s\n" "

\n" "

\n" "Sincerely,
\n" @@ -386,8 +434,7 @@ msgid "" " Need an account?" msgstr "" -#: templates/registration/logout.html:5 -#: templates/registration/logout.html:12 +#: templates/registration/logout.html:5 templates/registration/logout.html:12 msgid "Logged out" msgstr "" @@ -463,10 +510,12 @@ msgstr "" #, python-format msgid "" "You are receiving this email because you (or someone pretending to be you)\n" -"requested that your password be reset on the %(domain)s site. If you do not \n" +"requested that your password be reset on the %(domain)s site. If you do " +"not \n" "wish to reset your password, please ignore this message.\n" "\n" -"To reset your password, please click the following link, or copy and paste it\n" +"To reset your password, please click the following link, or copy and paste " +"it\n" "into your web browser:" msgstr "" @@ -489,7 +538,8 @@ msgstr "" #: templates/registration/password_reset_form_ajax.html:10 msgid "" "\n" -" Forgot your password? Enter your email in the form below and we'll send you\n" +" Forgot your password? Enter your email in the form below and we'll " +"send you\n" " instructions for creating a new one.\n" " " msgstr "" @@ -515,4 +565,3 @@ msgstr "" #: templates/registration/registration_form_ajax.html:12 msgid "Send activation email" msgstr "" - diff --git a/examples/simple/override_radio_plugin/__init__.py b/examples/simple/override_radio_plugin/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/simple/override_radio_plugin/fobi_form_elements.py b/examples/simple/override_radio_plugin/fobi_form_elements.py new file mode 100644 index 00000000..5f6844d6 --- /dev/null +++ b/examples/simple/override_radio_plugin/fobi_form_elements.py @@ -0,0 +1,66 @@ +__all__ = ('RadioInputPlugin',) + +from django.forms.fields import ChoiceField +from django.forms.widgets import RadioSelect +from django.utils.translation import ugettext_lazy as _ + +from fobi.base import FormFieldPlugin, form_element_plugin_registry, get_theme +from fobi.helpers import safe_text, get_select_field_choices +from fobi.contrib.plugins.form_elements.fields.radio import UID + +from override_radio_plugin.forms import RadioInputForm + +theme = get_theme(request=None, as_instance=True) + +class RadioInputPlugin(FormFieldPlugin): + """ + Radio field plugin. + """ + uid = UID + name = _("Radio") + group = _("Fields") + form = RadioInputForm + + def get_form_field_instances(self): + """ + Get form field instances. + """ + choices = get_select_field_choices(self.data.choices) + + widget_attrs = {'class': theme.form_radio_element_html_class} + kwargs = { + 'label': self.data.label, + 'help_text': self.data.help_text, + 'initial': self.data.initial, + 'required': self.data.required, + 'choices': choices, + 'widget': RadioSelect(attrs=widget_attrs), + } + + return [(self.data.name, ChoiceField, kwargs)] + + def submit_plugin_form_data(self, form_entry, request, form): + """ + Submit plugin form data/process. + + :param fobi.models.FormEntry form_entry: Instance of + ``fobi.models.FormEntry``. + :param django.http.HttpRequest request: + :param django.forms.Form form: + """ + # Get the object + value = form.cleaned_data.get(self.data.name, None) + + if value: + choices = dict(get_select_field_choices(self.data.choices)) + # Handle the submitted form value + value = '{0}'.format(safe_text(choices.get(value))) + + # Overwrite ``cleaned_data`` of the ``form`` with object qualifier. + form.cleaned_data[self.data.name] = value + + # It's critically important to return the ``form`` with updated + # ``cleaned_data`` + return form + +form_element_plugin_registry.register(RadioInputPlugin, force=True) diff --git a/examples/simple/override_radio_plugin/forms.py b/examples/simple/override_radio_plugin/forms.py new file mode 100644 index 00000000..62cd7ab7 --- /dev/null +++ b/examples/simple/override_radio_plugin/forms.py @@ -0,0 +1,75 @@ +__all__ = ('RadioInputForm',) + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from fobi.base import BaseFormFieldPluginForm, get_theme +from fobi.helpers import validate_initial_for_choices + +theme = get_theme(request=None, as_instance=True) + +class RadioInputForm(forms.Form, BaseFormFieldPluginForm): + """ + Form for ``RadioInputPlugin``. + """ + plugin_data_fields = [ + ("label", ""), + ("name", ""), + ("choices", ""), + ("help_text", ""), + ("initial", ""), + ("required", False) + ] + + label = forms.CharField( + label = _("Label"), + required = True, + widget = forms.widgets.TextInput(attrs={'class': theme.form_element_html_class}) + ) + name = forms.CharField( + label = _("Name"), + required = True, + widget = forms.widgets.TextInput(attrs={'class': theme.form_element_html_class}) + ) + choices = forms.CharField( + label = _("Choices"), + required = False, + help_text = _("Enter single values/pairs per line. Example:
" + "    1
" + "    2
" + "    alpha, Alpha
" + "    beta, Beta
" + "    omega" + "

" + "It finally transforms into the following HTML code:
" + '    <select id="id_NAME_OF_THE_ELEMENT" name="NAME_OF_THE_ELEMENT">
' + '        <option value="1">1</option>
' + '        <option value="2">2</option>
' + '        <option value="alpha">Alpha</option>
' + '        <option value="beta">Beta</option>
' + '        <option value="omega">omega</option>
' + '    </select>' + "
"), + widget = forms.widgets.Textarea(attrs={'class': theme.form_element_html_class}) + ) + help_text = forms.CharField( + label = _("Help text"), + required = False, + widget = forms.widgets.Textarea(attrs={'class': theme.form_element_html_class}) + ) + initial = forms.CharField( + label = _("Initial"), + required = False, + widget = forms.widgets.TextInput(attrs={'class': theme.form_element_html_class}) + ) + required = forms.BooleanField( + label = _("Required"), + required = False, + widget = forms.widgets.CheckboxInput(attrs={'class': theme.form_element_checkbox_html_class}) + ) + + def clean_initial(self): + """ + Validating the initial value. + """ + return validate_initial_for_choices(self, 'choices', 'initial') diff --git a/examples/simple/override_select_model_object_plugin/forms.py b/examples/simple/override_select_model_object_plugin/forms.py index d9ea9f56..01ac9fa8 100644 --- a/examples/simple/override_select_model_object_plugin/forms.py +++ b/examples/simple/override_select_model_object_plugin/forms.py @@ -1,3 +1,5 @@ +__all__ = ('SelectModelObjectInputForm',) + from django import forms from django.utils.translation import ugettext_lazy as _ diff --git a/examples/simple/runserver-override-radio-plugin.sh b/examples/simple/runserver-override-radio-plugin.sh new file mode 100755 index 00000000..ab9754eb --- /dev/null +++ b/examples/simple/runserver-override-radio-plugin.sh @@ -0,0 +1,2 @@ +#workon fobi +./manage.py runserver 0.0.0.0:8003 --settings=settings_override_radio_plugin --traceback -v 3 diff --git a/examples/simple/settings_override_radio_plugin.py b/examples/simple/settings_override_radio_plugin.py new file mode 100644 index 00000000..6d75ea8c --- /dev/null +++ b/examples/simple/settings_override_radio_plugin.py @@ -0,0 +1,16 @@ +from nine.versions import DJANGO_GTE_1_7 + +from settings import * + +INSTALLED_APPS = list(INSTALLED_APPS) + +try: + INSTALLED_APPS.append('override_radio_plugin') +except Exception as e: + pass + +if DJANGO_GTE_1_7: + try: + INSTALLED_APPS.remove('south') if 'south' in INSTALLED_APPS else None + except: + pass diff --git a/setup.py b/setup.py index 2299ed99..ea77b5ac 100644 --- a/setup.py +++ b/setup.py @@ -63,7 +63,7 @@ for static_dir in static_dirs: for locale_dir in locale_dirs: locale_files += [os.path.join(locale_dir, f) for f in os.listdir(locale_dir)] -version = '0.4.26' +version = '0.4.27' install_requires = [ 'Pillow>=2.0.0', diff --git a/src/fobi/__init__.py b/src/fobi/__init__.py index 83ea8241..19d4c22a 100644 --- a/src/fobi/__init__.py +++ b/src/fobi/__init__.py @@ -1,6 +1,6 @@ __title__ = 'django-fobi' -__version__ = '0.4.26' -__build__ = 0x000029 +__version__ = '0.4.27' +__build__ = 0x000030 __author__ = 'Artur Barseghyan ' __copyright__ = '2014-2015 Artur Barseghyan' __license__ = 'GPL 2.0/LGPL 2.1' diff --git a/src/fobi/base.py b/src/fobi/base.py index 57e412de..f8ead54b 100644 --- a/src/fobi/base.py +++ b/src/fobi/base.py @@ -1900,7 +1900,7 @@ def submit_plugin_form_data(form_entry, request, form): for form_element_entry in form_entry.formelemententry_set.all(): # Get the plugin. form_element_plugin = form_element_entry.get_plugin(request=request) - updated_form = form_element_plugin.submit_plugin_form_data( + updated_form = form_element_plugin._submit_plugin_form_data( form_entry=form_entry, request=request, form=form ) if updated_form: diff --git a/src/fobi/constants.py b/src/fobi/constants.py index da9edb55..8917cbfe 100644 --- a/src/fobi/constants.py +++ b/src/fobi/constants.py @@ -8,6 +8,7 @@ __all__ = ( 'CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA', 'CALLBACK_FORM_VALID', 'CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS', 'CALLBACK_FORM_INVALID', 'CALLBACK_STAGES', + 'SUBMIT_VALUE_AS_VAL', 'SUBMIT_VALUE_AS_REPR', 'SUBMIT_VALUE_AS_MIX', ) from django.utils.translation import ugettext_lazy as _ @@ -31,3 +32,7 @@ CALLBACK_STAGES = ( CALLBACK_FORM_INVALID, CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, ) + +SUBMIT_VALUE_AS_VAL = 'val' +SUBMIT_VALUE_AS_REPR = 'repr' +SUBMIT_VALUE_AS_MIX = 'mix' diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py b/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py new file mode 100644 index 00000000..84090b2e --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py @@ -0,0 +1,28 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.conf' +__author__ = 'Artur Barseghyan ' +__copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' +__license__ = 'GPL 2.0/LGPL 2.1' +__all__ = ('get_setting',) + +from django.conf import settings + +from fobi.contrib.plugins.form_elements.fields.radio import defaults + +def get_setting(setting, override=None): + """ + Get a setting from `fobi.contrib.plugins.form_elements.fields.radio` conf + module, falling back to the default. + + If override is not None, it will be used instead of the setting. + + :param setting: String with setting name + :param override: Value to use when no setting is available. Defaults + to None. + :return: Setting value. + """ + if override is not None: + return override + if hasattr(settings, 'FOBI_FORM_ELEMENT_RADIO_{0}'.format(setting)): + return getattr(settings, 'FOBI_FORM_ELEMENT_RADIO_{0}'.format(setting)) + else: + return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/radio/defaults.py new file mode 100644 index 00000000..e9396506 --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/defaults.py @@ -0,0 +1,9 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.defaults' +__author__ = 'Artur Barseghyan ' +__copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' +__license__ = 'GPL 2.0/LGPL 2.1' +__all__ = ('SUBMIT_VALUE_AS',) + +from fobi.constants import SUBMIT_VALUE_AS_REPR + +SUBMIT_VALUE_AS = SUBMIT_VALUE_AS_REPR diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/radio/fobi_form_elements.py index 42910c77..9f995bc0 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/fobi_form_elements.py @@ -9,9 +9,15 @@ from django.forms.widgets import RadioSelect from django.utils.translation import ugettext_lazy as _ from fobi.base import FormFieldPlugin, form_element_plugin_registry, get_theme -from fobi.helpers import get_select_field_choices +from fobi.constants import ( + SUBMIT_VALUE_AS_VAL, SUBMIT_VALUE_AS_REPR + ) +from fobi.helpers import get_select_field_choices, safe_text from fobi.contrib.plugins.form_elements.fields.radio import UID from fobi.contrib.plugins.form_elements.fields.radio.forms import RadioInputForm +from fobi.contrib.plugins.form_elements.fields.radio.settings import ( + SUBMIT_VALUE_AS + ) theme = get_theme(request=None, as_instance=True) @@ -42,5 +48,43 @@ class RadioInputPlugin(FormFieldPlugin): return [(self.data.name, ChoiceField, kwargs)] + def submit_plugin_form_data(self, form_entry, request, form): + """ + Submit plugin form data/process. + + :param fobi.models.FormEntry form_entry: Instance of + ``fobi.models.FormEntry``. + :param django.http.HttpRequest request: + :param django.forms.Form form: + """ + # In case if we should submit value as is, we don't return anything. + # In other cases, we proceed further. + if SUBMIT_VALUE_AS != SUBMIT_VALUE_AS_VAL: + # Get the object + value = form.cleaned_data.get(self.data.name, None) + + # Get choices + choices = dict(get_select_field_choices(self.data.choices)) + + if value in choices: + # Handle the submitted form value + + repr = safe_text(choices.get(value)) + + # Should be returned as repr + if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: + value = repr + # Should be returned as mix + else: + value = "{0} ({1})".format(repr, value) + + # Overwrite ``cleaned_data`` of the ``form`` with object + # qualifier. + form.cleaned_data[self.data.name] = value + + # It's critically important to return the ``form`` with updated + # ``cleaned_data`` + return form + form_element_plugin_registry.register(RadioInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py b/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py new file mode 100644 index 00000000..71a8dcc9 --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py @@ -0,0 +1,12 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.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.radio.conf import get_setting + +SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') + +validate_submit_value_as(SUBMIT_VALUE_AS) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select/conf.py new file mode 100644 index 00000000..7320a8f3 --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/select/conf.py @@ -0,0 +1,28 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.select.conf' +__author__ = 'Artur Barseghyan ' +__copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' +__license__ = 'GPL 2.0/LGPL 2.1' +__all__ = ('get_setting',) + +from django.conf import settings + +from fobi.contrib.plugins.form_elements.fields.select import defaults + +def get_setting(setting, override=None): + """ + Get a setting from `fobi.contrib.plugins.form_elements.fields.select` conf + module, falling back to the default. + + If override is not None, it will be used instead of the setting. + + :param setting: String with setting name + :param override: Value to use when no setting is available. Defaults + to None. + :return: Setting value. + """ + if override is not None: + return override + if hasattr(settings, 'FOBI_FORM_ELEMENT_SELECT_{0}'.format(setting)): + return getattr(settings, 'FOBI_FORM_ELEMENT_SELECT_{0}'.format(setting)) + else: + return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select/defaults.py new file mode 100644 index 00000000..3e373c1a --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/select/defaults.py @@ -0,0 +1,9 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.select.defaults' +__author__ = 'Artur Barseghyan ' +__copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' +__license__ = 'GPL 2.0/LGPL 2.1' +__all__ = ('SUBMIT_VALUE_AS',) + +from fobi.constants import SUBMIT_VALUE_AS_REPR + +SUBMIT_VALUE_AS = SUBMIT_VALUE_AS_REPR diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select/fobi_form_elements.py index fd3ff6b6..04a89052 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/fobi_form_elements.py @@ -9,9 +9,17 @@ from django.forms.widgets import Select from django.utils.translation import ugettext_lazy as _ from fobi.base import FormFieldPlugin, form_element_plugin_registry, get_theme -from fobi.helpers import get_select_field_choices +from fobi.constants import ( + SUBMIT_VALUE_AS_VAL, SUBMIT_VALUE_AS_REPR + ) +from fobi.helpers import get_select_field_choices, safe_text from fobi.contrib.plugins.form_elements.fields.select import UID -from fobi.contrib.plugins.form_elements.fields.select.forms import SelectInputForm +from fobi.contrib.plugins.form_elements.fields.select.forms import ( + SelectInputForm + ) +from fobi.contrib.plugins.form_elements.fields.select.settings import ( + SUBMIT_VALUE_AS + ) theme = get_theme(request=None, as_instance=True) @@ -41,5 +49,43 @@ class SelectInputPlugin(FormFieldPlugin): return [(self.data.name, ChoiceField, kwargs)] + def submit_plugin_form_data(self, form_entry, request, form): + """ + Submit plugin form data/process. + + :param fobi.models.FormEntry form_entry: Instance of + ``fobi.models.FormEntry``. + :param django.http.HttpRequest request: + :param django.forms.Form form: + """ + # In case if we should submit value as is, we don't return anything. + # In other cases, we proceed further. + if SUBMIT_VALUE_AS != SUBMIT_VALUE_AS_VAL: + # Get the object + value = form.cleaned_data.get(self.data.name, None) + + # Get choices + choices = dict(get_select_field_choices(self.data.choices)) + + if value in choices: + # Handle the submitted form value + + repr = safe_text(choices.get(value)) + + # Should be returned as repr + if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: + value = repr + # Should be returned as mix + else: + value = "{0} ({1})".format(repr, value) + + # Overwrite ``cleaned_data`` of the ``form`` with object + # qualifier. + form.cleaned_data[self.data.name] = value + + # It's critically important to return the ``form`` with updated + # ``cleaned_data`` + return form + form_element_plugin_registry.register(SelectInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select/settings.py new file mode 100644 index 00000000..4e49a5a1 --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/select/settings.py @@ -0,0 +1,12 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.select.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.conf import get_setting + +SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') + +validate_submit_value_as(SUBMIT_VALUE_AS) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/conf.py index 8ba07709..b45c15f9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/conf.py @@ -6,7 +6,9 @@ __all__ = ('get_setting',) from django.conf import settings -from fobi.contrib.plugins.form_elements.fields.select_model_object import defaults +from fobi.contrib.plugins.form_elements.fields.select_model_object import ( + defaults + ) def get_setting(setting, override=None): """ diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/defaults.py index dddc16e2..89ddadb6 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/defaults.py @@ -1,4 +1,4 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_model_object.default' +__title__ = 'fobi.contrib.plugins.form_elements.fields.select_model_object.defaults' __author__ = 'Artur Barseghyan ' __copyright__ = 'Copyright (c) 2014 Artur Barseghyan' __license__ = 'GPL 2.0/LGPL 2.1' diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/conf.py new file mode 100644 index 00000000..af3e11ac --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/conf.py @@ -0,0 +1,29 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.conf' +__author__ = 'Artur Barseghyan ' +__copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' +__license__ = 'GPL 2.0/LGPL 2.1' +__all__ = ('get_setting',) + +from django.conf import settings + +from fobi.contrib.plugins.form_elements.fields.select_multiple import defaults + +def get_setting(setting, override=None): + """ + Get a setting from + `fobi.contrib.plugins.form_elements.fields.select_multiple` conf module, + falling back to the default. + + If override is not None, it will be used instead of the setting. + + :param setting: String with setting name + :param override: Value to use when no setting is available. Defaults + to None. + :return: Setting value. + """ + if override is not None: + return override + if hasattr(settings, 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_{0}'.format(setting)): + return getattr(settings, 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_{0}'.format(setting)) + else: + return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/defaults.py new file mode 100644 index 00000000..e964d7b0 --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/defaults.py @@ -0,0 +1,9 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.defaults' +__author__ = 'Artur Barseghyan ' +__copyright__ = 'Copyright (c) 2014-2015 Artur Barseghyan' +__license__ = 'GPL 2.0/LGPL 2.1' +__all__ = ('SUBMIT_VALUE_AS',) + +from fobi.constants import SUBMIT_VALUE_AS_REPR + +SUBMIT_VALUE_AS = SUBMIT_VALUE_AS_REPR diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py index 564c5e3e..a10e32de 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py @@ -9,11 +9,17 @@ from django.forms.widgets import SelectMultiple from django.utils.translation import ugettext_lazy as _ from fobi.base import FormFieldPlugin, form_element_plugin_registry, get_theme -from fobi.helpers import get_select_field_choices +from fobi.constants import ( + SUBMIT_VALUE_AS_VAL, SUBMIT_VALUE_AS_REPR + ) +from fobi.helpers import get_select_field_choices, safe_text from fobi.contrib.plugins.form_elements.fields.select_multiple import UID from fobi.contrib.plugins.form_elements.fields.select_multiple.forms import ( SelectMultipleInputForm ) +from fobi.contrib.plugins.form_elements.fields.select_multiple.settings import ( + SUBMIT_VALUE_AS + ) theme = get_theme(request=None, as_instance=True) @@ -43,5 +49,49 @@ class SelectMultipleInputPlugin(FormFieldPlugin): return [(self.data.name, MultipleChoiceField, kwargs)] + def submit_plugin_form_data(self, form_entry, request, form): + """ + Submit plugin form data/process. + + :param fobi.models.FormEntry form_entry: Instance of + ``fobi.models.FormEntry``. + :param django.http.HttpRequest request: + :param django.forms.Form form: + """ + # In case if we should submit value as is, we don't return anything. + # In other cases, we proceed further. + if SUBMIT_VALUE_AS != SUBMIT_VALUE_AS_VAL: + # Get the object + values = form.cleaned_data.get(self.data.name, None) + + # Get choices + choices = dict(get_select_field_choices(self.data.choices)) + + # Returned value + ret_values = [] + + for value in values: + # Handle the submitted form value + + if value in choices: + repr = safe_text(choices.get(value)) + + # Should be returned as repr + if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: + value = repr + # Should be returned as mix + else: + value = "{0} ({1})".format(repr, value) + + ret_values.append(value) + + # Overwrite ``cleaned_data`` of the ``form`` with object + # qualifier. + form.cleaned_data[self.data.name] = ret_values + + # It's critically important to return the ``form`` with updated + # ``cleaned_data`` + return form + form_element_plugin_registry.register(SelectMultipleInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/settings.py new file mode 100644 index 00000000..97807e64 --- /dev/null +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/settings.py @@ -0,0 +1,14 @@ +__title__ = 'fobi.contrib.plugins.form_elements.fields.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 + ) + +SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') + +validate_submit_value_as(SUBMIT_VALUE_AS) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/fobi_form_handlers.py b/src/fobi/contrib/plugins/form_handlers/db_store/fobi_form_handlers.py index ceaf9e73..e00b3384 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/fobi_form_handlers.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/fobi_form_handlers.py @@ -25,7 +25,7 @@ class DBStoreHandlerPlugin(FormHandlerPlugin): """ uid = UID name = _("DB store") - allow_multiple = False + #allow_multiple = False def run(self, form_entry, request, form, form_element_entries=None): """ diff --git a/src/fobi/helpers.py b/src/fobi/helpers.py index f7205e2b..8d760eca 100644 --- a/src/fobi/helpers.py +++ b/src/fobi/helpers.py @@ -1,3 +1,9 @@ +""" +Helpers module. This module can be safely imported from any fobi (sub)module, +since it never imports from any of the fobi (sub)modules (except for the +`fobi.constants` and `fobi.exceptions` modules). +""" + __title__ = 'fobi.helpers' __author__ = 'Artur Barseghyan ' __copyright__ = 'Copyright (c) 2014 Artur Barseghyan' @@ -9,6 +15,7 @@ __all__ = ( 'admin_change_url', 'uniquify_sequence', 'safe_text', 'combine_dicts', 'update_plugin_data', 'get_select_field_choices', 'validate_initial_for_choices', 'validate_initial_for_multiple_choices', + 'validate_submit_value_as', ) import os @@ -30,6 +37,11 @@ from django.utils.translation import ugettext_lazy as _ from autoslug.settings import slugify +from fobi.constants import ( + SUBMIT_VALUE_AS_VAL, SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_MIX + ) +from fobi.exceptions import ImproperlyConfigured + logger = logging.getLogger(__name__) # ***************************************************************************** @@ -78,7 +90,8 @@ def map_field_name_to_label(form): :param list keys_to_remove: :return dict: """ - return dict([(field_name, field.label) for (field_name, field) in form.base_fields.items()]) + return dict([(field_name, field.label) \ + for (field_name, field) in form.base_fields.items()]) def clean_dict(source, keys=[], values=[]): """ @@ -112,8 +125,9 @@ def two_dicts_to_string(headers, data, html_element='p'): (value, data.get(key, '')) for key, value in list(headers.items()) ] return "".join( - ["<{0}>{1}: {2}".format(html_element, safe_text(key), safe_text(value), html_element) \ - for key, value in formatted_data] + ["<{0}>{1}: {2}".format(html_element, safe_text(key), \ + safe_text(value), html_element) \ + for key, value in formatted_data] ) empty_string = text_type('') @@ -271,9 +285,10 @@ def admin_change_url(app_label, module_name, object_id, extra_path='', \ :return str: """ try: - url = reverse('admin:%s_%s_change' %(app_label, module_name), args=[object_id]) + extra_path + url = reverse('admin:{0}_{1}_change'.format(app_label, module_name), \ + args=[object_id]) + extra_path if url_title: - return u'%s' %(url, url_title) + return u'{1}'.format(url, url_title) else: return url except: @@ -377,3 +392,17 @@ def validate_initial_for_multiple_choices(plugin_form, \ ) return plugin_form.cleaned_data[field_name_initial] + +def validate_submit_value_as(value): + """ + Validates the `SUBMIT_AS_VALUE`. + + :param str value: + """ + if not value in (SUBMIT_VALUE_AS_VAL, SUBMIT_VALUE_AS_REPR, \ + SUBMIT_VALUE_AS_MIX): + raise ImproperlyConfigured("The `SUBMIT_AS_VALUE` may have one of " + "the following values: {0}, {1} or {2}" + "".format(SUBMIT_VALUE_AS_VAL, \ + SUBMIT_VALUE_AS_REPR, \ + SUBMIT_VALUE_AS_MIX)) diff --git a/src/fobi/locale/de/LC_MESSAGES/django.po b/src/fobi/locale/de/LC_MESSAGES/django.po index a35b5d66..9462ab84 100644 --- a/src/fobi/locale/de/LC_MESSAGES/django.po +++ b/src/fobi/locale/de/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-27 23:49+0100\n" +"POT-Creation-Date: 2015-03-10 13:18+0100\n" "PO-Revision-Date: 2015-02-27 23:51+0100\n" "Last-Translator: Artur Barseghyan \n" "Language-Team: Maximilian Kindshofer \n" @@ -18,11 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.7.3\n" -#: admin.py:124 -#: admin.py:193 -#: admin.py:226 -#: models.py:316 -#: models.py:344 +#: admin.py:124 admin.py:193 admin.py:226 models.py:316 models.py:344 #: contrib/apps/djangocms_integration/models.py:26 #: contrib/apps/feincms_integration/widgets.py:30 #: contrib/apps/mezzanine_integration/models.py:24 @@ -38,10 +34,7 @@ msgstr "Formular" msgid "Custom" msgstr "Angepasst" -#: admin.py:135 -#: models.py:78 -#: models.py:216 -#: models.py:264 +#: admin.py:135 models.py:78 models.py:216 models.py:264 #: contrib/plugins/form_handlers/db_store/models.py:49 msgid "User" msgstr "Benutzer" @@ -50,23 +43,17 @@ msgstr "Benutzer" msgid "Additional" msgstr "Zusätzlich" -#: admin.py:147 -#: admin.py:171 -#: admin.py:199 -#: admin.py:266 +#: admin.py:147 admin.py:171 admin.py:199 admin.py:266 #: contrib/themes/djangocms_admin_style_theme/templates/djangocms_admin_style_theme/base_edit.html:84 #: contrib/themes/simple/templates/simple/base_edit.html:76 msgid "Fobi" msgstr "Fobi" -#: admin.py:190 -#: admin.py:223 -#: models.py:121 +#: admin.py:190 admin.py:223 models.py:121 msgid "Plugin" msgstr "Plugin" -#: admin.py:232 -#: models.py:472 +#: admin.py:232 models.py:472 msgid "Form handler entry" msgstr "Formularübergabe Einträge" @@ -82,10 +69,7 @@ msgstr "POST benötigt bei Massenänderungen" msgid "Build your forms" msgstr "Erstelle dein Forular" -#: base.py:521 -#: models.py:217 -#: models.py:265 -#: models.py:318 +#: base.py:521 models.py:217 models.py:265 models.py:318 #: contrib/plugins/form_elements/fields/boolean/forms.py:32 #: contrib/plugins/form_elements/fields/date/forms.py:33 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:42 @@ -93,13 +77,14 @@ msgstr "Erstelle dein Forular" #: contrib/plugins/form_elements/fields/email/forms.py:37 #: contrib/plugins/form_elements/fields/file/forms.py:34 #: contrib/plugins/form_elements/fields/hidden/forms.py:33 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:36 #: contrib/plugins/form_elements/fields/input/forms.py:61 #: contrib/plugins/form_elements/fields/integer/forms.py:35 #: contrib/plugins/form_elements/fields/password/forms.py:35 -#: contrib/plugins/form_elements/fields/radio/forms.py:33 -#: contrib/plugins/form_elements/fields/select/forms.py:33 +#: contrib/plugins/form_elements/fields/radio/forms.py:34 +#: contrib/plugins/form_elements/fields/select/forms.py:34 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:36 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:33 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:34 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:36 #: contrib/plugins/form_elements/fields/text/forms.py:35 #: contrib/plugins/form_elements/fields/textarea/forms.py:33 @@ -112,21 +97,21 @@ msgstr "Erstelle dein Forular" msgid "Name" msgstr "Name" -#: base.py:526 -#: contrib/plugins/form_elements/fields/boolean/forms.py:27 +#: base.py:526 contrib/plugins/form_elements/fields/boolean/forms.py:27 #: contrib/plugins/form_elements/fields/date/forms.py:28 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:37 #: contrib/plugins/form_elements/fields/datetime/forms.py:28 #: contrib/plugins/form_elements/fields/email/forms.py:32 #: contrib/plugins/form_elements/fields/file/forms.py:29 #: contrib/plugins/form_elements/fields/hidden/forms.py:28 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:31 #: contrib/plugins/form_elements/fields/input/forms.py:56 #: contrib/plugins/form_elements/fields/integer/forms.py:30 #: contrib/plugins/form_elements/fields/password/forms.py:30 -#: contrib/plugins/form_elements/fields/radio/forms.py:28 -#: contrib/plugins/form_elements/fields/select/forms.py:28 +#: contrib/plugins/form_elements/fields/radio/forms.py:29 +#: contrib/plugins/form_elements/fields/select/forms.py:29 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:31 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:28 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:29 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:31 #: contrib/plugins/form_elements/fields/text/forms.py:30 #: contrib/plugins/form_elements/fields/textarea/forms.py:28 @@ -137,20 +122,20 @@ msgstr "Name" msgid "Label" msgstr "Label" -#: base.py:531 -#: contrib/plugins/form_elements/fields/boolean/forms.py:37 +#: base.py:531 contrib/plugins/form_elements/fields/boolean/forms.py:37 #: contrib/plugins/form_elements/fields/date/forms.py:38 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:47 #: contrib/plugins/form_elements/fields/datetime/forms.py:38 #: contrib/plugins/form_elements/fields/email/forms.py:42 #: contrib/plugins/form_elements/fields/file/forms.py:39 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:47 #: contrib/plugins/form_elements/fields/input/forms.py:66 #: contrib/plugins/form_elements/fields/integer/forms.py:40 #: contrib/plugins/form_elements/fields/password/forms.py:40 -#: contrib/plugins/form_elements/fields/radio/forms.py:59 -#: contrib/plugins/form_elements/fields/select/forms.py:59 +#: contrib/plugins/form_elements/fields/radio/forms.py:60 +#: contrib/plugins/form_elements/fields/select/forms.py:60 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:47 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:59 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:60 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:47 #: contrib/plugins/form_elements/fields/text/forms.py:40 #: contrib/plugins/form_elements/fields/textarea/forms.py:38 @@ -160,21 +145,21 @@ msgstr "Label" msgid "Help text" msgstr "Hilfetext" -#: base.py:536 -#: contrib/plugins/form_elements/fields/boolean/forms.py:47 +#: base.py:536 contrib/plugins/form_elements/fields/boolean/forms.py:47 #: contrib/plugins/form_elements/fields/date/forms.py:53 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:72 #: contrib/plugins/form_elements/fields/datetime/forms.py:53 #: contrib/plugins/form_elements/fields/email/forms.py:58 #: contrib/plugins/form_elements/fields/file/forms.py:55 #: contrib/plugins/form_elements/fields/hidden/forms.py:49 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:57 #: contrib/plugins/form_elements/fields/input/forms.py:82 #: contrib/plugins/form_elements/fields/integer/forms.py:60 #: contrib/plugins/form_elements/fields/password/forms.py:56 -#: contrib/plugins/form_elements/fields/radio/forms.py:69 -#: contrib/plugins/form_elements/fields/select/forms.py:69 +#: contrib/plugins/form_elements/fields/radio/forms.py:70 +#: contrib/plugins/form_elements/fields/select/forms.py:70 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:57 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:69 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:70 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:57 #: contrib/plugins/form_elements/fields/text/forms.py:56 #: contrib/plugins/form_elements/fields/textarea/forms.py:48 @@ -197,7 +182,7 @@ msgstr "Labelname bereits vorhanden!" msgid "General" msgstr "Allgemein" -#: base.py:2134 +#: base.py:2143 msgid "Theme `{0}` does not exist!" msgstr "Theme `{0}` nicht vorhanden!" @@ -217,21 +202,25 @@ msgstr "Plugin auswählen" msgid "Users action" msgstr "Benutzeraktion" -#: forms.py:115 -#: forms.py:122 +#: forms.py:115 forms.py:122 msgid "If set to ``replace``, the groups are replaced; otherwise - appended." -msgstr "Wenn \"Ersetzen\" gewählt wurde wird die Gruppe ersetzt; Wähle anderenfalls - Hinzufügen." +msgstr "" +"Wenn \"Ersetzen\" gewählt wurde wird die Gruppe ersetzt; Wähle anderenfalls " +"- Hinzufügen." #: forms.py:120 msgid "Groups action" msgstr "Gruppenaktion" +#: helpers.py:349 helpers.py:374 +msgid "Invalid value for initial: {0}. Should be any of the following: {1}" +msgstr "" + #: models.py:80 msgid "Group" msgstr "Gruppe" -#: models.py:113 -#: models.py:414 +#: models.py:113 models.py:414 msgid "UID" msgstr "UID" @@ -243,8 +232,7 @@ msgstr "Gruppe" msgid "Users" msgstr "Benutzer" -#: models.py:160 -#: models.py:191 +#: models.py:160 models.py:191 msgid "Plugin UID" msgstr "Plugin UID" @@ -264,8 +252,7 @@ msgstr "Formularübergabeplugin" msgid "Form handler plugins" msgstr "Formularübergabeplugins" -#: models.py:218 -#: models.py:267 +#: models.py:218 models.py:267 msgid "Slug" msgstr "Slug" @@ -315,8 +302,7 @@ msgstr "Kopierbar" msgid "Makes your form cloneable by other users." msgstr "Macht das Formular durch Nutzer kopierbar." -#: models.py:278 -#: models.py:438 +#: models.py:278 models.py:438 msgid "Position" msgstr "Position" @@ -326,7 +312,8 @@ msgstr "Erfolgsseiten Titel" #: models.py:282 msgid "Custom message title to display after valid form is submitted" -msgstr "Benutzerdefinierter Titel, welcher nach erfolgreicher Eingabe angezeigt wird" +msgstr "" +"Benutzerdefinierter Titel, welcher nach erfolgreicher Eingabe angezeigt wird" #: models.py:286 msgid "Success page body" @@ -334,7 +321,8 @@ msgstr "Erfolgsseiten Textkörper" #: models.py:287 msgid "Custom message text to display after valid form is submitted" -msgstr "Benutzerdefinierter Text, der nach erfolgreicher Eingabe angezeigt wird" +msgstr "" +"Benutzerdefinierter Text, der nach erfolgreicher Eingabe angezeigt wird" #: models.py:291 msgid "Action" @@ -368,13 +356,11 @@ msgstr "Formular Fieldset" msgid "Form fieldset entries" msgstr "Formular Fieldsets" -#: models.py:345 -#: contrib/plugins/form_handlers/db_store/models.py:53 +#: models.py:345 contrib/plugins/form_handlers/db_store/models.py:53 msgid "Plugin data" msgstr "Plugindaten" -#: models.py:433 -#: models.py:467 +#: models.py:433 models.py:467 msgid "Plugin name" msgstr "Pluginname" @@ -420,90 +406,90 @@ msgstr "Bearbeiten" msgid "Delete" msgstr "Löschen" -#: views.py:75 +#: views.py:77 msgid "{0} not found." msgstr "{0} nicht gefunden." -#: views.py:165 +#: views.py:167 msgid "Form {0} was created successfully." msgstr "Formular {0} erfolgreich erstellt." -#: views.py:173 -#: views.py:280 +#: views.py:175 views.py:282 msgid "Errors occured while saving the form: {0}." msgstr "Beim speichern des Formulars {0} ist ein Fehler aufgetreten" -#: views.py:224 -#: views.py:365 -#: views.py:603 -#: views.py:823 -#: views.py:934 -#: views.py:976 +#: views.py:226 views.py:395 views.py:633 views.py:865 views.py:976 +#: views.py:1018 msgid "Form entry not found." msgstr "Formular nicht gefunden." -#: views.py:246 +#: views.py:248 msgid "Elements ordering edited successfully." msgstr "Element Reihenfolge erfolgreich bearbeitet" -#: views.py:254 +#: views.py:256 msgid "Errors occured while trying to change the elements ordering!" msgstr "Während der Änderung der Reihenfolge ist ein Fehler aufgetreten!" -#: views.py:272 +#: views.py:274 msgid "Form {0} was edited successfully." msgstr "Fomular {0} erfolgreich bearbeitet." -#: views.py:437 +#: views.py:404 views.py:640 +#, fuzzy +msgid "Plugin does not exist or you are not allowed to use this plugin!" +msgstr "" +"Plugin exisitiert nicht oder keine Berechtigung zur Nutzung des Plugins!" + +#: views.py:467 msgid "The form element plugin \"{0}\" was added successfully." msgstr "Das Fomularelementplugin \"{0}\" erfolgreich hinzuefügt." -#: views.py:485 +#: views.py:515 msgid "Form element entry not found." msgstr "Fomularelement nicht gefunden." -#: views.py:497 +#: views.py:527 msgid "The form element plugin \"{0}\" is not configurable!" msgstr "Formularelementplugin \"{0}\" ist nicht konfigurierbar!" -#: views.py:529 +#: views.py:559 msgid "The form element plugin \"{0}\" was edited successfully." msgstr "Formularelementplugin \"{0}\" wurde erfolgreich bearbeitet." -#: views.py:579 +#: views.py:609 msgid "The form element plugin \"{0}\" was deleted successfully." msgstr "Formularelementplugin \"{0}\" wurde erfolgreich gelöscht." -#: views.py:610 -msgid "Plugin does not exist or you are not allowed to use this plugin!" -msgstr "Plugin exisitiert nicht oder keine Berechtigung zur Nutzung des Plugins!" - #: views.py:655 +msgid "The {0} plugin can be used only once in a form." +msgstr "" + +#: views.py:697 msgid "The form handler plugin \"{0}\" was added successfully." msgstr "Das Formularübergabeplugin \"{0}\" wurde erfolgreich hinzugefügt." -#: views.py:708 +#: views.py:750 msgid "Form handler entry not found." msgstr "Formularübergabe nicht gefunden" -#: views.py:721 +#: views.py:763 msgid "The form handler plugin \"{0}\" is not configurable!" msgstr "Das Formularübergabeplugin \"{0}\" ist nicht Bearbeitbar!" -#: views.py:744 +#: views.py:786 msgid "The form handler plugin \"{0}\" was edited successfully." msgstr "Das Formularübergabeplugin \"{0}\" erfolgreich bearbeitet." -#: views.py:793 +#: views.py:835 msgid "The form handler plugin \"{0}\" was deleted successfully." msgstr "Das Formularübergabeplugin \"{0}\" erfolgreich gelöscht." -#: views.py:876 -#: integration/processors.py:156 +#: views.py:918 integration/processors.py:156 msgid "Form {0} was submitted successfully." msgstr "Formular {0} wurde erfolgreich übertragen." -#: views.py:982 +#: views.py:1024 msgid "The form \"{0}\" was deleted successfully." msgstr "Das Formular \"{0}\" wurde erfolgreich gelöscht." @@ -636,7 +622,7 @@ msgid "Fobi forms" msgstr "Fobi Formular" #: contrib/apps/mezzanine_integration/templates/mezzanine_integration/admin/change_form.html:8 -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:74 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:78 #: contrib/plugins/form_handlers/db_store/templates/db_store/plugin_data_repr.html:4 #: contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/templates/db_store_foundation5_widget/plugin_data_repr.html:4 msgid "View entries" @@ -733,8 +719,9 @@ msgstr "Wahr/Falsch-Schalter" #: contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py:25 #: contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py:24 #: contrib/plugins/form_elements/fields/email/fobi_form_elements.py:25 -#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:24 +#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:26 #: contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py:25 +#: contrib/plugins/form_elements/fields/hidden_model_object/fobi_form_elements.py:26 #: contrib/plugins/form_elements/fields/input/fobi_form_elements.py:23 #: contrib/plugins/form_elements/fields/integer/fobi_form_elements.py:30 #: contrib/plugins/form_elements/fields/password/fobi_form_elements.py:24 @@ -756,13 +743,14 @@ msgstr "Felder" #: contrib/plugins/form_elements/fields/email/forms.py:47 #: contrib/plugins/form_elements/fields/file/forms.py:44 #: contrib/plugins/form_elements/fields/hidden/forms.py:38 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:52 #: contrib/plugins/form_elements/fields/input/forms.py:71 #: contrib/plugins/form_elements/fields/integer/forms.py:45 #: contrib/plugins/form_elements/fields/password/forms.py:45 -#: contrib/plugins/form_elements/fields/radio/forms.py:64 -#: contrib/plugins/form_elements/fields/select/forms.py:64 +#: contrib/plugins/form_elements/fields/radio/forms.py:65 +#: contrib/plugins/form_elements/fields/select/forms.py:65 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:52 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:64 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:65 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:52 #: contrib/plugins/form_elements/fields/text/forms.py:45 #: contrib/plugins/form_elements/fields/textarea/forms.py:43 @@ -827,7 +815,7 @@ msgstr "maximale Länge" msgid "Placeholder" msgstr "Platzhalter" -#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:23 +#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:25 msgid "File" msgstr "Datei" @@ -835,6 +823,17 @@ msgstr "Datei" msgid "Hidden" msgstr "Versteckt" +#: contrib/plugins/form_elements/fields/hidden_model_object/fobi_form_elements.py:25 +#, fuzzy +msgid "Hidden model object" +msgstr "Modelobjekt Auswahl" + +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:41 +#: contrib/plugins/form_elements/fields/select_model_object/forms.py:41 +#: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:41 +msgid "Model" +msgstr "Model" + #: contrib/plugins/form_elements/fields/input/fobi_form_elements.py:22 msgid "Input" msgstr "Eingabe" @@ -903,17 +902,43 @@ msgstr "Passwort" msgid "Radio" msgstr "Radio-Button" -#: contrib/plugins/form_elements/fields/radio/forms.py:38 -#: contrib/plugins/form_elements/fields/select/forms.py:38 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:38 +#: contrib/plugins/form_elements/fields/radio/forms.py:39 +#: contrib/plugins/form_elements/fields/select/forms.py:39 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:39 msgid "Choices" msgstr "Auswahl" -#: contrib/plugins/form_elements/fields/radio/forms.py:40 -#: contrib/plugins/form_elements/fields/select/forms.py:40 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:40 -msgid "Enter single values/pairs per line. Example:
    1
    2
    alpha, Alpha
    beta, Beta
    omega

It finally transforms into the following HTML code:
    <select id=\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
        <option value=\"1\">1</option>
        <option value=\"2\">2</option>
        <option value=\"alpha\">Alpha</option>
        <option value=\"beta\">Beta</option>
        <option value=\"omega\">omega</option>
    </select>
" -msgstr "Jeweils ein Wert/Paar pro Zeile. Zum Beispiel:
    1
    2
    alpha, Alpha
    beta, Beta
    omega

It finally transforms into the following HTML code:
    <select id=\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
        <option value=\"1\">1</option>
        <option value=\"2\">2</option>
        <option value=\"alpha\">Alpha</option>
        <option value=\"beta\">Beta</option>
        <option value=\"omega\">omega</option>
    </select>
" +#: contrib/plugins/form_elements/fields/radio/forms.py:41 +#: contrib/plugins/form_elements/fields/select/forms.py:41 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:41 +msgid "" +"Enter single values/pairs per line. Example:
   " +" 1
    2
    alpha, " +"Alpha
    beta, Beta
    " +"omega

It finally transforms into the following HTML code:" +"
    <select id=\"id_NAME_OF_THE_ELEMENT\" " +"name=\"NAME_OF_THE_ELEMENT\">
      " +"  <option value=\"1\">1</option>
   " +"     <option value=\"2\">2</option>
        <option value=\"alpha" +"\">Alpha</option>
       " +" <option value=\"beta\">Beta</option>
   " +"     <option value=\"omega\">omega</" +"option>
    </select>
" +msgstr "" +"Jeweils ein Wert/Paar pro Zeile. Zum Beispiel:
   " +" 1
    2
    alpha, " +"Alpha
    beta, Beta
    " +"omega

It finally transforms into the following HTML code:" +"
    <select id=\"id_NAME_OF_THE_ELEMENT\" " +"name=\"NAME_OF_THE_ELEMENT\">
      " +"  <option value=\"1\">1</option>
   " +"     <option value=\"2\">2</option>
        <option value=\"alpha" +"\">Alpha</option>
       " +" <option value=\"beta\">Beta</option>
   " +"     <option value=\"omega\">omega</" +"option>
    </select>
" #: contrib/plugins/form_elements/fields/select/fobi_form_elements.py:23 msgid "Select" @@ -923,11 +948,6 @@ msgstr "Auswahl" msgid "Select model object" msgstr "Modelobjekt Auswahl" -#: contrib/plugins/form_elements/fields/select_model_object/forms.py:41 -#: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:41 -msgid "Model" -msgstr "Model" - #: contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py:25 msgid "Select multiple" msgstr "Mehrfachauswahl" @@ -994,11 +1014,11 @@ msgstr "gespeicherte Formulardaten" msgid "Export data to CSV/XLS" msgstr "Daten als CSB/XLS exportieren " -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:24 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:27 msgid "DB store" msgstr "Datenbankspeicher" -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:80 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:84 msgid "Export entries" msgstr "Einträge exportieren" @@ -1312,7 +1332,8 @@ msgstr "Änderungen überagen" #: templates/fobi/generic/snippets/form_properties_snippet.html:4 #: templates/fobi/generic/snippets/form_snippet.html:4 msgid "Fields marked with * are required" -msgstr "Felder die mit * sind Pflichtfelder" +msgstr "" +"Felder die mit * sind Pflichtfelder" #: contrib/themes/simple/fobi_themes.py:17 msgid "Simple" @@ -1403,7 +1424,9 @@ msgid "^forms/delete/(?P\\d+)/$" msgstr "" #: urls/edit.py:34 -msgid "^forms/elements/add/(?P\\d+)/(?P[\\w_\\-]+)/$" +msgid "" +"^forms/elements/add/(?P\\d+)/(?P[\\w_" +"\\-]+)/$" msgstr "" #: urls/edit.py:39 @@ -1415,7 +1438,9 @@ msgid "^forms/elements/delete/(?P\\d+)/$" msgstr "" #: urls/edit.py:49 -msgid "^forms/handlers/add/(?P\\d+)/(?P[\\w_\\-]+)/$" +msgid "" +"^forms/handlers/add/(?P\\d+)/(?P[\\w_" +"\\-]+)/$" msgstr "" #: urls/edit.py:54 diff --git a/src/fobi/locale/nl/LC_MESSAGES/django.po b/src/fobi/locale/nl/LC_MESSAGES/django.po index c619f9ed..32802b75 100644 --- a/src/fobi/locale/nl/LC_MESSAGES/django.po +++ b/src/fobi/locale/nl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-27 23:49+0100\n" +"POT-Creation-Date: 2015-03-10 13:18+0100\n" "PO-Revision-Date: 2015-02-27 23:51+0100\n" "Last-Translator: Artur Barseghyan \n" "Language-Team: LANGUAGE \n" @@ -17,11 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: admin.py:124 -#: admin.py:193 -#: admin.py:226 -#: models.py:316 -#: models.py:344 +#: admin.py:124 admin.py:193 admin.py:226 models.py:316 models.py:344 #: contrib/apps/djangocms_integration/models.py:26 #: contrib/apps/feincms_integration/widgets.py:30 #: contrib/apps/mezzanine_integration/models.py:24 @@ -37,10 +33,7 @@ msgstr "Formulier" msgid "Custom" msgstr "Custom" -#: admin.py:135 -#: models.py:78 -#: models.py:216 -#: models.py:264 +#: admin.py:135 models.py:78 models.py:216 models.py:264 #: contrib/plugins/form_handlers/db_store/models.py:49 msgid "User" msgstr "Gebruiker" @@ -49,23 +42,17 @@ msgstr "Gebruiker" msgid "Additional" msgstr "Extra" -#: admin.py:147 -#: admin.py:171 -#: admin.py:199 -#: admin.py:266 +#: admin.py:147 admin.py:171 admin.py:199 admin.py:266 #: contrib/themes/djangocms_admin_style_theme/templates/djangocms_admin_style_theme/base_edit.html:84 #: contrib/themes/simple/templates/simple/base_edit.html:76 msgid "Fobi" msgstr "" -#: admin.py:190 -#: admin.py:223 -#: models.py:121 +#: admin.py:190 admin.py:223 models.py:121 msgid "Plugin" msgstr "Plugin" -#: admin.py:232 -#: models.py:472 +#: admin.py:232 models.py:472 msgid "Form handler entry" msgstr "Formulier afhandelaar" @@ -81,10 +68,7 @@ msgstr "POST vereist bij het veranderen in bulk!" msgid "Build your forms" msgstr "Bouw je formulieren" -#: base.py:521 -#: models.py:217 -#: models.py:265 -#: models.py:318 +#: base.py:521 models.py:217 models.py:265 models.py:318 #: contrib/plugins/form_elements/fields/boolean/forms.py:32 #: contrib/plugins/form_elements/fields/date/forms.py:33 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:42 @@ -92,13 +76,14 @@ msgstr "Bouw je formulieren" #: contrib/plugins/form_elements/fields/email/forms.py:37 #: contrib/plugins/form_elements/fields/file/forms.py:34 #: contrib/plugins/form_elements/fields/hidden/forms.py:33 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:36 #: contrib/plugins/form_elements/fields/input/forms.py:61 #: contrib/plugins/form_elements/fields/integer/forms.py:35 #: contrib/plugins/form_elements/fields/password/forms.py:35 -#: contrib/plugins/form_elements/fields/radio/forms.py:33 -#: contrib/plugins/form_elements/fields/select/forms.py:33 +#: contrib/plugins/form_elements/fields/radio/forms.py:34 +#: contrib/plugins/form_elements/fields/select/forms.py:34 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:36 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:33 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:34 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:36 #: contrib/plugins/form_elements/fields/text/forms.py:35 #: contrib/plugins/form_elements/fields/textarea/forms.py:33 @@ -111,21 +96,21 @@ msgstr "Bouw je formulieren" msgid "Name" msgstr "Naam" -#: base.py:526 -#: contrib/plugins/form_elements/fields/boolean/forms.py:27 +#: base.py:526 contrib/plugins/form_elements/fields/boolean/forms.py:27 #: contrib/plugins/form_elements/fields/date/forms.py:28 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:37 #: contrib/plugins/form_elements/fields/datetime/forms.py:28 #: contrib/plugins/form_elements/fields/email/forms.py:32 #: contrib/plugins/form_elements/fields/file/forms.py:29 #: contrib/plugins/form_elements/fields/hidden/forms.py:28 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:31 #: contrib/plugins/form_elements/fields/input/forms.py:56 #: contrib/plugins/form_elements/fields/integer/forms.py:30 #: contrib/plugins/form_elements/fields/password/forms.py:30 -#: contrib/plugins/form_elements/fields/radio/forms.py:28 -#: contrib/plugins/form_elements/fields/select/forms.py:28 +#: contrib/plugins/form_elements/fields/radio/forms.py:29 +#: contrib/plugins/form_elements/fields/select/forms.py:29 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:31 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:28 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:29 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:31 #: contrib/plugins/form_elements/fields/text/forms.py:30 #: contrib/plugins/form_elements/fields/textarea/forms.py:28 @@ -136,20 +121,20 @@ msgstr "Naam" msgid "Label" msgstr "Label" -#: base.py:531 -#: contrib/plugins/form_elements/fields/boolean/forms.py:37 +#: base.py:531 contrib/plugins/form_elements/fields/boolean/forms.py:37 #: contrib/plugins/form_elements/fields/date/forms.py:38 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:47 #: contrib/plugins/form_elements/fields/datetime/forms.py:38 #: contrib/plugins/form_elements/fields/email/forms.py:42 #: contrib/plugins/form_elements/fields/file/forms.py:39 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:47 #: contrib/plugins/form_elements/fields/input/forms.py:66 #: contrib/plugins/form_elements/fields/integer/forms.py:40 #: contrib/plugins/form_elements/fields/password/forms.py:40 -#: contrib/plugins/form_elements/fields/radio/forms.py:59 -#: contrib/plugins/form_elements/fields/select/forms.py:59 +#: contrib/plugins/form_elements/fields/radio/forms.py:60 +#: contrib/plugins/form_elements/fields/select/forms.py:60 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:47 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:59 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:60 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:47 #: contrib/plugins/form_elements/fields/text/forms.py:40 #: contrib/plugins/form_elements/fields/textarea/forms.py:38 @@ -159,21 +144,21 @@ msgstr "Label" msgid "Help text" msgstr "Helptekst" -#: base.py:536 -#: contrib/plugins/form_elements/fields/boolean/forms.py:47 +#: base.py:536 contrib/plugins/form_elements/fields/boolean/forms.py:47 #: contrib/plugins/form_elements/fields/date/forms.py:53 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:72 #: contrib/plugins/form_elements/fields/datetime/forms.py:53 #: contrib/plugins/form_elements/fields/email/forms.py:58 #: contrib/plugins/form_elements/fields/file/forms.py:55 #: contrib/plugins/form_elements/fields/hidden/forms.py:49 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:57 #: contrib/plugins/form_elements/fields/input/forms.py:82 #: contrib/plugins/form_elements/fields/integer/forms.py:60 #: contrib/plugins/form_elements/fields/password/forms.py:56 -#: contrib/plugins/form_elements/fields/radio/forms.py:69 -#: contrib/plugins/form_elements/fields/select/forms.py:69 +#: contrib/plugins/form_elements/fields/radio/forms.py:70 +#: contrib/plugins/form_elements/fields/select/forms.py:70 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:57 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:69 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:70 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:57 #: contrib/plugins/form_elements/fields/text/forms.py:56 #: contrib/plugins/form_elements/fields/textarea/forms.py:48 @@ -196,7 +181,7 @@ msgstr "Labelnaam is al in gebruik!" msgid "General" msgstr "Algemeen" -#: base.py:2134 +#: base.py:2143 msgid "Theme `{0}` does not exist!" msgstr "Theme `{0}` niet gevonden!" @@ -216,21 +201,25 @@ msgstr "Geselecteerde plugins" msgid "Users action" msgstr "Gebruikersactie" -#: forms.py:115 -#: forms.py:122 +#: forms.py:115 forms.py:122 msgid "If set to ``replace``, the groups are replaced; otherwise - appended." -msgstr "Indien ingesteld op ``replace``, de groepen worden vervangen; anders - toegevoegd." +msgstr "" +"Indien ingesteld op ``replace``, de groepen worden vervangen; anders - " +"toegevoegd." #: forms.py:120 msgid "Groups action" msgstr "Groepenactie" +#: helpers.py:349 helpers.py:374 +msgid "Invalid value for initial: {0}. Should be any of the following: {1}" +msgstr "" + #: models.py:80 msgid "Group" msgstr "Groep" -#: models.py:113 -#: models.py:414 +#: models.py:113 models.py:414 msgid "UID" msgstr "" @@ -242,8 +231,7 @@ msgstr "Groepen" msgid "Users" msgstr "Gebruikers" -#: models.py:160 -#: models.py:191 +#: models.py:160 models.py:191 msgid "Plugin UID" msgstr "Plugin UID" @@ -263,8 +251,7 @@ msgstr "Formulier afhandelaar" msgid "Form handler plugins" msgstr "Formulier afhandelaar's" -#: models.py:218 -#: models.py:267 +#: models.py:218 models.py:267 msgid "Slug" msgstr "Slug" @@ -314,8 +301,7 @@ msgstr "Kopieerbaar?" msgid "Makes your form cloneable by other users." msgstr "Maakt uw formulier kopieerbaar door andere gebruikers." -#: models.py:278 -#: models.py:438 +#: models.py:278 models.py:438 msgid "Position" msgstr "Positie" @@ -325,7 +311,9 @@ msgstr "Succes paginatitel" #: models.py:282 msgid "Custom message title to display after valid form is submitted" -msgstr "Custom titel van het bericht die word getoond na het valideren en versturen van het formulier" +msgstr "" +"Custom titel van het bericht die word getoond na het valideren en versturen " +"van het formulier" #: models.py:286 msgid "Success page body" @@ -333,7 +321,9 @@ msgstr "Succes pagina tekst" #: models.py:287 msgid "Custom message text to display after valid form is submitted" -msgstr "Custom tekst van het bericht die word getoond na het valideren en versturen van het formulier" +msgstr "" +"Custom tekst van het bericht die word getoond na het valideren en versturen " +"van het formulier" #: models.py:291 msgid "Action" @@ -367,13 +357,11 @@ msgstr "" msgid "Form fieldset entries" msgstr "" -#: models.py:345 -#: contrib/plugins/form_handlers/db_store/models.py:53 +#: models.py:345 contrib/plugins/form_handlers/db_store/models.py:53 msgid "Plugin data" msgstr "Plugin data" -#: models.py:433 -#: models.py:467 +#: models.py:433 models.py:467 msgid "Plugin name" msgstr "Plugin naam" @@ -419,90 +407,91 @@ msgstr "Wijzigen" msgid "Delete" msgstr "Verwijderen" -#: views.py:75 +#: views.py:77 msgid "{0} not found." msgstr "{0} niet gevonden." -#: views.py:165 +#: views.py:167 msgid "Form {0} was created successfully." msgstr "Formulier {0} is succesvol aangemaakt." -#: views.py:173 -#: views.py:280 +#: views.py:175 views.py:282 msgid "Errors occured while saving the form: {0}." msgstr "Er zijn fouten opgetreden tijdens het opslaan van het formulier: {0}." -#: views.py:224 -#: views.py:365 -#: views.py:603 -#: views.py:823 -#: views.py:934 -#: views.py:976 +#: views.py:226 views.py:395 views.py:633 views.py:865 views.py:976 +#: views.py:1018 msgid "Form entry not found." msgstr "Formulier niet gevonden." -#: views.py:246 +#: views.py:248 msgid "Elements ordering edited successfully." msgstr "Volgorde van de elementen is met succes gewijzigd." -#: views.py:254 +#: views.py:256 msgid "Errors occured while trying to change the elements ordering!" -msgstr "Er zijn fouten opgetreden tijdens het opslaan van het elementen volgoorde." +msgstr "" +"Er zijn fouten opgetreden tijdens het opslaan van het elementen volgoorde." -#: views.py:272 +#: views.py:274 msgid "Form {0} was edited successfully." msgstr "Formulier {0} is succesvol gewijzigd." -#: views.py:437 +#: views.py:404 views.py:640 +#, fuzzy +msgid "Plugin does not exist or you are not allowed to use this plugin!" +msgstr "" +"Plugin bestaat niet of u bent niet toegestaan om deze plugin te gebruiken!" + +#: views.py:467 msgid "The form element plugin \"{0}\" was added successfully." msgstr "Het formulier element \"{0}\" is met succes toegevoegd." -#: views.py:485 +#: views.py:515 msgid "Form element entry not found." msgstr "Formulier element niet gevonden." -#: views.py:497 +#: views.py:527 msgid "The form element plugin \"{0}\" is not configurable!" msgstr "Het formulier element \"{0}\" is niet configureerbaar!" -#: views.py:529 +#: views.py:559 msgid "The form element plugin \"{0}\" was edited successfully." msgstr "Het formulier element \"{0}\" is met succes gewijzigd." -#: views.py:579 +#: views.py:609 msgid "The form element plugin \"{0}\" was deleted successfully." msgstr "Het formulier element \"{0}\" is met succes verwijdert." -#: views.py:610 -msgid "Plugin does not exist or you are not allowed to use this plugin!" -msgstr "Plugin bestaat niet of u bent niet toegestaan om deze plugin te gebruiken!" - #: views.py:655 +msgid "The {0} plugin can be used only once in a form." +msgstr "" + +#: views.py:697 msgid "The form handler plugin \"{0}\" was added successfully." msgstr "Het formulier afhandelaar \"{0}\" is met succes toegevoegd." -#: views.py:708 +#: views.py:750 msgid "Form handler entry not found." msgstr "Het formulier niet gevonden." -#: views.py:721 +#: views.py:763 msgid "The form handler plugin \"{0}\" is not configurable!" msgstr "Het formulier afhandelaar \"{0}\" is niet configureerbaar!" -#: views.py:744 +#: views.py:786 msgid "The form handler plugin \"{0}\" was edited successfully." msgstr "Het formulier afhandelaar \"{0}\" is met succes gewijzigd." -#: views.py:793 +#: views.py:835 msgid "The form handler plugin \"{0}\" was deleted successfully." msgstr "Het formulier afhandelaar \"{0}\" is met succes verwijdert." -#: views.py:876 -#: integration/processors.py:156 +#: views.py:918 integration/processors.py:156 msgid "Form {0} was submitted successfully." msgstr "Formulier {0} is met succes verstuurd." -#: views.py:982 +#: views.py:1024 msgid "The form \"{0}\" was deleted successfully." msgstr "Het formulier \"{0}\" is met succes verwijdert." @@ -634,7 +623,7 @@ msgid "Fobi forms" msgstr "Fobi formulieren" #: contrib/apps/mezzanine_integration/templates/mezzanine_integration/admin/change_form.html:8 -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:74 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:78 #: contrib/plugins/form_handlers/db_store/templates/db_store/plugin_data_repr.html:4 #: contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/templates/db_store_foundation5_widget/plugin_data_repr.html:4 msgid "View entries" @@ -730,8 +719,9 @@ msgstr "Selectievakje" #: contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py:25 #: contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py:24 #: contrib/plugins/form_elements/fields/email/fobi_form_elements.py:25 -#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:24 +#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:26 #: contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py:25 +#: contrib/plugins/form_elements/fields/hidden_model_object/fobi_form_elements.py:26 #: contrib/plugins/form_elements/fields/input/fobi_form_elements.py:23 #: contrib/plugins/form_elements/fields/integer/fobi_form_elements.py:30 #: contrib/plugins/form_elements/fields/password/fobi_form_elements.py:24 @@ -753,13 +743,14 @@ msgstr "Velden" #: contrib/plugins/form_elements/fields/email/forms.py:47 #: contrib/plugins/form_elements/fields/file/forms.py:44 #: contrib/plugins/form_elements/fields/hidden/forms.py:38 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:52 #: contrib/plugins/form_elements/fields/input/forms.py:71 #: contrib/plugins/form_elements/fields/integer/forms.py:45 #: contrib/plugins/form_elements/fields/password/forms.py:45 -#: contrib/plugins/form_elements/fields/radio/forms.py:64 -#: contrib/plugins/form_elements/fields/select/forms.py:64 +#: contrib/plugins/form_elements/fields/radio/forms.py:65 +#: contrib/plugins/form_elements/fields/select/forms.py:65 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:52 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:64 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:65 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:52 #: contrib/plugins/form_elements/fields/text/forms.py:45 #: contrib/plugins/form_elements/fields/textarea/forms.py:43 @@ -824,7 +815,7 @@ msgstr "Maximale lengte" msgid "Placeholder" msgstr "Aanduiding" -#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:23 +#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:25 msgid "File" msgstr "Bestand" @@ -832,6 +823,17 @@ msgstr "Bestand" msgid "Hidden" msgstr "Verborgen veld" +#: contrib/plugins/form_elements/fields/hidden_model_object/fobi_form_elements.py:25 +#, fuzzy +msgid "Hidden model object" +msgstr "Keuzelijst object model" + +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:41 +#: contrib/plugins/form_elements/fields/select_model_object/forms.py:41 +#: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:41 +msgid "Model" +msgstr "Model" + #: contrib/plugins/form_elements/fields/input/fobi_form_elements.py:22 msgid "Input" msgstr "" @@ -900,17 +902,43 @@ msgstr "Wachtwoord" msgid "Radio" msgstr "Radio knop" -#: contrib/plugins/form_elements/fields/radio/forms.py:38 -#: contrib/plugins/form_elements/fields/select/forms.py:38 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:38 +#: contrib/plugins/form_elements/fields/radio/forms.py:39 +#: contrib/plugins/form_elements/fields/select/forms.py:39 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:39 msgid "Choices" msgstr "Kies" -#: contrib/plugins/form_elements/fields/radio/forms.py:40 -#: contrib/plugins/form_elements/fields/select/forms.py:40 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:40 -msgid "Enter single values/pairs per line. Example:
    1
    2
    alpha, Alpha
    beta, Beta
    omega

It finally transforms into the following HTML code:
    <select id=\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
        <option value=\"1\">1</option>
        <option value=\"2\">2</option>
        <option value=\"alpha\">Alpha</option>
        <option value=\"beta\">Beta</option>
        <option value=\"omega\">omega</option>
    </select>
" -msgstr "Voer ofwel enkele waarden of een paar - een per regel. Voorbeeld:
    1
    2
    alpha, Alpha
    beta, Beta
    omega

Word getoond als de volgende HTML code:
    <select id=\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
        <option value=\"1\">1</option>
        <option value=\"2\">2</option>
        <option value=\"alpha\">Alpha</option>
        <option value=\"beta\">Beta</option>
        <option value=\"omega\">omega</option>
    </select>
" +#: contrib/plugins/form_elements/fields/radio/forms.py:41 +#: contrib/plugins/form_elements/fields/select/forms.py:41 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:41 +msgid "" +"Enter single values/pairs per line. Example:
   " +" 1
    2
    alpha, " +"Alpha
    beta, Beta
    " +"omega

It finally transforms into the following HTML code:" +"
    <select id=\"id_NAME_OF_THE_ELEMENT\" " +"name=\"NAME_OF_THE_ELEMENT\">
      " +"  <option value=\"1\">1</option>
   " +"     <option value=\"2\">2</option>
        <option value=\"alpha" +"\">Alpha</option>
       " +" <option value=\"beta\">Beta</option>
   " +"     <option value=\"omega\">omega</" +"option>
    </select>
" +msgstr "" +"Voer ofwel enkele waarden of een paar - een per regel. Voorbeeld:
    1
    2
  " +"  alpha, Alpha
    beta, Beta
 " +"   omega

Word getoond als de volgende HTML code:" +"
    <select id=\"id_NAME_OF_THE_ELEMENT\" " +"name=\"NAME_OF_THE_ELEMENT\">
      " +"  <option value=\"1\">1</option>
   " +"     <option value=\"2\">2</option>
        <option value=\"alpha" +"\">Alpha</option>
       " +" <option value=\"beta\">Beta</option>
   " +"     <option value=\"omega\">omega</" +"option>
    </select>
" #: contrib/plugins/form_elements/fields/select/fobi_form_elements.py:23 msgid "Select" @@ -920,11 +948,6 @@ msgstr "Keuzelijst" msgid "Select model object" msgstr "Keuzelijst object model" -#: contrib/plugins/form_elements/fields/select_model_object/forms.py:41 -#: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:41 -msgid "Model" -msgstr "Model" - #: contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py:25 msgid "Select multiple" msgstr "Keuzelijst meerkeuze" @@ -990,11 +1013,11 @@ msgstr "Opgeslagen formulier data" msgid "Export data to CSV/XLS" msgstr "Gegevens exporteren naar CSV/XLS" -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:24 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:27 msgid "DB store" msgstr "Opslaan in database" -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:80 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:84 msgid "Export entries" msgstr "Data export" @@ -1307,7 +1330,8 @@ msgstr "Wijzigingen bijwerken" #: templates/fobi/generic/snippets/form_properties_snippet.html:4 #: templates/fobi/generic/snippets/form_snippet.html:4 msgid "Fields marked with * are required" -msgstr "Velden gemarkeerd met * zijn verplicht" +msgstr "" +"Velden gemarkeerd met * zijn verplicht" #: contrib/themes/simple/fobi_themes.py:17 msgid "Simple" @@ -1398,8 +1422,12 @@ msgid "^forms/delete/(?P\\d+)/$" msgstr "^formulieren/verwijderen/(?P\\d+)/$" #: urls/edit.py:34 -msgid "^forms/elements/add/(?P\\d+)/(?P[\\w_\\-]+)/$" -msgstr "^formulieren/elementen/toevoegen/(?P\\d+)/(?P[\\w_\\-]+)/$" +msgid "" +"^forms/elements/add/(?P\\d+)/(?P[\\w_" +"\\-]+)/$" +msgstr "" +"^formulieren/elementen/toevoegen/(?P\\d+)/(?" +"P[\\w_\\-]+)/$" #: urls/edit.py:39 msgid "^forms/elements/edit/(?P\\d+)/$" @@ -1410,8 +1438,12 @@ msgid "^forms/elements/delete/(?P\\d+)/$" msgstr "^formulieren/elementen/verwijderen/(?P\\d+)/$" #: urls/edit.py:49 -msgid "^forms/handlers/add/(?P\\d+)/(?P[\\w_\\-]+)/$" -msgstr "^formulieren/handlers/toevoegen/(?P\\d+)/(?P[\\w_\\-]+)/$" +msgid "" +"^forms/handlers/add/(?P\\d+)/(?P[\\w_" +"\\-]+)/$" +msgstr "" +"^formulieren/handlers/toevoegen/(?P\\d+)/(?" +"P[\\w_\\-]+)/$" #: urls/edit.py:54 msgid "^forms/handlers/edit/(?P\\d+)/$" diff --git a/src/fobi/locale/ru/LC_MESSAGES/django.po b/src/fobi/locale/ru/LC_MESSAGES/django.po index fc888e57..646e5c3f 100644 --- a/src/fobi/locale/ru/LC_MESSAGES/django.po +++ b/src/fobi/locale/ru/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-27 23:49+0100\n" +"POT-Creation-Date: 2015-03-10 13:18+0100\n" "PO-Revision-Date: 2015-02-27 23:51+0100\n" "Last-Translator: Artur Barseghyan \n" "Language-Team: LANGUAGE \n" @@ -15,13 +15,10 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: admin.py:124 -#: admin.py:193 -#: admin.py:226 -#: models.py:316 -#: models.py:344 +#: admin.py:124 admin.py:193 admin.py:226 models.py:316 models.py:344 #: contrib/apps/djangocms_integration/models.py:26 #: contrib/apps/feincms_integration/widgets.py:30 #: contrib/apps/mezzanine_integration/models.py:24 @@ -37,10 +34,7 @@ msgstr "Форма" msgid "Custom" msgstr "Дополнительно" -#: admin.py:135 -#: models.py:78 -#: models.py:216 -#: models.py:264 +#: admin.py:135 models.py:78 models.py:216 models.py:264 #: contrib/plugins/form_handlers/db_store/models.py:49 msgid "User" msgstr "Пользователь" @@ -49,23 +43,17 @@ msgstr "Пользователь" msgid "Additional" msgstr "Дополнительно" -#: admin.py:147 -#: admin.py:171 -#: admin.py:199 -#: admin.py:266 +#: admin.py:147 admin.py:171 admin.py:199 admin.py:266 #: contrib/themes/djangocms_admin_style_theme/templates/djangocms_admin_style_theme/base_edit.html:84 #: contrib/themes/simple/templates/simple/base_edit.html:76 msgid "Fobi" msgstr "" -#: admin.py:190 -#: admin.py:223 -#: models.py:121 +#: admin.py:190 admin.py:223 models.py:121 msgid "Plugin" msgstr "Плагин" -#: admin.py:232 -#: models.py:472 +#: admin.py:232 models.py:472 msgid "Form handler entry" msgstr "Обработчик формы" @@ -81,10 +69,7 @@ msgstr "Для множественных изменений необходим msgid "Build your forms" msgstr "Разработчик форм" -#: base.py:521 -#: models.py:217 -#: models.py:265 -#: models.py:318 +#: base.py:521 models.py:217 models.py:265 models.py:318 #: contrib/plugins/form_elements/fields/boolean/forms.py:32 #: contrib/plugins/form_elements/fields/date/forms.py:33 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:42 @@ -92,13 +77,14 @@ msgstr "Разработчик форм" #: contrib/plugins/form_elements/fields/email/forms.py:37 #: contrib/plugins/form_elements/fields/file/forms.py:34 #: contrib/plugins/form_elements/fields/hidden/forms.py:33 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:36 #: contrib/plugins/form_elements/fields/input/forms.py:61 #: contrib/plugins/form_elements/fields/integer/forms.py:35 #: contrib/plugins/form_elements/fields/password/forms.py:35 -#: contrib/plugins/form_elements/fields/radio/forms.py:33 -#: contrib/plugins/form_elements/fields/select/forms.py:33 +#: contrib/plugins/form_elements/fields/radio/forms.py:34 +#: contrib/plugins/form_elements/fields/select/forms.py:34 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:36 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:33 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:34 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:36 #: contrib/plugins/form_elements/fields/text/forms.py:35 #: contrib/plugins/form_elements/fields/textarea/forms.py:33 @@ -111,21 +97,21 @@ msgstr "Разработчик форм" msgid "Name" msgstr "Название" -#: base.py:526 -#: contrib/plugins/form_elements/fields/boolean/forms.py:27 +#: base.py:526 contrib/plugins/form_elements/fields/boolean/forms.py:27 #: contrib/plugins/form_elements/fields/date/forms.py:28 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:37 #: contrib/plugins/form_elements/fields/datetime/forms.py:28 #: contrib/plugins/form_elements/fields/email/forms.py:32 #: contrib/plugins/form_elements/fields/file/forms.py:29 #: contrib/plugins/form_elements/fields/hidden/forms.py:28 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:31 #: contrib/plugins/form_elements/fields/input/forms.py:56 #: contrib/plugins/form_elements/fields/integer/forms.py:30 #: contrib/plugins/form_elements/fields/password/forms.py:30 -#: contrib/plugins/form_elements/fields/radio/forms.py:28 -#: contrib/plugins/form_elements/fields/select/forms.py:28 +#: contrib/plugins/form_elements/fields/radio/forms.py:29 +#: contrib/plugins/form_elements/fields/select/forms.py:29 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:31 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:28 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:29 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:31 #: contrib/plugins/form_elements/fields/text/forms.py:30 #: contrib/plugins/form_elements/fields/textarea/forms.py:28 @@ -136,20 +122,20 @@ msgstr "Название" msgid "Label" msgstr "Ярлык" -#: base.py:531 -#: contrib/plugins/form_elements/fields/boolean/forms.py:37 +#: base.py:531 contrib/plugins/form_elements/fields/boolean/forms.py:37 #: contrib/plugins/form_elements/fields/date/forms.py:38 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:47 #: contrib/plugins/form_elements/fields/datetime/forms.py:38 #: contrib/plugins/form_elements/fields/email/forms.py:42 #: contrib/plugins/form_elements/fields/file/forms.py:39 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:47 #: contrib/plugins/form_elements/fields/input/forms.py:66 #: contrib/plugins/form_elements/fields/integer/forms.py:40 #: contrib/plugins/form_elements/fields/password/forms.py:40 -#: contrib/plugins/form_elements/fields/radio/forms.py:59 -#: contrib/plugins/form_elements/fields/select/forms.py:59 +#: contrib/plugins/form_elements/fields/radio/forms.py:60 +#: contrib/plugins/form_elements/fields/select/forms.py:60 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:47 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:59 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:60 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:47 #: contrib/plugins/form_elements/fields/text/forms.py:40 #: contrib/plugins/form_elements/fields/textarea/forms.py:38 @@ -159,21 +145,21 @@ msgstr "Ярлык" msgid "Help text" msgstr "Помощь" -#: base.py:536 -#: contrib/plugins/form_elements/fields/boolean/forms.py:47 +#: base.py:536 contrib/plugins/form_elements/fields/boolean/forms.py:47 #: contrib/plugins/form_elements/fields/date/forms.py:53 #: contrib/plugins/form_elements/fields/date_drop_down/forms.py:72 #: contrib/plugins/form_elements/fields/datetime/forms.py:53 #: contrib/plugins/form_elements/fields/email/forms.py:58 #: contrib/plugins/form_elements/fields/file/forms.py:55 #: contrib/plugins/form_elements/fields/hidden/forms.py:49 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:57 #: contrib/plugins/form_elements/fields/input/forms.py:82 #: contrib/plugins/form_elements/fields/integer/forms.py:60 #: contrib/plugins/form_elements/fields/password/forms.py:56 -#: contrib/plugins/form_elements/fields/radio/forms.py:69 -#: contrib/plugins/form_elements/fields/select/forms.py:69 +#: contrib/plugins/form_elements/fields/radio/forms.py:70 +#: contrib/plugins/form_elements/fields/select/forms.py:70 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:57 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:69 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:70 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:57 #: contrib/plugins/form_elements/fields/text/forms.py:56 #: contrib/plugins/form_elements/fields/textarea/forms.py:48 @@ -196,7 +182,7 @@ msgstr "Ярлык поля должен быть уникальым!" msgid "General" msgstr "Основное" -#: base.py:2134 +#: base.py:2143 msgid "Theme `{0}` does not exist!" msgstr "Темы `{0}` не существует!" @@ -216,21 +202,25 @@ msgstr "Выбранные плагины" msgid "Users action" msgstr "Действие над пользователями" -#: forms.py:115 -#: forms.py:122 +#: forms.py:115 forms.py:122 msgid "If set to ``replace``, the groups are replaced; otherwise - appended." -msgstr "Если вы выберете ``заменить``, группы будут перезаписаны; в обратном случае - добавлены." +msgstr "" +"Если вы выберете ``заменить``, группы будут перезаписаны; в обратном случае " +"- добавлены." #: forms.py:120 msgid "Groups action" msgstr "Действие над группами" +#: helpers.py:349 helpers.py:374 +msgid "Invalid value for initial: {0}. Should be any of the following: {1}" +msgstr "" + #: models.py:80 msgid "Group" msgstr "Группа" -#: models.py:113 -#: models.py:414 +#: models.py:113 models.py:414 msgid "UID" msgstr "" @@ -242,8 +232,7 @@ msgstr "Группы" msgid "Users" msgstr "Пользователи" -#: models.py:160 -#: models.py:191 +#: models.py:160 models.py:191 msgid "Plugin UID" msgstr "UID плагина" @@ -263,8 +252,7 @@ msgstr "Плагин обработчика формы" msgid "Form handler plugins" msgstr "Плагины обработчиков формы" -#: models.py:218 -#: models.py:267 +#: models.py:218 models.py:267 msgid "Slug" msgstr "Слаг" @@ -314,8 +302,7 @@ msgstr "Можно клонировать?" msgid "Makes your form cloneable by other users." msgstr "Другие пользователи смогут клонировать вашу форму." -#: models.py:278 -#: models.py:438 +#: models.py:278 models.py:438 msgid "Position" msgstr "Порядок" @@ -367,13 +354,11 @@ msgstr "" msgid "Form fieldset entries" msgstr "" -#: models.py:345 -#: contrib/plugins/form_handlers/db_store/models.py:53 +#: models.py:345 contrib/plugins/form_handlers/db_store/models.py:53 msgid "Plugin data" msgstr "Данные плагина" -#: models.py:433 -#: models.py:467 +#: models.py:433 models.py:467 msgid "Plugin name" msgstr "Название плагина" @@ -419,90 +404,89 @@ msgstr "Изменить" msgid "Delete" msgstr "Удалить" -#: views.py:75 +#: views.py:77 msgid "{0} not found." msgstr "{0} не найдено." -#: views.py:165 +#: views.py:167 msgid "Form {0} was created successfully." msgstr "Форма {0} успешно создана." -#: views.py:173 -#: views.py:280 +#: views.py:175 views.py:282 msgid "Errors occured while saving the form: {0}." msgstr "Во время сохранения данных формы произошли следующие ошибки: {0}." -#: views.py:224 -#: views.py:365 -#: views.py:603 -#: views.py:823 -#: views.py:934 -#: views.py:976 +#: views.py:226 views.py:395 views.py:633 views.py:865 views.py:976 +#: views.py:1018 msgid "Form entry not found." msgstr "Форма не найдена" -#: views.py:246 +#: views.py:248 msgid "Elements ordering edited successfully." msgstr "Порядок элементов успешно сохранен." -#: views.py:254 +#: views.py:256 msgid "Errors occured while trying to change the elements ordering!" msgstr "При попытке сохранения порядка элементов произошла ошибка!" -#: views.py:272 +#: views.py:274 msgid "Form {0} was edited successfully." msgstr "Форма {0} успешно сохранена." -#: views.py:437 +#: views.py:404 views.py:640 +#, fuzzy +msgid "Plugin does not exist or you are not allowed to use this plugin!" +msgstr "Плагин не найден или вам не разрешено его использовать!" + +#: views.py:467 msgid "The form element plugin \"{0}\" was added successfully." msgstr "Элемент формы \"{0}\" добавлен успешно." -#: views.py:485 +#: views.py:515 msgid "Form element entry not found." msgstr "Элемент формы не найден." -#: views.py:497 +#: views.py:527 msgid "The form element plugin \"{0}\" is not configurable!" msgstr "Элемент формы \"{0}\" не настраивается!" -#: views.py:529 +#: views.py:559 msgid "The form element plugin \"{0}\" was edited successfully." msgstr "Элемент формы \"{0}\" успешно сохранен." -#: views.py:579 +#: views.py:609 msgid "The form element plugin \"{0}\" was deleted successfully." msgstr "Элемент формы \"{0}\" успешно удален." -#: views.py:610 -msgid "Plugin does not exist or you are not allowed to use this plugin!" -msgstr "Плагин не найден или вам не разрешено его использовать!" - #: views.py:655 +msgid "The {0} plugin can be used only once in a form." +msgstr "" + +#: views.py:697 msgid "The form handler plugin \"{0}\" was added successfully." msgstr "Обработчик формы \"{0}\" успешно добавлен." -#: views.py:708 +#: views.py:750 msgid "Form handler entry not found." msgstr "Обработчик формы не найден." -#: views.py:721 +#: views.py:763 msgid "The form handler plugin \"{0}\" is not configurable!" msgstr "Обработчик формы \"{0}\" не настраивается!" -#: views.py:744 +#: views.py:786 msgid "The form handler plugin \"{0}\" was edited successfully." msgstr "Обработчик формы \"{0}\" успешно изменен." -#: views.py:793 +#: views.py:835 msgid "The form handler plugin \"{0}\" was deleted successfully." msgstr "Oработчик формы \"{0}\" успешно удален." -#: views.py:876 -#: integration/processors.py:156 +#: views.py:918 integration/processors.py:156 msgid "Form {0} was submitted successfully." msgstr "Форма {0} успешно отправлена." -#: views.py:982 +#: views.py:1024 msgid "The form \"{0}\" was deleted successfully." msgstr "Форма \"{0}\" успешно удалена." @@ -634,7 +618,7 @@ msgid "Fobi forms" msgstr "Формы fobi" #: contrib/apps/mezzanine_integration/templates/mezzanine_integration/admin/change_form.html:8 -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:74 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:78 #: contrib/plugins/form_handlers/db_store/templates/db_store/plugin_data_repr.html:4 #: contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/templates/db_store_foundation5_widget/plugin_data_repr.html:4 msgid "View entries" @@ -730,8 +714,9 @@ msgstr "Галочка" #: contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py:25 #: contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py:24 #: contrib/plugins/form_elements/fields/email/fobi_form_elements.py:25 -#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:24 +#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:26 #: contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py:25 +#: contrib/plugins/form_elements/fields/hidden_model_object/fobi_form_elements.py:26 #: contrib/plugins/form_elements/fields/input/fobi_form_elements.py:23 #: contrib/plugins/form_elements/fields/integer/fobi_form_elements.py:30 #: contrib/plugins/form_elements/fields/password/fobi_form_elements.py:24 @@ -753,13 +738,14 @@ msgstr "Поля" #: contrib/plugins/form_elements/fields/email/forms.py:47 #: contrib/plugins/form_elements/fields/file/forms.py:44 #: contrib/plugins/form_elements/fields/hidden/forms.py:38 +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:52 #: contrib/plugins/form_elements/fields/input/forms.py:71 #: contrib/plugins/form_elements/fields/integer/forms.py:45 #: contrib/plugins/form_elements/fields/password/forms.py:45 -#: contrib/plugins/form_elements/fields/radio/forms.py:64 -#: contrib/plugins/form_elements/fields/select/forms.py:64 +#: contrib/plugins/form_elements/fields/radio/forms.py:65 +#: contrib/plugins/form_elements/fields/select/forms.py:65 #: contrib/plugins/form_elements/fields/select_model_object/forms.py:52 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:64 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:65 #: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:52 #: contrib/plugins/form_elements/fields/text/forms.py:45 #: contrib/plugins/form_elements/fields/textarea/forms.py:43 @@ -824,7 +810,7 @@ msgstr "Максимальная длина" msgid "Placeholder" msgstr "Метка-заполнитель " -#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:23 +#: contrib/plugins/form_elements/fields/file/fobi_form_elements.py:25 msgid "File" msgstr "Файл" @@ -832,6 +818,17 @@ msgstr "Файл" msgid "Hidden" msgstr "Скрытое поле" +#: contrib/plugins/form_elements/fields/hidden_model_object/fobi_form_elements.py:25 +#, fuzzy +msgid "Hidden model object" +msgstr "Выпадающий список объектов моделей" + +#: contrib/plugins/form_elements/fields/hidden_model_object/forms.py:41 +#: contrib/plugins/form_elements/fields/select_model_object/forms.py:41 +#: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:41 +msgid "Model" +msgstr "Модель" + #: contrib/plugins/form_elements/fields/input/fobi_form_elements.py:22 msgid "Input" msgstr "Универсальный" @@ -900,17 +897,44 @@ msgstr "Пароль" msgid "Radio" msgstr "Радио кнопка" -#: contrib/plugins/form_elements/fields/radio/forms.py:38 -#: contrib/plugins/form_elements/fields/select/forms.py:38 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:38 +#: contrib/plugins/form_elements/fields/radio/forms.py:39 +#: contrib/plugins/form_elements/fields/select/forms.py:39 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:39 msgid "Choices" msgstr "Варианы" -#: contrib/plugins/form_elements/fields/radio/forms.py:40 -#: contrib/plugins/form_elements/fields/select/forms.py:40 -#: contrib/plugins/form_elements/fields/select_multiple/forms.py:40 -msgid "Enter single values/pairs per line. Example:
    1
    2
    alpha, Alpha
    beta, Beta
    omega

It finally transforms into the following HTML code:
    <select id=\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
        <option value=\"1\">1</option>
        <option value=\"2\">2</option>
        <option value=\"alpha\">Alpha</option>
        <option value=\"beta\">Beta</option>
        <option value=\"omega\">omega</option>
    </select>
" -msgstr "Введите либо отдельные, либо партные значения - по одному на строку. Пример:
    1
    2
    alpha, Alpha
    beta, Beta
    omega

В результате получится следующий HTML код:
    <select id=\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
        <option value=\"1\">1</option>
        <option value=\"2\">2</option>
        <option value=\"alpha\">Alpha</option>
        <option value=\"beta\">Beta</option>
        <option value=\"omega\">omega</option>
    </select>
" +#: contrib/plugins/form_elements/fields/radio/forms.py:41 +#: contrib/plugins/form_elements/fields/select/forms.py:41 +#: contrib/plugins/form_elements/fields/select_multiple/forms.py:41 +msgid "" +"Enter single values/pairs per line. Example:
   " +" 1
    2
    alpha, " +"Alpha
    beta, Beta
    " +"omega

It finally transforms into the following HTML code:" +"
    <select id=\"id_NAME_OF_THE_ELEMENT\" " +"name=\"NAME_OF_THE_ELEMENT\">
      " +"  <option value=\"1\">1</option>
   " +"     <option value=\"2\">2</option>
        <option value=\"alpha" +"\">Alpha</option>
       " +" <option value=\"beta\">Beta</option>
   " +"     <option value=\"omega\">omega</" +"option>
    </select>
" +msgstr "" +"Введите либо отдельные, либо партные значения - по одному на строку. Пример: " +"
    1
    2
 " +"   alpha, Alpha
    beta, Beta
    omega

В результате получится следующий " +"HTML код:
    <select id=" +"\"id_NAME_OF_THE_ELEMENT\" name=\"NAME_OF_THE_ELEMENT\">
  " +"      <option value=\"1\">1</" +"option>
        <option " +"value=\"2\">2</option>
      " +"  <option value=\"alpha\">Alpha</option>
 " +"       <option value=\"beta\">" +"Beta</option>
        <" +"option value=\"omega\">omega</option>
    " +"</select>
" #: contrib/plugins/form_elements/fields/select/fobi_form_elements.py:23 msgid "Select" @@ -920,11 +944,6 @@ msgstr "Выпадающий список" msgid "Select model object" msgstr "Выпадающий список объектов моделей" -#: contrib/plugins/form_elements/fields/select_model_object/forms.py:41 -#: contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py:41 -msgid "Model" -msgstr "Модель" - #: contrib/plugins/form_elements/fields/select_multiple/fobi_form_elements.py:25 msgid "Select multiple" msgstr "Выпадающий список множественного выбора" @@ -990,11 +1009,11 @@ msgstr "Сохраненная запись формы" msgid "Export data to CSV/XLS" msgstr "Экспортировать данные в формат CSV/XLS" -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:24 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:27 msgid "DB store" msgstr "Сохранить в базе" -#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:80 +#: contrib/plugins/form_handlers/db_store/fobi_form_handlers.py:84 msgid "Export entries" msgstr "Экспортировать данные" @@ -1307,7 +1326,8 @@ msgstr "Сохранить изменения" #: templates/fobi/generic/snippets/form_properties_snippet.html:4 #: templates/fobi/generic/snippets/form_snippet.html:4 msgid "Fields marked with * are required" -msgstr "Поля помеченные * заполнять обязательно" +msgstr "" +"Поля помеченные * заполнять обязательно" #: contrib/themes/simple/fobi_themes.py:17 msgid "Simple" @@ -1398,7 +1418,9 @@ msgid "^forms/delete/(?P\\d+)/$" msgstr "" #: urls/edit.py:34 -msgid "^forms/elements/add/(?P\\d+)/(?P[\\w_\\-]+)/$" +msgid "" +"^forms/elements/add/(?P\\d+)/(?P[\\w_" +"\\-]+)/$" msgstr "" #: urls/edit.py:39 @@ -1410,7 +1432,9 @@ msgid "^forms/elements/delete/(?P\\d+)/$" msgstr "" #: urls/edit.py:49 -msgid "^forms/handlers/add/(?P\\d+)/(?P[\\w_\\-]+)/$" +msgid "" +"^forms/handlers/add/(?P\\d+)/(?P[\\w_" +"\\-]+)/$" msgstr "" #: urls/edit.py:54 diff --git a/src/fobi/tests/helpers.py b/src/fobi/tests/helpers.py index bb9a776d..053c6d23 100644 --- a/src/fobi/tests/helpers.py +++ b/src/fobi/tests/helpers.py @@ -4,7 +4,7 @@ __copyright__ = 'Copyright (c) 2014 Artur Barseghyan' __license__ = 'GPL 2.0/LGPL 2.1' __all__ = ( 'get_or_create_admin_user', 'get_or_create_admin_user', - 'create_form_with_entries' + 'create_form_with_entries', 'db_clean_up', ) from django.core.management import call_command @@ -269,3 +269,11 @@ def create_form_with_entries(user=None, create_entries_if_form_exist=True): form_handler_entry.save() return form_entry + +def db_clean_up(): + """ + Cleans up the database by removing all form element and form handler + entries. + """ + FormElementEntry._default_manager.all().delete() + FormHandlerEntry._default_manager.all().delete() diff --git a/src/fobi/tests/test_browser_build_dynamic_forms.py b/src/fobi/tests/test_browser_build_dynamic_forms.py index a96170dc..dfb373f4 100644 --- a/src/fobi/tests/test_browser_build_dynamic_forms.py +++ b/src/fobi/tests/test_browser_build_dynamic_forms.py @@ -20,7 +20,7 @@ from fobi.models import FormEntry from fobi.tests.base import print_info, skip#, BaseBrowserTest from fobi.tests.helpers import ( - setup_fobi, get_or_create_admin_user + setup_fobi, get_or_create_admin_user, db_clean_up ) from fobi.tests import constants from fobi.tests.data import ( @@ -453,6 +453,9 @@ class FobiBrowserBuldDynamicFormsTest(LiveServerTestCase): """ Test add a new form. """ + # Clean up database + db_clean_up() + self.__test_add_form(wait=WAIT_FOR) # Make sure the success message is there @@ -482,6 +485,9 @@ class FobiBrowserBuldDynamicFormsTest(LiveServerTestCase): """ Test submit form. """ + # Clean up database + db_clean_up() + # Add form elements self.__test_add_form_elements(create_form=True) @@ -527,6 +533,9 @@ class FobiBrowserBuldDynamicFormsTest(LiveServerTestCase): """ Test adding form elements. """ + # Clean up database + db_clean_up() + self.__test_add_form_elements(create_form=True) self.__sleep(wait) @@ -537,6 +546,9 @@ class FobiBrowserBuldDynamicFormsTest(LiveServerTestCase): """ Test remove form element. """ + # Clean up database + db_clean_up() + self.__test_add_form_elements(create_form=True) self.__test_remove_form_elements() @@ -559,6 +571,9 @@ class FobiBrowserBuldDynamicFormsTest(LiveServerTestCase): Test of adding a single form handler. At this point, if form isn't created, it should be. """ + # Clean up database + db_clean_up() + self.__test_add_form_handlers(create_form=True) self.__sleep(wait) @@ -569,6 +584,9 @@ class FobiBrowserBuldDynamicFormsTest(LiveServerTestCase): """ Test remove form handler. """ + # Clean up database + db_clean_up() + self.__test_add_form_handlers(create_form=True) self.__test_remove_form_handlers() diff --git a/src/fobi/views.py b/src/fobi/views.py index 049be446..b5c42de1 100644 --- a/src/fobi/views.py +++ b/src/fobi/views.py @@ -307,6 +307,7 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): user_form_handler_plugins = get_user_form_handler_plugins(request.user) user_form_handler_plugin_uids = [plugin_uid for (plugin_uid, plugin_name) \ in user_form_handler_plugins] + # Get all registered form handler plugins (as instances) registered_form_handler_plugins = \ get_registered_form_handler_plugins(as_instances=True) @@ -649,7 +650,7 @@ def add_form_handler_entry(request, form_entry_id, form_handler_plugin_uid, \ # form entry. if not FormHandlerPlugin.allow_multiple: times_used = FormHandlerEntry._default_manager \ - .filter(form_entry__id=13) \ + .filter(form_entry__id=form_entry_id) \ .count() if times_used > 0: raise Http404(ugettext("The {0} plugin can be used only once "