From bb7eb31528c9906d63718c626bb13ad0cdd1bd34 Mon Sep 17 00:00:00 2001 From: Artur Barseghyan Date: Tue, 12 Jul 2022 22:53:28 +0200 Subject: [PATCH] Blackify and isortify --- docs/conf.py | 433 +++--- examples/mezzanine_example/fabfile.py | 97 +- .../commands/fobi_create_test_data.py | 4 +- examples/mezzanine_example/manage.py | 5 +- examples/mezzanine_example/settings.py | 119 +- .../settings_bootstrap3_theme_mezzanine.py | 2 +- examples/mezzanine_example/urls.py | 52 +- examples/mezzanine_example/wsgi.py | 1 + examples/quick_start/quick_start/settings.py | 127 +- examples/quick_start/quick_start/urls.py | 24 +- examples/quick_start/quick_start/wsgi.py | 2 + .../simple/admin_tools_dashboard/__init__.py | 52 +- examples/simple/admin_tools_dashboard/conf.py | 27 +- .../commands/clear_dashboard_preferences.py | 5 +- examples/simple/admin_tools_dashboard/menu.py | 43 +- examples/simple/bar/admin.py | 1 - examples/simple/bar/models.py | 13 +- examples/simple/bar/urls.py | 2 +- examples/simple/bar/views.py | 6 +- .../simple/cms_addons/context_processors.py | 4 +- examples/simple/context_processors.py | 9 +- examples/simple/customauth/admin.py | 95 +- examples/simple/customauth/models.py | 4 +- examples/simple/factories/__init__.py | 1 + examples/simple/factories/auth_user.py | 39 +- examples/simple/factories/factory_faker.py | 49 +- examples/simple/factories/files.py | 98 +- examples/simple/factories/fobi_form_entry.py | 10 +- .../factories/medialibrary_mediafile.py | 53 +- examples/simple/factories/mixins.py | 35 +- examples/simple/factories/page_page.py | 36 +- examples/simple/factories/sites_site.py | 14 +- examples/simple/foo/fobi_form_callbacks.py | 13 +- .../commands/fobi_create_test_data.py | 4 +- examples/simple/foo/models.py | 4 +- examples/simple/foo/urls.py | 11 +- examples/simple/foo/views.py | 32 +- .../admin.py | 6 +- .../models.py | 7 +- .../fobi_form_elements.py | 34 +- .../simple/override_radio_plugin/forms.py | 80 +- .../fobi_form_elements.py | 32 +- .../forms.py | 35 +- .../override_simple_theme/fobi_themes.py | 14 +- examples/simple/page/admin.py | 2 - examples/simple/page/models.py | 19 +- examples/simple/registration_addons/forms.py | 1 - .../simple/settings/alternative_labels.py | 5 +- examples/simple/settings/base.py | 740 +++++---- examples/simple/settings/bootstrap3_theme.py | 15 +- .../settings/bootstrap3_theme_captcha.py | 13 +- .../bootstrap3_theme_captcha_feincms.py | 12 +- .../bootstrap3_theme_django_1_7_djangocms.py | 56 +- .../settings/bootstrap3_theme_djangocms.py | 84 +- .../settings/bootstrap3_theme_djangocms_2.py | 68 +- .../settings/bootstrap3_theme_feincms.py | 20 +- .../simple/settings/bootstrap3_theme_mptt.py | 8 +- .../settings/bootstrap3_theme_recaptcha.py | 18 +- examples/simple/settings/custom_user_model.py | 4 +- .../djangocms_admin_style_theme_djangocms.py | 78 +- examples/simple/settings/docker.py | 63 +- examples/simple/settings/docker_test.py | 46 +- examples/simple/settings/docs.py | 4 +- .../foreign_key_to_saved_form_data_entry.py | 2 +- examples/simple/settings/foundation5_theme.py | 6 +- .../settings/foundation5_theme_captcha.py | 20 +- .../settings/foundation5_theme_feincms.py | 12 +- .../simple/settings/override_radio_plugin.py | 2 +- .../override_select_model_object_plugin.py | 2 +- .../simple/settings/override_simple_theme.py | 8 +- examples/simple/settings/settings_test.py | 128 +- examples/simple/settings/simple.py | 2 +- examples/simple/settings/test.py | 46 +- examples/simple/urls.py | 120 +- examples/simple/wsgi.py | 1 + examples/tutorial/foo/fobi_form_callbacks.py | 2 +- examples/tutorial/local_settings.py | 32 +- .../sample_layout/fobi_form_elements.py | 10 +- .../sample_mail/fobi_form_handlers.py | 5 +- .../sample_textarea/fobi_form_elements.py | 17 +- examples/tutorial/sample_textarea/forms.py | 2 +- examples/tutorial/settings.py | 240 ++- examples/tutorial/urls.py | 56 +- examples/tutorial/wsgi.py | 1 + runtests.py | 3 +- setup.cfg | 1 + setup.py | 189 +-- src/fobi/__init__.py | 12 +- src/fobi/admin.py | 430 +++--- src/fobi/app.py | 17 +- src/fobi/apps.py | 12 +- src/fobi/base.py | 1013 +++++++------ src/fobi/conf.py | 10 +- src/fobi/constants.py | 67 +- src/fobi/context_processors.py | 26 +- .../apps/djangocms_integration/__init__.py | 12 +- .../apps/djangocms_integration/apps.py | 14 +- .../apps/djangocms_integration/cms_plugins.py | 37 +- .../apps/djangocms_integration/cms_version.py | 21 +- .../apps/djangocms_integration/conf.py | 15 +- .../apps/djangocms_integration/defaults.py | 16 +- .../apps/djangocms_integration/helpers.py | 24 +- .../apps/djangocms_integration/models.py | 41 +- .../apps/djangocms_integration/settings.py | 20 +- .../contrib/apps/drf_integration/__init__.py | 14 +- src/fobi/contrib/apps/drf_integration/apps.py | 14 +- src/fobi/contrib/apps/drf_integration/base.py | 168 +-- .../contrib/apps/drf_integration/dynamic.py | 210 ++- .../contrib/apps/drf_integration/fields.py | 75 +- .../content/content_image/__init__.py | 24 +- .../content/content_image/apps.py | 26 +- .../content/content_image/base.py | 57 +- .../fobi_integration_form_elements.py | 14 +- .../content/content_image_url/__init__.py | 25 +- .../content/content_image_url/apps.py | 26 +- .../content/content_image_url/base.py | 57 +- .../fobi_integration_form_elements.py | 14 +- .../content/content_markdown/__init__.py | 25 +- .../content/content_markdown/apps.py | 26 +- .../content/content_markdown/base.py | 57 +- .../fobi_integration_form_elements.py | 14 +- .../content/content_richtext/__init__.py | 25 +- .../content/content_richtext/apps.py | 26 +- .../content/content_richtext/base.py | 57 +- .../fobi_integration_form_elements.py | 14 +- .../content/content_text/__init__.py | 24 +- .../content/content_text/apps.py | 26 +- .../content/content_text/base.py | 57 +- .../fobi_integration_form_elements.py | 14 +- .../content/content_video/__init__.py | 24 +- .../content/content_video/apps.py | 26 +- .../content/content_video/base.py | 57 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/boolean/__init__.py | 21 +- .../form_elements/fields/boolean/apps.py | 19 +- .../form_elements/fields/boolean/base.py | 45 +- .../boolean/fobi_integration_form_elements.py | 14 +- .../checkbox_select_multiple/__init__.py | 25 +- .../fields/checkbox_select_multiple/apps.py | 26 +- .../fields/checkbox_select_multiple/base.py | 64 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/date/__init__.py | 20 +- .../form_elements/fields/date/apps.py | 14 +- .../form_elements/fields/date/base.py | 45 +- .../date/fobi_integration_form_elements.py | 14 +- .../fields/date_drop_down/__init__.py | 24 +- .../fields/date_drop_down/apps.py | 26 +- .../fields/date_drop_down/base.py | 46 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/datetime/__init__.py | 21 +- .../form_elements/fields/datetime/apps.py | 17 +- .../form_elements/fields/datetime/base.py | 44 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/decimal/__init__.py | 21 +- .../form_elements/fields/decimal/apps.py | 17 +- .../form_elements/fields/decimal/base.py | 67 +- .../decimal/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/duration/__init__.py | 21 +- .../form_elements/fields/duration/apps.py | 17 +- .../form_elements/fields/duration/base.py | 63 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/email/__init__.py | 21 +- .../form_elements/fields/email/apps.py | 17 +- .../form_elements/fields/email/base.py | 49 +- .../email/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/file/__init__.py | 20 +- .../form_elements/fields/file/apps.py | 17 +- .../form_elements/fields/file/base.py | 60 +- .../file/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/float/__init__.py | 21 +- .../form_elements/fields/float/apps.py | 17 +- .../form_elements/fields/float/base.py | 51 +- .../float/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/hidden/__init__.py | 21 +- .../form_elements/fields/hidden/apps.py | 17 +- .../form_elements/fields/hidden/base.py | 44 +- .../hidden/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/input/__init__.py | 21 +- .../form_elements/fields/input/apps.py | 17 +- .../form_elements/fields/input/base.py | 86 +- .../input/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/integer/__init__.py | 21 +- .../form_elements/fields/integer/apps.py | 17 +- .../form_elements/fields/integer/base.py | 51 +- .../integer/fobi_integration_form_elements.py | 14 +- .../fields/ip_address/__init__.py | 21 +- .../form_elements/fields/ip_address/apps.py | 17 +- .../form_elements/fields/ip_address/base.py | 49 +- .../fobi_integration_form_elements.py | 14 +- .../fields/null_boolean/__init__.py | 24 +- .../form_elements/fields/null_boolean/apps.py | 24 +- .../form_elements/fields/null_boolean/base.py | 46 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/password/__init__.py | 21 +- .../form_elements/fields/password/apps.py | 17 +- .../form_elements/fields/password/base.py | 49 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/radio/__init__.py | 21 +- .../form_elements/fields/radio/apps.py | 17 +- .../form_elements/fields/radio/base.py | 47 +- .../radio/fobi_integration_form_elements.py | 14 +- .../fields/range_select/__init__.py | 24 +- .../form_elements/fields/range_select/apps.py | 24 +- .../form_elements/fields/range_select/base.py | 48 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/regex/__init__.py | 21 +- .../form_elements/fields/regex/apps.py | 17 +- .../form_elements/fields/regex/base.py | 51 +- .../regex/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/select/__init__.py | 21 +- .../form_elements/fields/select/apps.py | 17 +- .../form_elements/fields/select/base.py | 47 +- .../select/fobi_integration_form_elements.py | 14 +- .../fields/select_model_object/__init__.py | 25 +- .../fields/select_model_object/apps.py | 26 +- .../fields/select_model_object/base.py | 63 +- .../fobi_integration_form_elements.py | 14 +- .../fields/select_multiple/__init__.py | 24 +- .../fields/select_multiple/apps.py | 26 +- .../fields/select_multiple/base.py | 64 +- .../fobi_integration_form_elements.py | 18 +- .../select_multiple_model_objects/__init__.py | 25 +- .../select_multiple_model_objects/apps.py | 26 +- .../select_multiple_model_objects/base.py | 63 +- .../fobi_integration_form_elements.py | 14 +- .../select_multiple_with_max/__init__.py | 25 +- .../fields/select_multiple_with_max/apps.py | 26 +- .../fields/select_multiple_with_max/base.py | 67 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/slider/__init__.py | 22 +- .../form_elements/fields/slider/apps.py | 17 +- .../form_elements/fields/slider/base.py | 47 +- .../slider/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/slug/__init__.py | 20 +- .../form_elements/fields/slug/apps.py | 17 +- .../form_elements/fields/slug/base.py | 47 +- .../slug/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/text/__init__.py | 20 +- .../form_elements/fields/text/apps.py | 17 +- .../form_elements/fields/text/base.py | 51 +- .../text/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/textarea/__init__.py | 21 +- .../form_elements/fields/textarea/apps.py | 17 +- .../form_elements/fields/textarea/base.py | 45 +- .../fobi_integration_form_elements.py | 14 +- .../form_elements/fields/time/__init__.py | 20 +- .../form_elements/fields/time/apps.py | 17 +- .../form_elements/fields/time/base.py | 42 +- .../time/fobi_integration_form_elements.py | 14 +- .../form_elements/fields/url/__init__.py | 20 +- .../form_elements/fields/url/apps.py | 14 +- .../form_elements/fields/url/base.py | 45 +- .../url/fobi_integration_form_elements.py | 14 +- .../form_handlers/db_store/__init__.py | 20 +- .../form_handlers/db_store/apps.py | 14 +- .../form_handlers/db_store/base.py | 47 +- .../fobi_integration_form_handlers.py | 14 +- .../form_handlers/http_repost/__init__.py | 20 +- .../form_handlers/http_repost/apps.py | 14 +- .../form_handlers/http_repost/base.py | 46 +- .../fobi_integration_form_handlers.py | 14 +- .../form_handlers/mail/__init__.py | 20 +- .../form_handlers/mail/apps.py | 14 +- .../form_handlers/mail/base.py | 53 +- .../mail/fobi_integration_form_handlers.py | 14 +- .../form_handlers/mail_sender/__init__.py | 20 +- .../form_handlers/mail_sender/apps.py | 14 +- .../form_handlers/mail_sender/base.py | 53 +- .../fobi_integration_form_handlers.py | 14 +- .../contrib/apps/drf_integration/helpers.py | 21 +- .../contrib/apps/drf_integration/metadata.py | 28 +- .../apps/drf_integration/serializers.py | 31 +- src/fobi/contrib/apps/drf_integration/urls.py | 29 +- .../contrib/apps/drf_integration/utils.py | 27 +- .../contrib/apps/drf_integration/views.py | 84 +- .../apps/feincms_integration/__init__.py | 12 +- .../contrib/apps/feincms_integration/apps.py | 14 +- .../contrib/apps/feincms_integration/conf.py | 15 +- .../apps/feincms_integration/defaults.py | 16 +- .../apps/feincms_integration/helpers.py | 24 +- .../apps/feincms_integration/settings.py | 20 +- .../apps/feincms_integration/widgets.py | 46 +- .../apps/mezzanine_integration/__init__.py | 12 +- .../apps/mezzanine_integration/admin.py | 9 +- .../apps/mezzanine_integration/apps.py | 14 +- .../apps/mezzanine_integration/conf.py | 15 +- .../apps/mezzanine_integration/defaults.py | 16 +- .../apps/mezzanine_integration/helpers.py | 24 +- .../apps/mezzanine_integration/models.py | 38 +- .../mezzanine_integration/page_processors.py | 18 +- .../apps/mezzanine_integration/settings.py | 20 +- .../apps/wagtail_integration/__init__.py | 12 +- .../apps/wagtail_integration/abstract.py | 77 +- .../contrib/apps/wagtail_integration/apps.py | 14 +- .../contrib/apps/wagtail_integration/conf.py | 17 +- .../apps/wagtail_integration/defaults.py | 16 +- .../apps/wagtail_integration/helpers.py | 24 +- .../apps/wagtail_integration/models.py | 14 +- .../apps/wagtail_integration/settings.py | 20 +- .../content/content_image/__init__.py | 18 +- .../content/content_image/apps.py | 14 +- .../content/content_image/base.py | 54 +- .../content/content_image/conf.py | 14 +- .../content/content_image/defaults.py | 79 +- .../content_image/fobi_form_elements.py | 18 +- .../content/content_image/forms.py | 36 +- .../content/content_image/helpers.py | 28 +- .../content/content_image/settings.py | 79 +- .../content/content_image_url/__init__.py | 19 +- .../content/content_image_url/apps.py | 14 +- .../content/content_image_url/base.py | 48 +- .../content/content_image_url/conf.py | 14 +- .../content/content_image_url/defaults.py | 60 +- .../content_image_url/fobi_form_elements.py | 18 +- .../content/content_image_url/forms.py | 39 +- .../content/content_image_url/settings.py | 56 +- .../content/content_markdown/__init__.py | 17 +- .../content/content_markdown/apps.py | 14 +- .../content/content_markdown/base.py | 45 +- .../content_markdown/fobi_form_elements.py | 18 +- .../content/content_markdown/forms.py | 18 +- .../content/content_markdown/widgets.py | 19 +- .../content/content_richtext/__init__.py | 17 +- .../content/content_richtext/apps.py | 14 +- .../content/content_richtext/base.py | 41 +- .../content_richtext/fobi_form_elements.py | 18 +- .../content/content_richtext/forms.py | 30 +- .../content/content_richtext/widgets.py | 23 +- .../content/content_text/__init__.py | 18 +- .../content/content_text/apps.py | 14 +- .../content/content_text/base.py | 32 +- .../content/content_text/conf.py | 17 +- .../content/content_text/defaults.py | 42 +- .../content_text/fobi_form_elements.py | 18 +- .../content/content_text/forms.py | 27 +- .../content/content_text/settings.py | 16 +- .../content/content_video/__init__.py | 17 +- .../content/content_video/apps.py | 14 +- .../content/content_video/base.py | 37 +- .../content/content_video/conf.py | 15 +- .../content/content_video/defaults.py | 20 +- .../content_video/fobi_form_elements.py | 18 +- .../content/content_video/forms.py | 26 +- .../content/content_video/settings.py | 24 +- .../form_elements/fields/boolean/__init__.py | 20 +- .../form_elements/fields/boolean/apps.py | 14 +- .../form_elements/fields/boolean/base.py | 27 +- .../fields/boolean/fobi_form_elements.py | 17 +- .../form_elements/fields/boolean/forms.py | 32 +- .../checkbox_select_multiple/__init__.py | 24 +- .../fields/checkbox_select_multiple/apps.py | 20 +- .../fields/checkbox_select_multiple/base.py | 50 +- .../fields/checkbox_select_multiple/conf.py | 19 +- .../checkbox_select_multiple/defaults.py | 14 +- .../fobi_form_elements.py | 18 +- .../fields/checkbox_select_multiple/forms.py | 94 +- .../checkbox_select_multiple/settings.py | 21 +- .../form_elements/fields/date/__init__.py | 20 +- .../plugins/form_elements/fields/date/apps.py | 15 +- .../plugins/form_elements/fields/date/base.py | 38 +- .../fields/date/fobi_form_elements.py | 14 +- .../form_elements/fields/date/forms.py | 36 +- .../form_elements/fields/date/widgets.py | 14 +- .../fields/date_drop_down/__init__.py | 20 +- .../fields/date_drop_down/apps.py | 14 +- .../fields/date_drop_down/base.py | 39 +- .../date_drop_down/fobi_form_elements.py | 18 +- .../fields/date_drop_down/forms.py | 41 +- .../form_elements/fields/datetime/__init__.py | 20 +- .../form_elements/fields/datetime/apps.py | 15 +- .../form_elements/fields/datetime/base.py | 39 +- .../fields/datetime/fobi_form_elements.py | 17 +- .../form_elements/fields/datetime/forms.py | 38 +- .../form_elements/fields/datetime/widgets.py | 14 +- .../form_elements/fields/decimal/__init__.py | 20 +- .../form_elements/fields/decimal/apps.py | 15 +- .../form_elements/fields/decimal/base.py | 50 +- .../fields/decimal/fobi_form_elements.py | 17 +- .../form_elements/fields/decimal/forms.py | 71 +- .../form_elements/fields/duration/__init__.py | 20 +- .../form_elements/fields/duration/apps.py | 14 +- .../form_elements/fields/duration/base.py | 45 +- .../fields/duration/fobi_form_elements.py | 17 +- .../form_elements/fields/duration/forms.py | 55 +- .../form_elements/fields/email/__init__.py | 20 +- .../form_elements/fields/email/apps.py | 14 +- .../form_elements/fields/email/base.py | 46 +- .../fields/email/fobi_form_elements.py | 17 +- .../form_elements/fields/email/forms.py | 60 +- .../form_elements/fields/file/__init__.py | 20 +- .../plugins/form_elements/fields/file/apps.py | 14 +- .../plugins/form_elements/fields/file/base.py | 54 +- .../plugins/form_elements/fields/file/conf.py | 14 +- .../form_elements/fields/file/defaults.py | 12 +- .../form_elements/fields/file/fields.py | 38 +- .../fields/file/fobi_form_elements.py | 14 +- .../form_elements/fields/file/forms.py | 68 +- .../form_elements/fields/file/settings.py | 12 +- .../form_elements/fields/float/__init__.py | 20 +- .../form_elements/fields/float/apps.py | 14 +- .../form_elements/fields/float/base.py | 45 +- .../fields/float/fobi_form_elements.py | 17 +- .../form_elements/fields/float/forms.py | 56 +- .../form_elements/fields/hidden/__init__.py | 20 +- .../form_elements/fields/hidden/apps.py | 14 +- .../form_elements/fields/hidden/base.py | 31 +- .../fields/hidden/fobi_form_elements.py | 17 +- .../form_elements/fields/hidden/forms.py | 54 +- .../form_elements/fields/input/__init__.py | 20 +- .../form_elements/fields/input/apps.py | 14 +- .../form_elements/fields/input/base.py | 74 +- .../form_elements/fields/input/constants.py | 147 +- .../fields/input/fobi_form_elements.py | 17 +- .../form_elements/fields/input/forms.py | 115 +- .../form_elements/fields/integer/__init__.py | 20 +- .../form_elements/fields/integer/apps.py | 14 +- .../form_elements/fields/integer/base.py | 45 +- .../fields/integer/fobi_form_elements.py | 17 +- .../form_elements/fields/integer/forms.py | 56 +- .../fields/ip_address/__init__.py | 20 +- .../form_elements/fields/ip_address/apps.py | 14 +- .../form_elements/fields/ip_address/base.py | 35 +- .../fields/ip_address/fobi_form_elements.py | 17 +- .../form_elements/fields/ip_address/forms.py | 68 +- .../fields/null_boolean/__init__.py | 20 +- .../form_elements/fields/null_boolean/apps.py | 14 +- .../form_elements/fields/null_boolean/base.py | 31 +- .../fields/null_boolean/fobi_form_elements.py | 18 +- .../fields/null_boolean/forms.py | 32 +- .../form_elements/fields/password/__init__.py | 20 +- .../form_elements/fields/password/apps.py | 14 +- .../form_elements/fields/password/base.py | 37 +- .../fields/password/fobi_form_elements.py | 17 +- .../form_elements/fields/password/forms.py | 60 +- .../form_elements/fields/radio/__init__.py | 20 +- .../form_elements/fields/radio/apps.py | 14 +- .../form_elements/fields/radio/base.py | 45 +- .../form_elements/fields/radio/conf.py | 14 +- .../form_elements/fields/radio/defaults.py | 10 +- .../fields/radio/fobi_form_elements.py | 17 +- .../form_elements/fields/radio/forms.py | 88 +- .../form_elements/fields/radio/settings.py | 16 +- .../fields/range_select/__init__.py | 20 +- .../form_elements/fields/range_select/apps.py | 14 +- .../form_elements/fields/range_select/base.py | 47 +- .../form_elements/fields/range_select/conf.py | 16 +- .../fields/range_select/defaults.py | 20 +- .../fields/range_select/fobi_form_elements.py | 18 +- .../fields/range_select/forms.py | 72 +- .../fields/range_select/settings.py | 32 +- .../form_elements/fields/regex/__init__.py | 20 +- .../form_elements/fields/regex/apps.py | 15 +- .../form_elements/fields/regex/base.py | 37 +- .../fields/regex/fobi_form_elements.py | 17 +- .../form_elements/fields/regex/forms.py | 82 +- .../form_elements/fields/select/__init__.py | 20 +- .../form_elements/fields/select/apps.py | 14 +- .../form_elements/fields/select/base.py | 43 +- .../form_elements/fields/select/conf.py | 17 +- .../form_elements/fields/select/defaults.py | 10 +- .../fields/select/fobi_form_elements.py | 17 +- .../form_elements/fields/select/forms.py | 88 +- .../form_elements/fields/select/settings.py | 16 +- .../fields/select_model_object/__init__.py | 21 +- .../fields/select_model_object/apps.py | 17 +- .../fields/select_model_object/base.py | 79 +- .../fields/select_model_object/conf.py | 20 +- .../fields/select_model_object/defaults.py | 16 +- .../select_model_object/fobi_form_elements.py | 18 +- .../fields/select_model_object/forms.py | 45 +- .../fields/select_model_object/settings.py | 24 +- .../select_mptt_model_object/__init__.py | 24 +- .../fields/select_mptt_model_object/apps.py | 23 +- .../fields/select_mptt_model_object/base.py | 68 +- .../fields/select_mptt_model_object/conf.py | 19 +- .../select_mptt_model_object/defaults.py | 17 +- .../fobi_form_elements.py | 18 +- .../fields/select_mptt_model_object/forms.py | 46 +- .../select_mptt_model_object/settings.py | 25 +- .../fields/select_multiple/__init__.py | 20 +- .../fields/select_multiple/apps.py | 14 +- .../fields/select_multiple/base.py | 46 +- .../fields/select_multiple/conf.py | 18 +- .../fields/select_multiple/defaults.py | 13 +- .../select_multiple/fobi_form_elements.py | 18 +- .../fields/select_multiple/forms.py | 90 +- .../fields/select_multiple/settings.py | 19 +- .../select_multiple_model_objects/__init__.py | 24 +- .../select_multiple_model_objects/apps.py | 26 +- .../select_multiple_model_objects/base.py | 66 +- .../select_multiple_model_objects/conf.py | 24 +- .../select_multiple_model_objects/defaults.py | 17 +- .../fobi_form_elements.py | 18 +- .../select_multiple_model_objects/forms.py | 47 +- .../select_multiple_model_objects/settings.py | 25 +- .../__init__.py | 25 +- .../apps.py | 26 +- .../base.py | 67 +- .../conf.py | 26 +- .../defaults.py | 17 +- .../fobi_form_elements.py | 22 +- .../forms.py | 51 +- .../settings.py | 25 +- .../select_multiple_with_max/__init__.py | 24 +- .../fields/select_multiple_with_max/apps.py | 23 +- .../fields/select_multiple_with_max/base.py | 50 +- .../fields/select_multiple_with_max/conf.py | 17 +- .../select_multiple_with_max/defaults.py | 14 +- .../fields/select_multiple_with_max/fields.py | 47 +- .../fobi_form_elements.py | 18 +- .../fields/select_multiple_with_max/forms.py | 92 +- .../select_multiple_with_max/settings.py | 20 +- .../form_elements/fields/slider/__init__.py | 20 +- .../form_elements/fields/slider/apps.py | 14 +- .../form_elements/fields/slider/base.py | 165 ++- .../form_elements/fields/slider/conf.py | 18 +- .../form_elements/fields/slider/constants.py | 60 +- .../form_elements/fields/slider/defaults.py | 20 +- .../fields/slider/fobi_form_elements.py | 17 +- .../form_elements/fields/slider/forms.py | 168 ++- .../form_elements/fields/slider/helpers.py | 25 +- .../form_elements/fields/slider/settings.py | 32 +- .../form_elements/fields/slider/widgets.py | 18 +- .../form_elements/fields/slug/__init__.py | 20 +- .../plugins/form_elements/fields/slug/apps.py | 14 +- .../plugins/form_elements/fields/slug/base.py | 41 +- .../fields/slug/fobi_form_elements.py | 14 +- .../form_elements/fields/slug/forms.py | 60 +- .../form_elements/fields/text/__init__.py | 20 +- .../plugins/form_elements/fields/text/apps.py | 14 +- .../plugins/form_elements/fields/text/base.py | 41 +- .../fields/text/fobi_form_elements.py | 14 +- .../form_elements/fields/text/forms.py | 60 +- .../form_elements/fields/textarea/__init__.py | 20 +- .../form_elements/fields/textarea/apps.py | 14 +- .../form_elements/fields/textarea/base.py | 41 +- .../fields/textarea/fobi_form_elements.py | 17 +- .../form_elements/fields/textarea/forms.py | 38 +- .../form_elements/fields/time/__init__.py | 20 +- .../plugins/form_elements/fields/time/apps.py | 15 +- .../plugins/form_elements/fields/time/base.py | 38 +- .../fields/time/fobi_form_elements.py | 17 +- .../form_elements/fields/time/forms.py | 38 +- .../form_elements/fields/url/__init__.py | 20 +- .../plugins/form_elements/fields/url/apps.py | 14 +- .../plugins/form_elements/fields/url/base.py | 46 +- .../fields/url/fobi_form_elements.py | 14 +- .../plugins/form_elements/fields/url/forms.py | 60 +- .../security/captcha/__init__.py | 20 +- .../form_elements/security/captcha/apps.py | 14 +- .../form_elements/security/captcha/base.py | 35 +- .../security/captcha/fobi_form_elements.py | 19 +- .../form_elements/security/captcha/forms.py | 27 +- .../security/honeypot/__init__.py | 20 +- .../form_elements/security/honeypot/apps.py | 14 +- .../form_elements/security/honeypot/base.py | 31 +- .../form_elements/security/honeypot/conf.py | 14 +- .../security/honeypot/defaults.py | 14 +- .../form_elements/security/honeypot/fields.py | 14 +- .../security/honeypot/fobi_form_elements.py | 17 +- .../form_elements/security/honeypot/forms.py | 30 +- .../security/honeypot/settings.py | 12 +- .../security/invisible_recaptcha/__init__.py | 21 +- .../security/invisible_recaptcha/apps.py | 17 +- .../security/invisible_recaptcha/base.py | 39 +- .../security/invisible_recaptcha/conf.py | 13 +- .../security/invisible_recaptcha/constants.py | 20 +- .../security/invisible_recaptcha/fields.py | 46 +- .../invisible_recaptcha/fobi_form_elements.py | 18 +- .../security/invisible_recaptcha/forms.py | 25 +- .../security/invisible_recaptcha/settings.py | 20 +- .../security/invisible_recaptcha/widgets.py | 25 +- .../security/recaptcha/__init__.py | 20 +- .../form_elements/security/recaptcha/apps.py | 14 +- .../form_elements/security/recaptcha/base.py | 35 +- .../security/recaptcha/fobi_form_elements.py | 18 +- .../form_elements/security/recaptcha/forms.py | 27 +- .../form_elements/test/dummy/__init__.py | 20 +- .../plugins/form_elements/test/dummy/apps.py | 14 +- .../plugins/form_elements/test/dummy/base.py | 30 +- .../test/dummy/fobi_form_elements.py | 14 +- .../form_elements/test/dummy/widgets.py | 14 +- .../form_handlers/db_store/__init__.py | 17 +- .../plugins/form_handlers/db_store/admin.py | 144 +- .../plugins/form_handlers/db_store/apps.py | 14 +- .../plugins/form_handlers/db_store/base.py | 118 +- .../form_handlers/db_store/callbacks.py | 35 +- .../plugins/form_handlers/db_store/conf.py | 14 +- .../form_handlers/db_store/defaults.py | 13 +- .../db_store/fobi_form_handlers.py | 12 +- .../plugins/form_handlers/db_store/helpers.py | 46 +- .../plugins/form_handlers/db_store/models.py | 46 +- .../form_handlers/db_store/settings.py | 15 +- .../db_store/urls/form_handlers.py | 50 +- .../db_store/urls/form_wizard_handlers.py | 48 +- .../plugins/form_handlers/db_store/views.py | 87 +- .../plugins/form_handlers/db_store/widgets.py | 20 +- .../form_handlers/http_repost/__init__.py | 20 +- .../plugins/form_handlers/http_repost/apps.py | 14 +- .../plugins/form_handlers/http_repost/base.py | 55 +- .../http_repost/fobi_form_handlers.py | 14 +- .../form_handlers/http_repost/forms.py | 14 +- .../plugins/form_handlers/mail/__init__.py | 17 +- .../plugins/form_handlers/mail/apps.py | 15 +- .../plugins/form_handlers/mail/base.py | 100 +- .../plugins/form_handlers/mail/callbacks.py | 30 +- .../plugins/form_handlers/mail/conf.py | 14 +- .../plugins/form_handlers/mail/defaults.py | 26 +- .../plugins/form_handlers/mail/fields.py | 24 +- .../form_handlers/mail/fobi_form_handlers.py | 12 +- .../plugins/form_handlers/mail/forms.py | 35 +- .../plugins/form_handlers/mail/helpers.py | 48 +- .../plugins/form_handlers/mail/mixins.py | 69 +- .../plugins/form_handlers/mail/settings.py | 36 +- .../plugins/form_handlers/mail/widgets.py | 24 +- .../form_handlers/mail_sender/__init__.py | 20 +- .../plugins/form_handlers/mail_sender/apps.py | 15 +- .../plugins/form_handlers/mail_sender/base.py | 100 +- .../plugins/form_handlers/mail_sender/conf.py | 14 +- .../form_handlers/mail_sender/defaults.py | 26 +- .../mail_sender/fobi_form_handlers.py | 12 +- .../form_handlers/mail_sender/forms.py | 34 +- .../form_handlers/mail_sender/helpers.py | 48 +- .../form_handlers/mail_sender/mixins.py | 71 +- .../form_handlers/mail_sender/settings.py | 14 +- .../mailchimp_importer/__init__.py | 20 +- .../form_importers/mailchimp_importer/apps.py | 14 +- .../form_importers/mailchimp_importer/base.py | 59 +- .../mailchimp_importer/fobi_form_importers.py | 14 +- .../mailchimp_importer/forms.py | 24 +- .../mailchimp_importer/views.py | 42 +- .../contrib/themes/bootstrap3/__init__.py | 17 +- src/fobi/contrib/themes/bootstrap3/apps.py | 14 +- .../contrib/themes/bootstrap3/fobi_themes.py | 196 +-- .../__init__.py | 20 +- .../apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../__init__.py | 20 +- .../apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../date_bootstrap3_widget/__init__.py | 20 +- .../date_bootstrap3_widget/apps.py | 26 +- .../fobi_form_elements.py | 24 +- .../datetime_bootstrap3_widget/__init__.py | 20 +- .../datetime_bootstrap3_widget/apps.py | 26 +- .../fobi_form_elements.py | 24 +- .../dummy_bootstrap3_widget/__init__.py | 20 +- .../dummy_bootstrap3_widget/apps.py | 26 +- .../fobi_form_elements.py | 17 +- .../__init__.py | 20 +- .../apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../slider_bootstrap3_widget/__init__.py | 20 +- .../slider_bootstrap3_widget/apps.py | 26 +- .../fobi_form_elements.py | 24 +- .../djangocms_admin_style_theme/__init__.py | 20 +- .../djangocms_admin_style_theme/apps.py | 14 +- .../fobi_themes.py | 220 +-- .../__init__.py | 24 +- .../apps.py | 30 +- .../fobi_form_elements.py | 23 +- .../__init__.py | 22 +- .../apps.py | 26 +- .../fobi_form_elements.py | 23 +- .../form_handlers/db_store/__init__.py | 20 +- .../widgets/form_handlers/db_store/apps.py | 27 +- .../db_store/fobi_form_elements.py | 20 +- .../contrib/themes/foundation5/__init__.py | 14 +- src/fobi/contrib/themes/foundation5/apps.py | 14 +- .../contrib/themes/foundation5/fobi_themes.py | 175 ++- .../__init__.py | 20 +- .../apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../date_foundation5_widget/__init__.py | 20 +- .../date_foundation5_widget/apps.py | 26 +- .../fobi_form_elements.py | 24 +- .../datetime_foundation5_widget/__init__.py | 20 +- .../datetime_foundation5_widget/apps.py | 26 +- .../fobi_form_elements.py | 24 +- .../dummy_foundation5_widget/__init__.py | 20 +- .../dummy_foundation5_widget/apps.py | 26 +- .../fobi_form_elements.py | 16 +- .../__init__.py | 20 +- .../apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../db_store_foundation5_widget/__init__.py | 20 +- .../db_store_foundation5_widget/apps.py | 26 +- .../fobi_form_elements.py | 25 +- src/fobi/contrib/themes/simple/__init__.py | 17 +- src/fobi/contrib/themes/simple/apps.py | 14 +- src/fobi/contrib/themes/simple/fobi_themes.py | 148 +- .../__init__.py | 20 +- .../content_richtext_simple_widget/apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../__init__.py | 20 +- .../invisible_recaptcha_simple_widget/apps.py | 26 +- .../fobi_form_elements.py | 21 +- .../form_handlers/db_store/__init__.py | 15 +- .../widgets/form_handlers/db_store/apps.py | 14 +- .../db_store/fobi_form_elements.py | 20 +- src/fobi/data_structures.py | 71 +- src/fobi/decorators.py | 50 +- src/fobi/defaults.py | 94 +- src/fobi/discover.py | 31 +- src/fobi/dynamic.py | 104 +- src/fobi/exceptions.py | 40 +- src/fobi/form_importers.py | 51 +- src/fobi/form_utils.py | 24 +- src/fobi/forms.py | 265 ++-- src/fobi/helpers.py | 359 ++--- src/fobi/integration/helpers.py | 10 +- src/fobi/integration/processors.py | 102 +- .../commands/fobi_find_broken_entries.py | 28 +- .../management/commands/fobi_sync_plugins.py | 12 +- .../commands/fobi_update_plugin_data.py | 8 +- src/fobi/models.py | 253 ++-- src/fobi/permissions/default.py | 6 +- src/fobi/pip_helpers.py | 18 +- src/fobi/reusable/markdown_widget/helpers.py | 14 +- src/fobi/reusable/markdown_widget/widgets.py | 27 +- src/fobi/settings.py | 173 ++- src/fobi/templatetags/fobi_tags.py | 161 +- src/fobi/templatetags/future_compat.py | 35 +- src/fobi/tests/__init__.py | 11 +- src/fobi/tests/base.py | 117 +- src/fobi/tests/constants.py | 24 +- src/fobi/tests/core.py | 31 +- src/fobi/tests/data.py | 1163 ++++++++------- src/fobi/tests/helpers.py | 125 +- .../tests/test_browser_build_dynamic_forms.py | 162 +- src/fobi/tests/test_core.py | 72 +- src/fobi/tests/test_drf_integration.py | 119 +- src/fobi/tests/test_dynamic_forms.py | 19 +- src/fobi/tests/test_feincms_integration.py | 22 +- .../tests/test_form_importers_mailchimp.py | 33 +- src/fobi/tests/test_sortable_dict.py | 33 +- src/fobi/urls/class_based/edit.py | 4 +- src/fobi/urls/edit.py | 200 +-- src/fobi/urls/view.py | 56 +- src/fobi/utils.py | 378 ++--- src/fobi/validators.py | 28 +- src/fobi/views/class_based.py | 22 +- src/fobi/views/function_based.py | 1319 +++++++++-------- src/fobi/widgets.py | 71 +- src/fobi/wizard/views/dynamic.py | 264 ++-- src/fobi/wizard/views/views.py | 11 +- 746 files changed, 15604 insertions(+), 14156 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index bd507dd3a..8a9e7ddd8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,196 +17,187 @@ # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) -sys.path.insert(0, os.path.abspath('../src')) -sys.path.insert(0, os.path.abspath('../examples')) -sys.path.insert(0, os.path.abspath('../examples/simple')) +# sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath("../src")) +sys.path.insert(0, os.path.abspath("../examples")) +sys.path.insert(0, os.path.abspath("../examples/simple")) from django_nine.versions import DJANGO_GTE_3_0 import django -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'simple.settings.docs') + +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "simple.settings.docs") django.setup() try: import fobi + version = fobi.__version__ project = fobi.__title__ copyright = fobi.__copyright__ except ImportError as err: - version = '0.1' - project = u'django-fobi' - copyright = u'2014-2018, Artur Barseghyan ' + version = "0.1" + project = "django-fobi" + copyright = "2014-2018, Artur Barseghyan " try: from simple.settings import docs as docs_settings except Exception as e: - PROJECT_DIR = lambda base : os.path.abspath(os.path.join(os.path.dirname(__file__), base).replace('\\','/')) + PROJECT_DIR = lambda base: os.path.abspath( + os.path.join(os.path.dirname(__file__), base).replace("\\", "/") + ) gettext = lambda s: s # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(__file__)) class DocsSettings(object): - """ - """ + """ """ + INSTALLED_APPS = ( # Admin dashboard - 'admin_tools', - 'admin_tools.menu', - 'admin_tools.dashboard', - + "admin_tools", + "admin_tools.menu", + "admin_tools.dashboard", # Django core and contrib apps - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.contrib.admin', - 'django.contrib.sitemaps', - + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.sites", + "django.contrib.messages", + "django.contrib.staticfiles", + "django.contrib.admin", + "django.contrib.sitemaps", # Third party apps used in the project - 'easy_thumbnails', # Thumbnailer + "easy_thumbnails", # Thumbnailer # Auth views and registration app - 'django_registration' if DJANGO_GTE_3_0 else 'registration', - + "django_registration" if DJANGO_GTE_3_0 else "registration", # ***************************************************************** # ***************************************************************** # **************************** Fobi core ************************** # ***************************************************************** # ***************************************************************** - 'fobi', - + "fobi", # ***************************************************************** # ***************************************************************** # ************************* Fobi form elements ******************** # ***************************************************************** # ***************************************************************** - # ***************************************************************** # **************************** Form fields ************************ # ***************************************************************** #'fobi.contrib.plugins.form_elements.fields.birthday', - 'fobi.contrib.plugins.form_elements.fields.boolean', - 'fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple', - 'fobi.contrib.plugins.form_elements.fields.date', - 'fobi.contrib.plugins.form_elements.fields.date_drop_down', - 'fobi.contrib.plugins.form_elements.fields.datetime', - 'fobi.contrib.plugins.form_elements.fields.decimal', - 'fobi.contrib.plugins.form_elements.fields.email', - 'fobi.contrib.plugins.form_elements.fields.file', - 'fobi.contrib.plugins.form_elements.fields.float', - 'fobi.contrib.plugins.form_elements.fields.hidden', + "fobi.contrib.plugins.form_elements.fields.boolean", + "fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple", + "fobi.contrib.plugins.form_elements.fields.date", + "fobi.contrib.plugins.form_elements.fields.date_drop_down", + "fobi.contrib.plugins.form_elements.fields.datetime", + "fobi.contrib.plugins.form_elements.fields.decimal", + "fobi.contrib.plugins.form_elements.fields.email", + "fobi.contrib.plugins.form_elements.fields.file", + "fobi.contrib.plugins.form_elements.fields.float", + "fobi.contrib.plugins.form_elements.fields.hidden", # 'fobi.contrib.plugins.form_elements.fields.hidden_model_object', - 'fobi.contrib.plugins.form_elements.fields.input', - 'fobi.contrib.plugins.form_elements.fields.integer', - 'fobi.contrib.plugins.form_elements.fields.ip_address', - 'fobi.contrib.plugins.form_elements.fields.null_boolean', - 'fobi.contrib.plugins.form_elements.fields.password', - 'fobi.contrib.plugins.form_elements.fields.radio', - 'fobi.contrib.plugins.form_elements.fields.regex', - 'fobi.contrib.plugins.form_elements.fields.select', - 'fobi.contrib.plugins.form_elements.fields.select_model_object', - 'fobi.contrib.plugins.form_elements.fields.select_multiple', - 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', - 'fobi.contrib.plugins.form_elements.fields.slug', - 'fobi.contrib.plugins.form_elements.fields.text', - 'fobi.contrib.plugins.form_elements.fields.textarea', - 'fobi.contrib.plugins.form_elements.fields.time', - 'fobi.contrib.plugins.form_elements.fields.url', - + "fobi.contrib.plugins.form_elements.fields.input", + "fobi.contrib.plugins.form_elements.fields.integer", + "fobi.contrib.plugins.form_elements.fields.ip_address", + "fobi.contrib.plugins.form_elements.fields.null_boolean", + "fobi.contrib.plugins.form_elements.fields.password", + "fobi.contrib.plugins.form_elements.fields.radio", + "fobi.contrib.plugins.form_elements.fields.regex", + "fobi.contrib.plugins.form_elements.fields.select", + "fobi.contrib.plugins.form_elements.fields.select_model_object", + "fobi.contrib.plugins.form_elements.fields.select_multiple", + "fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects", + "fobi.contrib.plugins.form_elements.fields.slug", + "fobi.contrib.plugins.form_elements.fields.text", + "fobi.contrib.plugins.form_elements.fields.textarea", + "fobi.contrib.plugins.form_elements.fields.time", + "fobi.contrib.plugins.form_elements.fields.url", # ***************************************************************** # ************************ Security elements ********************** # ***************************************************************** - 'fobi.contrib.plugins.form_elements.security.honeypot', - + "fobi.contrib.plugins.form_elements.security.honeypot", # ***************************************************************** # ************************* Testing elements ********************** # ***************************************************************** - 'fobi.contrib.plugins.form_elements.test.dummy', - + "fobi.contrib.plugins.form_elements.test.dummy", # ***************************************************************** # ************************* Content elements ********************** # ***************************************************************** - 'fobi.contrib.plugins.form_elements.content.content_image', - 'fobi.contrib.plugins.form_elements.content.content_text', - 'fobi.contrib.plugins.form_elements.content.content_video', - + "fobi.contrib.plugins.form_elements.content.content_image", + "fobi.contrib.plugins.form_elements.content.content_text", + "fobi.contrib.plugins.form_elements.content.content_video", # ***************************************************************** # ***************************************************************** # ************************* Fobi form handlers ******************** # ***************************************************************** # ***************************************************************** - 'fobi.contrib.plugins.form_handlers.db_store', - 'fobi.contrib.plugins.form_handlers.http_repost', - 'fobi.contrib.plugins.form_handlers.mail', - + "fobi.contrib.plugins.form_handlers.db_store", + "fobi.contrib.plugins.form_handlers.http_repost", + "fobi.contrib.plugins.form_handlers.mail", # ***************************************************************** # ***************************************************************** # ************************** Fobi themes ************************** # ***************************************************************** # ***************************************************************** - # ***************************************************************** # ************************ Bootstrap 3 theme ********************** # ***************************************************************** - 'fobi.contrib.themes.bootstrap3', # Bootstrap 3 theme + "fobi.contrib.themes.bootstrap3", # Bootstrap 3 theme # DateTime widget - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.datetime_bootstrap3_widget', - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.date_bootstrap3_widget', - + "fobi.contrib.themes.bootstrap3.widgets.form_elements.datetime_bootstrap3_widget", + "fobi.contrib.themes.bootstrap3.widgets.form_elements.date_bootstrap3_widget", # ***************************************************************** # ************************ Foundation 5 theme ********************* # ***************************************************************** - 'fobi.contrib.themes.foundation5', # Foundation 5 theme - 'fobi.contrib.themes.foundation5.widgets.form_handlers.db_store_foundation5_widget', - + "fobi.contrib.themes.foundation5", # Foundation 5 theme + "fobi.contrib.themes.foundation5.widgets.form_handlers.db_store_foundation5_widget", # ***************************************************************** # **************************** Simple theme *********************** # ***************************************************************** - 'fobi.contrib.themes.simple', # Simple theme + "fobi.contrib.themes.simple", # Simple theme ) DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': PROJECT_DIR('../db/example.db'), + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": PROJECT_DIR("../db/example.db"), } } - MEDIA_ROOT = PROJECT_DIR(os.path.join('..', 'media')) - MEDIA_URL = '/media/' + MEDIA_ROOT = PROJECT_DIR(os.path.join("..", "media")) + MEDIA_URL = "/media/" MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', + "django.contrib.sessions.middleware.SessionMiddleware", # 'localeurl.middleware.LocaleURLMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) - ROOT_URLCONF = 'urls' - SECRET_KEY = '97818c*w97Zi8a-m^1coRRrmurMI6+q5_kyn*)s@(*_Pk6q423' + ROOT_URLCONF = "urls" + SECRET_KEY = "97818c*w97Zi8a-m^1coRRrmurMI6+q5_kyn*)s@(*_Pk6q423" SITE_ID = 1 - STATICFILES_DIRS = ( - PROJECT_DIR(os.path.join('..', 'media', 'static')), - ) + STATICFILES_DIRS = (PROJECT_DIR(os.path.join("..", "media", "static")),) STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + "django.contrib.staticfiles.finders.FileSystemFinder", + "django.contrib.staticfiles.finders.AppDirectoriesFinder", #'django.contrib.staticfiles.finders.DefaultStorageFinder', ) - STATIC_URL = '/static/' - STATIC_ROOT = PROJECT_DIR(os.path.join('..', 'static')) + STATIC_URL = "/static/" + STATIC_ROOT = PROJECT_DIR(os.path.join("..", "static")) TEMPLATES = [ { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', + "BACKEND": "django.template.backends.django.DjangoTemplates", #'APP_DIRS': True, - 'DIRS': [PROJECT_DIR('templates'),], - 'OPTIONS': { - 'context_processors': [ + "DIRS": [ + PROJECT_DIR("templates"), + ], + "OPTIONS": { + "context_processors": [ "django.contrib.auth.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", @@ -215,17 +206,17 @@ class DocsSettings(object): "django.core.context_processors.tz", "django.contrib.messages.context_processors.messages", "django.core.context_processors.request", - "fobi.context_processors.theme", # Important! - "fobi.context_processors.dynamic_values", # Optional + "fobi.context_processors.theme", # Important! + "fobi.context_processors.dynamic_values", # Optional ], - 'loaders': [ - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - 'django.template.loaders.eggs.Loader', - 'admin_tools.template_loaders.Loader', + "loaders": [ + "django.template.loaders.filesystem.Loader", + "django.template.loaders.app_directories.Loader", + "django.template.loaders.eggs.Loader", + "admin_tools.template_loaders.Loader", ], - 'debug': False, - } + "debug": False, + }, }, ] @@ -239,231 +230,232 @@ class DocsSettings(object): if not settings.configured: INSTALLED_APPS = list(docs_settings.INSTALLED_APPS) - INSTALLED_APPS.append('mptt') - INSTALLED_APPS.append('cms') - INSTALLED_APPS.append('fobi.contrib.apps.djangocms_integration') - INSTALLED_APPS.append('feincms') - INSTALLED_APPS.append('fobi.contrib.apps.feincms_integration') - INSTALLED_APPS.append('captcha') - INSTALLED_APPS.append('fobi.contrib.plugins.form_elements.security.captcha') + INSTALLED_APPS.append("mptt") + INSTALLED_APPS.append("cms") + INSTALLED_APPS.append("fobi.contrib.apps.djangocms_integration") + INSTALLED_APPS.append("feincms") + INSTALLED_APPS.append("fobi.contrib.apps.feincms_integration") + INSTALLED_APPS.append("captcha") + INSTALLED_APPS.append("fobi.contrib.plugins.form_elements.security.captcha") - if 'foo' in INSTALLED_APPS: - INSTALLED_APPS.remove('foo') + if "foo" in INSTALLED_APPS: + INSTALLED_APPS.remove("foo") django_configuration = { - 'DATABASES': docs_settings.DATABASES, - 'INSTALLED_APPS': INSTALLED_APPS, - 'MEDIA_ROOT': docs_settings.MEDIA_ROOT, - 'MEDIA_URL': docs_settings.MEDIA_URL, - 'MIDDLEWARE_CLASSES': docs_settings.MIDDLEWARE_CLASSES, - 'ROOT_URLCONF': docs_settings.ROOT_URLCONF, - 'SECRET_KEY': docs_settings.SECRET_KEY, - 'SITE_ID': docs_settings.SITE_ID, - 'STATICFILES_DIRS': docs_settings.STATICFILES_DIRS, - 'STATICFILES_FINDERS': docs_settings.STATICFILES_FINDERS, - 'STATIC_URL': docs_settings.STATIC_URL, - 'STATIC_ROOT': docs_settings.STATIC_ROOT, + "DATABASES": docs_settings.DATABASES, + "INSTALLED_APPS": INSTALLED_APPS, + "MEDIA_ROOT": docs_settings.MEDIA_ROOT, + "MEDIA_URL": docs_settings.MEDIA_URL, + "MIDDLEWARE_CLASSES": docs_settings.MIDDLEWARE_CLASSES, + "ROOT_URLCONF": docs_settings.ROOT_URLCONF, + "SECRET_KEY": docs_settings.SECRET_KEY, + "SITE_ID": docs_settings.SITE_ID, + "STATICFILES_DIRS": docs_settings.STATICFILES_DIRS, + "STATICFILES_FINDERS": docs_settings.STATICFILES_FINDERS, + "STATIC_URL": docs_settings.STATIC_URL, + "STATIC_ROOT": docs_settings.STATIC_ROOT, } - django_configuration.update({ - 'TEMPLATES': docs_settings.TEMPLATES - }) + django_configuration.update({"TEMPLATES": docs_settings.TEMPLATES}) settings.configure(**django_configuration) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' +# needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.viewcode', + "sphinx.ext.autodoc", + "sphinx.ext.viewcode", # 'rst2pdf.pdfbuilder', ] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # The suffix of source filenames. -source_suffix = '.rst' +source_suffix = ".rst" # The encoding of source files. -#source_encoding = 'utf-8-sig' +# source_encoding = 'utf-8-sig' # The master toctree document. -master_doc = 'index' +master_doc = "index" # General information about the project. -#project = u'django-fobi' -#copyright = u'2014, Artur Barseghyan ' +# project = u'django-fobi' +# copyright = u'2014, Artur Barseghyan ' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -#version = '0.1' +# version = '0.1' # The full version, including alpha/beta/rc tags. -#release = '0.1' +# release = '0.1' release = version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. -#language = None +# language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: -#today = '' +# today = '' # Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' +# today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. -exclude_patterns = ['_build'] +exclude_patterns = ["_build"] # The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None +# default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True +# add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). -#add_module_names = True +# add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. -#show_authors = False +# show_authors = False # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" # A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] +# modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = "default" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -#html_theme_options = {} +# html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] +# html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -#html_title = None +# html_title = None # A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None +# html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. -#html_logo = None +# html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. -#html_favicon = None +# html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = ["_static"] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' +# html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. -#html_use_smartypants = True +# html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -#html_sidebars = {} +# html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. -#html_additional_pages = {} +# html_additional_pages = {} # If false, no module index is generated. -#html_domain_indices = True +# html_domain_indices = True # If false, no index is generated. -#html_use_index = True +# html_use_index = True # If true, the index is split into individual pages for each letter. -#html_split_index = False +# html_split_index = False # If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True +# html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True +# html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True +# html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. -#html_use_opensearch = '' +# html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None +# html_file_suffix = None # Output file base name for HTML help builder. -htmlhelp_basename = 'django-fobidoc' +htmlhelp_basename = "django-fobidoc" # -- Options for LaTeX output -------------------------------------------------- latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', + # The paper size ('letterpaper' or 'a4paper'). + #'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + #'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ - ('index', 'django-fobi.tex', u'django-fobi Documentation', - u'Artur Barseghyan \\textless{}artur.barseghyan@gmail.com\\textgreater{}', 'manual'), + ( + "index", + "django-fobi.tex", + "django-fobi Documentation", + "Artur Barseghyan \\textless{}artur.barseghyan@gmail.com\\textgreater{}", + "manual", + ), ] # The name of an image file (relative to this directory) to place at the top of # the title page. -#latex_logo = None +# latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. -#latex_use_parts = False +# latex_use_parts = False # If true, show page references after internal links. -#latex_show_pagerefs = False +# latex_show_pagerefs = False # If true, show URL addresses after external links. -#latex_show_urls = False +# latex_show_urls = False # Documents to append as an appendix to all manuals. -#latex_appendices = [] +# latex_appendices = [] # If false, no module index is generated. -#latex_domain_indices = True +# latex_domain_indices = True # -- Options for manual page output -------------------------------------------- @@ -471,12 +463,17 @@ class DocsSettings(object): # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - ('index', 'django-fobi', u'django-fobi Documentation', - [u'Artur Barseghyan '], 1) + ( + "index", + "django-fobi", + "django-fobi Documentation", + ["Artur Barseghyan "], + 1, + ) ] # If true, show URL addresses after external links. -#man_show_urls = False +# man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ @@ -485,62 +482,68 @@ class DocsSettings(object): # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - ('index', 'django-fobi', u'django-fobi Documentation', - u'Artur Barseghyan ', 'django-fobi', 'One line description of project.', - 'Miscellaneous'), + ( + "index", + "django-fobi", + "django-fobi Documentation", + "Artur Barseghyan ", + "django-fobi", + "One line description of project.", + "Miscellaneous", + ), ] # Documents to append as an appendix to all manuals. -#texinfo_appendices = [] +# texinfo_appendices = [] # If false, no module index is generated. -#texinfo_domain_indices = True +# texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' +# texinfo_show_urls = 'footnote' # -- Options for Epub output --------------------------------------------------- # Bibliographic Dublin Core info. -epub_title = u'django-fobi' -epub_author = u'Artur Barseghyan ' -epub_publisher = u'Artur Barseghyan ' -epub_copyright = u'2014, Artur Barseghyan ' +epub_title = "django-fobi" +epub_author = "Artur Barseghyan " +epub_publisher = "Artur Barseghyan " +epub_copyright = "2014, Artur Barseghyan " # The language of the text. It defaults to the language option # or en if the language is not set. -#epub_language = '' +# epub_language = '' # The scheme of the identifier. Typical schemes are ISBN or URL. -#epub_scheme = '' +# epub_scheme = '' # The unique identifier of the text. This can be a ISBN number # or the project homepage. -#epub_identifier = '' +# epub_identifier = '' # A unique identification for the text. -#epub_uid = '' +# epub_uid = '' # A tuple containing the cover image and cover page html template filenames. -#epub_cover = () +# epub_cover = () # HTML files that should be inserted before the pages created by sphinx. # The format is a list of tuples containing the path and title. -#epub_pre_files = [] +# epub_pre_files = [] # HTML files shat should be inserted after the pages created by sphinx. # The format is a list of tuples containing the path and title. -#epub_post_files = [] +# epub_post_files = [] # A list of files that should not be packed into the epub file. -#epub_exclude_files = [] +# epub_exclude_files = [] # The depth of the table of contents in toc.ncx. -#epub_tocdepth = 3 +# epub_tocdepth = 3 # Allow duplicate toc entries. -#epub_tocdup = True +# epub_tocdup = True # -- Options for PDF output --------------------------------------------------- diff --git a/examples/mezzanine_example/fabfile.py b/examples/mezzanine_example/fabfile.py index 1c42c853d..0870d442a 100644 --- a/examples/mezzanine_example/fabfile.py +++ b/examples/mezzanine_example/fabfile.py @@ -99,6 +99,7 @@ # Context for virtualenv and project # ###################################### + @contextmanager def virtualenv(): """ @@ -152,6 +153,7 @@ def update_changed_requirements(): # Utils and wrappers for various commands # ########################################### + def _print(output): print() print(output) @@ -159,9 +161,11 @@ def _print(output): def print_command(command): - _print(blue("$ ", bold=True) + - yellow(command, bold=True) + - red(" ->", bold=True)) + _print( + blue("$ ", bold=True) + + yellow(command, bold=True) + + red(" ->", bold=True) + ) @task @@ -192,6 +196,7 @@ def logged(*args, **kawrgs): header = "-" * len(func.__name__) _print(green("\n".join([header, func.__name__, header]), bold=True)) return func(*args, **kawrgs) + return logged @@ -308,7 +313,7 @@ def python(code, show=True): """ Runs Python code in the project's virtual environment, with Django loaded. """ - setup = "import os; os.environ[\'DJANGO_SETTINGS_MODULE\']=\'settings\';" + setup = "import os; os.environ['DJANGO_SETTINGS_MODULE']='settings';" full_code = 'python -c "%s%s"' % (setup, code.replace("`", "\\\`")) with project(): result = run(full_code, show=False) @@ -321,8 +326,10 @@ def static(): """ Returns the live STATIC_ROOT directory. """ - return python("from django.conf import settings;" - "print settings.STATIC_ROOT", show=False).split("\n")[-1] + return python( + "from django.conf import settings;" "print settings.STATIC_ROOT", + show=False, + ).split("\n")[-1] @task @@ -337,6 +344,7 @@ def manage(command): # Install and configure # ######################### + @task @log_call def install(): @@ -349,8 +357,10 @@ def install(): sudo("update-locale %s" % locale) run("exit") sudo("apt-get update -y -q") - apt("nginx libjpeg-dev python-dev python-setuptools git-core " - "postgresql libpq-dev memcached supervisor") + apt( + "nginx libjpeg-dev python-dev python-setuptools git-core " + "postgresql libpq-dev memcached supervisor" + ) sudo("easy_install pip") sudo("pip install virtualenv mercurial") @@ -368,9 +378,10 @@ def create(): # Create virtualenv with cd(env.venv_home): if exists(env.proj_name): - prompt = input("\nVirtualenv exists: %s" - "\nWould you like to replace it? (yes/no) " - % env.proj_name) + prompt = input( + "\nVirtualenv exists: %s" + "\nWould you like to replace it? (yes/no) " % env.proj_name + ) if prompt.lower() != "yes": print("\nAborting!") return False @@ -381,14 +392,16 @@ def create(): # Create DB and DB user. pw = db_pass() - user_sql_args = (env.proj_name, pw.replace("'", "\'")) + user_sql_args = (env.proj_name, pw.replace("'", "'")) user_sql = "CREATE USER %s WITH ENCRYPTED PASSWORD '%s';" % user_sql_args psql(user_sql, show=False) shadowed = "*" * len(pw) print_command(user_sql.replace("'%s'" % pw, "'%s'" % shadowed)) - psql("CREATE DATABASE %s WITH OWNER %s ENCODING = 'UTF8' " - "LC_CTYPE = '%s' LC_COLLATE = '%s' TEMPLATE template0;" % - (env.proj_name, env.proj_name, env.locale, env.locale)) + psql( + "CREATE DATABASE %s WITH OWNER %s ENCODING = 'UTF8' " + "LC_CTYPE = '%s' LC_COLLATE = '%s' TEMPLATE template0;" + % (env.proj_name, env.proj_name, env.locale, env.locale) + ) # Set up SSL certificate. if not env.ssl_disabled: @@ -400,12 +413,14 @@ def create(): key_file = env.proj_name + ".key" if not exists(crt_file) and not exists(key_file): try: - crt_local, = glob(join("deploy", "*.crt")) - key_local, = glob(join("deploy", "*.key")) + (crt_local,) = glob(join("deploy", "*.crt")) + (key_local,) = glob(join("deploy", "*.key")) except ValueError: parts = (crt_file, key_file, env.domains[0]) - sudo("openssl req -new -x509 -nodes -out %s -keyout %s " - "-subj '/CN=%s' -days 3650" % parts) + sudo( + "openssl req -new -x509 -nodes -out %s -keyout %s " + "-subj '/CN=%s' -days 3650" % parts + ) else: upload_template(crt_local, crt_file, use_sudo=True) upload_template(key_local, key_file, use_sudo=True) @@ -415,24 +430,32 @@ def create(): with project(): if env.reqs_path: pip("-r %s/%s" % (env.proj_path, env.reqs_path)) - pip("gunicorn setproctitle south psycopg2 " - "django-compressor python-memcached") + pip( + "gunicorn setproctitle south psycopg2 " + "django-compressor python-memcached" + ) manage("createdb --noinput --nodata") - python("from django.conf import settings;" - "from django.contrib.sites.models import Site;" - "Site.objects.filter(id=settings.SITE_ID).update(domain='%s');" - % env.domains[0]) + python( + "from django.conf import settings;" + "from django.contrib.sites.models import Site;" + "Site.objects.filter(id=settings.SITE_ID).update(domain='%s');" + % env.domains[0] + ) for domain in env.domains: - python("from django.contrib.sites.models import Site;" - "Site.objects.get_or_create(domain='%s');" % domain) + python( + "from django.contrib.sites.models import Site;" + "Site.objects.get_or_create(domain='%s');" % domain + ) if env.admin_pass: pw = env.admin_pass - user_py = ("from mezzanine.utils.models import get_user_model;" - "User = get_user_model();" - "u, _ = User.objects.get_or_create(username='admin');" - "u.is_staff = u.is_superuser = True;" - "u.set_password('%s');" - "u.save();" % pw) + user_py = ( + "from mezzanine.utils.models import get_user_model;" + "User = get_user_model();" + "u, _ = User.objects.get_or_create(username='admin');" + "u.is_staff = u.is_superuser = True;" + "u.set_password('%s');" + "u.save();" % pw + ) python(user_py, show=False) shadowed = "*" * len(pw) print_command(user_py.replace("'%s'" % pw, "'%s'" % shadowed)) @@ -460,6 +483,7 @@ def remove(): # Deployment # ############## + @task @log_call def restart(): @@ -485,9 +509,10 @@ def deploy(): processes for the project. """ if not exists(env.venv_path): - prompt = input("\nVirtualenv doesn't exist: %s" - "\nWould you like to create it? (yes/no) " - % env.proj_name) + prompt = input( + "\nVirtualenv doesn't exist: %s" + "\nWould you like to create it? (yes/no) " % env.proj_name + ) if prompt.lower() != "yes": print("\nAborting!") return False diff --git a/examples/mezzanine_example/foo/management/commands/fobi_create_test_data.py b/examples/mezzanine_example/foo/management/commands/fobi_create_test_data.py index ead6c7762..66e1717ca 100644 --- a/examples/mezzanine_example/foo/management/commands/fobi_create_test_data.py +++ b/examples/mezzanine_example/foo/management/commands/fobi_create_test_data.py @@ -1,9 +1,11 @@ from django.core.management.base import BaseCommand from fobi.tests.helpers import ( - get_or_create_admin_user, create_form_with_entries + create_form_with_entries, + get_or_create_admin_user, ) + class Command(BaseCommand): def handle(self, *args, **options): """ diff --git a/examples/mezzanine_example/manage.py b/examples/mezzanine_example/manage.py index 70feca84b..33cabbc75 100755 --- a/examples/mezzanine_example/manage.py +++ b/examples/mezzanine_example/manage.py @@ -4,10 +4,10 @@ import os import sys - # Corrects some pathing issues in various contexts, such as cron jobs, # and the project layout still being in Django 1.3 format. -from settings import PROJECT_ROOT, PROJECT_DIRNAME +from settings import PROJECT_DIRNAME, PROJECT_ROOT + sys.path.append(os.path.abspath(os.path.join(PROJECT_ROOT, ".."))) @@ -25,4 +25,5 @@ settings_module = "%s.settings" % PROJECT_DIRNAME os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_module) from django.core.management import execute_from_command_line + execute_from_command_line(sys.argv) diff --git a/examples/mezzanine_example/settings.py b/examples/mezzanine_example/settings.py index 208ec15df..2406746bc 100644 --- a/examples/mezzanine_example/settings.py +++ b/examples/mezzanine_example/settings.py @@ -1,9 +1,8 @@ from __future__ import absolute_import, unicode_literals + import os -from django_nine.versions import ( - DJANGO_GTE_1_10, - DJANGO_GTE_1_9, -) + +from django_nine.versions import DJANGO_GTE_1_9, DJANGO_GTE_1_10 # Full filesystem path to the project. PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) @@ -125,9 +124,7 @@ # Supported languages _ = lambda s: s -LANGUAGES = ( - ('en', _('English')), -) +LANGUAGES = (("en", _("English")),) # A boolean that turns on/off debug mode. When set to ``True``, stack traces # are displayed for error pages. Should always be set to ``False`` in @@ -157,34 +154,32 @@ TEMPLATES = [ { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', + "BACKEND": "django.template.backends.django.DjangoTemplates", # 'APP_DIRS': True, - 'DIRS': [os.path.join(PROJECT_ROOT, "templates")], - 'OPTIONS': { - 'context_processors': [ + "DIRS": [os.path.join(PROJECT_ROOT, "templates")], + "OPTIONS": { + "context_processors": [ "django.template.context_processors.debug", - 'django.template.context_processors.request', + "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", # "django.template.context_processors.i18n", # "django.template.context_processors.media", # "django.template.context_processors.static", "django.template.context_processors.tz", "django.contrib.messages.context_processors.messages", - "mezzanine.conf.context_processors.settings", "mezzanine.pages.context_processors.page", - "fobi.context_processors.theme", # Important! "fobi.context_processors.dynamic_values", # Optional # "context_processors.testing", # Testing ], - 'loaders': [ + "loaders": [ "django.template.loaders.filesystem.Loader", "django.template.loaders.app_directories.Loader", - 'django.template.loaders.eggs.Loader', + "django.template.loaders.eggs.Loader", ], - 'debug': DEBUG_TEMPLATE, - } + "debug": DEBUG_TEMPLATE, + }, }, ] @@ -283,109 +278,95 @@ "mezzanine.twitter", # "mezzanine.accounts", # "mezzanine.mobile", - # Third party apps used in the project - 'tinymce', # TinyMCE - 'easy_thumbnails', # Thumbnailer + "tinymce", # TinyMCE + "easy_thumbnails", # Thumbnailer # 'registration', # Auth views and registration app - # *********************************************************************** # *********************************************************************** # **************************** Fobi core ******************************** # *********************************************************************** # *********************************************************************** - 'fobi', - + "fobi", # *********************************************************************** # *********************************************************************** # ************************** Fobi themes ******************************** # *********************************************************************** # *********************************************************************** - # *********************************************************************** # ************************ Bootstrap 3 theme **************************** # *********************************************************************** - 'fobi.contrib.themes.bootstrap3', # Bootstrap 3 theme - + "fobi.contrib.themes.bootstrap3", # Bootstrap 3 theme # *********************************************************************** # ************************ Foundation 5 theme *************************** # *********************************************************************** - 'fobi.contrib.themes.foundation5', # Foundation 5 theme - 'fobi.contrib.themes.foundation5.widgets.form_handlers.db_store_foundation5_widget', - + "fobi.contrib.themes.foundation5", # Foundation 5 theme + "fobi.contrib.themes.foundation5.widgets.form_handlers.db_store_foundation5_widget", # *********************************************************************** # **************************** Simple theme ***************************** # *********************************************************************** - 'fobi.contrib.themes.simple', # Simple theme - + "fobi.contrib.themes.simple", # Simple theme # *********************************************************************** # *********************************************************************** # ************************* Fobi form elements ************************** # *********************************************************************** # *********************************************************************** - # *********************************************************************** # **************************** Form fields ****************************** # *********************************************************************** #'fobi.contrib.plugins.form_elements.fields.birthday', - 'fobi.contrib.plugins.form_elements.fields.boolean', - 'fobi.contrib.plugins.form_elements.fields.date', - 'fobi.contrib.plugins.form_elements.fields.date_drop_down', - 'fobi.contrib.plugins.form_elements.fields.datetime', - 'fobi.contrib.plugins.form_elements.fields.email', - 'fobi.contrib.plugins.form_elements.fields.file', - 'fobi.contrib.plugins.form_elements.fields.hidden', - 'fobi.contrib.plugins.form_elements.fields.input', - 'fobi.contrib.plugins.form_elements.fields.integer', - 'fobi.contrib.plugins.form_elements.fields.password', - 'fobi.contrib.plugins.form_elements.fields.radio', - 'fobi.contrib.plugins.form_elements.fields.select', - 'fobi.contrib.plugins.form_elements.fields.select_model_object', - 'fobi.contrib.plugins.form_elements.fields.select_multiple', + "fobi.contrib.plugins.form_elements.fields.boolean", + "fobi.contrib.plugins.form_elements.fields.date", + "fobi.contrib.plugins.form_elements.fields.date_drop_down", + "fobi.contrib.plugins.form_elements.fields.datetime", + "fobi.contrib.plugins.form_elements.fields.email", + "fobi.contrib.plugins.form_elements.fields.file", + "fobi.contrib.plugins.form_elements.fields.hidden", + "fobi.contrib.plugins.form_elements.fields.input", + "fobi.contrib.plugins.form_elements.fields.integer", + "fobi.contrib.plugins.form_elements.fields.password", + "fobi.contrib.plugins.form_elements.fields.radio", + "fobi.contrib.plugins.form_elements.fields.select", + "fobi.contrib.plugins.form_elements.fields.select_model_object", + "fobi.contrib.plugins.form_elements.fields.select_multiple", # 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', - 'fobi.contrib.plugins.form_elements.fields.text', - 'fobi.contrib.plugins.form_elements.fields.textarea', - 'fobi.contrib.plugins.form_elements.fields.url', - + "fobi.contrib.plugins.form_elements.fields.text", + "fobi.contrib.plugins.form_elements.fields.textarea", + "fobi.contrib.plugins.form_elements.fields.url", # *********************************************************************** # ************************ Security elements **************************** # *********************************************************************** - 'fobi.contrib.plugins.form_elements.security.honeypot', - + "fobi.contrib.plugins.form_elements.security.honeypot", # *********************************************************************** # ************************* Testing elements **************************** # *********************************************************************** - 'fobi.contrib.plugins.form_elements.test.dummy', - + "fobi.contrib.plugins.form_elements.test.dummy", # *********************************************************************** # ************************* Content elements **************************** # *********************************************************************** - 'fobi.contrib.plugins.form_elements.content.content_image', - 'fobi.contrib.plugins.form_elements.content.content_text', - 'fobi.contrib.plugins.form_elements.content.content_video', - + "fobi.contrib.plugins.form_elements.content.content_image", + "fobi.contrib.plugins.form_elements.content.content_text", + "fobi.contrib.plugins.form_elements.content.content_video", # *********************************************************************** # *********************************************************************** # ************************* Fobi form handlers ************************** # *********************************************************************** # *********************************************************************** - 'fobi.contrib.plugins.form_handlers.db_store', - 'fobi.contrib.plugins.form_handlers.http_repost', - 'fobi.contrib.plugins.form_handlers.mail', - + "fobi.contrib.plugins.form_handlers.db_store", + "fobi.contrib.plugins.form_handlers.http_repost", + "fobi.contrib.plugins.form_handlers.mail", # *********************************************************************** # *********************************************************************** # *********************** Mezzanine integration ************************* # *********************************************************************** # *********************************************************************** - 'fobi.contrib.apps.mezzanine_integration', - + "fobi.contrib.apps.mezzanine_integration", # *********************************************************************** # *********************************************************************** # ****************************** Test app ******************************* # *********************************************************************** # *********************************************************************** - 'foo', + "foo", ) # List of middleware classes to use. Order is important; in the request phase, @@ -412,7 +393,7 @@ ) MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', + "fobi": "fobi.migrations", } # Store these package names here as they may change in the future since @@ -421,9 +402,9 @@ PACKAGE_NAME_GRAPPELLI = "grappelli_safe" # Fobi extra configuration -FOBI_DEFAULT_THEME = 'bootstrap3' +FOBI_DEFAULT_THEME = "bootstrap3" -FOBI_THEME_FOOTER_TEXT = gettext('© django-fobi example site 2014') +FOBI_THEME_FOOTER_TEXT = gettext("© django-fobi example site 2014") ######################### diff --git a/examples/mezzanine_example/settings_bootstrap3_theme_mezzanine.py b/examples/mezzanine_example/settings_bootstrap3_theme_mezzanine.py index a3afd1c0f..bb350db72 100644 --- a/examples/mezzanine_example/settings_bootstrap3_theme_mezzanine.py +++ b/examples/mezzanine_example/settings_bootstrap3_theme_mezzanine.py @@ -1,4 +1,4 @@ from .settings import * # Fobi extra configuration -FOBI_DEFAULT_THEME = 'bootstrap3' +FOBI_DEFAULT_THEME = "bootstrap3" diff --git a/examples/mezzanine_example/urls.py b/examples/mezzanine_example/urls.py index 6ef2df1a5..78eb726b4 100644 --- a/examples/mezzanine_example/urls.py +++ b/examples/mezzanine_example/urls.py @@ -1,35 +1,31 @@ from __future__ import unicode_literals -from django.urls import include, re_path as url from django.conf.urls.i18n import i18n_patterns from django.contrib import admin - -from mezzanine.core.views import direct_to_template - +from django.urls import include, re_path as url # *********** # Fobi things # *********** from django.views.generic import TemplateView +from mezzanine.core.views import direct_to_template from fobi.settings import DEFAULT_THEME - # Mapping. fobi_theme_home_template_mapping = { - 'bootstrap3': 'home/bootstrap3.html', - 'foundation5': 'home/foundation5.html', - 'simple': 'home/simple.html', + "bootstrap3": "home/bootstrap3.html", + "foundation5": "home/foundation5.html", + "simple": "home/simple.html", } # Get the template to be used. fobi_home_template = fobi_theme_home_template_mapping.get( - DEFAULT_THEME, - 'home/base.html' + DEFAULT_THEME, "home/base.html" ) -FOBI_EDIT_URLS_PREFIX = '' -if 'simple' == DEFAULT_THEME: - FOBI_EDIT_URLS_PREFIX = 'admin/' +FOBI_EDIT_URLS_PREFIX = "" +if "simple" == DEFAULT_THEME: + FOBI_EDIT_URLS_PREFIX = "admin/" # *********** # / End Fobi things @@ -54,17 +50,17 @@ urlpatterns += [ url("^admin/", include(admin.site.urls)), - # DB Store plugin URLs - url(r'^fobi/plugins/form-handlers/db-store/', - include('fobi.contrib.plugins.form_handlers.db_store.urls')), - + url( + r"^fobi/plugins/form-handlers/db-store/", + include("fobi.contrib.plugins.form_handlers.db_store.urls"), + ), # django-fobi URLs: - url(r'^fobi/', include('fobi.urls.view')), - url(r'^{0}fobi/'.format(FOBI_EDIT_URLS_PREFIX), include('fobi.urls.edit')), - - url(r'^fobi-home/$', - TemplateView.as_view(template_name=fobi_home_template)), + url(r"^fobi/", include("fobi.urls.view")), + url(r"^{0}fobi/".format(FOBI_EDIT_URLS_PREFIX), include("fobi.urls.edit")), + url( + r"^fobi-home/$", TemplateView.as_view(template_name=fobi_home_template) + ), ] # *********** @@ -72,19 +68,15 @@ # *********** urlpatterns += [ - # We don't want to presume how your homepage works, so here are a # few patterns you can use to set it up. - # HOMEPAGE AS STATIC TEMPLATE # --------------------------- # This pattern simply loads the index.html template. It isn't # commented out like the others, so it's the default. You only need # one homepage pattern, so if you use a different one, comment this # one out. - url("^$", direct_to_template, {"template": "index.html"}, name="home"), - # HOMEPAGE AS AN EDITABLE PAGE IN THE PAGE TREE # --------------------------------------------- # This pattern gives us a normal ``Page`` object, so that your @@ -97,9 +89,7 @@ # doesn't apply here, since we can't have a template called # "/.html" - so for this case, the template "pages/index.html" # should be used if you want to customize the homepage's template. - # url("^$", "mezzanine.pages.views.page", {"slug": "/"}, name="home"), - # HOMEPAGE FOR A BLOG-ONLY SITE # ----------------------------- # This pattern points the homepage to the blog post listing page, @@ -107,22 +97,18 @@ # pattern, you'll also need to set BLOG_SLUG = "" in your # ``settings.py`` module, and delete the blog page object from the # page tree in the admin if it was installed. - # url("^$", "mezzanine.blog.views.blog_post_list", name="home"), - # MEZZANINE'S URLS # ---------------- # ADD YOUR OWN URLPATTERNS *ABOVE* THE LINE BELOW. # ``mezzanine.urls`` INCLUDES A *CATCH ALL* PATTERN # FOR PAGES, SO URLPATTERNS ADDED BELOW ``mezzanine.urls`` # WILL NEVER BE MATCHED! - # If you'd like more granular control over the patterns in # ``mezzanine.urls``, go right ahead and take the parts you want # from it, and use them directly below instead of using # ``mezzanine.urls``. url("^", include("mezzanine.urls")), - # MOUNTING MEZZANINE UNDER A PREFIX # --------------------------------- # You can also mount all of Mezzanine's urlpatterns under a @@ -136,9 +122,7 @@ # of this file as well. # Note that for any of the various homepage patterns above, you'll # need to use the ``SITE_PREFIX`` setting as well. - # ("^%s/" % settings.SITE_PREFIX, include("mezzanine.urls")) - ] # Adds ``STATIC_URL`` to the context of error pages, so that error diff --git a/examples/mezzanine_example/wsgi.py b/examples/mezzanine_example/wsgi.py index 70ccac4cd..8fb4add5b 100644 --- a/examples/mezzanine_example/wsgi.py +++ b/examples/mezzanine_example/wsgi.py @@ -7,4 +7,5 @@ os.environ.setdefault("DJANGO_SETTINGS_MODULE", settings_module) from django.core.wsgi import get_wsgi_application + application = get_wsgi_application() diff --git a/examples/quick_start/quick_start/settings.py b/examples/quick_start/quick_start/settings.py index 9bbb908c7..57154a07c 100644 --- a/examples/quick_start/quick_start/settings.py +++ b/examples/quick_start/quick_start/settings.py @@ -10,6 +10,7 @@ # Build paths inside the project like this: os.path.join(BASE_DIR, ...) import os + BASE_DIR = os.path.dirname(os.path.dirname(__file__)) @@ -17,109 +18,105 @@ # See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'uzc&9xi6b#dz^z7tpa+br3ohq)-9%v9ux@9^t!(5fl41n%&mn$' +SECRET_KEY = "uzc&9xi6b#dz^z7tpa+br3ohq)-9%v9ux@9^t!(5fl41n%&mn$" # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True TEMPLATE_DEBUG = True -ALLOWED_HOSTS = ['*',] +ALLOWED_HOSTS = [ + "*", +] # Application definition INSTALLED_APPS = ( - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.messages', - 'django.contrib.staticfiles', - + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.messages", + "django.contrib.staticfiles", # Core - 'fobi', - + "fobi", # Theme - 'fobi.contrib.themes.bootstrap3', - + "fobi.contrib.themes.bootstrap3", # Form field plugins - 'fobi.contrib.plugins.form_elements.fields.boolean', - 'fobi.contrib.plugins.form_elements.fields.date', - 'fobi.contrib.plugins.form_elements.fields.datetime', - 'fobi.contrib.plugins.form_elements.fields.email', - 'fobi.contrib.plugins.form_elements.fields.file', - 'fobi.contrib.plugins.form_elements.fields.hidden', - 'fobi.contrib.plugins.form_elements.fields.integer', - 'fobi.contrib.plugins.form_elements.fields.password', - 'fobi.contrib.plugins.form_elements.fields.radio', - 'fobi.contrib.plugins.form_elements.fields.select', - 'fobi.contrib.plugins.form_elements.fields.select_model_object', - 'fobi.contrib.plugins.form_elements.fields.select_multiple', - 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', - 'fobi.contrib.plugins.form_elements.fields.text', - 'fobi.contrib.plugins.form_elements.fields.textarea', - 'fobi.contrib.plugins.form_elements.fields.url', - + "fobi.contrib.plugins.form_elements.fields.boolean", + "fobi.contrib.plugins.form_elements.fields.date", + "fobi.contrib.plugins.form_elements.fields.datetime", + "fobi.contrib.plugins.form_elements.fields.email", + "fobi.contrib.plugins.form_elements.fields.file", + "fobi.contrib.plugins.form_elements.fields.hidden", + "fobi.contrib.plugins.form_elements.fields.integer", + "fobi.contrib.plugins.form_elements.fields.password", + "fobi.contrib.plugins.form_elements.fields.radio", + "fobi.contrib.plugins.form_elements.fields.select", + "fobi.contrib.plugins.form_elements.fields.select_model_object", + "fobi.contrib.plugins.form_elements.fields.select_multiple", + "fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects", + "fobi.contrib.plugins.form_elements.fields.text", + "fobi.contrib.plugins.form_elements.fields.textarea", + "fobi.contrib.plugins.form_elements.fields.url", # Form element plugins - 'easy_thumbnails', # Required by `content_image` plugin - 'fobi.contrib.plugins.form_elements.content.content_image', - 'fobi.contrib.plugins.form_elements.content.content_text', - 'fobi.contrib.plugins.form_elements.content.content_video', - + "easy_thumbnails", # Required by `content_image` plugin + "fobi.contrib.plugins.form_elements.content.content_image", + "fobi.contrib.plugins.form_elements.content.content_text", + "fobi.contrib.plugins.form_elements.content.content_video", # Form handlers - 'fobi.contrib.plugins.form_handlers.db_store', - 'fobi.contrib.plugins.form_handlers.http_repost', - 'fobi.contrib.plugins.form_handlers.mail', + "fobi.contrib.plugins.form_handlers.db_store", + "fobi.contrib.plugins.form_handlers.http_repost", + "fobi.contrib.plugins.form_handlers.mail", ) MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.auth.middleware.SessionAuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", ) TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.contrib.auth.context_processors.auth', - 'django.core.context_processors.debug', - 'django.core.context_processors.i18n', - 'django.core.context_processors.media', - 'django.core.context_processors.static', - 'django.core.context_processors.tz', - 'django.contrib.messages.context_processors.messages', - - # Required by ``fobi``. - "django.core.context_processors.request", - "fobi.context_processors.theme", + "django.contrib.auth.context_processors.auth", + "django.core.context_processors.debug", + "django.core.context_processors.i18n", + "django.core.context_processors.media", + "django.core.context_processors.static", + "django.core.context_processors.tz", + "django.contrib.messages.context_processors.messages", + # Required by ``fobi``. + "django.core.context_processors.request", + "fobi.context_processors.theme", ) FOBI_RESTRICT_PLUGIN_ACCESS = False -ROOT_URLCONF = 'quick_start.urls' +ROOT_URLCONF = "quick_start.urls" -WSGI_APPLICATION = 'quick_start.wsgi.application' +WSGI_APPLICATION = "quick_start.wsgi.application" # Database # https://docs.djangoproject.com/en/1.7/ref/settings/#databases DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + "default": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": os.path.join(BASE_DIR, "db.sqlite3"), } } # Internationalization # https://docs.djangoproject.com/en/1.7/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = "en-us" -TIME_ZONE = 'UTC' +TIME_ZONE = "UTC" USE_I18N = True @@ -131,8 +128,8 @@ # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.7/howto/static-files/ -STATIC_URL = '/static/' +STATIC_URL = "/static/" MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', + "fobi": "fobi.migrations", } diff --git a/examples/quick_start/quick_start/urls.py b/examples/quick_start/quick_start/urls.py index 1d9bb6520..892438d41 100644 --- a/examples/quick_start/quick_start/urls.py +++ b/examples/quick_start/quick_start/urls.py @@ -1,23 +1,21 @@ -from django.urls import include, re_path as url from django.contrib import admin +from django.urls import include, re_path as url urlpatterns = [ # Examples: # url(r'^$', 'quick_start.views.home', name='home'), # url(r'^blog/', include('blog.urls')), - - url(r'^admin/', include(admin.site.urls)), - + url(r"^admin/", include(admin.site.urls)), # DB Store plugin URLs - url(r'^fobi/plugins/form-handlers/db-store/', - include('fobi.contrib.plugins.form_handlers.db_store.urls')), - #, namespace='fobi' - + url( + r"^fobi/plugins/form-handlers/db-store/", + include("fobi.contrib.plugins.form_handlers.db_store.urls"), + ), + # , namespace='fobi' # View URLs - url(r'^fobi/', include('fobi.urls.view')), - #, namespace='fobi' - + url(r"^fobi/", include("fobi.urls.view")), + # , namespace='fobi' # Edit URLs - url(r'^fobi/', include('fobi.urls.edit')), - #, namespace='fobi' + url(r"^fobi/", include("fobi.urls.edit")), + # , namespace='fobi' ] diff --git a/examples/quick_start/quick_start/wsgi.py b/examples/quick_start/quick_start/wsgi.py index ed9d9ba6d..b8cfe7e24 100644 --- a/examples/quick_start/quick_start/wsgi.py +++ b/examples/quick_start/quick_start/wsgi.py @@ -8,7 +8,9 @@ """ import os + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "quick_start.settings") from django.core.wsgi import get_wsgi_application + application = get_wsgi_application() diff --git a/examples/simple/admin_tools_dashboard/__init__.py b/examples/simple/admin_tools_dashboard/__init__.py index 71eb183e9..ebcffa790 100644 --- a/examples/simple/admin_tools_dashboard/__init__.py +++ b/examples/simple/admin_tools_dashboard/__init__.py @@ -10,14 +10,14 @@ ADMIN_TOOLS_APP_INDEX_DASHBOARD = \ 'admin_tools_dashboard.CustomAppIndexDashboard' """ +from admin_tools.dashboard import AppIndexDashboard, Dashboard, modules from django.conf import settings from django.utils.translation import gettext_lazy as _ -from admin_tools.dashboard import modules, Dashboard, AppIndexDashboard -# from admin_tools.utils import get_admin_site_name - from . import conf +# from admin_tools.utils import get_admin_site_name + class CustomIndexDashboard(Dashboard): """Custom index dashboard.""" @@ -38,91 +38,91 @@ def init_with_context(self, context): # Fobi self.children.append( modules.Group( - title=_('Fobi'), - display='stacked', + title=_("Fobi"), + display="stacked", children=[ modules.ModelList( - _('Plugins'), + _("Plugins"), models=conf.fobi_plugins, collapsible=False, - deletable=False + deletable=False, ), modules.ModelList( - _('Forms'), + _("Forms"), models=conf.fobi_forms, collapsible=False, - deletable=False + deletable=False, ), modules.ModelList( - _('Data'), + _("Data"), models=conf.fobi_data, collapsible=False, - deletable=False + deletable=False, ), - ] + ], ) ) - if 'feincms' in settings.INSTALLED_APPS: + if "feincms" in settings.INSTALLED_APPS: # FeinCMS pages self.children.append( modules.AppList( - _('FeinCMS Pages'), + _("FeinCMS Pages"), models=conf.feincms_pages, collapsible=False, - deletable=False + deletable=False, ) ) - if 'cms' in settings.INSTALLED_APPS: + if "cms" in settings.INSTALLED_APPS: # DjangoCMS pages self.children.append( modules.AppList( - _('DjangoCMS Pages'), + _("DjangoCMS Pages"), models=conf.djangocms_pages, collapsible=False, - deletable=False + deletable=False, ) ) # Append an app list module for "Administration" self.children.append( modules.AppList( - _('Administration'), + _("Administration"), models=conf.django_contrib_apps, collapsible=False, - deletable=False + deletable=False, ) ) # Append an app list module for "Administration" self.children.append( modules.AppList( - _('Other apps'), + _("Other apps"), models=conf.other_apps, collapsible=False, - deletable=False + deletable=False, ) ) # Append a recent actions module - self.children.append(modules.RecentActions(_('Recent Actions'), 10)) + self.children.append(modules.RecentActions(_("Recent Actions"), 10)) class CustomAppIndexDashboard(AppIndexDashboard): """Custom app index dashboard.""" # We disable title because its redundant with the model list module - title = '' + title = "" def __init__(self, *args, **kwargs): AppIndexDashboard.__init__(self, *args, **kwargs) self.children.append( modules.RecentActions( - _('Recent Actions'), + _("Recent Actions"), include_list=self.get_app_content_types(), - limit=10 + limit=10, ) ) diff --git a/examples/simple/admin_tools_dashboard/conf.py b/examples/simple/admin_tools_dashboard/conf.py index 193e9d83f..c86dbc7c7 100644 --- a/examples/simple/admin_tools_dashboard/conf.py +++ b/examples/simple/admin_tools_dashboard/conf.py @@ -2,42 +2,39 @@ # ************ Foo ************** # ******************************* foo_apps = [ - 'foo.models.*', - 'bar.models.*', + "foo.models.*", + "bar.models.*", ] # ******************************* # ************ Fobi ************* # ******************************* -fobi_plugins = [ - 'fobi.models.FormElement', - 'fobi.models.FormHandler' -] +fobi_plugins = ["fobi.models.FormElement", "fobi.models.FormHandler"] fobi_forms = [ - 'fobi.models.FormWizardEntry', - 'fobi.models.FormEntry', - 'fobi.models.FormElementEntry', - 'fobi.models.FormFieldsetEntry', - 'fobi.models.FormHandlerEntry', + "fobi.models.FormWizardEntry", + "fobi.models.FormEntry", + "fobi.models.FormElementEntry", + "fobi.models.FormFieldsetEntry", + "fobi.models.FormHandlerEntry", ] fobi_data = [ - 'fobi.contrib.plugins.form_handlers.db_store.models.*', + "fobi.contrib.plugins.form_handlers.db_store.models.*", ] feincms_pages = [ - 'page.*', + "page.*", ] djangocms_pages = [ - 'cms.models.*', + "cms.models.*", ] # ******************************* # ************ Django *********** # ******************************* django_contrib_apps = [ - 'django.contrib.*', + "django.contrib.*", ] other_apps = foo_apps diff --git a/examples/simple/admin_tools_dashboard/management/commands/clear_dashboard_preferences.py b/examples/simple/admin_tools_dashboard/management/commands/clear_dashboard_preferences.py index e3f98c679..3e3d2dcf5 100644 --- a/examples/simple/admin_tools_dashboard/management/commands/clear_dashboard_preferences.py +++ b/examples/simple/admin_tools_dashboard/management/commands/clear_dashboard_preferences.py @@ -1,8 +1,7 @@ -from django.core.management import BaseCommand - from admin_tools.dashboard.models import DashboardPreferences +from django.core.management import BaseCommand -__all__ = ('Command',) +__all__ = ("Command",) class Command(BaseCommand): diff --git a/examples/simple/admin_tools_dashboard/menu.py b/examples/simple/admin_tools_dashboard/menu.py index 64d74fdda..f37cd15e9 100644 --- a/examples/simple/admin_tools_dashboard/menu.py +++ b/examples/simple/admin_tools_dashboard/menu.py @@ -6,15 +6,14 @@ ADMIN_TOOLS_MENU = 'admin_tools_dashboard.menu.CustomMenu' """ +from admin_tools.menu import Menu, items from django.conf import settings from django.core.urlresolvers import reverse from django.utils.translation import gettext_lazy as _ -from admin_tools.menu import items, Menu - from . import conf -__all__ = ('CustomMenu',) +__all__ = ("CustomMenu",) class CustomMenu(Menu): @@ -23,53 +22,39 @@ class CustomMenu(Menu): def __init__(self, **kwargs): Menu.__init__(self, **kwargs) self.children += [ - items.MenuItem(_('Dashboard'), reverse('admin:index')), + items.MenuItem(_("Dashboard"), reverse("admin:index")), ] # Foo - self.children.append( - items.ModelList( - _('Foo'), - models=conf.foo_apps - ) - ) + self.children.append(items.ModelList(_("Foo"), models=conf.foo_apps)) # Fobi self.children.append( items.MenuItem( - _('Fobi'), + _("Fobi"), children=[ - items.ModelList(_('Plugins'), models=conf.fobi_plugins), - items.ModelList(_('Forms'), models=conf.fobi_forms), - items.ModelList(_('Data'), models=conf.fobi_data), - ] + items.ModelList(_("Plugins"), models=conf.fobi_plugins), + items.ModelList(_("Forms"), models=conf.fobi_forms), + items.ModelList(_("Data"), models=conf.fobi_data), + ], ) ) - if 'feincms' in settings.INSTALLED_APPS: + if "feincms" in settings.INSTALLED_APPS: # FeinCMS pages integration self.children.append( - items.AppList( - _('FeinCMS Pages'), - models=conf.feincms_pages - ) + items.AppList(_("FeinCMS Pages"), models=conf.feincms_pages) ) - if 'cms' in settings.INSTALLED_APPS: + if "cms" in settings.INSTALLED_APPS: # DjangoCMS pages integration self.children.append( - items.AppList( - _('DjangoCMS Pages'), - models=conf.djangocms_pages - ) + items.AppList(_("DjangoCMS Pages"), models=conf.djangocms_pages) ) # append an app list module for "Administration" self.children.append( - items.AppList( - _('Administration'), - models=['django.contrib.*'] - ) + items.AppList(_("Administration"), models=["django.contrib.*"]) ) def init_with_context(self, context): diff --git a/examples/simple/bar/admin.py b/examples/simple/bar/admin.py index a014062a6..1c6562618 100644 --- a/examples/simple/bar/admin.py +++ b/examples/simple/bar/admin.py @@ -1,5 +1,4 @@ from django.contrib import admin - from mptt.admin import MPTTModelAdmin from .models import Genre diff --git a/examples/simple/bar/models.py b/examples/simple/bar/models.py index a96a43174..8514184a2 100644 --- a/examples/simple/bar/models.py +++ b/examples/simple/bar/models.py @@ -1,10 +1,8 @@ -from six import python_2_unicode_compatible - from django.db import models - from mptt.models import MPTTModel, TreeForeignKey +from six import python_2_unicode_compatible -__all__ = ('Genre',) +__all__ = ("Genre",) @python_2_unicode_compatible @@ -12,14 +10,15 @@ class Genre(MPTTModel): """Genre.""" name = models.CharField(max_length=50, unique=True) - parent = TreeForeignKey('self', null=True, blank=True, - related_name='children', db_index=True) + parent = TreeForeignKey( + "self", null=True, blank=True, related_name="children", db_index=True + ) class MPTTMeta: """MPTT meta.""" # level_attr = 'mptt_level' - order_insertion_by = ['name'] + order_insertion_by = ["name"] def __str__(self): return self.name diff --git a/examples/simple/bar/urls.py b/examples/simple/bar/urls.py index b89ef10ef..770bc8507 100644 --- a/examples/simple/bar/urls.py +++ b/examples/simple/bar/urls.py @@ -4,5 +4,5 @@ from .views import my_view urlpatterns = [ - url(_(r'^$'), my_view, name='bar.my_view'), + url(_(r"^$"), my_view, name="bar.my_view"), ] diff --git a/examples/simple/bar/views.py b/examples/simple/bar/views.py index ba8a18d7d..56c28d2e1 100644 --- a/examples/simple/bar/views.py +++ b/examples/simple/bar/views.py @@ -4,11 +4,11 @@ def my_view(request): - if request.method == 'POST': + if request.method == "POST": form = MyForm(data=request.POST) else: form = MyForm() - context = {'form': form} + context = {"form": form} - return render(request, 'bar/form.html', context) + return render(request, "bar/form.html", context) diff --git a/examples/simple/cms_addons/context_processors.py b/examples/simple/cms_addons/context_processors.py index 28cd3fd91..799b6d97a 100644 --- a/examples/simple/cms_addons/context_processors.py +++ b/examples/simple/cms_addons/context_processors.py @@ -6,6 +6,6 @@ def cms_version(request): return { - 'CMS_VERSION_GT_3_0': CMS_VERSION_GT_3_0, - 'CMS_VERSION_LTE_3_0': CMS_VERSION_LTE_3_0, + "CMS_VERSION_GT_3_0": CMS_VERSION_GT_3_0, + "CMS_VERSION_LTE_3_0": CMS_VERSION_LTE_3_0, } diff --git a/examples/simple/context_processors.py b/examples/simple/context_processors.py index 25aad7c54..71449ab5a 100644 --- a/examples/simple/context_processors.py +++ b/examples/simple/context_processors.py @@ -1,13 +1,16 @@ from django.conf import settings -__all__ = ('disable_admin_tools', 'testing',) +__all__ = ( + "disable_admin_tools", + "testing", +) def disable_admin_tools(request): """Disable admin tools.""" - return {'ADMIN_TOOLS_DISABLED': True} + return {"ADMIN_TOOLS_DISABLED": True} def testing(request): """Put `testing` into context.""" - return {'testing': settings.TESTING} + return {"testing": settings.TESTING} diff --git a/examples/simple/customauth/admin.py b/examples/simple/customauth/admin.py index 56aea2a9d..13dace33d 100644 --- a/examples/simple/customauth/admin.py +++ b/examples/simple/customauth/admin.py @@ -1,15 +1,15 @@ from django import forms from django.contrib import admin -from django.contrib.auth.models import Group from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import ReadOnlyPasswordHashField +from django.contrib.auth.models import Group from .models import MyUser __all__ = ( - 'UserCreationForm', - 'UserChangeForm', - 'MyUserAdmin', + "UserCreationForm", + "UserChangeForm", + "MyUserAdmin", ) @@ -19,17 +19,22 @@ class UserCreationForm(forms.ModelForm): Includes all the required fields, plus a repeated password. """ - password1 = forms.CharField(label='Password', - widget=forms.PasswordInput) - password2 = forms.CharField(label='Password confirmation', - widget=forms.PasswordInput) + password1 = forms.CharField(label="Password", widget=forms.PasswordInput) + password2 = forms.CharField( + label="Password confirmation", widget=forms.PasswordInput + ) class Meta: """Meta.""" model = MyUser - fields = ('username', 'email', 'first_name', 'last_name', - 'date_of_birth',) + fields = ( + "username", + "email", + "first_name", + "last_name", + "date_of_birth", + ) def clean_password2(self): # Check that the two password entries match @@ -61,8 +66,15 @@ class Meta: """Meta.""" model = MyUser - fields = ('username', 'email', 'first_name', 'last_name', 'password', - 'date_of_birth', 'is_active',) + fields = ( + "username", + "email", + "first_name", + "last_name", + "password", + "date_of_birth", + "is_active", + ) def clean_password(self): # Regardless of what the user provides, return the initial value. @@ -81,24 +93,59 @@ class MyUserAdmin(UserAdmin): # The fields to be used in displaying the User model. # These override the definitions on the base UserAdmin # that reference specific fields on auth.User. - list_display = ('username', 'email', 'first_name', 'last_name', - 'date_of_birth',) + list_display = ( + "username", + "email", + "first_name", + "last_name", + "date_of_birth", + ) fieldsets = ( - (None, {'fields': ('username', 'email', 'password')}), - ('Personal info', {'fields': ('first_name', 'last_name', - 'date_of_birth',)}), - ('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', - 'groups', 'user_permissions')}), + (None, {"fields": ("username", "email", "password")}), + ( + "Personal info", + { + "fields": ( + "first_name", + "last_name", + "date_of_birth", + ) + }, + ), + ( + "Permissions", + { + "fields": ( + "is_active", + "is_staff", + "is_superuser", + "groups", + "user_permissions", + ) + }, + ), ) # add_fieldsets is not a standard ModelAdmin attribute. UserAdmin # overrides get_fieldsets to use this attribute when creating a user. add_fieldsets = ( - (None, {'classes': ('wide',), - 'fields': ('username', 'email', 'first_name', 'last_name', - 'date_of_birth', 'password1', 'password2')}), + ( + None, + { + "classes": ("wide",), + "fields": ( + "username", + "email", + "first_name", + "last_name", + "date_of_birth", + "password1", + "password2", + ), + }, + ), ) - search_fields = ('email',) - ordering = ('email',) + search_fields = ("email",) + ordering = ("email",) filter_horizontal = [] diff --git a/examples/simple/customauth/models.py b/examples/simple/customauth/models.py index ebd93f22f..d9269b96b 100644 --- a/examples/simple/customauth/models.py +++ b/examples/simple/customauth/models.py @@ -1,7 +1,7 @@ -from django.db import models from django.contrib.auth.models import AbstractUser +from django.db import models -__all__ = ('MyUser',) +__all__ = ("MyUser",) class MyUser(AbstractUser): diff --git a/examples/simple/factories/__init__.py b/examples/simple/factories/__init__.py index 06f0591c7..568610110 100644 --- a/examples/simple/factories/__init__.py +++ b/examples/simple/factories/__init__.py @@ -1,4 +1,5 @@ from .auth_user import * from .medialibrary_mediafile import * from .page_page import * + # from .sites_site import * diff --git a/examples/simple/factories/auth_user.py b/examples/simple/factories/auth_user.py index f4a3d2d8c..a5305a48d 100644 --- a/examples/simple/factories/auth_user.py +++ b/examples/simple/factories/auth_user.py @@ -1,36 +1,33 @@ from django.conf import settings - -from factory import ( - PostGenerationMethodCall, Sequence -) +from factory import PostGenerationMethodCall, Sequence from factory.django import DjangoModelFactory from .factory_faker import Faker __all__ = ( - 'TEST_USERNAME', - 'TEST_PASSWORD', - 'AbstractUserFactory', - 'InactiveUserFactory', - 'UserFactory', - 'StaffUserFactory', - 'SuperuserUserFactory', - 'SuperAdminUserFactory', - 'TestUsernameSuperAdminUserFactory', + "TEST_USERNAME", + "TEST_PASSWORD", + "AbstractUserFactory", + "InactiveUserFactory", + "UserFactory", + "StaffUserFactory", + "SuperuserUserFactory", + "SuperAdminUserFactory", + "TestUsernameSuperAdminUserFactory", ) -TEST_USERNAME = 'test_user' -TEST_PASSWORD = 'test_password' +TEST_USERNAME = "test_user" +TEST_PASSWORD = "test_password" class AbstractUserFactory(DjangoModelFactory): """Abstract factory for creating users.""" - password = PostGenerationMethodCall('set_password', TEST_PASSWORD) - username = Sequence(lambda n: 'user%d' % n) - first_name = Faker('first_name') - last_name = Faker('last_name') - email = Faker('email') + password = PostGenerationMethodCall("set_password", TEST_PASSWORD) + username = Sequence(lambda n: "user%d" % n) + first_name = Faker("first_name") + last_name = Faker("last_name") + email = Faker("email") is_active = False is_staff = False @@ -38,7 +35,7 @@ class AbstractUserFactory(DjangoModelFactory): class Meta: model = settings.AUTH_USER_MODEL - django_get_or_create = ('username',) + django_get_or_create = ("username",) abstract = True diff --git a/examples/simple/factories/factory_faker.py b/examples/simple/factories/factory_faker.py index 6f4794cc8..00c6e92d9 100644 --- a/examples/simple/factories/factory_faker.py +++ b/examples/simple/factories/factory_faker.py @@ -1,24 +1,22 @@ from __future__ import unicode_literals from django.core.files.base import File - from factory import Faker as OriginalFaker - from faker import Faker as FakerFaker from faker.generator import random from faker.providers import BaseProvider -from faker.providers.phone_number import Provider as PhoneNumberProvider from faker.providers.person.nl_NL import Provider as PersonProvider +from faker.providers.phone_number import Provider as PhoneNumberProvider from .files import get_temporary_file -__all__ = ('Faker',) +__all__ = ("Faker",) class Faker(OriginalFaker): """Override to change the default locale.""" - _DEFAULT_LOCALE = 'nl_NL' + _DEFAULT_LOCALE = "nl_NL" class SpacelessPostalcodeProvider(BaseProvider): @@ -26,16 +24,14 @@ class SpacelessPostalcodeProvider(BaseProvider): def postcode_spaceless(self): """Spaceless postal code.""" - return self.bothify('%###??').upper() + return self.bothify("%###??").upper() class NLPhoneNumberProvider(PhoneNumberProvider): """Phone number provider `compatible django.contrib.localflavor.nl`.""" + # NLPhoneNumberField validates with max=12 - formats = ('### ### ####', - '##########', - '###-#######', - '+31#########') + formats = ("### ### ####", "##########", "###-#######", "+31#########") class NLPersonProvider(PersonProvider): @@ -43,6 +39,7 @@ class NLPersonProvider(PersonProvider): Overridden to make it compatible with our database model. """ + last_names = [n for n in PersonProvider.last_names if len(n) <= 30] @@ -50,8 +47,8 @@ class PyStrWithPrefixProvider(BaseProvider): """pystr with prefix provider.""" @classmethod - def pystr_with_prefix(cls, min_chars=None, max_chars=20, prefix=''): - """ Generates a random string of upper and lowercase letters. + def pystr_with_prefix(cls, min_chars=None, max_chars=20, prefix=""): + """Generates a random string of upper and lowercase letters. :type min_chars: int :type max_chars: int @@ -61,13 +58,14 @@ def pystr_with_prefix(cls, min_chars=None, max_chars=20, prefix=''): if min_chars is None: return "".join(cls.random_letter() for i in range(max_chars)) else: - assert (max_chars >= min_chars), "Maximum length must be " \ - "greater than or equal to " \ - "minium length" + assert max_chars >= min_chars, ( + "Maximum length must be " + "greater than or equal to " + "minium length" + ) pystr = "".join( cls.random_letter() - for i - in range(0, random.randint(min_chars, max_chars)) + for i in range(0, random.randint(min_chars, max_chars)) ) return "%s%s" % (prefix, pystr) @@ -93,8 +91,9 @@ def words_with_prefix(cls, nb=3): return [cls.word_with_prefix() for _ in range(0, nb)] @classmethod - def sentence_with_prefix(cls, nb_words=6, variable_nb_words=True, - prefix=''): + def sentence_with_prefix( + cls, nb_words=6, variable_nb_words=True, prefix="" + ): """Generate a random sentence. :example: 'Lorem ipsum dolor sit amet.'. @@ -104,7 +103,7 @@ def sentence_with_prefix(cls, nb_words=6, variable_nb_words=True, of 1. """ if nb_words <= 0: - return '' + return "" if variable_nb_words: nb_words = cls.randomize_nb_elements(nb_words) @@ -112,7 +111,7 @@ def sentence_with_prefix(cls, nb_words=6, variable_nb_words=True, words = cls.words_with_prefix(nb_words) words[0] = words[0].title() - sentence = " ".join(words) + '.' + sentence = " ".join(words) + "." return "%s%s" % (prefix, sentence) @@ -122,7 +121,7 @@ class DjangoFile(BaseProvider): @classmethod def django_file(cls, extension=None): - """ Generates a random image file. + """Generates a random image file. :return: File object. """ @@ -134,7 +133,7 @@ def django_file(cls, extension=None): Faker.add_provider(SpacelessPostalcodeProvider) Faker.add_provider(NLPhoneNumberProvider) -Faker.add_provider(NLPersonProvider, locale='nl_NL') -Faker.add_provider(PyStrWithPrefixProvider, locale='la') -Faker.add_provider(LoremWithPrefixProvider, locale='la') +Faker.add_provider(NLPersonProvider, locale="nl_NL") +Faker.add_provider(PyStrWithPrefixProvider, locale="la") +Faker.add_provider(LoremWithPrefixProvider, locale="la") Faker.add_provider(DjangoFile) diff --git a/examples/simple/factories/files.py b/examples/simple/factories/files.py index 57577b266..699bf6f9d 100644 --- a/examples/simple/factories/files.py +++ b/examples/simple/factories/files.py @@ -5,25 +5,25 @@ from six import BytesIO __all__ = ( - 'BASE64_PREFIX', - 'TEMPORARY_FILE_LIST', - 'TEMPORARY_FILE_LIST_FILE_CONTENT', - 'TEMPORARY_FILE_LIST_FILE_BASE64', - 'TEMPORARY_FILE_VIEW', - 'TEMPORARY_FILE_VIEW_FILE_CONTENT', - 'TEMPORARY_FILE_VIEW_FILE_BASE64', - 'TEMPORARY_FILE_ADD', - 'TEMPORARY_FILE_ADD_FILE_CONTENT', - 'TEMPORARY_FILE_ADD_FILE_BASE64', - 'TEMPORARY_FILE_CHANGE', - 'TEMPORARY_FILE_CHANGE_FILE_CONTENT', - 'TEMPORARY_FILE_CHANGE_FILE_BASE64', - 'TEMPORARY_FILE_CHANGE_CHANGED', - 'TEMPORARY_FILE_CHANGE_CHANGED_FILE_CONTENT', - 'TEMPORARY_FILE_CHANGE_CHANGED_FILE_BASE64', - 'TEMPORARY_FILE_DELETE', - 'TEMPORARY_FILE_DELETE_FILE_CONTENT', - 'TEMPORARY_FILE_DELETE_FILE_BASE64', + "BASE64_PREFIX", + "TEMPORARY_FILE_LIST", + "TEMPORARY_FILE_LIST_FILE_CONTENT", + "TEMPORARY_FILE_LIST_FILE_BASE64", + "TEMPORARY_FILE_VIEW", + "TEMPORARY_FILE_VIEW_FILE_CONTENT", + "TEMPORARY_FILE_VIEW_FILE_BASE64", + "TEMPORARY_FILE_ADD", + "TEMPORARY_FILE_ADD_FILE_CONTENT", + "TEMPORARY_FILE_ADD_FILE_BASE64", + "TEMPORARY_FILE_CHANGE", + "TEMPORARY_FILE_CHANGE_FILE_CONTENT", + "TEMPORARY_FILE_CHANGE_FILE_BASE64", + "TEMPORARY_FILE_CHANGE_CHANGED", + "TEMPORARY_FILE_CHANGE_CHANGED_FILE_CONTENT", + "TEMPORARY_FILE_CHANGE_CHANGED_FILE_BASE64", + "TEMPORARY_FILE_DELETE", + "TEMPORARY_FILE_DELETE_FILE_CONTENT", + "TEMPORARY_FILE_DELETE_FILE_BASE64", ) @@ -32,56 +32,60 @@ def get_temporary_file(prefix): :return: """ - image = Image.new('RGBA', size=(100, 100), color=(256, 0, 0)) + image = Image.new("RGBA", size=(100, 100), color=(256, 0, 0)) tmp_file = BytesIO() - _tmp_file = tempfile.NamedTemporaryFile(prefix=prefix, suffix='.png') + _tmp_file = tempfile.NamedTemporaryFile(prefix=prefix, suffix=".png") image.save(tmp_file, "PNG") tmp_file.seek(0) tmp_file.name = _tmp_file.name return tmp_file -BASE64_PREFIX = 'data:image/png;base64,' +BASE64_PREFIX = "data:image/png;base64," -TEMPORARY_FILE_LIST = get_temporary_file(prefix='LIST') +TEMPORARY_FILE_LIST = get_temporary_file(prefix="LIST") TEMPORARY_FILE_LIST_FILE_CONTENT = TEMPORARY_FILE_LIST.read() -TEMPORARY_FILE_LIST_FILE_BASE64 = BASE64_PREFIX + base64.b64encode( - TEMPORARY_FILE_LIST_FILE_CONTENT -).decode() +TEMPORARY_FILE_LIST_FILE_BASE64 = ( + BASE64_PREFIX + base64.b64encode(TEMPORARY_FILE_LIST_FILE_CONTENT).decode() +) TEMPORARY_FILE_LIST.seek(0) -TEMPORARY_FILE_VIEW = get_temporary_file(prefix='VIEW') +TEMPORARY_FILE_VIEW = get_temporary_file(prefix="VIEW") TEMPORARY_FILE_VIEW_FILE_CONTENT = TEMPORARY_FILE_VIEW.read() -TEMPORARY_FILE_VIEW_FILE_BASE64 = BASE64_PREFIX + base64.b64encode( - TEMPORARY_FILE_VIEW_FILE_CONTENT -).decode() +TEMPORARY_FILE_VIEW_FILE_BASE64 = ( + BASE64_PREFIX + base64.b64encode(TEMPORARY_FILE_VIEW_FILE_CONTENT).decode() +) TEMPORARY_FILE_VIEW.seek(0) -TEMPORARY_FILE_ADD = get_temporary_file(prefix='ADD') +TEMPORARY_FILE_ADD = get_temporary_file(prefix="ADD") TEMPORARY_FILE_ADD_FILE_CONTENT = TEMPORARY_FILE_ADD.read() -TEMPORARY_FILE_ADD_FILE_BASE64 = BASE64_PREFIX + base64.b64encode( - TEMPORARY_FILE_ADD_FILE_CONTENT -).decode() +TEMPORARY_FILE_ADD_FILE_BASE64 = ( + BASE64_PREFIX + base64.b64encode(TEMPORARY_FILE_ADD_FILE_CONTENT).decode() +) TEMPORARY_FILE_ADD.seek(0) -TEMPORARY_FILE_CHANGE = get_temporary_file(prefix='CHANGE') +TEMPORARY_FILE_CHANGE = get_temporary_file(prefix="CHANGE") TEMPORARY_FILE_CHANGE_FILE_CONTENT = TEMPORARY_FILE_CHANGE.read() -TEMPORARY_FILE_CHANGE_FILE_BASE64 = BASE64_PREFIX + base64.b64encode( - TEMPORARY_FILE_CHANGE_FILE_CONTENT -).decode() +TEMPORARY_FILE_CHANGE_FILE_BASE64 = ( + BASE64_PREFIX + + base64.b64encode(TEMPORARY_FILE_CHANGE_FILE_CONTENT).decode() +) TEMPORARY_FILE_CHANGE.seek(0) -TEMPORARY_FILE_CHANGE_CHANGED = get_temporary_file(prefix='CHANGE_CHANGED') -TEMPORARY_FILE_CHANGE_CHANGED_FILE_CONTENT = \ +TEMPORARY_FILE_CHANGE_CHANGED = get_temporary_file(prefix="CHANGE_CHANGED") +TEMPORARY_FILE_CHANGE_CHANGED_FILE_CONTENT = ( TEMPORARY_FILE_CHANGE_CHANGED.read() -TEMPORARY_FILE_CHANGE_CHANGED_FILE_BASE64 = BASE64_PREFIX + base64.b64encode( - TEMPORARY_FILE_CHANGE_CHANGED_FILE_CONTENT -).decode() +) +TEMPORARY_FILE_CHANGE_CHANGED_FILE_BASE64 = ( + BASE64_PREFIX + + base64.b64encode(TEMPORARY_FILE_CHANGE_CHANGED_FILE_CONTENT).decode() +) TEMPORARY_FILE_CHANGE_CHANGED.seek(0) -TEMPORARY_FILE_DELETE = get_temporary_file(prefix='DELETE') +TEMPORARY_FILE_DELETE = get_temporary_file(prefix="DELETE") TEMPORARY_FILE_DELETE_FILE_CONTENT = TEMPORARY_FILE_DELETE.read() -TEMPORARY_FILE_DELETE_FILE_BASE64 = BASE64_PREFIX + base64.b64encode( - TEMPORARY_FILE_DELETE_FILE_CONTENT -).decode() +TEMPORARY_FILE_DELETE_FILE_BASE64 = ( + BASE64_PREFIX + + base64.b64encode(TEMPORARY_FILE_DELETE_FILE_CONTENT).decode() +) TEMPORARY_FILE_DELETE.seek(0) diff --git a/examples/simple/factories/fobi_form_entry.py b/examples/simple/factories/fobi_form_entry.py index b78d27293..5badac4a7 100644 --- a/examples/simple/factories/fobi_form_entry.py +++ b/examples/simple/factories/fobi_form_entry.py @@ -1,17 +1,17 @@ from factory.django import DjangoModelFactory -from fobi.models import FormEntry - from .factory_faker import Faker -__all__ = ('FormEntryFactory',) +from fobi.models import FormEntry + +__all__ = ("FormEntryFactory",) class BaseFormEntryFactory(DjangoModelFactory): """Factory for creating a site.""" - domain = Faker('domain_name') - name = Faker('domain_name') + domain = Faker("domain_name") + name = Faker("domain_name") class Meta(object): """Options.""" diff --git a/examples/simple/factories/medialibrary_mediafile.py b/examples/simple/factories/medialibrary_mediafile.py index 639587fcf..c41d1fd47 100644 --- a/examples/simple/factories/medialibrary_mediafile.py +++ b/examples/simple/factories/medialibrary_mediafile.py @@ -1,41 +1,40 @@ from factory.django import DjangoModelFactory from factory.fuzzy import FuzzyChoice - from feincms.module.medialibrary.models import MediaFile from .factory_faker import Faker __all__ = ( - 'ImageMediaFileFactory', - 'MediaFileFactory', - 'TextMediaFileFactory', - 'VideoMediaFileFactory', + "ImageMediaFileFactory", + "MediaFileFactory", + "TextMediaFileFactory", + "VideoMediaFileFactory", ) class MediaFileFactory(DjangoModelFactory): """MediaFile factory.""" - file = Faker('django_file') + file = Faker("django_file") type = FuzzyChoice( [ - 'image', - 'video', - 'pdf', - 'audio', - 'swf', - 'txt', - 'rtf', - 'zip', - 'doc', - 'xls', - 'ppt', - 'other', + "image", + "video", + "pdf", + "audio", + "swf", + "txt", + "rtf", + "zip", + "doc", + "xls", + "ppt", + "other", ] ) - created = Faker('date_time_ad') - copyright = Faker('name') - file_size = Faker('pyint') + created = Faker("date_time_ad") + copyright = Faker("name") + file_size = Faker("pyint") class Meta(object): """Meta options.""" @@ -46,19 +45,19 @@ class Meta(object): class VideoMediaFileFactory(MediaFileFactory): """Video.""" - file = Faker('django_file', extension='video') - type = 'video' + file = Faker("django_file", extension="video") + type = "video" class ImageMediaFileFactory(MediaFileFactory): """Image.""" - file = Faker('django_file', extension='image') - type = 'image' + file = Faker("django_file", extension="image") + type = "image" class TextMediaFileFactory(MediaFileFactory): """Text.""" - file = Faker('django_file', extension='text') - type = 'txt' + file = Faker("django_file", extension="text") + type = "txt" diff --git a/examples/simple/factories/mixins.py b/examples/simple/factories/mixins.py index 22a05b2a5..bc0b0f55a 100644 --- a/examples/simple/factories/mixins.py +++ b/examples/simple/factories/mixins.py @@ -2,19 +2,18 @@ import random from django.utils.text import slugify - from factory import LazyAttribute from factory.django import DjangoModelFactory from .factory_faker import Faker __all__ = ( - 'FeincmsBaseMixinFactory', - 'TimeStampedMixinFactory', - 'SortableMixinFactory', - 'PublishedContentMixinFactory', - 'OrderedContentMixinFactory', - 'ContentMixinFactory', + "FeincmsBaseMixinFactory", + "TimeStampedMixinFactory", + "SortableMixinFactory", + "PublishedContentMixinFactory", + "OrderedContentMixinFactory", + "ContentMixinFactory", ) @@ -30,11 +29,10 @@ class Meta(object): class TimeStampedMixinFactory(DjangoModelFactory): """Mixin for time stamped model.""" - created_date = Faker('date_time') + created_date = Faker("date_time") modified_date = LazyAttribute( - lambda __x: __x.created_date + datetime.timedelta( - days=random.randint(1, 100) - ) + lambda __x: __x.created_date + + datetime.timedelta(days=random.randint(1, 100)) ) publish_date = datetime.datetime.now() - datetime.timedelta(days=1) @@ -47,7 +45,7 @@ class Meta(object): class SortableMixinFactory(DjangoModelFactory): """Sortable mixin factory.""" - order = Faker('pyint') + order = Faker("pyint") class Meta(object): """Meta class.""" @@ -78,12 +76,14 @@ class Meta(object): abstract = True -class BaseContentMixinFactory(FeincmsBaseMixinFactory, - TimeStampedMixinFactory, - PublishedContentMixinFactory): +class BaseContentMixinFactory( + FeincmsBaseMixinFactory, + TimeStampedMixinFactory, + PublishedContentMixinFactory, +): """BaseContentMixinFactory.""" - title = Faker('text', max_nb_chars=100) + title = Faker("text", max_nb_chars=100) slug = LazyAttribute(lambda obj: slugify(obj.title)[:100]) class Meta(object): @@ -101,8 +101,7 @@ class Meta(object): abstract = True -class ContentMixinFactory(BaseContentMixinFactory, - DjangoContentMixinFactory): +class ContentMixinFactory(BaseContentMixinFactory, DjangoContentMixinFactory): """ContentMixinFactory.""" class Meta(object): diff --git a/examples/simple/factories/page_page.py b/examples/simple/factories/page_page.py index fa99a77fe..92d5f82f9 100644 --- a/examples/simple/factories/page_page.py +++ b/examples/simple/factories/page_page.py @@ -1,40 +1,32 @@ import logging from django.utils.text import slugify - -from factory import ( - LazyAttribute, - SubFactory, - post_generation, -) +from factory import LazyAttribute, SubFactory, post_generation from factory.django import DjangoModelFactory from factory.fuzzy import FuzzyChoice - -from fobi.tests.helpers import create_form_with_entries - from page.models import Page from .factory_faker import Faker +from fobi.tests.helpers import create_form_with_entries + logger = logging.getLogger(__name__) __all__ = ( - 'TEMPLATE_KEYS', - 'PageFactory', - 'FobiFormPageFactory', + "TEMPLATE_KEYS", + "PageFactory", + "FobiFormPageFactory", ) -TEMPLATE_DEFAULT = 'page/base.html' +TEMPLATE_DEFAULT = "page/base.html" -TEMPLATE_KEYS = ( - TEMPLATE_DEFAULT, -) +TEMPLATE_KEYS = (TEMPLATE_DEFAULT,) class BasePageFactory(DjangoModelFactory): """Base page factory.""" - title = Faker('text', max_nb_chars=200) + title = Faker("text", max_nb_chars=200) slug = LazyAttribute(lambda __x: slugify(__x.title)) active = True in_navigation = FuzzyChoice([True, False]) @@ -55,7 +47,7 @@ class PageFactory(BasePageFactory): class HomePageFactory(BasePageFactory): """Home page factory.""" - override_url = '/' + override_url = "/" title = "Home" slug = "home" @@ -63,7 +55,7 @@ class Meta(object): """Meta class.""" model = Page - django_get_or_create = ('slug',) + django_get_or_create = ("slug",) class FobiFormPageFactory(BasePageFactory): @@ -76,7 +68,7 @@ class Meta(object): """Meta class.""" model = Page - django_get_or_create = ('slug',) + django_get_or_create = ("slug",) @post_generation def fobi_form_content(obj, created, extracted, **kwargs): @@ -85,7 +77,5 @@ def fobi_form_content(obj, created, extracted, **kwargs): if created: form_entry = create_form_with_entries(is_public=True) obj.content.item.fobiformwidget_set.model.objects.create( - parent=obj, - region='main', - form_entry=form_entry + parent=obj, region="main", form_entry=form_entry ) diff --git a/examples/simple/factories/sites_site.py b/examples/simple/factories/sites_site.py index f08c18b2c..a366d2220 100644 --- a/examples/simple/factories/sites_site.py +++ b/examples/simple/factories/sites_site.py @@ -1,18 +1,20 @@ -from factory.django import DjangoModelFactory - from django.conf import settings from django.contrib.sites.models import Site +from factory.django import DjangoModelFactory from .factory_faker import Faker -__all__ = ('SiteFactory', 'DefaultSiteFactory',) +__all__ = ( + "SiteFactory", + "DefaultSiteFactory", +) class SiteFactory(DjangoModelFactory): """Factory for creating a site.""" - domain = Faker('domain_name') - name = Faker('domain_name') + domain = Faker("domain_name") + name = Faker("domain_name") class Meta: model = Site @@ -27,4 +29,4 @@ class Meta: """Meta class.""" model = Site - django_get_or_create = ('id',) + django_get_or_create = ("id",) diff --git a/examples/simple/foo/fobi_form_callbacks.py b/examples/simple/foo/fobi_form_callbacks.py index e262c8875..ff6dc8c08 100644 --- a/examples/simple/foo/fobi_form_callbacks.py +++ b/examples/simple/foo/fobi_form_callbacks.py @@ -3,12 +3,11 @@ import logging from fobi.base import ( - form_callback_registry, FormCallback, - integration_form_callback_registry, IntegrationFormCallback, + form_callback_registry, + integration_form_callback_registry, ) - from fobi.constants import ( CALLBACK_BEFORE_FORM_VALIDATION, CALLBACK_FORM_INVALID, @@ -16,8 +15,8 @@ CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) - from fobi.contrib.apps.drf_integration import UID as INTEGRATE_WITH + # from fobi.contrib.plugins.form_handlers.db_store.callbacks import ( # AutoFormDbStore # ) @@ -25,11 +24,11 @@ # AutoFormMail # ) -logger = logging.getLogger('fobi') +logger = logging.getLogger("fobi") __all__ = ( - 'SaveAsFooItem', - 'DummyInvalidCallback', + "SaveAsFooItem", + "DummyInvalidCallback", ) # ************************************************************* diff --git a/examples/simple/foo/management/commands/fobi_create_test_data.py b/examples/simple/foo/management/commands/fobi_create_test_data.py index ce3391b05..56bb9d0ed 100644 --- a/examples/simple/foo/management/commands/fobi_create_test_data.py +++ b/examples/simple/foo/management/commands/fobi_create_test_data.py @@ -1,11 +1,11 @@ from django.core.management.base import BaseCommand from fobi.tests.helpers import ( + create_form_with_entries, get_or_create_admin_user, - create_form_with_entries ) -__all__ = ('Command',) +__all__ = ("Command",) class Command(BaseCommand): diff --git a/examples/simple/foo/models.py b/examples/simple/foo/models.py index f0747194b..b0732bdd7 100644 --- a/examples/simple/foo/models.py +++ b/examples/simple/foo/models.py @@ -1,9 +1,9 @@ from django.db import models -__all__ = ('FileTest',) +__all__ = ("FileTest",) class FileTest(models.Model): """File test.""" - file = models.FileField(upload_to='foo/') + file = models.FileField(upload_to="foo/") diff --git a/examples/simple/foo/urls.py b/examples/simple/foo/urls.py index 46b71b2f8..be5f1ad97 100644 --- a/examples/simple/foo/urls.py +++ b/examples/simple/foo/urls.py @@ -1,14 +1,11 @@ from django.urls import re_path as url -from .views import ( - endpoint as foo_views_endpoint, - forms_list as foo_forms_list -) +from .views import endpoint as foo_views_endpoint, forms_list as foo_forms_list -__all__ = ('urlpatterns',) +__all__ = ("urlpatterns",) urlpatterns = [ - url(r'^endpoint/$', view=foo_views_endpoint, name='foo.endpoint'), - url(r'^forms-list/$', view=foo_forms_list, name='foo.forms_list'), + url(r"^endpoint/$", view=foo_views_endpoint, name="foo.endpoint"), + url(r"^forms-list/$", view=foo_forms_list, name="foo.forms_list"), ] diff --git a/examples/simple/foo/views.py b/examples/simple/foo/views.py index 72c1ed9da..a17c04ebb 100644 --- a/examples/simple/foo/views.py +++ b/examples/simple/foo/views.py @@ -2,21 +2,20 @@ import uuid from django.http import HttpResponse +from django.shortcuts import render from django.template import RequestContext from django.views.decorators.csrf import csrf_exempt -from django.shortcuts import render +from django_nine import versions from fobi.base import get_theme from fobi.helpers import handle_uploaded_file from fobi.models import FormEntry -from django_nine import versions - -logger = logging.getLogger('fobi') +logger = logging.getLogger("fobi") __all__ = ( - 'endpoint', - 'forms_list', + "endpoint", + "forms_list", ) @@ -30,30 +29,31 @@ def endpoint(request): logger.debug("POST: {0}\nFILES: {1}".format(request.POST, request.FILES)) for field_name, imf in request.FILES.items(): - handle_uploaded_file('foo', "{0}".format(uuid.uuid4())) + handle_uploaded_file("foo", "{0}".format(uuid.uuid4())) return HttpResponse( "POST: {0}\nFILES: {1}".format(request.POST, request.FILES) ) -def forms_list(request, template_name='foo/forms_list.html'): +def forms_list(request, template_name="foo/forms_list.html"): """Fobi forms list. :param django.http.HttpRequest request: :param string template_name: :return django.http.HttpResponse: """ - form_entries = FormEntry._default_manager.filter(is_public=True) \ - .select_related('user') + form_entries = FormEntry._default_manager.filter( + is_public=True + ).select_related("user") theme = get_theme(request=request, as_instance=True) context = { - 'form_entries': form_entries, - 'theme': theme, - 'show_custom_actions': False, - 'show_edit_link': False, - 'show_delete_link': False, - 'show_export_link': False, + "form_entries": form_entries, + "theme": theme, + "show_custom_actions": False, + "show_edit_link": False, + "show_delete_link": False, + "show_export_link": False, } return render(request, template_name, context) diff --git a/examples/simple/foreign_key_to_saved_form_data_entry/admin.py b/examples/simple/foreign_key_to_saved_form_data_entry/admin.py index 9b19ca1f2..57ca7b798 100644 --- a/examples/simple/foreign_key_to_saved_form_data_entry/admin.py +++ b/examples/simple/foreign_key_to_saved_form_data_entry/admin.py @@ -3,14 +3,14 @@ from .models import SavedFormDataEntryReference -__all__ = ('SavedFormDataEntryReferenceAdmin',) +__all__ = ("SavedFormDataEntryReferenceAdmin",) class SavedFormDataEntryReferenceAdmin(admin.ModelAdmin): - list_display = ('form',) + list_display = ("form",) class Meta: - app_label = _('ForeignKey to db_store.SavedFormDataEntry') + app_label = _("ForeignKey to db_store.SavedFormDataEntry") admin.site.register( diff --git a/examples/simple/foreign_key_to_saved_form_data_entry/models.py b/examples/simple/foreign_key_to_saved_form_data_entry/models.py index 161b2daf8..9bd758413 100644 --- a/examples/simple/foreign_key_to_saved_form_data_entry/models.py +++ b/examples/simple/foreign_key_to_saved_form_data_entry/models.py @@ -1,8 +1,7 @@ -from six import python_2_unicode_compatible - from django.db import models +from six import python_2_unicode_compatible -__all__ = ('SavedFormDataEntryReference',) +__all__ = ("SavedFormDataEntryReference",) @python_2_unicode_compatible @@ -14,7 +13,7 @@ class SavedFormDataEntryReference(models.Model): """ form = models.ForeignKey( - 'fobi_contrib_plugins_form_handlers_db_store.SavedFormDataEntry' + "fobi_contrib_plugins_form_handlers_db_store.SavedFormDataEntry" ) def __str__(self): diff --git a/examples/simple/override_radio_plugin/fobi_form_elements.py b/examples/simple/override_radio_plugin/fobi_form_elements.py index f8e39d8da..fbf0711be 100644 --- a/examples/simple/override_radio_plugin/fobi_form_elements.py +++ b/examples/simple/override_radio_plugin/fobi_form_elements.py @@ -2,15 +2,15 @@ from django.forms.widgets import RadioSelect from django.utils.translation import gettext_lazy as _ +from .forms import RadioInputForm + from fobi.base import FormFieldPlugin, form_element_plugin_registry, get_theme from fobi.contrib.plugins.form_elements.fields.radio import UID -from fobi.helpers import safe_text, get_select_field_choices - -from .forms import RadioInputForm +from fobi.helpers import get_select_field_choices, safe_text theme = get_theme(request=None, as_instance=True) -__all__ = ('RadioInputPlugin',) +__all__ = ("RadioInputPlugin",) class RadioInputPlugin(FormFieldPlugin): @@ -21,25 +21,27 @@ class RadioInputPlugin(FormFieldPlugin): group = _("Fields") form = RadioInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" choices = get_select_field_choices(self.data.choices) - widget_attrs = {'class': theme.form_radio_element_html_class} + widget_attrs = {"class": theme.form_radio_element_html_class} field_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), + "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, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of @@ -53,7 +55,7 @@ def submit_plugin_form_data(self, form_entry, request, form, if value: choices = dict(get_select_field_choices(self.data.choices)) # Handle the submitted form value - value = '{0}'.format(safe_text(choices.get(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 diff --git a/examples/simple/override_radio_plugin/forms.py b/examples/simple/override_radio_plugin/forms.py index 3bdaaadc9..6d1baf633 100644 --- a/examples/simple/override_radio_plugin/forms.py +++ b/examples/simple/override_radio_plugin/forms.py @@ -6,7 +6,7 @@ theme = get_theme(request=None, as_instance=True) -__all__ = ('RadioInputForm',) +__all__ = ("RadioInputForm",) class RadioInputForm(forms.Form, BaseFormFieldPluginForm): @@ -18,76 +18,78 @@ class RadioInputForm(forms.Form, BaseFormFieldPluginForm): ("choices", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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>' - "
"), + 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} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Validating the initial value.""" - return validate_initial_for_choices(self, 'choices', 'initial') + return validate_initial_for_choices(self, "choices", "initial") diff --git a/examples/simple/override_select_model_object_plugin/fobi_form_elements.py b/examples/simple/override_select_model_object_plugin/fobi_form_elements.py index c57c77ac6..f4cfd81d3 100644 --- a/examples/simple/override_select_model_object_plugin/fobi_form_elements.py +++ b/examples/simple/override_select_model_object_plugin/fobi_form_elements.py @@ -3,15 +3,15 @@ from django.forms.widgets import Select from django.utils.translation import gettext_lazy as _ +from .forms import SelectModelObjectInputForm + from fobi.base import FormFieldPlugin, form_element_plugin_registry, get_theme from fobi.contrib.plugins.form_elements.fields.select_model_object import UID from fobi.helpers import safe_text -from .forms import SelectModelObjectInputForm - theme = get_theme(request=None, as_instance=True) -__all__ = ('SelectModelObjectInputPlugin',) +__all__ = ("SelectModelObjectInputPlugin",) class SelectModelObjectInputPlugin(FormFieldPlugin): @@ -22,26 +22,28 @@ class SelectModelObjectInputPlugin(FormFieldPlugin): group = _("Fields") form = SelectModelObjectInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" - app_label, model_name = self.data.model.split('.') + app_label, model_name = self.data.model.split(".") model = models.get_model(app_label, model_name) queryset = model._default_manager.all() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'queryset': queryset, - 'widget': Select(attrs={'class': theme.form_element_html_class}), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "queryset": queryset, + "widget": Select(attrs={"class": theme.form_element_html_class}), } return [(self.data.name, ModelChoiceField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of @@ -53,7 +55,7 @@ def submit_plugin_form_data(self, form_entry, request, form, obj = form.cleaned_data.get(self.data.name, None) if obj: # Handle the submitted form value - value = '{0}'.format(safe_text(obj)) + value = "{0}".format(safe_text(obj)) # Overwrite ``cleaned_data`` of the ``form`` with object qualifier. form.cleaned_data[self.data.name] = value diff --git a/examples/simple/override_select_model_object_plugin/forms.py b/examples/simple/override_select_model_object_plugin/forms.py index 8652484e1..0e37e59f3 100644 --- a/examples/simple/override_select_model_object_plugin/forms.py +++ b/examples/simple/override_select_model_object_plugin/forms.py @@ -2,13 +2,14 @@ from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme +from fobi.contrib.plugins.form_elements.fields.select_model_object.settings import ( + IGNORED_MODELS, +) from fobi.helpers import get_registered_models -from fobi.contrib.plugins.form_elements.fields.select_model_object.settings \ - import IGNORED_MODELS theme = get_theme(request=None, as_instance=True) -__all__ = ('SelectModelObjectInputForm',) +__all__ = ("SelectModelObjectInputForm",) class SelectModelObjectInputForm(forms.Form, BaseFormFieldPluginForm): @@ -20,56 +21,56 @@ class SelectModelObjectInputForm(forms.Form, BaseFormFieldPluginForm): ("model", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) model = forms.ChoiceField( label=_("Model"), choices=[], required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def __init__(self, *args, **kwargs): """In order to avoid static calls to `get_registered_models`.""" super(SelectModelObjectInputForm, self).__init__(*args, **kwargs) - self.fields['model'].choices = get_registered_models( + self.fields["model"].choices = get_registered_models( ignore=IGNORED_MODELS ) diff --git a/examples/simple/override_simple_theme/fobi_themes.py b/examples/simple/override_simple_theme/fobi_themes.py index 67c9b1434..7da0167f0 100644 --- a/examples/simple/override_simple_theme/fobi_themes.py +++ b/examples/simple/override_simple_theme/fobi_themes.py @@ -1,18 +1,18 @@ from fobi.base import theme_registry - from fobi.contrib.themes.simple.fobi_themes import SimpleTheme -__all__ = ('MySimpleTheme',) +__all__ = ("MySimpleTheme",) class MySimpleTheme(SimpleTheme): """Overriding the "simple" theme.""" - html_classes = ['my-simple-theme'] - base_view_template = 'override_simple_theme/base_view.html' - form_ajax = 'override_simple_theme/snippets/form_ajax.html' - form_snippet_template_name = \ - 'override_simple_theme/snippets/form_snippet.html' + html_classes = ["my-simple-theme"] + base_view_template = "override_simple_theme/base_view.html" + form_ajax = "override_simple_theme/snippets/form_ajax.html" + form_snippet_template_name = ( + "override_simple_theme/snippets/form_snippet.html" + ) # It's important to set the `force` argument to True, in diff --git a/examples/simple/page/admin.py b/examples/simple/page/admin.py index a47eda510..e7a7dd242 100644 --- a/examples/simple/page/admin.py +++ b/examples/simple/page/admin.py @@ -1,7 +1,5 @@ from django.contrib import admin - from feincms.module.page.modeladmins import PageAdmin - from page.models import Page admin.site.register(Page, PageAdmin) diff --git a/examples/simple/page/models.py b/examples/simple/page/models.py index 08be712a0..e633fc499 100644 --- a/examples/simple/page/models.py +++ b/examples/simple/page/models.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from feincms.content.raw.models import RawContent from feincms.content.richtext.models import RichTextContent from feincms.module.page.models import Page @@ -7,18 +6,20 @@ # Import the ``django-fobi`` widget. from fobi.contrib.apps.feincms_integration.widgets import FobiFormWidget -Page.register_extensions('feincms.module.extensions.translations',) +Page.register_extensions( + "feincms.module.extensions.translations", +) # Register basic template. Page.register_templates( { - 'title': _(u"Base template"), - 'path': 'page/base.html', - 'key': 'page_base', - 'regions': ( - ('main', _(u"Main")), - ('sidebar', _(u"Sidebar")), - ) + "title": _("Base template"), + "path": "page/base.html", + "key": "page_base", + "regions": ( + ("main", _("Main")), + ("sidebar", _("Sidebar")), + ), }, ) diff --git a/examples/simple/registration_addons/forms.py b/examples/simple/registration_addons/forms.py index 64f3f9aa9..47b91cc0e 100644 --- a/examples/simple/registration_addons/forms.py +++ b/examples/simple/registration_addons/forms.py @@ -1,5 +1,4 @@ from captcha.fields import CaptchaField - from django_nine.versions import DJANGO_GTE_3_0 if DJANGO_GTE_3_0: diff --git a/examples/simple/settings/alternative_labels.py b/examples/simple/settings/alternative_labels.py index 309a4a3e7..ed71f519b 100644 --- a/examples/simple/settings/alternative_labels.py +++ b/examples/simple/settings/alternative_labels.py @@ -1,8 +1,9 @@ import os + from .base import * LOCALE_PATHS = [ - os.path.abspath(os.path.join(BASE_DIR, 'fobi_locale')), - os.path.abspath(os.path.join(BASE_DIR, 'locale')), + os.path.abspath(os.path.join(BASE_DIR, "fobi_locale")), + os.path.abspath(os.path.join(BASE_DIR, "locale")), ] FOBI_SORT_PLUGINS_BY_VALUE = True diff --git a/examples/simple/settings/base.py b/examples/simple/settings/base.py index 64dffa097..88c7d9ad9 100644 --- a/examples/simple/settings/base.py +++ b/examples/simple/settings/base.py @@ -1,16 +1,13 @@ # Django settings for example project. import os -from django_nine.versions import ( - DJANGO_GTE_3_0, - DJANGO_GTE_2_0, - DJANGO_GTE_1_11, -) + +from django_nine.versions import DJANGO_GTE_1_11, DJANGO_GTE_2_0, DJANGO_GTE_3_0 from selenium import webdriver def project_dir(base): return os.path.abspath( - os.path.join(os.path.dirname(__file__), base).replace('\\', '/') + os.path.join(os.path.dirname(__file__), base).replace("\\", "/") ) @@ -35,19 +32,19 @@ def gettext(s): MANAGERS = ADMINS DATABASES = { - 'default': { + "default": { # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'ENGINE': 'django.db.backends.sqlite3', + "ENGINE": "django.db.backends.sqlite3", # Or path to database file if using sqlite3. - 'NAME': PROJECT_DIR('../../db/example.db'), + "NAME": PROJECT_DIR("../../db/example.db"), # The following settings are not used with sqlite3: - 'USER': '', - 'PASSWORD': '', + "USER": "", + "PASSWORD": "", # Empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. - 'HOST': '', + "HOST": "", # Set to empty string for default. - 'PORT': '', + "PORT": "", } } @@ -59,19 +56,19 @@ def gettext(s): # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # In a Windows environment this must be set to your system time zone. -TIME_ZONE = 'America/Chicago' +TIME_ZONE = "America/Chicago" # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" LANGUAGES = ( - ('en', gettext("English")), # Main language! - ('hy', gettext("Armenian")), - ('nl', gettext("Dutch")), - ('ru', gettext("Russian")), - ('de', gettext("German")), - ('fr', gettext("French")), + ("en", gettext("English")), # Main language! + ("hy", gettext("Armenian")), + ("nl", gettext("Dutch")), + ("ru", gettext("Russian")), + ("de", gettext("German")), + ("fr", gettext("French")), ) SITE_ID = 1 @@ -90,41 +87,41 @@ def gettext(s): # Absolute filesystem path to the directory that will hold user-uploaded # files. # Example: "/var/www/example.com/media/" -MEDIA_ROOT = PROJECT_DIR(os.path.join('..', '..', 'media')) +MEDIA_ROOT = PROJECT_DIR(os.path.join("..", "..", "media")) # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. # Examples: "http://example.com/media/", "http://media.example.com/" -MEDIA_URL = '/media/' +MEDIA_URL = "/media/" # Absolute path to the directory static files should be collected to. # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/var/www/example.com/static/" -STATIC_ROOT = PROJECT_DIR(os.path.join('..', '..', 'static')) +STATIC_ROOT = PROJECT_DIR(os.path.join("..", "..", "static")) # URL prefix for static files. # Example: "http://example.com/static/", "http://static.example.com/" -STATIC_URL = '/static/' +STATIC_URL = "/static/" # Additional locations of static files STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. - PROJECT_DIR(os.path.join('..', '..', 'media', 'static')), + PROJECT_DIR(os.path.join("..", "..", "media", "static")), ) # List of finder classes that know how to find static files in # various locations. STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + "django.contrib.staticfiles.finders.FileSystemFinder", + "django.contrib.staticfiles.finders.AppDirectoriesFinder", # 'django.contrib.staticfiles.finders.DefaultStorageFinder', ) # Make this unique, and don't share it with anybody. -SECRET_KEY = '97818c*w97Zi8a-m^1coRRrmurMI6+q5_kyn*)s@(*_Pk6q423' +SECRET_KEY = "97818c*w97Zi8a-m^1coRRrmurMI6+q5_kyn*)s@(*_Pk6q423" try: from .local_settings import DEBUG_TEMPLATE @@ -132,50 +129,50 @@ def gettext(s): DEBUG_TEMPLATE = False TEMPLATES = [ - { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - # 'APP_DIRS': True, - 'DIRS': [PROJECT_DIR(os.path.join('..', 'templates'))], - 'OPTIONS': { - 'context_processors': [ - "django.template.context_processors.debug", - 'django.template.context_processors.request', - "django.contrib.auth.context_processors.auth", - # "django.core.context_processors.i18n", - # "django.core.context_processors.media", - # "django.core.context_processors.static", - # "django.core.context_processors.tz", - "django.contrib.messages.context_processors.messages", - "fobi.context_processors.theme", # Important! - "fobi.context_processors.dynamic_values", # Optional - "context_processors.testing", # Testing - ], - 'loaders': [ - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - # 'django.template.loaders.eggs.Loader', - 'admin_tools.template_loaders.Loader', - ], - 'debug': DEBUG_TEMPLATE, - } + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + # 'APP_DIRS': True, + "DIRS": [PROJECT_DIR(os.path.join("..", "templates"))], + "OPTIONS": { + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + # "django.core.context_processors.i18n", + # "django.core.context_processors.media", + # "django.core.context_processors.static", + # "django.core.context_processors.tz", + "django.contrib.messages.context_processors.messages", + "fobi.context_processors.theme", # Important! + "fobi.context_processors.dynamic_values", # Optional + "context_processors.testing", # Testing + ], + "loaders": [ + "django.template.loaders.filesystem.Loader", + "django.template.loaders.app_directories.Loader", + # 'django.template.loaders.eggs.Loader', + "admin_tools.template_loaders.Loader", + ], + "debug": DEBUG_TEMPLATE, }, - ] + }, +] # Final declaration of the middleware is done on the bottom of this file _MIDDLEWARE = [ - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] -ROOT_URLCONF = 'urls' +ROOT_URLCONF = "urls" # Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = 'wsgi.application' +WSGI_APPLICATION = "wsgi.application" # FIXTURE_DIRS = ( # PROJECT_DIR(os.path.join('..', 'fixtures')) @@ -183,256 +180,235 @@ def gettext(s): INSTALLED_APPS = [ # Admin dashboard - 'admin_tools', - 'admin_tools.menu', - 'admin_tools.dashboard', - + "admin_tools", + "admin_tools.menu", + "admin_tools.dashboard", # Django core and contrib apps - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.contrib.admin', - 'django.contrib.sitemaps', - + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.sites", + "django.contrib.messages", + "django.contrib.staticfiles", + "django.contrib.admin", + "django.contrib.sitemaps", # Third party apps used in the project - 'easy_thumbnails', # Thumbnailer + "easy_thumbnails", # Thumbnailer # Auth views and registration app - 'django_registration' if DJANGO_GTE_3_0 else 'registration', - 'captcha', - 'ckeditor', - 'fobi.reusable.markdown_widget', + "django_registration" if DJANGO_GTE_3_0 else "registration", + "captcha", + "ckeditor", + "fobi.reusable.markdown_widget", # 'ckeditor_uploader', - # *********************************************************************** # *********************************************************************** # **************************** Fobi core ******************************** # *********************************************************************** # *********************************************************************** - 'fobi', - + "fobi", # *********************************************************************** # *********************************************************************** # ************************* Fobi form elements ************************** # *********************************************************************** # *********************************************************************** - # *********************************************************************** # **************************** Form fields ****************************** # *********************************************************************** # 'fobi.contrib.plugins.form_elements.fields.birthday', - 'fobi.contrib.plugins.form_elements.fields.boolean', - 'fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple', - 'fobi.contrib.plugins.form_elements.fields.date', - 'fobi.contrib.plugins.form_elements.fields.date_drop_down', - 'fobi.contrib.plugins.form_elements.fields.datetime', - 'fobi.contrib.plugins.form_elements.fields.decimal', - 'fobi.contrib.plugins.form_elements.fields.duration', - 'fobi.contrib.plugins.form_elements.fields.email', - 'fobi.contrib.plugins.form_elements.fields.file', - 'fobi.contrib.plugins.form_elements.fields.float', - 'fobi.contrib.plugins.form_elements.fields.hidden', + "fobi.contrib.plugins.form_elements.fields.boolean", + "fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple", + "fobi.contrib.plugins.form_elements.fields.date", + "fobi.contrib.plugins.form_elements.fields.date_drop_down", + "fobi.contrib.plugins.form_elements.fields.datetime", + "fobi.contrib.plugins.form_elements.fields.decimal", + "fobi.contrib.plugins.form_elements.fields.duration", + "fobi.contrib.plugins.form_elements.fields.email", + "fobi.contrib.plugins.form_elements.fields.file", + "fobi.contrib.plugins.form_elements.fields.float", + "fobi.contrib.plugins.form_elements.fields.hidden", # 'fobi.contrib.plugins.form_elements.fields.hidden_model_object', - 'fobi.contrib.plugins.form_elements.fields.input', - 'fobi.contrib.plugins.form_elements.fields.integer', - 'fobi.contrib.plugins.form_elements.fields.ip_address', - 'fobi.contrib.plugins.form_elements.fields.null_boolean', - 'fobi.contrib.plugins.form_elements.fields.password', - 'fobi.contrib.plugins.form_elements.fields.radio', - 'fobi.contrib.plugins.form_elements.fields.range_select', - 'fobi.contrib.plugins.form_elements.fields.regex', - 'fobi.contrib.plugins.form_elements.fields.select', - 'fobi.contrib.plugins.form_elements.fields.select_model_object', - 'fobi.contrib.plugins.form_elements.fields.select_multiple', - 'fobi.contrib.plugins.form_elements.fields.select_multiple_with_max', - 'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', - 'fobi.contrib.plugins.form_elements.fields.slider', - 'fobi.contrib.plugins.form_elements.fields.slug', - 'fobi.contrib.plugins.form_elements.fields.text', - 'fobi.contrib.plugins.form_elements.fields.textarea', - 'fobi.contrib.plugins.form_elements.fields.time', - 'fobi.contrib.plugins.form_elements.fields.url', - + "fobi.contrib.plugins.form_elements.fields.input", + "fobi.contrib.plugins.form_elements.fields.integer", + "fobi.contrib.plugins.form_elements.fields.ip_address", + "fobi.contrib.plugins.form_elements.fields.null_boolean", + "fobi.contrib.plugins.form_elements.fields.password", + "fobi.contrib.plugins.form_elements.fields.radio", + "fobi.contrib.plugins.form_elements.fields.range_select", + "fobi.contrib.plugins.form_elements.fields.regex", + "fobi.contrib.plugins.form_elements.fields.select", + "fobi.contrib.plugins.form_elements.fields.select_model_object", + "fobi.contrib.plugins.form_elements.fields.select_multiple", + "fobi.contrib.plugins.form_elements.fields.select_multiple_with_max", + "fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects", + "fobi.contrib.plugins.form_elements.fields.slider", + "fobi.contrib.plugins.form_elements.fields.slug", + "fobi.contrib.plugins.form_elements.fields.text", + "fobi.contrib.plugins.form_elements.fields.textarea", + "fobi.contrib.plugins.form_elements.fields.time", + "fobi.contrib.plugins.form_elements.fields.url", # *********************************************************************** # ************************ Security elements **************************** # *********************************************************************** - 'fobi.contrib.plugins.form_elements.security.honeypot', - 'fobi.contrib.plugins.form_elements.security.invisible_recaptcha', - + "fobi.contrib.plugins.form_elements.security.honeypot", + "fobi.contrib.plugins.form_elements.security.invisible_recaptcha", # *********************************************************************** # ************************* Testing elements **************************** # *********************************************************************** - 'fobi.contrib.plugins.form_elements.test.dummy', - + "fobi.contrib.plugins.form_elements.test.dummy", # *********************************************************************** # ************************* Content elements **************************** # *********************************************************************** - 'fobi.contrib.plugins.form_elements.content.content_image', - 'fobi.contrib.plugins.form_elements.content.content_image_url', - 'fobi.contrib.plugins.form_elements.content.content_markdown', - 'fobi.contrib.plugins.form_elements.content.content_text', - 'fobi.contrib.plugins.form_elements.content.content_richtext', - 'fobi.contrib.plugins.form_elements.content.content_video', - + "fobi.contrib.plugins.form_elements.content.content_image", + "fobi.contrib.plugins.form_elements.content.content_image_url", + "fobi.contrib.plugins.form_elements.content.content_markdown", + "fobi.contrib.plugins.form_elements.content.content_text", + "fobi.contrib.plugins.form_elements.content.content_richtext", + "fobi.contrib.plugins.form_elements.content.content_video", # *********************************************************************** # *********************************************************************** # ************************* Fobi form handlers ************************** # *********************************************************************** # *********************************************************************** - 'fobi.contrib.plugins.form_handlers.db_store', - 'fobi.contrib.plugins.form_handlers.http_repost', - 'fobi.contrib.plugins.form_handlers.mail', - 'fobi.contrib.plugins.form_handlers.mail_sender', - + "fobi.contrib.plugins.form_handlers.db_store", + "fobi.contrib.plugins.form_handlers.http_repost", + "fobi.contrib.plugins.form_handlers.mail", + "fobi.contrib.plugins.form_handlers.mail_sender", # *********************************************************************** # *********************************************************************** # ************************* Fobi form importers ************************* # *********************************************************************** # *********************************************************************** - 'fobi.contrib.plugins.form_importers.mailchimp_importer', - + "fobi.contrib.plugins.form_importers.mailchimp_importer", # *********************************************************************** # *********************************************************************** # ************************** Fobi themes ******************************** # *********************************************************************** # *********************************************************************** - # *********************************************************************** # ************************ Bootstrap 3 theme **************************** # *********************************************************************** - 'fobi.contrib.themes.bootstrap3', # Bootstrap 3 theme - + "fobi.contrib.themes.bootstrap3", # Bootstrap 3 theme # DateTime widget - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.datetime_bootstrap3_widget', # NOQA - - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.date_bootstrap3_widget', # NOQA - + "fobi.contrib.themes.bootstrap3.widgets.form_elements.datetime_bootstrap3_widget", # NOQA + "fobi.contrib.themes.bootstrap3.widgets.form_elements.date_bootstrap3_widget", # NOQA # Slider widget - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.slider_bootstrap3_widget', # NOQA - + "fobi.contrib.themes.bootstrap3.widgets.form_elements.slider_bootstrap3_widget", # NOQA # CKEditor widget - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.content_richtext_bootstrap3_widget', # NOQA - + "fobi.contrib.themes.bootstrap3.widgets.form_elements.content_richtext_bootstrap3_widget", # NOQA # Invisible reCAPTCHA widget - 'fobi.contrib.themes.bootstrap3.widgets.form_elements.invisible_recaptcha_bootstrap3_widget', # NOQA - + "fobi.contrib.themes.bootstrap3.widgets.form_elements.invisible_recaptcha_bootstrap3_widget", # NOQA # # Markdown # 'fobi.contrib.themes.bootstrap3.widgets.form_elements.content_markdown_bootstrap3_widget', # NOQA - # *********************************************************************** # ************************ Foundation 5 theme *************************** # *********************************************************************** - 'fobi.contrib.themes.foundation5', # Foundation 5 theme - - 'fobi.contrib.themes.foundation5.widgets.form_handlers.' - 'db_store_foundation5_widget', - + "fobi.contrib.themes.foundation5", # Foundation 5 theme + "fobi.contrib.themes.foundation5.widgets.form_handlers." + "db_store_foundation5_widget", # *********************************************************************** # **************************** Simple theme ***************************** # *********************************************************************** - 'fobi.contrib.themes.simple', # Simple theme - + "fobi.contrib.themes.simple", # Simple theme # *********************************************************************** # *********************************************************************** # ************************* Fobi form importers ************************* # *********************************************************************** # *********************************************************************** # 'fobi.contrib.plugins.form_importers.mailchimp_importer', - # *********************************************************************** # *********************************************************************** # ********************* Custom field instance plugins ******************* # *********************************************************************** # *********************************************************************** - # *********************************************************************** # ************************** DRF integration **************************** # *********************************************************************** - 'rest_framework', # Django REST framework - 'fobi.contrib.apps.drf_integration', # DRF integration app - + "rest_framework", # Django REST framework + "fobi.contrib.apps.drf_integration", # DRF integration app # Form fields - 'fobi.contrib.apps.drf_integration.form_elements.fields.boolean', - 'fobi.contrib.apps.drf_integration.form_elements.fields.checkbox_select_multiple', # NOQA - 'fobi.contrib.apps.drf_integration.form_elements.fields.date', - 'fobi.contrib.apps.drf_integration.form_elements.fields.date_drop_down', - 'fobi.contrib.apps.drf_integration.form_elements.fields.datetime', - 'fobi.contrib.apps.drf_integration.form_elements.fields.decimal', - 'fobi.contrib.apps.drf_integration.form_elements.fields.duration', - 'fobi.contrib.apps.drf_integration.form_elements.fields.email', - 'fobi.contrib.apps.drf_integration.form_elements.fields.file', - 'fobi.contrib.apps.drf_integration.form_elements.fields.float', - 'fobi.contrib.apps.drf_integration.form_elements.fields.hidden', - 'fobi.contrib.apps.drf_integration.form_elements.fields.input', - 'fobi.contrib.apps.drf_integration.form_elements.fields.integer', - 'fobi.contrib.apps.drf_integration.form_elements.fields.ip_address', - 'fobi.contrib.apps.drf_integration.form_elements.fields.null_boolean', - 'fobi.contrib.apps.drf_integration.form_elements.fields.password', - 'fobi.contrib.apps.drf_integration.form_elements.fields.radio', - 'fobi.contrib.apps.drf_integration.form_elements.fields.range_select', - 'fobi.contrib.apps.drf_integration.form_elements.fields.regex', - 'fobi.contrib.apps.drf_integration.form_elements.fields.select', + "fobi.contrib.apps.drf_integration.form_elements.fields.boolean", + "fobi.contrib.apps.drf_integration.form_elements.fields.checkbox_select_multiple", # NOQA + "fobi.contrib.apps.drf_integration.form_elements.fields.date", + "fobi.contrib.apps.drf_integration.form_elements.fields.date_drop_down", + "fobi.contrib.apps.drf_integration.form_elements.fields.datetime", + "fobi.contrib.apps.drf_integration.form_elements.fields.decimal", + "fobi.contrib.apps.drf_integration.form_elements.fields.duration", + "fobi.contrib.apps.drf_integration.form_elements.fields.email", + "fobi.contrib.apps.drf_integration.form_elements.fields.file", + "fobi.contrib.apps.drf_integration.form_elements.fields.float", + "fobi.contrib.apps.drf_integration.form_elements.fields.hidden", + "fobi.contrib.apps.drf_integration.form_elements.fields.input", + "fobi.contrib.apps.drf_integration.form_elements.fields.integer", + "fobi.contrib.apps.drf_integration.form_elements.fields.ip_address", + "fobi.contrib.apps.drf_integration.form_elements.fields.null_boolean", + "fobi.contrib.apps.drf_integration.form_elements.fields.password", + "fobi.contrib.apps.drf_integration.form_elements.fields.radio", + "fobi.contrib.apps.drf_integration.form_elements.fields.range_select", + "fobi.contrib.apps.drf_integration.form_elements.fields.regex", + "fobi.contrib.apps.drf_integration.form_elements.fields.select", # 'fobi.contrib.apps.drf_integration.form_elements.fields.select_model_object', # NOQA - 'fobi.contrib.apps.drf_integration.form_elements.fields.select_multiple', + "fobi.contrib.apps.drf_integration.form_elements.fields.select_multiple", # 'fobi.contrib.apps.drf_integration.form_elements.fields.select_multiple_model_objects', # NOQA - 'fobi.contrib.apps.drf_integration.form_elements.fields.select_multiple_with_max', # NOQA - 'fobi.contrib.apps.drf_integration.form_elements.fields.slider', - 'fobi.contrib.apps.drf_integration.form_elements.fields.slug', - 'fobi.contrib.apps.drf_integration.form_elements.fields.text', - 'fobi.contrib.apps.drf_integration.form_elements.fields.textarea', - 'fobi.contrib.apps.drf_integration.form_elements.fields.time', - 'fobi.contrib.apps.drf_integration.form_elements.fields.url', - + "fobi.contrib.apps.drf_integration.form_elements.fields.select_multiple_with_max", # NOQA + "fobi.contrib.apps.drf_integration.form_elements.fields.slider", + "fobi.contrib.apps.drf_integration.form_elements.fields.slug", + "fobi.contrib.apps.drf_integration.form_elements.fields.text", + "fobi.contrib.apps.drf_integration.form_elements.fields.textarea", + "fobi.contrib.apps.drf_integration.form_elements.fields.time", + "fobi.contrib.apps.drf_integration.form_elements.fields.url", # Presentational elements - 'fobi.contrib.apps.drf_integration.form_elements.content.content_image', - 'fobi.contrib.apps.drf_integration.form_elements.content.content_image_url', # NOQA - 'fobi.contrib.apps.drf_integration.form_elements.content.content_markdown', - 'fobi.contrib.apps.drf_integration.form_elements.content.content_richtext', - 'fobi.contrib.apps.drf_integration.form_elements.content.content_text', - 'fobi.contrib.apps.drf_integration.form_elements.content.content_video', - + "fobi.contrib.apps.drf_integration.form_elements.content.content_image", + "fobi.contrib.apps.drf_integration.form_elements.content.content_image_url", # NOQA + "fobi.contrib.apps.drf_integration.form_elements.content.content_markdown", + "fobi.contrib.apps.drf_integration.form_elements.content.content_richtext", + "fobi.contrib.apps.drf_integration.form_elements.content.content_text", + "fobi.contrib.apps.drf_integration.form_elements.content.content_video", # Form handlers - 'fobi.contrib.apps.drf_integration.form_handlers.db_store', - 'fobi.contrib.apps.drf_integration.form_handlers.mail', - 'fobi.contrib.apps.drf_integration.form_handlers.mail_sender', - 'fobi.contrib.apps.drf_integration.form_handlers.http_repost', - + "fobi.contrib.apps.drf_integration.form_handlers.db_store", + "fobi.contrib.apps.drf_integration.form_handlers.mail", + "fobi.contrib.apps.drf_integration.form_handlers.mail_sender", + "fobi.contrib.apps.drf_integration.form_handlers.http_repost", # *********************************************************************** # *********************************************************************** # *********************************************************************** - # Other project specific apps - 'foo', # Test app + "foo", # Test app ] -STATIC_ROOT = PROJECT_DIR(os.path.join('..', '..', 'static')) -CKEDITOR_UPLOAD_PATH = PROJECT_DIR( - os.path.join('..', '..', 'media', 'uploads') -) +STATIC_ROOT = PROJECT_DIR(os.path.join("..", "..", "static")) +CKEDITOR_UPLOAD_PATH = PROJECT_DIR(os.path.join("..", "..", "media", "uploads")) CKEDITOR_CONFIGS = { - 'default': { - 'toolbar': 'Custom', - 'toolbar_Custom': [ - ['Bold', 'Italic', 'Underline'], - ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', - 'HorizontalRule', '-', 'JustifyLeft', 'JustifyCenter', - 'JustifyRight', 'JustifyBlock'], - ['Link', 'Unlink', 'Image'], - ['Table'], - ['RemoveFormat'], + "default": { + "toolbar": "Custom", + "toolbar_Custom": [ + ["Bold", "Italic", "Underline"], + [ + "NumberedList", + "BulletedList", + "-", + "Outdent", + "Indent", + "HorizontalRule", + "-", + "JustifyLeft", + "JustifyCenter", + "JustifyRight", + "JustifyBlock", + ], + ["Link", "Unlink", "Image"], + ["Table"], + ["RemoveFormat"], ], # 'height': 300, - 'width': '100%', + "width": "100%", } } # LOGIN_URL = '/accounts/login/' # LOGIN_REDIRECT_URL = '/fobi/' # Important for passing the selenium tests -LOGIN_URL = '/en/login/' -LOGIN_REDIRECT_URL = '/en/fobi/' # Important for passing the selenium tests +LOGIN_URL = "/en/login/" +LOGIN_REDIRECT_URL = "/en/fobi/" # Important for passing the selenium tests # LOGIN_URL = '/accounts/login/' # LOGIN_ERROR_URL = '/accounts/login/' @@ -451,8 +427,8 @@ def gettext(s): # ************************************************************** ACCOUNT_ACTIVATION_DAYS = 7 -REGISTRATION_FORM = 'registration_addons.forms.CaptchaRegistrationForm' -SIMPLE_BACKEND_REDIRECT_URL = '/en/' +REGISTRATION_FORM = "registration_addons.forms.CaptchaRegistrationForm" +SIMPLE_BACKEND_REDIRECT_URL = "/en/" # ************************************************************** # ************************ Fobi settings *********************** @@ -461,112 +437,119 @@ def gettext(s): # Fobi custom theme data for to be displayed in third party apps # like `django-registraton`. FOBI_CUSTOM_THEME_DATA = { - 'bootstrap3': { - 'page_header_html_class': '', - 'form_html_class': 'form-horizontal', - 'form_button_outer_wrapper_html_class': 'control-group', - 'form_button_wrapper_html_class': 'controls', - 'form_button_html_class': 'btn', - 'form_primary_button_html_class': 'btn-primary pull-right', - 'feincms_integration': { - 'form_template_choices': [ + "bootstrap3": { + "page_header_html_class": "", + "form_html_class": "form-horizontal", + "form_button_outer_wrapper_html_class": "control-group", + "form_button_wrapper_html_class": "controls", + "form_button_html_class": "btn", + "form_primary_button_html_class": "btn-primary pull-right", + "feincms_integration": { + "form_template_choices": [ ( - 'fobi/bootstrap3_extras/view_embed_form_entry_ajax.html', - gettext("Custom bootstrap3 embed form view template") + "fobi/bootstrap3_extras/view_embed_form_entry_ajax.html", + gettext("Custom bootstrap3 embed form view template"), ), ], - 'success_page_template_choices': [ + "success_page_template_choices": [ ( - 'fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html', # NOQA - gettext("Custom bootstrap3 embed form entry submitted " - "template") + "fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html", # NOQA + gettext( + "Custom bootstrap3 embed form entry submitted " + "template" + ), ), ], }, - 'djangocms_integration': { - 'form_template_choices': [ + "djangocms_integration": { + "form_template_choices": [ ( - 'fobi/bootstrap3_extras/view_embed_form_entry_ajax.html', - gettext("Custom bootstrap3 embed form view template") + "fobi/bootstrap3_extras/view_embed_form_entry_ajax.html", + gettext("Custom bootstrap3 embed form view template"), ), ], - 'success_page_template_choices': [ + "success_page_template_choices": [ ( - 'fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html', # NOQA - gettext("Custom bootstrap3 embed form entry submitted " - "template") + "fobi/bootstrap3_extras/embed_form_entry_submitted_ajax.html", # NOQA + gettext( + "Custom bootstrap3 embed form entry submitted " + "template" + ), ), ], }, }, - 'foundation5': { - 'page_header_html_class': '', - 'form_html_class': 'form-horizontal', - 'form_button_outer_wrapper_html_class': 'control-group', - 'form_button_wrapper_html_class': 'controls', - 'form_button_html_class': 'radius button', - 'form_primary_button_html_class': 'btn-primary', - 'feincms_integration': { - 'form_template_choices': [ + "foundation5": { + "page_header_html_class": "", + "form_html_class": "form-horizontal", + "form_button_outer_wrapper_html_class": "control-group", + "form_button_wrapper_html_class": "controls", + "form_button_html_class": "radius button", + "form_primary_button_html_class": "btn-primary", + "feincms_integration": { + "form_template_choices": [ ( - 'fobi/foundation5_extras/view_embed_form_entry_ajax.html', - gettext("Custom foundation5 embed form view template") + "fobi/foundation5_extras/view_embed_form_entry_ajax.html", + gettext("Custom foundation5 embed form view template"), ), ], - 'success_page_template_choices': [ + "success_page_template_choices": [ ( - 'fobi/foundation5_extras/embed_form_entry_submitted_ajax.html', # NOQA - gettext("Custom foundation5 embed form entry submitted " - "template") + "fobi/foundation5_extras/embed_form_entry_submitted_ajax.html", # NOQA + gettext( + "Custom foundation5 embed form entry submitted " + "template" + ), ), ], }, - 'djangocms_integration': { - 'form_template_choices': [ + "djangocms_integration": { + "form_template_choices": [ ( - 'fobi/foundation5_extras/view_embed_form_entry_ajax.html', - gettext("Custom foundation5 embed form view template") + "fobi/foundation5_extras/view_embed_form_entry_ajax.html", + gettext("Custom foundation5 embed form view template"), ), ], - 'success_page_template_choices': [ + "success_page_template_choices": [ ( - 'fobi/foundation5_extras/embed_form_entry_submitted_ajax.html', # NOQA - gettext("Custom foundation5 embed form entry submitted " - "template") + "fobi/foundation5_extras/embed_form_entry_submitted_ajax.html", # NOQA + gettext( + "Custom foundation5 embed form entry submitted " + "template" + ), ), ], }, }, - 'simple': { - 'page_header_html_class': '', - 'form_html_class': 'form-horizontal', - 'form_button_outer_wrapper_html_class': 'control-group', - 'form_button_wrapper_html_class': 'submit-row', - 'form_button_html_class': 'btn', - 'form_primary_button_html_class': 'btn-primary', - 'feincms_integration': { - }, - 'djangocms_integration': { - }, - } + "simple": { + "page_header_html_class": "", + "form_html_class": "form-horizontal", + "form_button_outer_wrapper_html_class": "control-group", + "form_button_wrapper_html_class": "submit-row", + "form_button_html_class": "btn", + "form_primary_button_html_class": "btn-primary", + "feincms_integration": {}, + "djangocms_integration": {}, + }, } -FOBI_THEME_FOOTER_TEXT = gettext('© django-fobi example site 2014-2015') +FOBI_THEME_FOOTER_TEXT = gettext("© django-fobi example site 2014-2015") -FOBI_PLUGIN_MAIL_AUTO_MAIL_TO = ['to@example.info'] -FOBI_PLUGIN_MAIL_AUTO_MAIL_SUBJECT = 'Automatic email' -FOBI_PLUGIN_MAIL_AUTO_MAIL_BODY = 'Automatic email' -FOBI_PLUGIN_MAIL_AUTO_MAIL_FROM = 'from@example.com' +FOBI_PLUGIN_MAIL_AUTO_MAIL_TO = ["to@example.info"] +FOBI_PLUGIN_MAIL_AUTO_MAIL_SUBJECT = "Automatic email" +FOBI_PLUGIN_MAIL_AUTO_MAIL_BODY = "Automatic email" +FOBI_PLUGIN_MAIL_AUTO_MAIL_FROM = "from@example.com" # django-admin-tools custom dashboard -ADMIN_TOOLS_INDEX_DASHBOARD = 'admin_tools_dashboard.CustomIndexDashboard' -ADMIN_TOOLS_APP_INDEX_DASHBOARD = \ - 'admin_tools_dashboard.CustomAppIndexDashboard' -ADMIN_TOOLS_MENU = 'admin_tools_dashboard.menu.CustomMenu' +ADMIN_TOOLS_INDEX_DASHBOARD = "admin_tools_dashboard.CustomIndexDashboard" +ADMIN_TOOLS_APP_INDEX_DASHBOARD = ( + "admin_tools_dashboard.CustomAppIndexDashboard" +) +ADMIN_TOOLS_MENU = "admin_tools_dashboard.menu.CustomMenu" MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', - 'db_store': 'fobi.contrib.plugins.form_handlers.db_store.migrations', + "fobi": "fobi.migrations", + "db_store": "fobi.contrib.plugins.form_handlers.db_store.migrations", } # A sample logging configuration. The only tangible logging @@ -575,85 +558,81 @@ def gettext(s): # See http://docs.djangoproject.com/en/dev/topics/logging for # more details on how to customize your logging configuration. LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } + "version": 1, + "disable_existing_loggers": False, + "filters": { + "require_debug_false": {"()": "django.utils.log.RequireDebugFalse"} }, - 'root': { - 'level': 'INFO', - 'handlers': ['all_log'], + "root": { + "level": "INFO", + "handlers": ["all_log"], }, - 'formatters': { - 'verbose': { - 'format': '\n%(levelname)s %(asctime)s [%(pathname)s:%(lineno)s] ' - '%(message)s' - }, - 'simple': { - 'format': '\n%(levelname)s %(message)s' + "formatters": { + "verbose": { + "format": "\n%(levelname)s %(asctime)s [%(pathname)s:%(lineno)s] " + "%(message)s" }, + "simple": {"format": "\n%(levelname)s %(message)s"}, }, - 'handlers': { - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' + "handlers": { + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", }, - 'console': { - 'level': 'DEBUG', - 'class': 'logging.StreamHandler', - 'formatter': 'verbose' + "console": { + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "verbose", }, - 'all_log': { - 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/all.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "all_log": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/all.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'django_log': { - 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/django.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "django_log": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/django.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'django_request_log': { - 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/django_request.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "django_request_log": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/django_request.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'fobi_log': { - 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/fobi.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "fobi_log": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/fobi.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, }, - 'loggers': { - 'django.request': { - 'handlers': ['django_request_log'], - 'level': 'INFO', - 'propagate': True, + "loggers": { + "django.request": { + "handlers": ["django_request_log"], + "level": "INFO", + "propagate": True, }, - 'django': { - 'handlers': ['django_log'], - 'level': 'ERROR', - 'propagate': False, + "django": { + "handlers": ["django_log"], + "level": "ERROR", + "propagate": False, }, - 'fobi': { - 'handlers': ['console', 'fobi_log'], - 'level': 'DEBUG', - 'propagate': True, + "fobi": { + "handlers": ["console", "fobi_log"], + "level": "DEBUG", + "propagate": True, }, }, } @@ -663,12 +642,15 @@ def gettext(s): INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.remove('admin_tools') \ - if 'admin_tools' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.menu') \ - if 'admin_tools.menu' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools" + ) if "admin_tools" in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.menu" + ) if "admin_tools.menu" in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as e: pass @@ -676,19 +658,19 @@ def gettext(s): # FIREFOX_BIN_PATH = '' FIREFOX_BIN_PATH = None # PHANTOM_JS_EXECUTABLE_PATH = None -PHANTOM_JS_EXECUTABLE_PATH = '' +PHANTOM_JS_EXECUTABLE_PATH = "" # CHROME_DRIVER_EXECUTABLE_PATH = os.environ.get('CHROME_BIN', None) CHROME_DRIVER_EXECUTABLE_PATH = None -IS_TRAVIS = 'TRAVIS' in os.environ +IS_TRAVIS = "TRAVIS" in os.environ if IS_TRAVIS: - CHROME_DRIVER_EXECUTABLE_PATH = '/home/travis/chromedriver' + CHROME_DRIVER_EXECUTABLE_PATH = "/home/travis/chromedriver" CHROME_DRIVER_OPTIONS = webdriver.ChromeOptions() -CHROME_DRIVER_OPTIONS.add_argument('-headless') -CHROME_DRIVER_OPTIONS.add_argument('-no-sandbox') -CHROME_DRIVER_OPTIONS.set_capability('chrome.binary', "/usr/bin/google-chrome") +CHROME_DRIVER_OPTIONS.add_argument("-headless") +CHROME_DRIVER_OPTIONS.add_argument("-no-sandbox") +CHROME_DRIVER_OPTIONS.set_capability("chrome.binary", "/usr/bin/google-chrome") # CHROME_DRIVER_OPTIONS.add_argument('-single-process') # Testing mode @@ -706,16 +688,12 @@ def gettext(s): import debug_toolbar # debug_toolbar - _MIDDLEWARE += ( - 'debug_toolbar.middleware.DebugToolbarMiddleware', - ) + _MIDDLEWARE += ("debug_toolbar.middleware.DebugToolbarMiddleware",) - INSTALLED_APPS += ( - 'debug_toolbar', - ) + INSTALLED_APPS += ("debug_toolbar",) DEBUG_TOOLBAR_CONFIG = { - 'INTERCEPT_REDIRECTS': False, + "INTERCEPT_REDIRECTS": False, } except ImportError: pass @@ -734,9 +712,8 @@ def gettext(s): # {% load debug_tags %} # {% set_trace %} import template_debug - INSTALLED_APPS += ( - 'template_debug', - ) + + INSTALLED_APPS += ("template_debug",) except ImportError: pass @@ -760,6 +737,7 @@ def gettext(s): # Make the `django-fobi` package available without installation. if DEV: import sys - fobi_source_path = os.environ.get('FOBI_SOURCE_PATH', 'src') + + fobi_source_path = os.environ.get("FOBI_SOURCE_PATH", "src") # sys.path.insert(0, os.path.abspath('src')) sys.path.insert(0, os.path.abspath(fobi_source_path)) diff --git a/examples/simple/settings/bootstrap3_theme.py b/examples/simple/settings/bootstrap3_theme.py index f108bffaf..f31045624 100644 --- a/examples/simple/settings/bootstrap3_theme.py +++ b/examples/simple/settings/bootstrap3_theme.py @@ -3,11 +3,14 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.remove('admin_tools') \ - if 'admin_tools' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.menu') \ - if 'admin_tools.menu' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools" + ) if "admin_tools" in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.menu" + ) if "admin_tools.menu" in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as err: pass diff --git a/examples/simple/settings/bootstrap3_theme_captcha.py b/examples/simple/settings/bootstrap3_theme_captcha.py index f0a64996d..8a140a333 100644 --- a/examples/simple/settings/bootstrap3_theme_captcha.py +++ b/examples/simple/settings/bootstrap3_theme_captcha.py @@ -2,17 +2,14 @@ INSTALLED_APPS = list(INSTALLED_APPS) -if 'captcha' not in INSTALLED_APPS: - INSTALLED_APPS.append('captcha') +if "captcha" not in INSTALLED_APPS: + INSTALLED_APPS.append("captcha") -if 'fobi.contrib.plugins.form_elements.security.captcha' \ - not in INSTALLED_APPS: - INSTALLED_APPS.append( - 'fobi.contrib.plugins.form_elements.security.captcha' - ) +if "fobi.contrib.plugins.form_elements.security.captcha" not in INSTALLED_APPS: + INSTALLED_APPS.append("fobi.contrib.plugins.form_elements.security.captcha") -CAPTCHA_TEXT_FIELD_TEMPLATE = 'bootstrap3/captcha/text_field.html' +CAPTCHA_TEXT_FIELD_TEMPLATE = "bootstrap3/captcha/text_field.html" ENABLE_CAPTCHA = True diff --git a/examples/simple/settings/bootstrap3_theme_captcha_feincms.py b/examples/simple/settings/bootstrap3_theme_captcha_feincms.py index dad0d18b0..9afce4a4f 100644 --- a/examples/simple/settings/bootstrap3_theme_captcha_feincms.py +++ b/examples/simple/settings/bootstrap3_theme_captcha_feincms.py @@ -4,13 +4,15 @@ try: - if 'captcha' not in INSTALLED_APPS: - INSTALLED_APPS.append('captcha') + if "captcha" not in INSTALLED_APPS: + INSTALLED_APPS.append("captcha") - if 'fobi.contrib.plugins.form_elements.security.captcha' \ - not in INSTALLED_APPS: + if ( + "fobi.contrib.plugins.form_elements.security.captcha" + not in INSTALLED_APPS + ): INSTALLED_APPS.append( - 'fobi.contrib.plugins.form_elements.security.captcha' + "fobi.contrib.plugins.form_elements.security.captcha" ) except Exception as err: diff --git a/examples/simple/settings/bootstrap3_theme_django_1_7_djangocms.py b/examples/simple/settings/bootstrap3_theme_django_1_7_djangocms.py index 0c4f13134..08f9c739d 100644 --- a/examples/simple/settings/bootstrap3_theme_django_1_7_djangocms.py +++ b/examples/simple/settings/bootstrap3_theme_django_1_7_djangocms.py @@ -2,61 +2,63 @@ INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS += [ - 'cms', # DjangoCMS - 'mptt', - 'menus', - 'sekizai', + "cms", # DjangoCMS + "mptt", + "menus", + "sekizai", # 'djangocms_admin_style', - # Some plugins - 'djangocms_picture', - 'djangocms_snippet', - - 'fobi.contrib.apps.djangocms_integration', # Fobi DjangoCMS app - + "djangocms_picture", + "djangocms_snippet", + "fobi.contrib.apps.djangocms_integration", # Fobi DjangoCMS app # 'djangocms_page', # Example ] try: - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as err: pass MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES += [ # 'django.middleware.cache.UpdateCacheMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - 'cms.middleware.language.LanguageCookieMiddleware', + "cms.middleware.page.CurrentPageMiddleware", + "cms.middleware.user.CurrentUserMiddleware", + "cms.middleware.toolbar.ToolbarMiddleware", + "cms.middleware.language.LanguageCookieMiddleware", # 'django.middleware.cache.FetchFromCacheMiddleware', ] TEMPLATE_CONTEXT_PROCESSORS = list(TEMPLATE_CONTEXT_PROCESSORS) TEMPLATE_CONTEXT_PROCESSORS += [ - 'cms.context_processors.media', - 'sekizai.context_processors.sekizai', - 'cms.context_processors.cms_settings', + "cms.context_processors.media", + "sekizai.context_processors.sekizai", + "cms.context_processors.cms_settings", ] -FOBI_DEFAULT_THEME = 'bootstrap3' +FOBI_DEFAULT_THEME = "bootstrap3" # FOBI_DEFAULT_THEME = 'foundation5' # FOBI_DEFAULT_THEME = 'simple' CMS_TEMPLATES = ( - ('cms_page/{0}/page_with_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template with sidebar for {0}'.format(FOBI_DEFAULT_THEME)), - ('cms_page/{0}/page_without_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template without sidebar for {0}'.format(FOBI_DEFAULT_THEME)), + ( + "cms_page/{0}/page_with_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template with sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), + ( + "cms_page/{0}/page_without_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template without sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), ) MIGRATION_MODULES = { - 'cms': 'cms.migrations_django', - 'menus': 'menus.migrations_django', + "cms": "cms.migrations_django", + "menus": "menus.migrations_django", } -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" # FEINCMS_RICHTEXT_INIT_CONTEXT = { # 'TINYMCE_JS_URL': STATIC_URL + 'tiny_mce/tiny_mce.js', diff --git a/examples/simple/settings/bootstrap3_theme_djangocms.py b/examples/simple/settings/bootstrap3_theme_djangocms.py index 3b47876c2..11d86c2d3 100644 --- a/examples/simple/settings/bootstrap3_theme_djangocms.py +++ b/examples/simple/settings/bootstrap3_theme_djangocms.py @@ -1,23 +1,21 @@ from cms import __version__ + from .base import * -CMS_VERSION = [int(__v) for __v in __version__.split('.')] +CMS_VERSION = [int(__v) for __v in __version__.split(".")] INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS += [ - 'cms', # DjangoCMS - 'menus', - 'sekizai', - 'djangocms_admin_style', - + "cms", # DjangoCMS + "menus", + "sekizai", + "djangocms_admin_style", # Some plugins - 'filer', + "filer", # 'cmsplugin_filer_image', # 'djangocms_picture', # 'djangocms_snippet', - - 'fobi.contrib.apps.djangocms_integration', # Fobi DjangoCMS app - + "fobi.contrib.apps.djangocms_integration", # Fobi DjangoCMS app # 'djangocms_page', # Example ] @@ -25,63 +23,67 @@ MIGRATION_MODULES = {} if CMS_VERSION[0] <= 2 or (CMS_VERSION[0] == 3 and CMS_VERSION[1] == 0): - INSTALLED_APPS.append('mptt') + INSTALLED_APPS.append("mptt") DJANGO_CMS_CONTEXT_PROCESSORS = [ - 'cms.context_processors.media', - 'sekizai.context_processors.sekizai', - 'cms.context_processors.cms_settings', - 'nine.context_processors.versions', - 'cms_addons.context_processors.cms_version', + "cms.context_processors.media", + "sekizai.context_processors.sekizai", + "cms.context_processors.cms_settings", + "nine.context_processors.versions", + "cms_addons.context_processors.cms_version", ] MIGRATION_MODULES = { - 'cms': 'cms.migrations_django', - 'menus': 'menus.migrations_django', + "cms": "cms.migrations_django", + "menus": "menus.migrations_django", } else: - INSTALLED_APPS.append('treebeard') - INSTALLED_APPS.append('cms_addons') + INSTALLED_APPS.append("treebeard") + INSTALLED_APPS.append("cms_addons") DJANGO_CMS_CONTEXT_PROCESSORS = [ - 'cms.context_processors.cms_settings', - 'sekizai.context_processors.sekizai', - 'cms.context_processors.cms_settings', - 'nine.context_processors.versions', - 'cms_addons.context_processors.cms_version', + "cms.context_processors.cms_settings", + "sekizai.context_processors.sekizai", + "cms.context_processors.cms_settings", + "nine.context_processors.versions", + "cms_addons.context_processors.cms_version", ] MIGRATION_MODULES = { - 'cms': 'cms.migrations', - 'menus': 'menus.migrations', + "cms": "cms.migrations", + "menus": "menus.migrations", } try: - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as err: pass MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES += [ # 'django.middleware.cache.UpdateCacheMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - 'cms.middleware.language.LanguageCookieMiddleware', + "cms.middleware.page.CurrentPageMiddleware", + "cms.middleware.user.CurrentUserMiddleware", + "cms.middleware.toolbar.ToolbarMiddleware", + "cms.middleware.language.LanguageCookieMiddleware", # 'django.middleware.cache.FetchFromCacheMiddleware', ] -TEMPLATES[0]['OPTIONS']['context_processors'] += \ - DJANGO_CMS_CONTEXT_PROCESSORS +TEMPLATES[0]["OPTIONS"]["context_processors"] += DJANGO_CMS_CONTEXT_PROCESSORS -FOBI_DEFAULT_THEME = 'bootstrap3' +FOBI_DEFAULT_THEME = "bootstrap3" # FOBI_DEFAULT_THEME = 'foundation5' # FOBI_DEFAULT_THEME = 'simple' CMS_TEMPLATES = ( - ('cms_page/{0}/page_with_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template with sidebar for {0}'.format(FOBI_DEFAULT_THEME)), - ('cms_page/{0}/page_without_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template without sidebar for {0}'.format(FOBI_DEFAULT_THEME)), + ( + "cms_page/{0}/page_with_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template with sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), + ( + "cms_page/{0}/page_without_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template without sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), ) -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" diff --git a/examples/simple/settings/bootstrap3_theme_djangocms_2.py b/examples/simple/settings/bootstrap3_theme_djangocms_2.py index bb8a476b5..04a8e09b5 100644 --- a/examples/simple/settings/bootstrap3_theme_djangocms_2.py +++ b/examples/simple/settings/bootstrap3_theme_djangocms_2.py @@ -1,36 +1,33 @@ from .base import * DATABASES = { - 'default': { + "default": { # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'ENGINE': 'django.db.backends.sqlite3', + "ENGINE": "django.db.backends.sqlite3", # Or path to database file if using sqlite3. - 'NAME': PROJECT_DIR('../db/example_djangocms_2.db'), + "NAME": PROJECT_DIR("../db/example_djangocms_2.db"), # The following settings are not used with sqlite3: - 'USER': '', - 'PASSWORD': '', + "USER": "", + "PASSWORD": "", # Empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. - 'HOST': '', + "HOST": "", # Set to empty string for default. - 'PORT': '', + "PORT": "", } } INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS += [ - 'cms', # DjangoCMS - 'mptt', - 'menus', - 'sekizai', + "cms", # DjangoCMS + "mptt", + "menus", + "sekizai", # 'djangocms_admin_style', - # Some plugins - 'cms.plugins.picture', - 'cms.plugins.snippet', - - 'fobi.contrib.apps.djangocms_integration', # Fobi DjangoCMS app - + "cms.plugins.picture", + "cms.plugins.snippet", + "fobi.contrib.apps.djangocms_integration", # Fobi DjangoCMS app # 'djangocms_page', # Example ] @@ -39,45 +36,50 @@ # if 'admin_tools' in INSTALLED_APPS else None # INSTALLED_APPS.remove('admin_tools.menu') \ # if 'admin_tools.menu' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as err: pass MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES += [ # 'django.middleware.cache.UpdateCacheMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - 'cms.middleware.language.LanguageCookieMiddleware', + "cms.middleware.page.CurrentPageMiddleware", + "cms.middleware.user.CurrentUserMiddleware", + "cms.middleware.toolbar.ToolbarMiddleware", + "cms.middleware.language.LanguageCookieMiddleware", # 'django.middleware.cache.FetchFromCacheMiddleware', ] TEMPLATE_CONTEXT_PROCESSORS = list(TEMPLATE_CONTEXT_PROCESSORS) TEMPLATE_CONTEXT_PROCESSORS += [ - 'cms.context_processors.media', - 'sekizai.context_processors.sekizai', + "cms.context_processors.media", + "sekizai.context_processors.sekizai", # 'cms.context_processors.cms_settings', ] -FOBI_DEFAULT_THEME = 'bootstrap3' +FOBI_DEFAULT_THEME = "bootstrap3" # FOBI_DEFAULT_THEME = 'foundation5' # FOBI_DEFAULT_THEME = 'simple' CMS_TEMPLATES = ( - ('cms_page/{0}/page_with_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template with sidebar for {0}'.format(FOBI_DEFAULT_THEME)), - ('cms_page/{0}/page_without_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template without sidebar for {0}'.format(FOBI_DEFAULT_THEME)), + ( + "cms_page/{0}/page_with_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template with sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), + ( + "cms_page/{0}/page_without_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template without sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), ) MIGRATION_MODULES = { - 'cms': 'cms.migrations_django', - 'menus': 'menus.migrations_django', + "cms": "cms.migrations_django", + "menus": "menus.migrations_django", } -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" # FEINCMS_RICHTEXT_INIT_CONTEXT = { # 'TINYMCE_JS_URL': STATIC_URL + 'tiny_mce/tiny_mce.js', diff --git a/examples/simple/settings/bootstrap3_theme_feincms.py b/examples/simple/settings/bootstrap3_theme_feincms.py index d7330079e..2c05ee1b0 100644 --- a/examples/simple/settings/bootstrap3_theme_feincms.py +++ b/examples/simple/settings/bootstrap3_theme_feincms.py @@ -2,26 +2,24 @@ INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS += [ - 'feincms', # FeinCMS - - 'fobi.contrib.apps.feincms_integration', # Fobi FeinCMS app - - 'page', # Example - + "feincms", # FeinCMS + "fobi.contrib.apps.feincms_integration", # Fobi FeinCMS app + "page", # Example # 'tinymce', # TinyMCE ] try: - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as err: pass FEINCMS_RICHTEXT_INIT_CONTEXT = { - 'TINYMCE_JS_URL': STATIC_URL + 'tiny_mce/tiny_mce.js', + "TINYMCE_JS_URL": STATIC_URL + "tiny_mce/tiny_mce.js", } MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', - 'db_store': 'fobi.contrib.plugins.form_handlers.db_store.migrations', + "fobi": "fobi.migrations", + "db_store": "fobi.contrib.plugins.form_handlers.db_store.migrations", } diff --git a/examples/simple/settings/bootstrap3_theme_mptt.py b/examples/simple/settings/bootstrap3_theme_mptt.py index b2c1d8c27..b9f0426ce 100644 --- a/examples/simple/settings/bootstrap3_theme_mptt.py +++ b/examples/simple/settings/bootstrap3_theme_mptt.py @@ -3,13 +3,13 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.append('mptt') - INSTALLED_APPS.append('bar') + INSTALLED_APPS.append("mptt") + INSTALLED_APPS.append("bar") INSTALLED_APPS.append( - 'fobi.contrib.plugins.form_elements.fields.select_mptt_model_object' + "fobi.contrib.plugins.form_elements.fields.select_mptt_model_object" ) INSTALLED_APPS.append( - 'fobi.contrib.plugins.form_elements.fields.select_multiple_mptt_model_objects' # NOQA + "fobi.contrib.plugins.form_elements.fields.select_multiple_mptt_model_objects" # NOQA ) except Exception as err: pass diff --git a/examples/simple/settings/bootstrap3_theme_recaptcha.py b/examples/simple/settings/bootstrap3_theme_recaptcha.py index bf7d7c0cc..89cacabcf 100644 --- a/examples/simple/settings/bootstrap3_theme_recaptcha.py +++ b/examples/simple/settings/bootstrap3_theme_recaptcha.py @@ -2,19 +2,21 @@ INSTALLED_APPS = list(INSTALLED_APPS) -if not 'captcha' in INSTALLED_APPS: - INSTALLED_APPS.append('captcha') +if not "captcha" in INSTALLED_APPS: + INSTALLED_APPS.append("captcha") -if not 'fobi.contrib.plugins.form_elements.security.recaptcha' \ - in INSTALLED_APPS: +if ( + not "fobi.contrib.plugins.form_elements.security.recaptcha" + in INSTALLED_APPS +): INSTALLED_APPS.append( - 'fobi.contrib.plugins.form_elements.security.recaptcha' + "fobi.contrib.plugins.form_elements.security.recaptcha" ) # Test keys are taken from official dedicated Google page # https://developers.google.com/recaptcha/docs/faq#id-like-to-run-automated-tests-with-recaptcha.-what-should-i-do -RECAPTCHA_PUBLIC_KEY = '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI' -RECAPTCHA_PRIVATE_KEY = '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe' +RECAPTCHA_PUBLIC_KEY = "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI" +RECAPTCHA_PRIVATE_KEY = "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe" RECAPTCHA_USE_SSL = True -SILENCED_SYSTEM_CHECKS = ['captcha.recaptcha_test_key_error'] +SILENCED_SYSTEM_CHECKS = ["captcha.recaptcha_test_key_error"] # FOBI_DEFAULT_THEME = 'simple' diff --git a/examples/simple/settings/custom_user_model.py b/examples/simple/settings/custom_user_model.py index dc0968e71..57def15e9 100644 --- a/examples/simple/settings/custom_user_model.py +++ b/examples/simple/settings/custom_user_model.py @@ -1,7 +1,7 @@ from .base import * # Using custom user model -AUTH_USER_MODEL = 'customauth.MyUser' +AUTH_USER_MODEL = "customauth.MyUser" INSTALLED_APPS = list(INSTALLED_APPS) -INSTALLED_APPS.append('customauth') +INSTALLED_APPS.append("customauth") diff --git a/examples/simple/settings/djangocms_admin_style_theme_djangocms.py b/examples/simple/settings/djangocms_admin_style_theme_djangocms.py index fda6d5ac6..d9ecda5aa 100644 --- a/examples/simple/settings/djangocms_admin_style_theme_djangocms.py +++ b/examples/simple/settings/djangocms_admin_style_theme_djangocms.py @@ -1,69 +1,73 @@ from .base import * INSTALLED_APPS = list(INSTALLED_APPS) -INSTALLED_APPS.remove('django.contrib.admin') +INSTALLED_APPS.remove("django.contrib.admin") INSTALLED_APPS += [ - 'cms', # DjangoCMS - 'mptt', - 'menus', - 'sekizai', + "cms", # DjangoCMS + "mptt", + "menus", + "sekizai", # 'djangocms_admin_style', - # Some plugins - 'djangocms_picture', - 'djangocms_snippet', - 'treebeard', - - 'fobi.contrib.apps.djangocms_integration', # Fobi DjangoCMS app - + "djangocms_picture", + "djangocms_snippet", + "treebeard", + "fobi.contrib.apps.djangocms_integration", # Fobi DjangoCMS app # Django-CMS admin style - 'djangocms_admin_style', - 'django.contrib.admin', - 'fobi.contrib.themes.djangocms_admin_style_theme', + "djangocms_admin_style", + "django.contrib.admin", + "fobi.contrib.themes.djangocms_admin_style_theme", ] try: - INSTALLED_APPS.remove('admin_tools') \ - if 'admin_tools' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.menu') \ - if 'admin_tools.menu' in INSTALLED_APPS else None - INSTALLED_APPS.remove('admin_tools.dashboard') \ - if 'admin_tools.dashboard' in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools" + ) if "admin_tools" in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.menu" + ) if "admin_tools.menu" in INSTALLED_APPS else None + INSTALLED_APPS.remove( + "admin_tools.dashboard" + ) if "admin_tools.dashboard" in INSTALLED_APPS else None except Exception as e: pass MIDDLEWARE_CLASSES = list(MIDDLEWARE_CLASSES) MIDDLEWARE_CLASSES += [ # 'django.middleware.cache.UpdateCacheMiddleware', - 'cms.middleware.page.CurrentPageMiddleware', - 'cms.middleware.user.CurrentUserMiddleware', - 'cms.middleware.toolbar.ToolbarMiddleware', - 'cms.middleware.language.LanguageCookieMiddleware', + "cms.middleware.page.CurrentPageMiddleware", + "cms.middleware.user.CurrentUserMiddleware", + "cms.middleware.toolbar.ToolbarMiddleware", + "cms.middleware.language.LanguageCookieMiddleware", # 'django.middleware.cache.FetchFromCacheMiddleware', ] -TEMPLATES[0]['OPTIONS']['context_processors'] += [ - 'cms.context_processors.cms_settings', - 'sekizai.context_processors.sekizai', - 'cms.context_processors.cms_settings', +TEMPLATES[0]["OPTIONS"]["context_processors"] += [ + "cms.context_processors.cms_settings", + "sekizai.context_processors.sekizai", + "cms.context_processors.cms_settings", ] # FOBI_DEFAULT_THEME = 'bootstrap3' # FOBI_DEFAULT_THEME = 'foundation5' # FOBI_DEFAULT_THEME = 'simple' -FOBI_DEFAULT_THEME = 'djangocms_admin_style_theme' +FOBI_DEFAULT_THEME = "djangocms_admin_style_theme" CMS_TEMPLATES = ( - ('cms_page/{0}/page_with_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template with sidebar for {0}'.format(FOBI_DEFAULT_THEME)), - ('cms_page/{0}/page_without_sidebar.html'.format(FOBI_DEFAULT_THEME), - 'General template without sidebar for {0}'.format(FOBI_DEFAULT_THEME)), + ( + "cms_page/{0}/page_with_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template with sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), + ( + "cms_page/{0}/page_without_sidebar.html".format(FOBI_DEFAULT_THEME), + "General template without sidebar for {0}".format(FOBI_DEFAULT_THEME), + ), ) MIGRATION_MODULES = { - 'cms': 'cms.migrations_django', - 'menus': 'menus.migrations_django', + "cms": "cms.migrations_django", + "menus": "menus.migrations_django", } -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" diff --git a/examples/simple/settings/docker.py b/examples/simple/settings/docker.py index bb406aafa..26e93b7ae 100644 --- a/examples/simple/settings/docker.py +++ b/examples/simple/settings/docker.py @@ -1,11 +1,12 @@ from chromedriver_py import binary_path from selenium import webdriver + from .bootstrap3_theme import * def project_dir(base): return os.path.abspath( - os.path.join(os.path.dirname(__file__), base).replace('\\', '/') + os.path.join(os.path.dirname(__file__), base).replace("\\", "/") ) @@ -20,54 +21,52 @@ def gettext(s): # TEMPLATE_DEBUG = True DEV = True -POSTGRES_ENGINE = 'django.db.backends.postgresql' +POSTGRES_ENGINE = "django.db.backends.postgresql" DATABASES = { - 'default': { - 'ENGINE': POSTGRES_ENGINE, - 'HOST': 'postgresql', - 'NAME': 'fobi', - 'USER': 'postgres', - 'PASSWORD': 'test', + "default": { + "ENGINE": POSTGRES_ENGINE, + "HOST": "postgresql", + "NAME": "fobi", + "USER": "postgres", + "PASSWORD": "test", } } TEST_DATABASES = { - 'default': { - 'ENGINE': POSTGRES_ENGINE, - 'HOST': 'postgresql', - 'NAME': 'fobi', - 'USER': 'postgres', - 'PASSWORD': 'test', + "default": { + "ENGINE": POSTGRES_ENGINE, + "HOST": "postgresql", + "NAME": "fobi", + "USER": "postgres", + "PASSWORD": "test", } } # FeinCMS addons INSTALLED_APPS += [ - 'feincms', # FeinCMS - - 'fobi.contrib.apps.feincms_integration', # Fobi FeinCMS app - - 'page', # Example + "feincms", # FeinCMS + "fobi.contrib.apps.feincms_integration", # Fobi FeinCMS app + "page", # Example ] MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', - 'db_store': 'fobi.contrib.plugins.form_handlers.db_store.migrations', - 'page': 'page.migrations', + "fobi": "fobi.migrations", + "db_store": "fobi.contrib.plugins.form_handlers.db_store.migrations", + "page": "page.migrations", } -INTERNAL_IPS = ('127.0.0.1',) -ALLOWED_HOSTS = ['*'] +INTERNAL_IPS = ("127.0.0.1",) +ALLOWED_HOSTS = ["*"] -EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' -EMAIL_FILE_PATH = PROJECT_DIR('../../tmp') +EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend" +EMAIL_FILE_PATH = PROJECT_DIR("../../tmp") FOBI_DEBUG = True FOBI_RESTRICT_PLUGIN_ACCESS = False FOBI_RESTRICT_FIELDS_ACCESS = False -FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_IGNORED_MODELS = ['auth.User'] +FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_IGNORED_MODELS = ["auth.User"] FOBI_FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS = True # FOBI_FAIL_ON_MISSING_FORM_HANDLER_PLUGINS = False FOBI_FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS = True @@ -84,12 +83,12 @@ def gettext(s): ENABLE_CAPTCHA = True CHROME_DRIVER_OPTIONS = webdriver.ChromeOptions() -CHROME_DRIVER_OPTIONS.add_argument('-headless') -CHROME_DRIVER_OPTIONS.add_argument('-no-sandbox') -CHROME_DRIVER_OPTIONS.set_capability('chrome.binary', "/usr/bin/google-chrome") +CHROME_DRIVER_OPTIONS.add_argument("-headless") +CHROME_DRIVER_OPTIONS.add_argument("-no-sandbox") +CHROME_DRIVER_OPTIONS.set_capability("chrome.binary", "/usr/bin/google-chrome") # CHROME_DRIVER_OPTIONS.add_argument('-single-process') CHROME_DRIVER_EXECUTABLE_PATH = binary_path # '/usr/bin/chromedriver' -FIREFOX_BIN_PATH = '/usr/lib/firefox/firefox' -PHANTOM_JS_EXECUTABLE_PATH = '' +FIREFOX_BIN_PATH = "/usr/lib/firefox/firefox" +PHANTOM_JS_EXECUTABLE_PATH = "" diff --git a/examples/simple/settings/docker_test.py b/examples/simple/settings/docker_test.py index b5632e1d8..8c8b40a78 100644 --- a/examples/simple/settings/docker_test.py +++ b/examples/simple/settings/docker_test.py @@ -1,5 +1,6 @@ from chromedriver_py import binary_path from selenium import webdriver + from .bootstrap3_theme import * TESTING = True @@ -11,42 +12,39 @@ DEBUG_TOOLBAR = False DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': 'fobi', - 'USER': 'postgres', - 'PASSWORD': 'test', - + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": "fobi", + "USER": "postgres", + "PASSWORD": "test", # Empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. - 'HOST': 'postgresql', - 'TEST': { - 'HOST': 'postgresql', - 'NAME': 'fobi_tests', - 'USER': 'postgres', - 'PASSWORD': 'test', - } + "HOST": "postgresql", + "TEST": { + "HOST": "postgresql", + "NAME": "fobi_tests", + "USER": "postgres", + "PASSWORD": "test", + }, } } # FeinCMS addons INSTALLED_APPS += [ - 'feincms', # FeinCMS - - 'fobi.contrib.apps.feincms_integration', # Fobi FeinCMS app - - 'page', # Example + "feincms", # FeinCMS + "fobi.contrib.apps.feincms_integration", # Fobi FeinCMS app + "page", # Example ] MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', - 'db_store': 'fobi.contrib.plugins.form_handlers.db_store.migrations', - 'page': 'page.migrations', + "fobi": "fobi.migrations", + "db_store": "fobi.contrib.plugins.form_handlers.db_store.migrations", + "page": "page.migrations", } CHROME_DRIVER_EXECUTABLE_PATH = binary_path # '/usr/bin/chromedriver' CHROME_DRIVER_OPTIONS = webdriver.ChromeOptions() -CHROME_DRIVER_OPTIONS.add_argument('-headless') -CHROME_DRIVER_OPTIONS.add_argument('-no-sandbox') -CHROME_DRIVER_OPTIONS.set_capability('chrome.binary', "/usr/bin/google-chrome") +CHROME_DRIVER_OPTIONS.add_argument("-headless") +CHROME_DRIVER_OPTIONS.add_argument("-no-sandbox") +CHROME_DRIVER_OPTIONS.set_capability("chrome.binary", "/usr/bin/google-chrome") diff --git a/examples/simple/settings/docs.py b/examples/simple/settings/docs.py index f0aacf7e5..c3b912510 100644 --- a/examples/simple/settings/docs.py +++ b/examples/simple/settings/docs.py @@ -2,7 +2,7 @@ INSTALLED_APPS = list(INSTALLED_APPS) -if 'foo' in INSTALLED_APPS: - INSTALLED_APPS.remove('foo') +if "foo" in INSTALLED_APPS: + INSTALLED_APPS.remove("foo") LOGGING = {} diff --git a/examples/simple/settings/foreign_key_to_saved_form_data_entry.py b/examples/simple/settings/foreign_key_to_saved_form_data_entry.py index 1f52104c1..776fd932a 100644 --- a/examples/simple/settings/foreign_key_to_saved_form_data_entry.py +++ b/examples/simple/settings/foreign_key_to_saved_form_data_entry.py @@ -3,6 +3,6 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.append('foreign_key_to_saved_form_data_entry') + INSTALLED_APPS.append("foreign_key_to_saved_form_data_entry") except Exception as e: pass diff --git a/examples/simple/settings/foundation5_theme.py b/examples/simple/settings/foundation5_theme.py index 339fa909a..6f83c411c 100644 --- a/examples/simple/settings/foundation5_theme.py +++ b/examples/simple/settings/foundation5_theme.py @@ -1,12 +1,12 @@ from .base import * -FOBI_DEFAULT_THEME = 'foundation5' +FOBI_DEFAULT_THEME = "foundation5" INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS.append( - 'fobi.contrib.themes.foundation5.widgets.form_elements.date_foundation5_widget' # NOQA + "fobi.contrib.themes.foundation5.widgets.form_elements.date_foundation5_widget" # NOQA ) INSTALLED_APPS.append( - 'fobi.contrib.themes.foundation5.widgets.form_elements.datetime_foundation5_widget' # NOQA + "fobi.contrib.themes.foundation5.widgets.form_elements.datetime_foundation5_widget" # NOQA ) diff --git a/examples/simple/settings/foundation5_theme_captcha.py b/examples/simple/settings/foundation5_theme_captcha.py index 3f10ec5d2..a2c021b1a 100644 --- a/examples/simple/settings/foundation5_theme_captcha.py +++ b/examples/simple/settings/foundation5_theme_captcha.py @@ -1,27 +1,29 @@ from .base import * -FOBI_DEFAULT_THEME = 'foundation5' +FOBI_DEFAULT_THEME = "foundation5" INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS.append( - 'fobi.contrib.themes.foundation5.widgets.form_elements.date_foundation5_widget' # NOQA + "fobi.contrib.themes.foundation5.widgets.form_elements.date_foundation5_widget" # NOQA ) INSTALLED_APPS.append( - 'fobi.contrib.themes.foundation5.widgets.form_elements.datetime_foundation5_widget' # NOQA + "fobi.contrib.themes.foundation5.widgets.form_elements.datetime_foundation5_widget" # NOQA ) try: - if 'captcha' not in INSTALLED_APPS: - INSTALLED_APPS.append('captcha') + if "captcha" not in INSTALLED_APPS: + INSTALLED_APPS.append("captcha") - if 'fobi.contrib.plugins.form_elements.security.captcha' \ - not in INSTALLED_APPS: + if ( + "fobi.contrib.plugins.form_elements.security.captcha" + not in INSTALLED_APPS + ): INSTALLED_APPS.append( - 'fobi.contrib.plugins.form_elements.security.captcha' + "fobi.contrib.plugins.form_elements.security.captcha" ) - CAPTCHA_TEXT_FIELD_TEMPLATE = 'foundation5/captcha/text_field.html' + CAPTCHA_TEXT_FIELD_TEMPLATE = "foundation5/captcha/text_field.html" ENABLE_CAPTCHA = True diff --git a/examples/simple/settings/foundation5_theme_feincms.py b/examples/simple/settings/foundation5_theme_feincms.py index 479d28576..4ea466626 100644 --- a/examples/simple/settings/foundation5_theme_feincms.py +++ b/examples/simple/settings/foundation5_theme_feincms.py @@ -2,15 +2,13 @@ INSTALLED_APPS = list(INSTALLED_APPS) INSTALLED_APPS += [ - 'feincms', # FeinCMS - - 'fobi.contrib.apps.feincms_integration', # Fobi FeinCMS app - - 'page', # Example + "feincms", # FeinCMS + "fobi.contrib.apps.feincms_integration", # Fobi FeinCMS app + "page", # Example ] FEINCMS_RICHTEXT_INIT_CONTEXT = { - 'TINYMCE_JS_URL': STATIC_URL + 'tiny_mce/tiny_mce.js', + "TINYMCE_JS_URL": STATIC_URL + "tiny_mce/tiny_mce.js", } -FOBI_DEFAULT_THEME = 'foundation5' +FOBI_DEFAULT_THEME = "foundation5" diff --git a/examples/simple/settings/override_radio_plugin.py b/examples/simple/settings/override_radio_plugin.py index a788a6d56..921e73b27 100644 --- a/examples/simple/settings/override_radio_plugin.py +++ b/examples/simple/settings/override_radio_plugin.py @@ -3,6 +3,6 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.append('override_radio_plugin') + INSTALLED_APPS.append("override_radio_plugin") except Exception as err: pass diff --git a/examples/simple/settings/override_select_model_object_plugin.py b/examples/simple/settings/override_select_model_object_plugin.py index 967187474..778088ccb 100644 --- a/examples/simple/settings/override_select_model_object_plugin.py +++ b/examples/simple/settings/override_select_model_object_plugin.py @@ -3,6 +3,6 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.append('override_select_model_object_plugin') + INSTALLED_APPS.append("override_select_model_object_plugin") except Exception as err: pass diff --git a/examples/simple/settings/override_simple_theme.py b/examples/simple/settings/override_simple_theme.py index 7b42be05f..1659f28a4 100644 --- a/examples/simple/settings/override_simple_theme.py +++ b/examples/simple/settings/override_simple_theme.py @@ -3,14 +3,14 @@ INSTALLED_APPS = list(INSTALLED_APPS) try: - INSTALLED_APPS.append('override_simple_theme') - INSTALLED_APPS.append('crispy_forms') + INSTALLED_APPS.append("override_simple_theme") + INSTALLED_APPS.append("crispy_forms") except Exception as err: pass -FOBI_DEFAULT_THEME = 'simple' +FOBI_DEFAULT_THEME = "simple" -CRISPY_TEMPLATE_PACK = 'uni_form' +CRISPY_TEMPLATE_PACK = "uni_form" # Make crispy-forms fail loud CRISPY_FAIL_SILENTLY = not DEBUG diff --git a/examples/simple/settings/settings_test.py b/examples/simple/settings/settings_test.py index 1aaa3285b..9692954b2 100644 --- a/examples/simple/settings/settings_test.py +++ b/examples/simple/settings/settings_test.py @@ -6,85 +6,81 @@ # See http://docs.djangoproject.com/en/dev/topics/logging for # more details on how to customize your logging configuration. LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } + "version": 1, + "disable_existing_loggers": False, + "filters": { + "require_debug_false": {"()": "django.utils.log.RequireDebugFalse"} }, - 'root': { - 'level': 'INFO', - 'handlers': ['all_log'], + "root": { + "level": "INFO", + "handlers": ["all_log"], }, - 'formatters': { - 'verbose': { - 'format': '\n%(levelname)s %(asctime)s [%(pathname)s:%(lineno)s] ' - '%(message)s' - }, - 'simple': { - 'format': '\n%(levelname)s %(message)s' + "formatters": { + "verbose": { + "format": "\n%(levelname)s %(asctime)s [%(pathname)s:%(lineno)s] " + "%(message)s" }, + "simple": {"format": "\n%(levelname)s %(message)s"}, }, - 'handlers': { - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' + "handlers": { + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", }, - 'console': { - 'level': 'ERROR', - 'class': 'logging.StreamHandler', - 'formatter': 'verbose' + "console": { + "level": "ERROR", + "class": "logging.StreamHandler", + "formatter": "verbose", }, - 'all_log': { - 'level': 'ERROR', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/all.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "all_log": { + "level": "ERROR", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/all.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'django_log': { - 'level': 'ERROR', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/django.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "django_log": { + "level": "ERROR", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/django.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'django_request_log': { - 'level': 'ERROR', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/django_request.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "django_request_log": { + "level": "ERROR", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/django_request.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'fobi_log': { - 'level': 'ERROR', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../../logs/fobi.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "fobi_log": { + "level": "ERROR", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../../logs/fobi.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, }, - 'loggers': { - 'django.request': { - 'handlers': ['django_request_log'], - 'level': 'INFO', - 'propagate': True, + "loggers": { + "django.request": { + "handlers": ["django_request_log"], + "level": "INFO", + "propagate": True, }, - 'django': { - 'handlers': ['django_log'], - 'level': 'ERROR', - 'propagate': False, + "django": { + "handlers": ["django_log"], + "level": "ERROR", + "propagate": False, }, - 'fobi': { - 'handlers': ['console', 'fobi_log'], - 'level': 'ERROR', - 'propagate': True, + "fobi": { + "handlers": ["console", "fobi_log"], + "level": "ERROR", + "propagate": True, }, }, } diff --git a/examples/simple/settings/simple.py b/examples/simple/settings/simple.py index 0e97d3ea5..18afec8cb 100644 --- a/examples/simple/settings/simple.py +++ b/examples/simple/settings/simple.py @@ -1,3 +1,3 @@ from .base import * -FOBI_DEFAULT_THEME = 'simple' +FOBI_DEFAULT_THEME = "simple" diff --git a/examples/simple/settings/test.py b/examples/simple/settings/test.py index dca2f779a..44275e2f0 100644 --- a/examples/simple/settings/test.py +++ b/examples/simple/settings/test.py @@ -2,6 +2,7 @@ Used in `tox` on GitHub CI. """ from chromedriver_py import binary_path + from .base import * TESTING = True @@ -13,45 +14,42 @@ DEBUG_TOOLBAR = False DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.postgresql', - 'NAME': 'fobi', - 'USER': 'postgres', - 'PASSWORD': 'test', - + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": "fobi", + "USER": "postgres", + "PASSWORD": "test", # Empty for localhost through domain sockets or '127.0.0.1' for # localhost through TCP. - 'HOST': 'localhost', - 'TEST': { - 'HOST': 'localhost', - 'NAME': 'fobi_tests', - 'USER': 'postgres', - 'PASSWORD': 'test', - } + "HOST": "localhost", + "TEST": { + "HOST": "localhost", + "NAME": "fobi_tests", + "USER": "postgres", + "PASSWORD": "test", + }, } } # FeinCMS addons INSTALLED_APPS += [ - 'feincms', # FeinCMS - - 'fobi.contrib.apps.feincms_integration', # Fobi FeinCMS app - - 'page', # Example + "feincms", # FeinCMS + "fobi.contrib.apps.feincms_integration", # Fobi FeinCMS app + "page", # Example ] MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', - 'db_store': 'fobi.contrib.plugins.form_handlers.db_store.migrations', - 'page': 'page.migrations', + "fobi": "fobi.migrations", + "db_store": "fobi.contrib.plugins.form_handlers.db_store.migrations", + "page": "page.migrations", } CHROME_DRIVER_EXECUTABLE_PATH = binary_path # '/usr/bin/chromedriver' CHROME_DRIVER_OPTIONS = webdriver.ChromeOptions() -CHROME_DRIVER_OPTIONS.add_argument('-headless') -CHROME_DRIVER_OPTIONS.add_argument('-no-sandbox') -CHROME_DRIVER_OPTIONS.set_capability('chrome.binary', "/usr/bin/google-chrome") +CHROME_DRIVER_OPTIONS.add_argument("-headless") +CHROME_DRIVER_OPTIONS.add_argument("-no-sandbox") +CHROME_DRIVER_OPTIONS.set_capability("chrome.binary", "/usr/bin/google-chrome") try: from .local_settings import TEST_DATABASES as DATABASES diff --git a/examples/simple/urls.py b/examples/simple/urls.py index e6c8064fb..8ab14a7df 100644 --- a/examples/simple/urls.py +++ b/examples/simple/urls.py @@ -1,88 +1,89 @@ -from django.urls import include, re_path as url -from django.conf.urls.i18n import i18n_patterns from django.conf import settings +from django.conf.urls.i18n import i18n_patterns +from django.conf.urls.static import static from django.contrib import admin +from django.contrib.auth import views as auth_views from django.contrib.staticfiles.urls import staticfiles_urlpatterns -from django.conf.urls.static import static +from django.urls import include, re_path as url from django.views.generic import TemplateView -from django.contrib.auth import views as auth_views +from django_nine import versions from fobi.settings import DEFAULT_THEME -from django_nine import versions - admin.autodiscover() # Mapping. fobi_theme_home_template_mapping = { - 'bootstrap3': 'home/bootstrap3.html', - 'foundation5': 'home/foundation5.html', - 'simple': 'home/simple.html', + "bootstrap3": "home/bootstrap3.html", + "foundation5": "home/foundation5.html", + "simple": "home/simple.html", } # Get the template to be used. fobi_home_template = fobi_theme_home_template_mapping.get( - DEFAULT_THEME, - 'home/base.html' + DEFAULT_THEME, "home/base.html" ) -FOBI_EDIT_URLS_PREFIX = '' -if DEFAULT_THEME in ('simple', 'djangocms_admin_style_theme'): - FOBI_EDIT_URLS_PREFIX = 'admin/' +FOBI_EDIT_URLS_PREFIX = "" +if DEFAULT_THEME in ("simple", "djangocms_admin_style_theme"): + FOBI_EDIT_URLS_PREFIX = "admin/" urlpatterns = [] url_patterns_args = [ # DB Store plugin URLs # namespace='fobi' - url(r'^fobi/plugins/form-handlers/db-store/', - include('fobi.contrib.plugins.form_handlers.db_store.urls')), - url(r'^fobi/plugins/form-wizard-handlers/db-store/', - include('fobi.contrib.plugins.form_handlers.db_store.urls.' - 'form_wizard_handlers')), - + url( + r"^fobi/plugins/form-handlers/db-store/", + include("fobi.contrib.plugins.form_handlers.db_store.urls"), + ), + url( + r"^fobi/plugins/form-wizard-handlers/db-store/", + include( + "fobi.contrib.plugins.form_handlers.db_store.urls." + "form_wizard_handlers" + ), + ), # django-fobi URLs: # namespace='fobi' - url(r'^fobi/', include('fobi.urls.class_based.view')), + url(r"^fobi/", include("fobi.urls.class_based.view")), # namespace='fobi' - url(r'^{0}fobi/'.format(FOBI_EDIT_URLS_PREFIX), - include('fobi.urls.class_based.edit')), - - url(r'^admin_tools/', include('admin_tools.urls')), - - url(r'^login/$', - auth_views.LoginView.as_view(template_name='registration/login.html'), - name='auth_login'), + url( + r"^{0}fobi/".format(FOBI_EDIT_URLS_PREFIX), + include("fobi.urls.class_based.edit"), + ), + url(r"^admin_tools/", include("admin_tools.urls")), + url( + r"^login/$", + auth_views.LoginView.as_view(template_name="registration/login.html"), + name="auth_login", + ), ] if versions.DJANGO_GTE_2_0: url_patterns_args += [ - url(r'^admin/', admin.site.urls), + url(r"^admin/", admin.site.urls), ] else: url_patterns_args += [ - url(r'^admin/', include(admin.site.urls)), + url(r"^admin/", include(admin.site.urls)), ] url_patterns_args += [ # django-registration URLs: url( - r'^accounts/', + r"^accounts/", include( - 'django_registration.backends.one_step.urls' + "django_registration.backends.one_step.urls" if versions.DJANGO_GTE_3_0 - else 'registration.backends.simple.urls' - ) + else "registration.backends.simple.urls" + ), ), - # foo URLs: - url(r'^foo/', include('foo.urls')), - + url(r"^foo/", include("foo.urls")), # bar URLs: # url(r'^bar/', include('bar.urls')), - - url(r'^$', TemplateView.as_view(template_name=fobi_home_template)), - + url(r"^$", TemplateView.as_view(template_name=fobi_home_template)), # django-fobi public forms contrib app: # url(r'^', include('fobi.contrib.apps.public_forms.urls')), ] @@ -92,16 +93,16 @@ # Serving media and static in debug/developer mode. if settings.DEBUG: urlpatterns += staticfiles_urlpatterns() - urlpatterns += static(settings.MEDIA_URL, - document_root=settings.MEDIA_ROOT) + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) # Conditionally including FeinCMS URls in case if # FeinCMS in installed apps. -if 'feincms' in settings.INSTALLED_APPS: +if "feincms" in settings.INSTALLED_APPS: from page.models import Page + Page url_patterns_args = [ - url(r'^pages/', include('feincms.urls')), + url(r"^pages/", include("feincms.urls")), ] urlpatterns += i18n_patterns(*url_patterns_args) @@ -112,48 +113,47 @@ # ] # urlpatterns += list(url_patterns_args) -if 'ckeditor_uploader' in settings.INSTALLED_APPS: +if "ckeditor_uploader" in settings.INSTALLED_APPS: url_patterns_args = [ - url(r'^ckeditor/', include('ckeditor_uploader.urls')), + url(r"^ckeditor/", include("ckeditor_uploader.urls")), ] urlpatterns += i18n_patterns(*url_patterns_args) # Conditionally including DjangoCMS URls in case if # DjangoCMS in installed apps. -if 'cms' in settings.INSTALLED_APPS: +if "cms" in settings.INSTALLED_APPS: url_patterns_args = [ - url(r'^cms-pages/', include('cms.urls')), + url(r"^cms-pages/", include("cms.urls")), ] urlpatterns += i18n_patterns(*url_patterns_args) # Conditionally including Django REST framework integration app -if 'fobi.contrib.apps.drf_integration' in settings.INSTALLED_APPS: +if "fobi.contrib.apps.drf_integration" in settings.INSTALLED_APPS: from fobi.contrib.apps.drf_integration.urls import fobi_router - urlpatterns += [ - url(r'^api/', include(fobi_router.urls)) - ] + + urlpatterns += [url(r"^api/", include(fobi_router.urls))] # Conditionally including Captcha URls in case if # Captcha in installed apps. -if getattr(settings, 'ENABLE_CAPTCHA', False): +if getattr(settings, "ENABLE_CAPTCHA", False): try: from captcha.fields import ReCaptchaField except ImportError: try: from captcha.fields import CaptchaField - if 'captcha' in settings.INSTALLED_APPS: + + if "captcha" in settings.INSTALLED_APPS: urlpatterns += [ - url(r'^captcha/', include('captcha.urls')), + url(r"^captcha/", include("captcha.urls")), ] except ImportError: pass -if ( - getattr(settings, 'DEBUG', False) - and getattr(settings, 'DEBUG_TOOLBAR', False) +if getattr(settings, "DEBUG", False) and getattr( + settings, "DEBUG_TOOLBAR", False ): import debug_toolbar urlpatterns = [ - url(r'^__debug__/', include(debug_toolbar.urls)), + url(r"^__debug__/", include(debug_toolbar.urls)), ] + urlpatterns diff --git a/examples/simple/wsgi.py b/examples/simple/wsgi.py index b25956a55..08f1e6bfa 100644 --- a/examples/simple/wsgi.py +++ b/examples/simple/wsgi.py @@ -25,6 +25,7 @@ # file. This includes Django's development server, if the WSGI_APPLICATION # setting points here. from django.core.wsgi import get_wsgi_application + application = get_wsgi_application() # Apply WSGI middleware here. diff --git a/examples/tutorial/foo/fobi_form_callbacks.py b/examples/tutorial/foo/fobi_form_callbacks.py index 7811dcf71..c16d2f0a1 100644 --- a/examples/tutorial/foo/fobi_form_callbacks.py +++ b/examples/tutorial/foo/fobi_form_callbacks.py @@ -1,5 +1,5 @@ -from fobi.constants import CALLBACK_FORM_VALID from fobi.base import FormCallback, form_callback_registry +from fobi.constants import CALLBACK_FORM_VALID class SampleFooCallback(FormCallback): diff --git a/examples/tutorial/local_settings.py b/examples/tutorial/local_settings.py index a8d7013e6..137b81f04 100644 --- a/examples/tutorial/local_settings.py +++ b/examples/tutorial/local_settings.py @@ -1,34 +1,38 @@ import os -PROJECT_DIR = lambda base : os.path.abspath(os.path.join(os.path.dirname(__file__), base).replace('\\','/')) + +PROJECT_DIR = lambda base: os.path.abspath( + os.path.join(os.path.dirname(__file__), base).replace("\\", "/") +) DEBUG = True DEBUG_TOOLBAR = not True TEMPLATE_DEBUG = True DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': PROJECT_DIR('../db/example.db'), # Or path to database file if using sqlite3. - + "default": { + "ENGINE": "django.db.backends.sqlite3", # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + "NAME": PROJECT_DIR( + "../db/example.db" + ), # Or path to database file if using sqlite3. # The following settings are not used with sqlite3: - 'USER': '', - 'PASSWORD': '', - 'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. - 'PORT': '', # Set to empty string for default. + "USER": "", + "PASSWORD": "", + "HOST": "", # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. + "PORT": "", # Set to empty string for default. } } -INTERNAL_IPS = ('127.0.0.1',) +INTERNAL_IPS = ("127.0.0.1",) -EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend' -EMAIL_FILE_PATH = PROJECT_DIR('../tmp') +EMAIL_BACKEND = "django.core.mail.backends.filebased.EmailBackend" +EMAIL_FILE_PATH = PROJECT_DIR("../tmp") -DEFAULT_FROM_EMAIL = '' +DEFAULT_FROM_EMAIL = "" FOBI_DEBUG = True FOBI_RESTRICT_PLUGIN_ACCESS = False FOBI_RESTRICT_FIELDS_ACCESS = False -#FOBI_DEFAULT_THEME = 'foundation5' +# FOBI_DEFAULT_THEME = 'foundation5' WAIT_BETWEEN_TEST_STEPS = 0 FOBI_WAIT_AT_TEST_END = 0 diff --git a/examples/tutorial/sample_layout/fobi_form_elements.py b/examples/tutorial/sample_layout/fobi_form_elements.py index 0a17002a5..dea4a1d81 100644 --- a/examples/tutorial/sample_layout/fobi_form_elements.py +++ b/examples/tutorial/sample_layout/fobi_form_elements.py @@ -1,17 +1,17 @@ -from fobi.base import form_element_plugin_widget_registry - from sample_textarea.widgets import BaseSampleTextareaPluginWidget +from fobi.base import form_element_plugin_widget_registry + class SampleTextareaPluginWidget(BaseSampleTextareaPluginWidget): """SampleTextareaPluginWidget.""" - theme_uid = 'sample_layout' # Theme for which the widget is loaded + theme_uid = "sample_layout" # Theme for which the widget is loaded media_js = [ - 'sample_layout/js/fobi.plugins.form_elements.sample_textarea.js', + "sample_layout/js/fobi.plugins.form_elements.sample_textarea.js", ] media_css = [ - 'sample_layout/css/fobi.plugins.form_elements.sample_textarea.css', + "sample_layout/css/fobi.plugins.form_elements.sample_textarea.css", ] diff --git a/examples/tutorial/sample_mail/fobi_form_handlers.py b/examples/tutorial/sample_mail/fobi_form_handlers.py index 32f4d5f09..71293bbb9 100644 --- a/examples/tutorial/sample_mail/fobi_form_handlers.py +++ b/examples/tutorial/sample_mail/fobi_form_handlers.py @@ -1,11 +1,10 @@ import json from django.core.mail import send_mail +from sample_mail.forms import SampleMailForm from fobi.base import FormHandlerPlugin, form_handler_plugin_registry -from sample_mail.forms import SampleMailForm - class SampleMailHandlerPlugin(FormHandlerPlugin): """SampleMailHandlerPlugin.""" @@ -20,7 +19,7 @@ def run(self, form_entry, request, form): json.dumps(form.cleaned_data), self.data.from_email, [self.data.to_email], - fail_silently=True + fail_silently=True, ) def plugin_data_repr(self): diff --git a/examples/tutorial/sample_textarea/fobi_form_elements.py b/examples/tutorial/sample_textarea/fobi_form_elements.py index 78a417c90..b346f9b0c 100644 --- a/examples/tutorial/sample_textarea/fobi_form_elements.py +++ b/examples/tutorial/sample_textarea/fobi_form_elements.py @@ -1,9 +1,9 @@ from django import forms -from fobi.base import FormFieldPlugin, form_element_plugin_registry - from .forms import SampleTextareaForm +from fobi.base import FormFieldPlugin, form_element_plugin_registry + class SampleTextareaPlugin(FormFieldPlugin): """SampleTextareaPlugin.""" @@ -13,13 +13,14 @@ class SampleTextareaPlugin(FormFieldPlugin): form = SampleTextareaForm group = "Samples" # Group to which the plugin belongs to - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): field_kwargs = { - 'required': self.data.required, - 'label': self.data.label, - 'initial': self.data.initial, - 'widget': forms.widgets.Textarea(attrs={}) + "required": self.data.required, + "label": self.data.label, + "initial": self.data.initial, + "widget": forms.widgets.Textarea(attrs={}), } return [(self.data.name, forms.CharField, field_kwargs)] diff --git a/examples/tutorial/sample_textarea/forms.py b/examples/tutorial/sample_textarea/forms.py index 055c4511d..d932b3bdc 100644 --- a/examples/tutorial/sample_textarea/forms.py +++ b/examples/tutorial/sample_textarea/forms.py @@ -10,7 +10,7 @@ class SampleTextareaForm(forms.Form, BasePluginForm): ("name", ""), ("label", ""), ("initial", ""), - ("required", False) + ("required", False), ] name = forms.CharField(label="Name", required=True) diff --git a/examples/tutorial/settings.py b/examples/tutorial/settings.py index 417c4d58f..cfd8282ff 100644 --- a/examples/tutorial/settings.py +++ b/examples/tutorial/settings.py @@ -1,6 +1,9 @@ # Django settings for example project. import os -PROJECT_DIR = lambda base : os.path.abspath(os.path.join(os.path.dirname(__file__), base).replace('\\','/')) + +PROJECT_DIR = lambda base: os.path.abspath( + os.path.join(os.path.dirname(__file__), base).replace("\\", "/") +) gettext = lambda s: s DEBUG = False @@ -14,14 +17,16 @@ MANAGERS = ADMINS DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': PROJECT_DIR('../db/example.db'), # Or path to database file if using sqlite3. + "default": { + "ENGINE": "django.db.backends.sqlite3", # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + "NAME": PROJECT_DIR( + "../db/example.db" + ), # Or path to database file if using sqlite3. # The following settings are not used with sqlite3: - 'USER': '', - 'PASSWORD': '', - 'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. - 'PORT': '', # Set to empty string for default. + "USER": "", + "PASSWORD": "", + "HOST": "", # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. + "PORT": "", # Set to empty string for default. } } @@ -33,17 +38,17 @@ # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. # In a Windows environment this must be set to your system time zone. -TIME_ZONE = 'America/Chicago' +TIME_ZONE = "America/Chicago" # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html -#LANGUAGE_CODE = 'en-us' +# LANGUAGE_CODE = 'en-us' LANGUAGES = ( - ('en', gettext("English")), # Main language! - ('hy', gettext("Armenian")), - ('nl', gettext("Dutch")), - ('ru', gettext("Russian")), + ("en", gettext("English")), # Main language! + ("hy", gettext("Armenian")), + ("nl", gettext("Dutch")), + ("ru", gettext("Russian")), ) SITE_ID = 1 @@ -61,63 +66,63 @@ # Absolute filesystem path to the directory that will hold user-uploaded files. # Example: "/var/www/example.com/media/" -MEDIA_ROOT = PROJECT_DIR(os.path.join('..', 'media')) +MEDIA_ROOT = PROJECT_DIR(os.path.join("..", "media")) # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. # Examples: "http://example.com/media/", "http://media.example.com/" -MEDIA_URL = '/media/' +MEDIA_URL = "/media/" # Absolute path to the directory static files should be collected to. # Don't put anything in this directory yourself; store your static files # in apps' "static/" subdirectories and in STATICFILES_DIRS. # Example: "/var/www/example.com/static/" -STATIC_ROOT = PROJECT_DIR(os.path.join('..', 'static')) +STATIC_ROOT = PROJECT_DIR(os.path.join("..", "static")) # URL prefix for static files. # Example: "http://example.com/static/", "http://static.example.com/" -STATIC_URL = '/static/' +STATIC_URL = "/static/" # Additional locations of static files STATICFILES_DIRS = ( # Put strings here, like "/home/html/static" or "C:/www/django/static". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. - PROJECT_DIR(os.path.join('..', 'media', 'static')), + PROJECT_DIR(os.path.join("..", "media", "static")), ) # List of finder classes that know how to find static files in # various locations. STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', -# 'django.contrib.staticfiles.finders.DefaultStorageFinder', + "django.contrib.staticfiles.finders.FileSystemFinder", + "django.contrib.staticfiles.finders.AppDirectoriesFinder", + # 'django.contrib.staticfiles.finders.DefaultStorageFinder', ) # Make this unique, and don't share it with anybody. -SECRET_KEY = '97818c*w97Zi8a-m^1coRRrmurMI6+q5_kyn*)s@(*_Pk6q423' +SECRET_KEY = "97818c*w97Zi8a-m^1coRRrmurMI6+q5_kyn*)s@(*_Pk6q423" # List of callables that know how to import templates from various sources. TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - 'django.template.loaders.eggs.Loader', + "django.template.loaders.filesystem.Loader", + "django.template.loaders.app_directories.Loader", + "django.template.loaders.eggs.Loader", ) MIDDLEWARE_CLASSES = ( - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) -ROOT_URLCONF = 'urls' +ROOT_URLCONF = "urls" # Python dotted path to the WSGI application used by Django's runserver. -WSGI_APPLICATION = 'wsgi.application' +WSGI_APPLICATION = "wsgi.application" TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", @@ -128,14 +133,14 @@ "django.core.context_processors.tz", "django.contrib.messages.context_processors.messages", "django.core.context_processors.request", - "fobi.context_processors.theme", # Important! + "fobi.context_processors.theme", # Important! ) TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. - PROJECT_DIR('templates'), + PROJECT_DIR("templates"), ) INSTALLED_APPS = ( @@ -143,31 +148,26 @@ #'admin_tools', #'admin_tools.menu', #'admin_tools.dashboard', - # Django core and contrib apps - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.messages', - 'django.contrib.staticfiles', - 'django.contrib.admin', - 'django.contrib.sitemaps', - + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.sites", + "django.contrib.messages", + "django.contrib.staticfiles", + "django.contrib.admin", + "django.contrib.sitemaps", # Third party apps used in the project - 'tinymce', # TinyMCE - 'easy_thumbnails', # Thumbnailer + "tinymce", # TinyMCE + "easy_thumbnails", # Thumbnailer # Auth views and registration app - 'django_registration' if DJANGO_GTE_3_0 else 'registration', - + "django_registration" if DJANGO_GTE_3_0 else "registration", # Fobi core - 'fobi', - + "fobi", # Fobi themes #'fobi.contrib.themes.bootstrap3', # Bootstrap 3 theme #'fobi.contrib.themes.foundation5', # Foundation 5 theme #'fobi.contrib.themes.simple', # Simple theme - # Fobi form elements - fields #'fobi.contrib.plugins.form_elements.fields.boolean', #'fobi.contrib.plugins.form_elements.fields.email', @@ -180,40 +180,38 @@ #'fobi.contrib.plugins.form_elements.fields.select_multiple_model_objects', #'fobi.contrib.plugins.form_elements.fields.text', #'fobi.contrib.plugins.form_elements.fields.textarea', - # Fobi form elements - content elements - 'fobi.contrib.plugins.form_elements.test.dummy', - 'fobi.contrib.plugins.form_elements.content.content_image', - 'fobi.contrib.plugins.form_elements.content.content_text', - 'fobi.contrib.plugins.form_elements.content.content_video', - + "fobi.contrib.plugins.form_elements.test.dummy", + "fobi.contrib.plugins.form_elements.content.content_image", + "fobi.contrib.plugins.form_elements.content.content_text", + "fobi.contrib.plugins.form_elements.content.content_video", # Form handlers #'fobi.contrib.plugins.form_handlers.db_store', #'fobi.contrib.plugins.form_handlers.http_repost', #'fobi.contrib.plugins.form_handlers.mail', - # Your custom fobi apps - 'sample_layout', # Sample theme/layout - 'sample_textarea', # Sample text area form element plugin - 'sample_mail', # Sample mail form handler plugin - + "sample_layout", # Sample theme/layout + "sample_textarea", # Sample text area form element plugin + "sample_mail", # Sample mail form handler plugin # Other project specific apps - 'foo', # Test app + "foo", # Test app ) -LOGIN_REDIRECT_URL = '/fobi/' # Important for passing the selenium tests +LOGIN_REDIRECT_URL = "/fobi/" # Important for passing the selenium tests -#LOGIN_URL = '/accounts/login/' -#LOGIN_ERROR_URL = '/accounts/login/' -#LOGOUT_URL = '/accounts/logout/' +# LOGIN_URL = '/accounts/login/' +# LOGIN_ERROR_URL = '/accounts/login/' +# LOGOUT_URL = '/accounts/logout/' # django-admin-tools custom dashboard -ADMIN_TOOLS_INDEX_DASHBOARD = 'admin_tools_dashboard.CustomIndexDashboard' -ADMIN_TOOLS_APP_INDEX_DASHBOARD = 'admin_tools_dashboard.CustomAppIndexDashboard' -ADMIN_TOOLS_MENU = 'admin_tools_dashboard.menu.CustomMenu' +ADMIN_TOOLS_INDEX_DASHBOARD = "admin_tools_dashboard.CustomIndexDashboard" +ADMIN_TOOLS_APP_INDEX_DASHBOARD = ( + "admin_tools_dashboard.CustomAppIndexDashboard" +) +ADMIN_TOOLS_MENU = "admin_tools_dashboard.menu.CustomMenu" MIGRATION_MODULES = { - 'fobi': 'fobi.migrations', + "fobi": "fobi.migrations", } # A sample logging configuration. The only tangible logging @@ -222,59 +220,55 @@ # See http://docs.djangoproject.com/en/dev/topics/logging for # more details on how to customize your logging configuration. LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } + "version": 1, + "disable_existing_loggers": False, + "filters": { + "require_debug_false": {"()": "django.utils.log.RequireDebugFalse"} }, - 'formatters': { - 'verbose': { - 'format': '\n%(levelname)s %(asctime)s [%(pathname)s:%(lineno)s] %(message)s' - }, - 'simple': { - 'format': '\n%(levelname)s %(message)s' + "formatters": { + "verbose": { + "format": "\n%(levelname)s %(asctime)s [%(pathname)s:%(lineno)s] %(message)s" }, + "simple": {"format": "\n%(levelname)s %(message)s"}, }, - 'handlers': { - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' + "handlers": { + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", }, - 'console': { - 'level': 'DEBUG', - 'class': 'logging.StreamHandler', - 'formatter': 'verbose' + "console": { + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "verbose", }, - 'django_log': { - 'level':'DEBUG', - 'class':'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../logs/django.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "django_log": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../logs/django.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, - 'fobi_log': { - 'level':'DEBUG', - 'class':'logging.handlers.RotatingFileHandler', - 'filename': PROJECT_DIR("../logs/fobi.log"), - 'maxBytes': 1048576, - 'backupCount': 99, - 'formatter': 'verbose', + "fobi_log": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": PROJECT_DIR("../logs/fobi.log"), + "maxBytes": 1048576, + "backupCount": 99, + "formatter": "verbose", }, }, - 'loggers': { - 'django': { - 'handlers': ['django_log'], - 'level': 'ERROR', - 'propagate': True, + "loggers": { + "django": { + "handlers": ["django_log"], + "level": "ERROR", + "propagate": True, }, - 'fobi': { - 'handlers': ['console', 'fobi_log'], - 'level': 'DEBUG', - 'propagate': True, + "fobi": { + "handlers": ["console", "fobi_log"], + "level": "DEBUG", + "propagate": True, }, }, } @@ -287,19 +281,13 @@ if DEBUG and DEBUG_TOOLBAR: # debug_toolbar - MIDDLEWARE_CLASSES += ( - 'debug_toolbar.middleware.DebugToolbarMiddleware', - ) + MIDDLEWARE_CLASSES += ("debug_toolbar.middleware.DebugToolbarMiddleware",) - INSTALLED_APPS += ( - 'debug_toolbar', - ) + INSTALLED_APPS += ("debug_toolbar",) DEBUG_TOOLBAR_CONFIG = { - 'INTERCEPT_REDIRECTS': False, + "INTERCEPT_REDIRECTS": False, } if DEBUG and TEMPLATE_DEBUG: - INSTALLED_APPS += ( - 'template_debug', - ) + INSTALLED_APPS += ("template_debug",) diff --git a/examples/tutorial/urls.py b/examples/tutorial/urls.py index 4bac12e89..8a72c7a94 100644 --- a/examples/tutorial/urls.py +++ b/examples/tutorial/urls.py @@ -1,11 +1,9 @@ -from django.urls import include, re_path as url - from django.conf import settings +from django.conf.urls.static import static from django.contrib import admin from django.contrib.staticfiles.urls import staticfiles_urlpatterns -from django.conf.urls.static import static +from django.urls import include, re_path as url from django.views.generic import TemplateView - from django_nine import versions from fobi.settings import DEFAULT_THEME @@ -14,39 +12,40 @@ # Mapping. fobi_theme_home_template_mapping = { - 'bootstrap3': 'home/bootstrap3.html', - 'foundation5': 'home/foundation5.html', + "bootstrap3": "home/bootstrap3.html", + "foundation5": "home/foundation5.html", } # Get the template to be used. fobi_home_template = fobi_theme_home_template_mapping.get( - DEFAULT_THEME, - 'home/base.html' - ) + DEFAULT_THEME, "home/base.html" +) urlpatterns = [ # DB Store plugin URLs - url(r'^fobi/plugins/form-handlers/db-store/', - include('fobi.contrib.plugins.form_handlers.db_store.urls')), - #, namespace='fobi' - + url( + r"^fobi/plugins/form-handlers/db-store/", + include("fobi.contrib.plugins.form_handlers.db_store.urls"), + ), + # , namespace='fobi' # django-fobi URLs: - url(r'^fobi/', include('fobi.urls')), #, namespace='fobi' - - url(r'^admin_tools/', include('admin_tools.urls')), - - url(r'^admin/', include(admin.site.urls)), - + url(r"^fobi/", include("fobi.urls")), # , namespace='fobi' + url(r"^admin_tools/", include("admin_tools.urls")), + url(r"^admin/", include(admin.site.urls)), # django-registration URLs: - url(r'^accounts/', include('django_registration.backends.one_step.urls' if versions.DJANGO_GTE_3_0 else 'registration.backends.simple.urls')), - + url( + r"^accounts/", + include( + "django_registration.backends.one_step.urls" + if versions.DJANGO_GTE_3_0 + else "registration.backends.simple.urls" + ), + ), # foo URLs: - url(r'^foo/', include('foo.urls')), - - url(r'^$', TemplateView.as_view(template_name=fobi_home_template)), - + url(r"^foo/", include("foo.urls")), + url(r"^$", TemplateView.as_view(template_name=fobi_home_template)), # django-fobi public forms contrib app: - #url(r'^', include('fobi.contrib.apps.public_forms.urls')), + # url(r'^', include('fobi.contrib.apps.public_forms.urls')), ] # Serving media and static in debug/developer mode. @@ -56,9 +55,10 @@ # Conditionally including FeinCMS URls in case if # FeinCMS in installed apps. -if 'feincms' in settings.INSTALLED_APPS: +if "feincms" in settings.INSTALLED_APPS: from page.models import Page + Page urlpatterns += [ - url(r'', include('feincms.urls')), + url(r"", include("feincms.urls")), ] diff --git a/examples/tutorial/wsgi.py b/examples/tutorial/wsgi.py index 9f3e21bf3..d1940bb54 100644 --- a/examples/tutorial/wsgi.py +++ b/examples/tutorial/wsgi.py @@ -25,6 +25,7 @@ # file. This includes Django's development server, if the WSGI_APPLICATION # setting points here. from django.core.wsgi import get_wsgi_application + application = get_wsgi_application() # Apply WSGI middleware here. diff --git a/runtests.py b/runtests.py index 42702e54d..4de0590f8 100755 --- a/runtests.py +++ b/runtests.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import os import sys + import pytest @@ -11,5 +12,5 @@ def main(): return pytest.main() -if __name__ == '__main__': +if __name__ == "__main__": sys.exit(main()) diff --git a/setup.cfg b/setup.cfg index 4cfb6351c..e7739acea 100644 --- a/setup.cfg +++ b/setup.cfg @@ -43,6 +43,7 @@ skip = wsgi.py, ./src/fobi/migrations/*.py, ./src/fobi/south_migrations/*.py + .tox/ skip_glob = **/migrations/*.py force_grid_wrap = 0 use_parentheses = true diff --git a/setup.py b/setup.py index a013bfaee..5d80f3675 100644 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from distutils.version import LooseVersion from setuptools import setup, find_packages -version = '0.19.1' +version = "0.19.1" # *************************************************************************** # ************************** Django version ********************************* @@ -11,69 +11,73 @@ DJANGO_INSTALLED = False try: import django + DJANGO_INSTALLED = True LOOSE_DJANGO_VERSION = LooseVersion(django.get_version()) LOOSE_DJANGO_MINOR_VERSION = LooseVersion( - '.'.join([str(i) for i in LOOSE_DJANGO_VERSION.version[0:2]]) + ".".join([str(i) for i in LOOSE_DJANGO_VERSION.version[0:2]]) ) # Loose versions LOOSE_VERSIONS = ( - '1.4', - '1.5', - '1.6', - '1.7', - '1.8', - '1.9', - '1.10', - '1.11', - '2.0', - '2.1', - '2.2', - '3.0', - '3.1', - '3.2', - '4.0', - '4.1', - '4.2', - '5.0', + "1.4", + "1.5", + "1.6", + "1.7", + "1.8", + "1.9", + "1.10", + "1.11", + "2.0", + "2.1", + "2.2", + "3.0", + "3.1", + "3.2", + "4.0", + "4.1", + "4.2", + "5.0", ) for v in LOOSE_VERSIONS: - var_name = 'LOOSE_VERSION_{0}'.format(v.replace('.', '_')) + var_name = "LOOSE_VERSION_{0}".format(v.replace(".", "_")) globals()[var_name] = LooseVersion(v) # Exact versions EXACT_VERSIONS = LOOSE_VERSIONS[:-1] for i, v in enumerate(EXACT_VERSIONS): - l_cur = globals()['LOOSE_VERSION_{0}' \ - ''.format(LOOSE_VERSIONS[i].replace('.', '_'))] - l_nxt = globals()['LOOSE_VERSION_{0}' \ - ''.format(LOOSE_VERSIONS[i + 1].replace('.', '_'))] - var_name = 'DJANGO_{0}'.format(v.replace('.', '_')) - globals()[var_name] = (l_cur <= LOOSE_DJANGO_VERSION < l_nxt) + l_cur = globals()[ + "LOOSE_VERSION_{0}" "".format(LOOSE_VERSIONS[i].replace(".", "_")) + ] + l_nxt = globals()[ + "LOOSE_VERSION_{0}" + "".format(LOOSE_VERSIONS[i + 1].replace(".", "_")) + ] + var_name = "DJANGO_{0}".format(v.replace(".", "_")) + globals()[var_name] = l_cur <= LOOSE_DJANGO_VERSION < l_nxt # LTE list LTE_VERSIONS = LOOSE_VERSIONS[:-1] for i, v in enumerate(EXACT_VERSIONS): - l_cur = globals()['LOOSE_VERSION_{0}' \ - ''.format(LOOSE_VERSIONS[i].replace('.', '_'))] - var_name = 'DJANGO_LTE_{0}'.format(v.replace('.', '_')) - globals()[var_name] = (LOOSE_DJANGO_MINOR_VERSION <= l_cur) + l_cur = globals()[ + "LOOSE_VERSION_{0}" "".format(LOOSE_VERSIONS[i].replace(".", "_")) + ] + var_name = "DJANGO_LTE_{0}".format(v.replace(".", "_")) + globals()[var_name] = LOOSE_DJANGO_MINOR_VERSION <= l_cur # GTE list GTE_VERSIONS = LOOSE_VERSIONS[:-1] for i, v in enumerate(EXACT_VERSIONS): - l_cur = globals()['LOOSE_VERSION_{0}' \ - ''.format(LOOSE_VERSIONS[i].replace('.', '_'))] - var_name = 'DJANGO_GTE_{0}'.format(v.replace('.', '_')) - globals()[var_name] = ( - LOOSE_DJANGO_MINOR_VERSION >= l_cur - ) + l_cur = globals()[ + "LOOSE_VERSION_{0}" "".format(LOOSE_VERSIONS[i].replace(".", "_")) + ] + var_name = "DJANGO_GTE_{0}".format(v.replace(".", "_")) + globals()[var_name] = LOOSE_DJANGO_MINOR_VERSION >= l_cur except Exception as err: pass @@ -83,77 +87,61 @@ # *************************************************************************** try: - readme = open(os.path.join(os.path.dirname(__file__), 'README.rst')).read() + readme = open(os.path.join(os.path.dirname(__file__), "README.rst")).read() screenshots = open( - os.path.join(os.path.dirname(__file__), 'docs/screenshots.rst.distrib') + os.path.join(os.path.dirname(__file__), "docs/screenshots.rst.distrib") ).read() screenshots = screenshots.replace( - '.. image:: _static', - '.. figure:: https://github.com/barseghyanartur/django-fobi/raw/' - 'master/docs/_static' + ".. image:: _static", + ".. figure:: https://github.com/barseghyanartur/django-fobi/raw/" + "master/docs/_static", ) except: - readme = '' - screenshots = '' + readme = "" + screenshots = "" template_dirs = [ # Core templates "src/fobi/templates/fobi", - # Bootstrap 3 "src/fobi/contrib/themes/bootstrap3/templates/bootstrap3", - # Foundation 5 "src/fobi/contrib/themes/foundation5/templates/foundation5", - # DB Store widget for Foundation 5 "src/fobi/contrib/themes/foundation5/widgets/form_handlers/" "db_store_foundation5_widget", - # Simple "src/fobi/contrib/themes/simple/templates/simple", - # djangocms_admin_style_theme "src/fobi/contrib/themes/djangocms_admin_style_theme/templates/" "djangocms_admin_style_theme", - # DjangoCMS integration "src/fobi/contrib/apps/djangocms_integration/templates/" "djangocms_integration", - # FeinCMS integration # "src/fobi/contrib/apps/feincms_integration/templates/" # "feincms_integration", - # Mezzanine integration "src/fobi/contrib/apps/mezzanine_integration/templates/" "mezzanine_integration", - # Wagtail integration "src/fobi/contrib/apps/wagtail_integration/templates/" "wagtail_integration", - # Content image "src/fobi/contrib/plugins/form_elements/content/content_image/" "templates/content_image", - # Content image URL "src/fobi/contrib/plugins/form_elements/content/content_image_url/" "templates/content_image_url", - # DB Store "src/fobi/contrib/plugins/form_handlers/db_store/templates/db_store", - # Mail "src/fobi/contrib/plugins/form_handlers/mail/templates/mail", - # Mail sender "src/fobi/contrib/plugins/form_handlers/mail_sender/templates/mail_sender", - # Http re-post "src/fobi/contrib/plugins/form_handlers/http_repost/templates/" "http_repost", - # MailChimp importer "src/fobi/contrib/plugins/form_importers/mailchimp_importer/templates/" "mailchimp_importer", @@ -162,49 +150,36 @@ static_dirs = [ # Core static "src/fobi/static", - # Bootstrap3 "src/fobi/contrib/themes/bootstrap3/static", - # Bootstrap3 datetime widget "src/fobi/contrib/themes/bootstrap3/widgets/form_elements/" "datetime_bootstrap3_widget/static", - # Bootstrap3 date widget "src/fobi/contrib/themes/bootstrap3/widgets/form_elements/" "date_bootstrap3_widget/static", - # Bootstrap3 slider widget "src/fobi/contrib/themes/bootstrap3/widgets/form_elements/" "slider_bootstrap3_widget/static", - # Foundation5 "src/fobi/contrib/themes/foundation5/static", - # Foundation5 datetime widget "src/fobi/contrib/themes/foundation5/widgets/form_elements/" "datetime_foundation5_widget/static", - # Foundation5 date widget "src/fobi/contrib/themes/foundation5/widgets/form_elements/" "date_foundation5_widget/static", - # Simple "src/fobi/contrib/themes/simple/static", - # djangocms_admin_style_theme "src/fobi/contrib/themes/djangocms_admin_style_theme/static", - # DB Store "src/fobi/contrib/plugins/form_handlers/db_store/static", - # Dummy "src/fobi/contrib/plugins/form_elements/test/dummy/static", - # Markdown widget "src/fobi/reusable/markdown_widget/static", "src/fobi/contrib/plugins/form_elements/content/content_markdown/static", - # Invisible reCAPTCHA "src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/static", ] @@ -220,40 +195,40 @@ locale_files = [] for template_dir in template_dirs: - templates += [os.path.join(template_dir, f) - for f - in os.listdir(template_dir)] + templates += [ + os.path.join(template_dir, f) for f in os.listdir(template_dir) + ] for static_dir in static_dirs: - static_files += [os.path.join(static_dir, f) - for f - in os.listdir(static_dir)] + static_files += [ + os.path.join(static_dir, f) for f in os.listdir(static_dir) + ] for locale_dir in locale_dirs: - locale_files += [os.path.join(locale_dir, f) - for f - in os.listdir(locale_dir)] + locale_files += [ + os.path.join(locale_dir, f) for f in os.listdir(locale_dir) + ] dependency_links = [] # Dependencies install_requires = [ - 'bleach', - 'django-autoslug>=1.9.4', - 'django-formtools>=2.0', - 'django-nine>=0.2.3', - 'django-nonefield>=0.1', - 'Pillow>=2.0.0', - 'requests>=1.0.0', - 'six>=1.9', - 'Unidecode>=0.04.1', - 'vishap>=0.1.5,<2.0', - 'easy-thumbnails>=2.4.1', + "bleach", + "django-autoslug>=1.9.4", + "django-formtools>=2.0", + "django-nine>=0.2.3", + "django-nonefield>=0.1", + "Pillow>=2.0.0", + "requests>=1.0.0", + "six>=1.9", + "Unidecode>=0.04.1", + "vishap>=0.1.5,<2.0", + "easy-thumbnails>=2.4.1", ] tests_require = [ - 'selenium', - 'Faker', + "selenium", + "Faker", # 'factory_boy', # 'fake-factory', # 'Pillow', @@ -264,10 +239,10 @@ ] setup( - name='django-fobi', + name="django-fobi", version=version, description="Form generator/builder application for Django done right: " - "customisable, modular, user- and developer- friendly.", + "customisable, modular, user- and developer- friendly.", long_description="{0}{1}".format(readme, screenshots), classifiers=[ "Programming Language :: Python :: 3", @@ -290,21 +265,19 @@ "Documentation": "https://django-fobi.readthedocs.io/", "Source Code": "https://github.com/barseghyanartur/django-fobi", "Changelog": "https://django-fobi.readthedocs.io/" - "en/latest/changelog.html", + "en/latest/changelog.html", }, keywords="django, form generator, form builder, visual form designer, " - "user generated forms", - author='Artur Barseghyan', - author_email='artur.barseghyan@gmail.com', - url='https://github.com/barseghyanartur/django-fobi/', - package_dir={'': 'src'}, - packages=find_packages(where='./src'), - license='GPL-2.0-only OR LGPL-2.1-or-later', + "user generated forms", + author="Artur Barseghyan", + author_email="artur.barseghyan@gmail.com", + url="https://github.com/barseghyanartur/django-fobi/", + package_dir={"": "src"}, + packages=find_packages(where="./src"), + license="GPL-2.0-only OR LGPL-2.1-or-later", install_requires=install_requires, tests_require=tests_require, dependency_links=dependency_links, - package_data={ - 'fobi': templates + static_files + locale_files - }, + package_data={"fobi": templates + static_files + locale_files}, include_package_data=True, ) diff --git a/src/fobi/__init__.py b/src/fobi/__init__.py index 4316ca78b..d7ad3dc1f 100644 --- a/src/fobi/__init__.py +++ b/src/fobi/__init__.py @@ -1,7 +1,7 @@ -__title__ = 'django-fobi' -__version__ = '0.19.1' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2022 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "django-fobi" +__version__ = "0.19.1" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2022 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" -default_app_config = 'fobi.apps.Config' +default_app_config = "fobi.apps.Config" diff --git a/src/fobi/admin.py b/src/fobi/admin.py index 8ad6d9f63..240d46529 100644 --- a/src/fobi/admin.py +++ b/src/fobi/admin.py @@ -1,15 +1,12 @@ -from django.urls import re_path as url -from django.contrib import admin -from django.contrib import messages +from django.contrib import admin, messages from django.contrib.admin import helpers from django.contrib.admin.views.decorators import staff_member_required -from django.shortcuts import render -from django.shortcuts import redirect +from django.shortcuts import redirect, render from django.template import RequestContext +from django.urls import re_path as url from django.utils.decorators import method_decorator from django.utils.html import strip_tags from django.utils.translation import gettext_lazy as _ - from django_nine import versions from .constants import ACTION_CHOICE_REPLACE @@ -19,7 +16,7 @@ BulkChangeFormWizardHandlerPluginsForm, FormElementEntryForm, FormHandlerEntryForm, - FormWizardHandlerEntryForm + FormWizardHandlerEntryForm, ) from .models import ( FormElement, @@ -30,31 +27,31 @@ FormWizardEntry, FormWizardFormEntry, FormWizardHandler, - FormWizardHandlerEntry + FormWizardHandlerEntry, ) -__title__ = 'fobi.admin' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.admin" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'base_bulk_change_plugins', - 'BasePluginModelAdmin', - 'bulk_change_form_element_plugins', - 'bulk_change_form_handler_plugins', - 'bulk_change_form_wizard_handler_plugins', - 'FormElementAdmin', - 'FormElementEntryAdmin', - 'FormElementEntryInlineAdmin', - 'FormEntryAdmin', - 'FormFieldsetEntryAdmin', - 'FormHandlerAdmin', - 'FormHandlerEntryAdmin', - 'FormHandlerEntryInlineAdmin', - 'FormWizardEntryAdmin', - 'FormWizardFormEntryInlineAdmin', - 'FormWizardHandlerAdmin', - 'FormWizardHandlerEntryInlineAdmin', + "base_bulk_change_plugins", + "BasePluginModelAdmin", + "bulk_change_form_element_plugins", + "bulk_change_form_handler_plugins", + "bulk_change_form_wizard_handler_plugins", + "FormElementAdmin", + "FormElementEntryAdmin", + "FormElementEntryInlineAdmin", + "FormEntryAdmin", + "FormFieldsetEntryAdmin", + "FormHandlerAdmin", + "FormHandlerEntryAdmin", + "FormHandlerEntryInlineAdmin", + "FormWizardEntryAdmin", + "FormWizardFormEntryInlineAdmin", + "FormWizardHandlerAdmin", + "FormWizardHandlerEntryInlineAdmin", ) staff_member_required_m = method_decorator(staff_member_required) @@ -66,8 +63,9 @@ # ***************************************************************************** -def base_bulk_change_plugins(PluginForm, named_url, modeladmin, request, - queryset): +def base_bulk_change_plugins( + PluginForm, named_url, modeladmin, request, queryset +): """Bulk change of plugins action additional view.""" opts = modeladmin.model._meta @@ -76,25 +74,25 @@ def base_bulk_change_plugins(PluginForm, named_url, modeladmin, request, selected = request.POST.getlist(admin.ACTION_CHECKBOX_NAME) post = dict(request.POST) if selected: - post['selected_plugins'] = ','.join(selected) - if request.method == 'POST': + post["selected_plugins"] = ",".join(selected) + if request.method == "POST": form = PluginForm( data=post, files=request.FILES, - initial={'selected_plugins': ','.join(selected)} + initial={"selected_plugins": ",".join(selected)}, ) else: - form = PluginForm(initial={'selected_plugins': ','.join(selected)}) + form = PluginForm(initial={"selected_plugins": ",".join(selected)}) context = { - 'form': form, - 'app_label': app_label, - 'opts': opts, - 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME, - 'named_url': named_url, + "form": form, + "app_label": app_label, + "opts": opts, + "action_checkbox_name": helpers.ACTION_CHECKBOX_NAME, + "named_url": named_url, } - template_name = 'fobi/admin/bulk_change_plugins.html' + template_name = "fobi/admin/bulk_change_plugins.html" return render(request, template_name, context) @@ -103,10 +101,10 @@ def bulk_change_form_element_plugins(modeladmin, request, queryset): """Bulk change FormElement plugins.""" return base_bulk_change_plugins( BulkChangeFormElementPluginsForm, - 'admin:bulk_change_form_element_plugins', + "admin:bulk_change_form_element_plugins", modeladmin, request, - queryset + queryset, ) @@ -114,10 +112,10 @@ def bulk_change_form_handler_plugins(modeladmin, request, queryset): """Bulk change FormHandler plugins.""" return base_bulk_change_plugins( BulkChangeFormHandlerPluginsForm, - 'admin:bulk_change_form_handler_plugins', + "admin:bulk_change_form_handler_plugins", modeladmin, request, - queryset + queryset, ) @@ -125,12 +123,13 @@ def bulk_change_form_wizard_handler_plugins(modeladmin, request, queryset): """Bulk change FormWizardHandler plugins.""" return base_bulk_change_plugins( BulkChangeFormWizardHandlerPluginsForm, - 'admin:bulk_change_form_wizard_handler_plugins', + "admin:bulk_change_form_wizard_handler_plugins", modeladmin, request, - queryset + queryset, ) + # ***************************************************************************** # ***************************************************************************** # ******************************* Entry admin ********************************* @@ -147,7 +146,12 @@ class FormElementEntryInlineAdmin(admin.TabularInline): model = FormElementEntry form = FormElementEntryForm - fields = ('form_entry', 'plugin_uid', 'plugin_data', 'position',) + fields = ( + "form_entry", + "plugin_uid", + "plugin_data", + "position", + ) extra = 0 @@ -156,7 +160,11 @@ class FormHandlerEntryInlineAdmin(admin.TabularInline): model = FormHandlerEntry form = FormHandlerEntryForm - fields = ('form_entry', 'plugin_uid', 'plugin_data',) + fields = ( + "form_entry", + "plugin_uid", + "plugin_data", + ) extra = 0 @@ -164,54 +172,58 @@ class FormEntryAdmin(admin.ModelAdmin): """FormEntry admin.""" list_display = ( - 'name', - 'slug', - 'user', - 'is_public', - 'is_active', - 'created', - 'updated', - 'is_cloneable', + "name", + "slug", + "user", + "is_public", + "is_active", + "created", + "updated", + "is_cloneable", ) - list_editable = ('is_public', 'is_cloneable') - list_filter = ('is_public', 'is_cloneable') - readonly_fields = ('slug',) + list_editable = ("is_public", "is_cloneable") + list_filter = ("is_public", "is_cloneable") + readonly_fields = ("slug",) radio_fields = {"user": admin.VERTICAL} fieldsets = ( - (_("Form"), { - 'fields': ( - 'name', - 'is_public', - 'is_cloneable', - 'active_date_from', - 'active_date_to', - 'inactive_page_title', - 'inactive_page_message', - ) - }), - (_("Custom"), { - 'classes': ('collapse',), - 'fields': ('success_page_title', 'success_page_message', 'action') - }), + ( + _("Form"), + { + "fields": ( + "name", + "is_public", + "is_cloneable", + "active_date_from", + "active_date_to", + "inactive_page_title", + "inactive_page_message", + ) + }, + ), + ( + _("Custom"), + { + "classes": ("collapse",), + "fields": ( + "success_page_title", + "success_page_message", + "action", + ), + }, + ), # (_("Wizard"), { # 'classes': ('collapse',), # 'fields': ('form_wizard_entry', 'position',) # }), - (_("User"), { - 'classes': ('collapse',), - 'fields': ('user',) - }), - (_('Additional'), { - 'classes': ('collapse',), - 'fields': ('slug',) - }), + (_("User"), {"classes": ("collapse",), "fields": ("user",)}), + (_("Additional"), {"classes": ("collapse",), "fields": ("slug",)}), ) inlines = [FormElementEntryInlineAdmin, FormHandlerEntryInlineAdmin] class Meta(object): """Meta.""" - app_label = _('Fobi') + app_label = _("Fobi") admin.site.register(FormEntry, FormEntryAdmin) @@ -227,7 +239,10 @@ class FormWizardFormEntryInlineAdmin(admin.TabularInline): model = FormWizardFormEntry # form = FormElementEntryForm - fields = ('form_entry', 'position',) + fields = ( + "form_entry", + "position", + ) extra = 0 @@ -236,47 +251,72 @@ class FormWizardHandlerEntryInlineAdmin(admin.TabularInline): model = FormWizardHandlerEntry form = FormWizardHandlerEntryForm - fields = ('plugin_uid', 'plugin_data',) + fields = ( + "plugin_uid", + "plugin_data", + ) extra = 0 class FormWizardEntryAdmin(admin.ModelAdmin): """FormWizardEntry admin.""" - list_display = ('name', 'slug', 'user', 'is_public', 'created', 'updated', - 'is_cloneable',) - list_editable = ('is_public', 'is_cloneable',) - list_filter = ('is_public', 'is_cloneable',) - readonly_fields = ('slug',) + list_display = ( + "name", + "slug", + "user", + "is_public", + "created", + "updated", + "is_cloneable", + ) + list_editable = ( + "is_public", + "is_cloneable", + ) + list_filter = ( + "is_public", + "is_cloneable", + ) + readonly_fields = ("slug",) radio_fields = {"user": admin.VERTICAL} fieldsets = ( - (_("Form"), { - 'fields': ('name', 'is_public', 'is_cloneable',) - }), - (_("Custom"), { - 'classes': ('collapse',), - 'fields': ('success_page_title', 'success_page_message',) - }), + ( + _("Form"), + { + "fields": ( + "name", + "is_public", + "is_cloneable", + ) + }, + ), + ( + _("Custom"), + { + "classes": ("collapse",), + "fields": ( + "success_page_title", + "success_page_message", + ), + }, + ), # (_("Wizard"), { # 'classes': ('collapse',), # 'fields': ('form_wizard_entry', 'position',) # }), - (_("User"), { - 'classes': ('collapse',), - 'fields': ('user',) - }), - (_('Additional'), { - 'classes': ('collapse',), - 'fields': ('slug',) - }), + (_("User"), {"classes": ("collapse",), "fields": ("user",)}), + (_("Additional"), {"classes": ("collapse",), "fields": ("slug",)}), ) - inlines = [FormWizardFormEntryInlineAdmin, - FormWizardHandlerEntryInlineAdmin] + inlines = [ + FormWizardFormEntryInlineAdmin, + FormWizardHandlerEntryInlineAdmin, + ] class Meta(object): """Meta.""" - app_label = _('Fobi') + app_label = _("Fobi") admin.site.register(FormWizardEntry, FormWizardEntryAdmin) @@ -289,20 +329,16 @@ class Meta(object): class FormFieldsetEntryAdmin(admin.ModelAdmin): """FormEieldsetEntry admin.""" - list_display = ('form_entry', 'name', 'is_repeatable') - list_editable = ('is_repeatable',) - list_filter = ('is_repeatable',) + list_display = ("form_entry", "name", "is_repeatable") + list_editable = ("is_repeatable",) + list_filter = ("is_repeatable",) # readonly_fields = ('slug',) - fieldsets = ( - (None, { - 'fields': ('form_entry', 'name', 'is_repeatable') - }), - ) + fieldsets = ((None, {"fields": ("form_entry", "name", "is_repeatable")}),) class Meta(object): """Meta.""" - app_label = _('Fobi') + app_label = _("Fobi") # admin.site.register(FormFieldsetEntry, FormFieldsetEntryAdmin) @@ -311,33 +347,52 @@ class Meta(object): # ************************** Form element entry admin ************************* # ***************************************************************************** + class FormElementEntryAdmin(admin.ModelAdmin): """FormElementEntry admin.""" - list_display = ('plugin_uid', 'plugin_uid_code', 'plugin_data', 'position', - 'form_entry',) - list_filter = ('form_entry', 'plugin_uid') - list_editable = ('position',) - readonly_fields = ('plugin_uid_code',) + list_display = ( + "plugin_uid", + "plugin_uid_code", + "plugin_data", + "position", + "form_entry", + ) + list_filter = ("form_entry", "plugin_uid") + list_editable = ("position",) + readonly_fields = ("plugin_uid_code",) fieldsets = ( - (_("Plugin"), { - 'fields': ('plugin_uid', 'plugin_data',) - }), - (_("Form"), { - 'fields': ('form_entry', 'form_fieldset_entry', 'position',) - }), + ( + _("Plugin"), + { + "fields": ( + "plugin_uid", + "plugin_data", + ) + }, + ), + ( + _("Form"), + { + "fields": ( + "form_entry", + "form_fieldset_entry", + "position", + ) + }, + ), ) class Meta(object): """Meta.""" - app_label = _('Fobi') + app_label = _("Fobi") def get_queryset(self, request): """Get queryset.""" qs = super(FormElementEntryAdmin, self).get_queryset(request) - qs = qs.select_related('form_entry', 'form_fieldset_entry') + qs = qs.select_related("form_entry", "form_fieldset_entry") return qs @@ -348,32 +403,43 @@ def get_queryset(self, request): # ************************** Form element entry admin ************************* # ***************************************************************************** + class FormHandlerEntryAdmin(admin.ModelAdmin): """FormHandlerEntry admin.""" - list_display = ('plugin_uid', 'plugin_uid_code', 'plugin_data', - 'form_entry',) - list_filter = ('form_entry', 'plugin_uid') - readonly_fields = ('plugin_uid_code',) + list_display = ( + "plugin_uid", + "plugin_uid_code", + "plugin_data", + "form_entry", + ) + list_filter = ("form_entry", "plugin_uid") + readonly_fields = ("plugin_uid_code",) fieldsets = ( - (_("Plugin"), { - 'fields': ('plugin_uid', 'plugin_data',) - }), - (_("Form"), { - 'fields': ('form_entry',) - }), + ( + _("Plugin"), + { + "fields": ( + "plugin_uid", + "plugin_data", + ) + }, + ), + (_("Form"), {"fields": ("form_entry",)}), ) class Meta(object): """Meta.""" - app_label = _('Form handler entry') + app_label = _("Form handler entry") def get_queryset(self, request): """Tweak the queryset.""" qs = super(FormHandlerEntryAdmin, self).get_queryset(request) - qs = qs.select_related('form_entry',) + qs = qs.select_related( + "form_entry", + ) return qs @@ -393,19 +459,18 @@ def get_queryset(self, request): class BasePluginModelAdmin(admin.ModelAdmin): """Base plugin admin.""" - list_display = ('plugin_uid_admin', 'users_list', 'groups_list') - readonly_fields = ('plugin_uid', 'plugin_uid_admin') - fieldsets = ( - (None, { - 'fields': ('plugin_uid', 'users', 'groups') - }), + list_display = ("plugin_uid_admin", "users_list", "groups_list") + readonly_fields = ("plugin_uid", "plugin_uid_admin") + fieldsets = ((None, {"fields": ("plugin_uid", "users", "groups")}),) + filter_horizontal = ( + "users", + "groups", ) - filter_horizontal = ('users', 'groups',) class Meta(object): """Meta.""" - app_label = _('Fobi') + app_label = _("Fobi") def has_add_permission(self, request): """Has add permissions. @@ -420,7 +485,7 @@ def get_queryset(self, request): """Tweak queryset.""" qs = super(BasePluginModelAdmin, self).get_queryset(request) - qs = qs.prefetch_related('users', 'groups') + qs = qs.prefetch_related("users", "groups") return qs def _get_bulk_change_form_class(self): @@ -446,19 +511,16 @@ def bulk_change_plugins(self, request): This is where the data is actually processed. """ changelist_named_url = self._get_changelist_named_url() - if request.method == 'POST': + if request.method == "POST": form_cls = self._get_bulk_change_form_class() - form = form_cls( - data=request.POST, - files=request.FILES - ) + form = form_cls(data=request.POST, files=request.FILES) if form.is_valid(): - ids = form.cleaned_data.pop('selected_plugins').split(',') - users = form.cleaned_data.pop('users') - groups = form.cleaned_data.pop('groups') - users_action = form.cleaned_data.pop('users_action') - groups_action = form.cleaned_data.pop('groups_action') + ids = form.cleaned_data.pop("selected_plugins").split(",") + users = form.cleaned_data.pop("users") + groups = form.cleaned_data.pop("groups") + users_action = form.cleaned_data.pop("users_action") + groups_action = form.cleaned_data.pop("groups_action") cleaned_data = dict( (key, val) for (key, val) in form.cleaned_data.items() @@ -489,24 +551,24 @@ def bulk_change_plugins(self, request): messages.info( request, - _('{0} plugins were changed ' - 'successfully.').format(len(ids)) + _("{0} plugins were changed " "successfully.").format( + len(ids) + ), ) return redirect(changelist_named_url) else: messages.warning( request, - _('Form contains ' - 'errors: {}').format(strip_tags(form.errors)) + _("Form contains " "errors: {}").format( + strip_tags(form.errors) + ), ) return redirect(changelist_named_url) else: - messages.warning( - request, - _('POST required when changing in bulk!') - ) + messages.warning(request, _("POST required when changing in bulk!")) return redirect(changelist_named_url) + # ***************************************************************************** # ********************************** Form element ***************************** # ***************************************************************************** @@ -527,15 +589,17 @@ def _get_model(self): def _get_changelist_named_url(self): """Get changelist named URL.""" - return 'admin:fobi_formelement_changelist' + return "admin:fobi_formelement_changelist" def get_urls(self): """Get URLs.""" my_urls = [ # Bulk change plugins - url(r'^bulk-change-form-element-plugins/$', + url( + r"^bulk-change-form-element-plugins/$", self.bulk_change_plugins, - name='bulk_change_form_element_plugins'), + name="bulk_change_form_element_plugins", + ), ] return my_urls + super(FormElementAdmin, self).get_urls() @@ -562,15 +626,17 @@ def _get_model(self): def _get_changelist_named_url(self): """Get changelist named URL.""" - return 'admin:fobi_formhandler_changelist' + return "admin:fobi_formhandler_changelist" def get_urls(self): """Get URLs.""" my_urls = [ # Bulk change plugins - url(r'^bulk-change-form-handler-plugins/$', + url( + r"^bulk-change-form-handler-plugins/$", self.bulk_change_plugins, - name='bulk_change_form_handler_plugins'), + name="bulk_change_form_handler_plugins", + ), ] return my_urls + super(FormHandlerAdmin, self).get_urls() @@ -585,7 +651,9 @@ def get_urls(self): class FormWizardHandlerAdmin(BasePluginModelAdmin): """FormHandler admin.""" - actions = [bulk_change_form_wizard_handler_plugins] + BasePluginModelAdmin.actions + actions = [ + bulk_change_form_wizard_handler_plugins + ] + BasePluginModelAdmin.actions def _get_bulk_change_form_class(self): """Get bulk change form class.""" @@ -597,15 +665,17 @@ def _get_model(self): def _get_changelist_named_url(self): """Get changelist named URL.""" - return 'admin:fobi_formwizardhandler_changelist' + return "admin:fobi_formwizardhandler_changelist" def get_urls(self): """Get URLs.""" my_urls = [ # Bulk change plugins - url(r'^bulk-change-form-wizard-handler-plugins/$', + url( + r"^bulk-change-form-wizard-handler-plugins/$", self.bulk_change_plugins, - name='bulk_change_form_wizard_handler_plugins'), + name="bulk_change_form_wizard_handler_plugins", + ), ] return my_urls + super(FormWizardHandlerAdmin, self).get_urls() diff --git a/src/fobi/app.py b/src/fobi/app.py index af675a2d8..c7a867c4c 100644 --- a/src/fobi/app.py +++ b/src/fobi/app.py @@ -1,8 +1,11 @@ -__title__ = 'fobi.app' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('app_name', 'app_config',) +__title__ = "fobi.app" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "app_name", + "app_config", +) def app_name(path, reduce_depth_by=1): @@ -12,10 +15,10 @@ def app_name(path, reduce_depth_by=1): :param int reduce_depth_by: :return str: """ - return '.'.join(path.split('.')[:-reduce_depth_by]) + return ".".join(path.split(".")[:-reduce_depth_by]) -def app_config(path, config_app_path='apps.Config'): +def app_config(path, config_app_path="apps.Config"): """App config. :param str path: Absolute app path (from project root). diff --git a/src/fobi/apps.py b/src/fobi/apps.py index 222efb215..8fa09e674 100644 --- a/src/fobi/apps.py +++ b/src/fobi/apps.py @@ -1,8 +1,8 @@ -__title__ = 'fobi.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) try: from django.apps import AppConfig @@ -10,7 +10,7 @@ class Config(AppConfig): """Config.""" - name = label = 'fobi' + name = label = "fobi" except ImportError: pass diff --git a/src/fobi/base.py b/src/fobi/base.py index 37f93f282..2b70a9585 100644 --- a/src/fobi/base.py +++ b/src/fobi/base.py @@ -3,24 +3,21 @@ PEP http://www.python.org/dev/peps/pep-0008/#function-names). """ import copy +import json import logging import re import traceback import uuid - -from collections import defaultdict, OrderedDict - -import json +from collections import OrderedDict, defaultdict from django import forms from django.core.serializers.json import DjangoJSONEncoder from django.forms import ModelForm from django.forms.utils import ErrorList from django.http import Http404 -from django.utils.translation import gettext_lazy as _ from django.template import RequestContext, Template - -from six import with_metaclass, string_types +from django.utils.translation import gettext_lazy as _ +from six import string_types, with_metaclass from .constants import CALLBACK_STAGES from .data_structures import SortableDict @@ -36,15 +33,15 @@ ThemeDoesNotExist, ) from .helpers import ( + StrippedRequest, clean_dict, get_form_element_entries_for_form_wizard_entry, get_ignorable_form_values, map_field_name_to_label, safe_text, - StrippedRequest, uniquify_sequence, ) -from .settings import ( +from .settings import ( # FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS, CUSTOM_THEME_DATA, DEBUG, DEFAULT_THEME, @@ -60,100 +57,99 @@ FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER, SORT_PLUGINS_BY_VALUE, THEME_FOOTER_TEXT, - # FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS, ) -__title__ = 'fobi.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'assemble_form_field_widget_class', - 'BaseDataStorage', - 'BaseFormFieldPluginForm', - 'BasePlugin', - 'BasePluginForm', - 'BaseRegistry', - 'ClassProperty', - 'classproperty', - 'collect_plugin_media', - 'ensure_autodiscover', - 'fire_form_callbacks', - 'form_callback_registry', - 'form_element_plugin_registry', - 'form_element_plugin_widget_registry', - 'form_handler_plugin_registry', - 'form_handler_plugin_widget_registry', - 'form_wizard_handler_plugin_registry', - 'form_wizard_handler_plugin_widget_registry', - 'FormCallback', - 'FormCallbackRegistry', - 'FormElementPlugin', - 'FormElementPluginDataStorage', - 'FormElementPluginRegistry', - 'FormElementPluginWidget', - 'FormElementPluginWidgetRegistry', - 'FormFieldPlugin', - 'FormHandlerPlugin', - 'FormHandlerPluginDataStorage', - 'FormHandlerPluginRegistry', - 'FormHandlerPluginWidget', - 'FormHandlerPluginWidgetRegistry', - 'FormWizardHandlerPlugin', - 'FormWizardHandlerPluginDataStorage', - 'FormWizardHandlerPluginRegistry', - 'FormWizardHandlerPluginWidget', - 'FormWizardHandlerPluginWidgetRegistry', - 'get_form_element_plugin_widget', - 'get_form_handler_plugin_widget', - 'get_form_wizard_handler_plugin_widget', - 'get_ordered_form_handlers', - 'get_ordered_form_wizard_handlers', - 'get_plugin_widget', - 'get_processed_form_data', - 'get_processed_form_wizard_data', - 'get_registered_form_callbacks', - 'get_registered_form_element_plugin_uids', - 'get_registered_form_element_plugins', - 'get_registered_form_element_plugins_grouped', - 'get_registered_form_handler_plugin_uids', - 'get_registered_form_handler_plugins', - 'get_registered_form_wizard_handler_plugin_uids', - 'get_registered_form_wizard_handler_plugins', - 'get_registered_integration_form_element_plugin_uids', - 'get_registered_integration_form_element_plugins', - 'get_registered_integration_form_element_plugins_grouped', - 'get_registered_integration_form_handler_plugin_uids', - 'get_registered_integration_form_handler_plugins', - 'get_registered_integration_form_handler_plugins_grouped', - 'get_registered_plugin_uids', - 'get_registered_plugins', - 'get_registered_theme_uids', - 'get_registered_themes', - 'get_theme', - 'integration_form_callback_registry', - 'integration_form_element_plugin_registry', - 'integration_form_handler_plugin_registry', - 'IntegrationFormCallback', - 'IntegrationFormCallbackRegistry', - 'IntegrationFormElementPlugin', - 'IntegrationFormElementPluginDataStorage', - 'IntegrationFormElementPluginProcessor', - 'IntegrationFormElementPluginRegistry', - 'IntegrationFormFieldPlugin', - 'IntegrationFormHandlerPlugin', - 'IntegrationFormHandlerPluginDataStorage', - 'IntegrationFormHandlerPluginRegistry', - 'run_form_handlers', - 'run_form_wizard_handlers', - 'submit_plugin_form_data', - 'theme_registry', - 'validate_form_element_plugin_uid', - 'validate_form_handler_plugin_uid', - 'validate_form_wizard_handler_plugin_uid', - 'validate_integration_form_element_plugin_uid', - 'validate_integration_form_handler_plugin_uid', - 'validate_theme_uid', + "assemble_form_field_widget_class", + "BaseDataStorage", + "BaseFormFieldPluginForm", + "BasePlugin", + "BasePluginForm", + "BaseRegistry", + "ClassProperty", + "classproperty", + "collect_plugin_media", + "ensure_autodiscover", + "fire_form_callbacks", + "form_callback_registry", + "form_element_plugin_registry", + "form_element_plugin_widget_registry", + "form_handler_plugin_registry", + "form_handler_plugin_widget_registry", + "form_wizard_handler_plugin_registry", + "form_wizard_handler_plugin_widget_registry", + "FormCallback", + "FormCallbackRegistry", + "FormElementPlugin", + "FormElementPluginDataStorage", + "FormElementPluginRegistry", + "FormElementPluginWidget", + "FormElementPluginWidgetRegistry", + "FormFieldPlugin", + "FormHandlerPlugin", + "FormHandlerPluginDataStorage", + "FormHandlerPluginRegistry", + "FormHandlerPluginWidget", + "FormHandlerPluginWidgetRegistry", + "FormWizardHandlerPlugin", + "FormWizardHandlerPluginDataStorage", + "FormWizardHandlerPluginRegistry", + "FormWizardHandlerPluginWidget", + "FormWizardHandlerPluginWidgetRegistry", + "get_form_element_plugin_widget", + "get_form_handler_plugin_widget", + "get_form_wizard_handler_plugin_widget", + "get_ordered_form_handlers", + "get_ordered_form_wizard_handlers", + "get_plugin_widget", + "get_processed_form_data", + "get_processed_form_wizard_data", + "get_registered_form_callbacks", + "get_registered_form_element_plugin_uids", + "get_registered_form_element_plugins", + "get_registered_form_element_plugins_grouped", + "get_registered_form_handler_plugin_uids", + "get_registered_form_handler_plugins", + "get_registered_form_wizard_handler_plugin_uids", + "get_registered_form_wizard_handler_plugins", + "get_registered_integration_form_element_plugin_uids", + "get_registered_integration_form_element_plugins", + "get_registered_integration_form_element_plugins_grouped", + "get_registered_integration_form_handler_plugin_uids", + "get_registered_integration_form_handler_plugins", + "get_registered_integration_form_handler_plugins_grouped", + "get_registered_plugin_uids", + "get_registered_plugins", + "get_registered_theme_uids", + "get_registered_themes", + "get_theme", + "integration_form_callback_registry", + "integration_form_element_plugin_registry", + "integration_form_handler_plugin_registry", + "IntegrationFormCallback", + "IntegrationFormCallbackRegistry", + "IntegrationFormElementPlugin", + "IntegrationFormElementPluginDataStorage", + "IntegrationFormElementPluginProcessor", + "IntegrationFormElementPluginRegistry", + "IntegrationFormFieldPlugin", + "IntegrationFormHandlerPlugin", + "IntegrationFormHandlerPluginDataStorage", + "IntegrationFormHandlerPluginRegistry", + "run_form_handlers", + "run_form_wizard_handlers", + "submit_plugin_form_data", + "theme_registry", + "validate_form_element_plugin_uid", + "validate_form_handler_plugin_uid", + "validate_form_wizard_handler_plugin_uid", + "validate_integration_form_element_plugin_uid", + "validate_integration_form_handler_plugin_uid", + "validate_theme_uid", ) logger = logging.getLogger(__name__) @@ -189,7 +185,7 @@ class BaseTheme(object): # General HTML specific project_name = _("Build your forms") # Project name - footer_text = '' # '© Company 2014' + footer_text = "" # '© Company 2014' # *********************************************************************** # *********************************************************************** @@ -199,42 +195,41 @@ class BaseTheme(object): # form element entry - add_form_element_entry = 'fobi.add_form_element_entry' + add_form_element_entry = "fobi.add_form_element_entry" - add_form_handler_entry = 'fobi.add_form_handler_entry' - edit_form_handler_entry = 'fobi.edit_form_handler_entry' - delete_form_handler_entry = 'fobi.delete_form_handler_entry' + add_form_handler_entry = "fobi.add_form_handler_entry" + edit_form_handler_entry = "fobi.edit_form_handler_entry" + delete_form_handler_entry = "fobi.delete_form_handler_entry" # form wizard entry - create_form_wizard_entry = 'fobi.create_form_wizard_entry' - import_form_wizard_entry = 'fobi.import_form_wizard_entry' - view_form_wizard_entry = 'fobi.view_form_wizard_entry' - edit_form_wizard_entry = 'fobi.edit_form_wizard_entry' - delete_form_wizard_entry = 'fobi.delete_form_wizard_entry' - export_form_wizard_entry = 'fobi.export_form_wizard_entry' + create_form_wizard_entry = "fobi.create_form_wizard_entry" + import_form_wizard_entry = "fobi.import_form_wizard_entry" + view_form_wizard_entry = "fobi.view_form_wizard_entry" + edit_form_wizard_entry = "fobi.edit_form_wizard_entry" + delete_form_wizard_entry = "fobi.delete_form_wizard_entry" + export_form_wizard_entry = "fobi.export_form_wizard_entry" - add_form_wizard_form_entry = 'fobi.add_form_wizard_form_entry' - delete_form_wizard_form_entry = 'fobi.delete_form_wizard_form_entry' + add_form_wizard_form_entry = "fobi.add_form_wizard_form_entry" + delete_form_wizard_form_entry = "fobi.delete_form_wizard_form_entry" - add_form_wizard_handler_entry = 'fobi.add_form_wizard_handler_entry' - edit_form_wizard_handler_entry = 'fobi.edit_form_wizard_handler_entry' - delete_form_wizard_handler_entry = 'fobi.delete_form_wizard_handler_entry' + add_form_wizard_handler_entry = "fobi.add_form_wizard_handler_entry" + edit_form_wizard_handler_entry = "fobi.edit_form_wizard_handler_entry" + delete_form_wizard_handler_entry = "fobi.delete_form_wizard_handler_entry" # form entry - create_form_entry = 'fobi.create_form_entry' - import_form_entry = 'fobi.import_form_entry' - export_form_entry = 'fobi.export_form_entry' - delete_form_entry = 'fobi.delete_form_entry' - edit_form_entry = 'fobi.edit_form_entry' - view_form_entry = 'fobi.view_form_entry' - + create_form_entry = "fobi.create_form_entry" + import_form_entry = "fobi.import_form_entry" + export_form_entry = "fobi.export_form_entry" + delete_form_entry = "fobi.delete_form_entry" + edit_form_entry = "fobi.edit_form_entry" + view_form_entry = "fobi.view_form_entry" # dashboards - dashboard = 'fobi.dashboard' - form_wizards_dashboard = 'fobi.form_wizards_dashboard' + dashboard = "fobi.dashboard" + form_wizards_dashboard = "fobi.form_wizards_dashboard" # *********************************************************************** # *********************************************************************** @@ -242,31 +237,31 @@ class BaseTheme(object): # *********************************************************************** # *********************************************************************** # Used in almost all ``fobi_form_elements`` modules and forms. - form_element_html_class = '' # form-control + form_element_html_class = "" # form-control # Radio element HTML class. Used in ``fobi_form_elements`` modules # and forms. - form_radio_element_html_class = '' + form_radio_element_html_class = "" # Checkbox element HTML class. Used in ``fobi_form_elements`` modules # and forms. - form_element_checkbox_html_class = '' # checkbox + form_element_checkbox_html_class = "" # checkbox # Important, since used in ``edit_form_entry_edit_option_html`` # method. - form_view_form_entry_option_class = '' # glyphicon glyphicon-list + form_view_form_entry_option_class = "" # glyphicon glyphicon-list # Important, since used in ``edit_form_entry_edit_option_html`` # method. - form_edit_form_entry_option_class = '' # glyphicon glyphicon-edit + form_edit_form_entry_option_class = "" # glyphicon glyphicon-edit # Important, since used in ``edit_form_entry_edit_option_html`` # method. - form_delete_form_entry_option_class = '' # glyphicon glyphicon-remove + form_delete_form_entry_option_class = "" # glyphicon glyphicon-remove # Important, since used in ``edit_form_entry_help_text_extra`` # method. - form_list_container_class = '' # list-inline + form_list_container_class = "" # list-inline # *********************************************************************** # *********************************************************************** @@ -277,147 +272,164 @@ class BaseTheme(object): # *********************************************************************** # *************************** Base templates **************************** # *********************************************************************** - master_base_template = 'fobi/generic/_base.html' - base_template = 'fobi/generic/base.html' + master_base_template = "fobi/generic/_base.html" + base_template = "fobi/generic/base.html" base_view_template = None base_edit_template = None # *********************************************************************** # ***************************** Snippets ******************************** # *********************************************************************** - form_snippet_template_name = 'fobi/generic/snippets/form_snippet.html' + form_snippet_template_name = "fobi/generic/snippets/form_snippet.html" form_view_snippet_template_name = None form_edit_snippet_template_name = None - form_properties_snippet_template_name = \ - 'fobi/generic/snippets/form_properties_snippet.html' + form_properties_snippet_template_name = ( + "fobi/generic/snippets/form_properties_snippet.html" + ) - messages_snippet_template_name = \ - 'fobi/generic/snippets/messages_snippet.html' + messages_snippet_template_name = ( + "fobi/generic/snippets/messages_snippet.html" + ) - form_non_field_and_hidden_errors_snippet_template = \ - 'fobi/generic/snippets/form_non_field_and_hidden_errors_snippet.html' + form_non_field_and_hidden_errors_snippet_template = ( + "fobi/generic/snippets/form_non_field_and_hidden_errors_snippet.html" + ) - form_ajax = 'fobi/generic/snippets/form_ajax.html' + form_ajax = "fobi/generic/snippets/form_ajax.html" form_view_ajax = None form_edit_ajax = None # TODO - form_wizard_ajax = 'fobi/generic/snippets/form_wizard_ajax.html' + form_wizard_ajax = "fobi/generic/snippets/form_wizard_ajax.html" form_wizard_view_ajax = None form_wizard_edit_ajax = None # END TODO - form_wizard_snippet_template_name = \ - 'fobi/generic/snippets/form_wizard_snippet.html' + form_wizard_snippet_template_name = ( + "fobi/generic/snippets/form_wizard_snippet.html" + ) form_wizard_view_snippet_template_name = None form_wizard_edit_snippet_template_name = None - form_wizard_properties_snippet_template_name = \ - 'fobi/generic/snippets/form_wizard_properties_snippet.html' + form_wizard_properties_snippet_template_name = ( + "fobi/generic/snippets/form_wizard_properties_snippet.html" + ) # *********************************************************************** # *********************** Form entry CUD and add-ons ******************** # *********************************************************************** - create_form_entry_template = 'fobi/generic/create_form_entry.html' - create_form_entry_ajax_template = \ - 'fobi/generic/create_form_entry_ajax.html' + create_form_entry_template = "fobi/generic/create_form_entry.html" + create_form_entry_ajax_template = "fobi/generic/create_form_entry_ajax.html" - edit_form_entry_template = 'fobi/generic/edit_form_entry.html' - edit_form_entry_ajax_template = 'fobi/generic/edit_form_entry_ajax.html' + edit_form_entry_template = "fobi/generic/edit_form_entry.html" + edit_form_entry_ajax_template = "fobi/generic/edit_form_entry_ajax.html" - form_entry_submitted_template = 'fobi/generic/form_entry_submitted.html' - form_entry_submitted_ajax_template = \ - 'fobi/generic/form_entry_submitted_ajax.html' + form_entry_submitted_template = "fobi/generic/form_entry_submitted.html" + form_entry_submitted_ajax_template = ( + "fobi/generic/form_entry_submitted_ajax.html" + ) embed_form_entry_submitted_ajax_template = None - view_form_entry_template = 'fobi/generic/view_form_entry.html' - view_form_entry_ajax_template = 'fobi/generic/view_form_entry_ajax.html' + view_form_entry_template = "fobi/generic/view_form_entry.html" + view_form_entry_ajax_template = "fobi/generic/view_form_entry_ajax.html" view_embed_form_entry_ajax_template = None - form_entry_inactive_template = 'fobi/generic/form_entry_inactive.html' - form_entry_inactive_ajax_template = \ - 'fobi/generic/form_entry_inactive_ajax.html' + form_entry_inactive_template = "fobi/generic/form_entry_inactive.html" + form_entry_inactive_ajax_template = ( + "fobi/generic/form_entry_inactive_ajax.html" + ) # *********************************************************************** # *********************** Form element entry CUD ************************ # *********************************************************************** - add_form_element_entry_template = \ - 'fobi/generic/add_form_element_entry.html' - add_form_element_entry_ajax_template = \ - 'fobi/generic/add_form_element_entry_ajax.html' + add_form_element_entry_template = "fobi/generic/add_form_element_entry.html" + add_form_element_entry_ajax_template = ( + "fobi/generic/add_form_element_entry_ajax.html" + ) - edit_form_element_entry_template = \ - 'fobi/generic/edit_form_element_entry.html' - edit_form_element_entry_ajax_template = \ - 'fobi/generic/edit_form_element_entry_ajax.html' + edit_form_element_entry_template = ( + "fobi/generic/edit_form_element_entry.html" + ) + edit_form_element_entry_ajax_template = ( + "fobi/generic/edit_form_element_entry_ajax.html" + ) # *********************************************************************** # *********************** Form handler entry CUD ************************ # *********************************************************************** - add_form_handler_entry_template = \ - 'fobi/generic/add_form_handler_entry.html' - add_form_handler_entry_ajax_template = \ - 'fobi/generic/add_form_handler_entry_ajax.html' + add_form_handler_entry_template = "fobi/generic/add_form_handler_entry.html" + add_form_handler_entry_ajax_template = ( + "fobi/generic/add_form_handler_entry_ajax.html" + ) - edit_form_handler_entry_template = \ - 'fobi/generic/edit_form_handler_entry.html' - edit_form_handler_entry_ajax_template = \ - 'fobi/generic/edit_form_handler_entry_ajax.html' + edit_form_handler_entry_template = ( + "fobi/generic/edit_form_handler_entry.html" + ) + edit_form_handler_entry_ajax_template = ( + "fobi/generic/edit_form_handler_entry_ajax.html" + ) # *********************************************************************** # ******************* Form wizard handler entry CUD ********************* # *********************************************************************** - add_form_wizard_handler_entry_template = \ - 'fobi/generic/add_form_wizard_handler_entry.html' - add_form_wizard_handler_entry_ajax_template = \ - 'fobi/generic/add_form_wizard_handler_entry_ajax.html' + add_form_wizard_handler_entry_template = ( + "fobi/generic/add_form_wizard_handler_entry.html" + ) + add_form_wizard_handler_entry_ajax_template = ( + "fobi/generic/add_form_wizard_handler_entry_ajax.html" + ) - edit_form_wizard_handler_entry_template = \ - 'fobi/generic/edit_form_wizard_handler_entry.html' - edit_form_wizard_handler_entry_ajax_template = \ - 'fobi/generic/edit_form_wizard_handler_entry_ajax.html' + edit_form_wizard_handler_entry_template = ( + "fobi/generic/edit_form_wizard_handler_entry.html" + ) + edit_form_wizard_handler_entry_ajax_template = ( + "fobi/generic/edit_form_wizard_handler_entry_ajax.html" + ) # *********************************************************************** # ***************************** Dashboard ******************************* # *********************************************************************** - dashboard_template = 'fobi/generic/dashboard.html' + dashboard_template = "fobi/generic/dashboard.html" - form_wizards_dashboard_template = \ - 'fobi/generic/form_wizards_dashboard.html' + form_wizards_dashboard_template = "fobi/generic/form_wizards_dashboard.html" - forms_list_template = 'fobi/generic/forms_list.html' + forms_list_template = "fobi/generic/forms_list.html" # *********************************************************************** # ************************ Form wizard entry CUD ************************ # *********************************************************************** # Not even sure if this one is used - TODO: find out - form_wizard_template = 'fobi/generic/snippets/form_wizard.html' + form_wizard_template = "fobi/generic/snippets/form_wizard.html" - create_form_wizard_entry_template = \ - 'fobi/generic/create_form_wizard_entry.html' - create_form_wizard_entry_ajax_template = \ - 'fobi/generic/create_form_wizard_entry_ajax.html' + create_form_wizard_entry_template = ( + "fobi/generic/create_form_wizard_entry.html" + ) + create_form_wizard_entry_ajax_template = ( + "fobi/generic/create_form_wizard_entry_ajax.html" + ) - edit_form_wizard_entry_template = \ - 'fobi/generic/edit_form_wizard_entry.html' - edit_form_wizard_entry_ajax_template = \ - 'fobi/generic/edit_form_wizard_entry_ajax.html' + edit_form_wizard_entry_template = "fobi/generic/edit_form_wizard_entry.html" + edit_form_wizard_entry_ajax_template = ( + "fobi/generic/edit_form_wizard_entry_ajax.html" + ) # TODO - form_wizard_entry_submitted_template = \ - 'fobi/generic/form_wizard_entry_submitted.html' - form_wizard_entry_submitted_ajax_template = \ - 'fobi/generic/form_wizard_entry_submitted_ajax.html' + form_wizard_entry_submitted_template = ( + "fobi/generic/form_wizard_entry_submitted.html" + ) + form_wizard_entry_submitted_ajax_template = ( + "fobi/generic/form_wizard_entry_submitted_ajax.html" + ) embed_form_wizard_entry_submitted_ajax_template = None - view_form_wizard_entry_template = \ - 'fobi/generic/view_form_wizard_entry.html' - view_form_wizard_entry_ajax_template = \ - 'fobi/generic/view_form_wizard_entry_ajax.html' + view_form_wizard_entry_template = "fobi/generic/view_form_wizard_entry.html" + view_form_wizard_entry_ajax_template = ( + "fobi/generic/view_form_wizard_entry_ajax.html" + ) view_embed_form_wizard_entry_ajax_template = None # END TODO @@ -425,27 +437,26 @@ class BaseTheme(object): # *********************************************************************** # *************************** Service templates ************************* # *********************************************************************** - import_form_entry_template = 'fobi/generic/import_form_entry.html' - import_form_entry_ajax_template = \ - 'fobi/generic/import_form_entry_ajax.html' + import_form_entry_template = "fobi/generic/import_form_entry.html" + import_form_entry_ajax_template = "fobi/generic/import_form_entry_ajax.html" # *********************************************************************** # ************************* Form importer templates ********************* # *********************************************************************** - form_importer_template = 'fobi/generic/form_importer.html' - form_importer_ajax_template = 'fobi/generic/form_importer_ajax.html' + form_importer_template = "fobi/generic/form_importer.html" + form_importer_ajax_template = "fobi/generic/form_importer_ajax.html" # ************************************************************************* # ******************** Extras that make things easy *********************** # ************************************************************************* custom_data = {} - page_header_html_class = '' # page-header - form_html_class = '' # form-horizontal - form_button_outer_wrapper_html_class = '' # control-group - form_button_wrapper_html_class = '' # controls - form_button_html_class = '' # btn - form_primary_button_html_class = '' # btn-primary + page_header_html_class = "" # page-header + form_html_class = "" # form-horizontal + form_button_outer_wrapper_html_class = "" # control-group + form_button_wrapper_html_class = "" # controls + form_button_html_class = "" # btn + form_primary_button_html_class = "" # btn-primary def __init__(self, user=None): """Constructor. @@ -486,26 +497,30 @@ def __init__(self, user=None): # If no specific ``form_view_snippet_template_name`` specified, fall # back to the ``form_snippet_template_name``. if not self.form_view_snippet_template_name: - self.form_view_snippet_template_name = \ + self.form_view_snippet_template_name = ( self.form_snippet_template_name + ) # If no specific ``form_edit_snippet_template_name`` specified, fall # back to the ``form_snippet_template_name``. if not self.form_edit_snippet_template_name: - self.form_edit_snippet_template_name = \ + self.form_edit_snippet_template_name = ( self.form_snippet_template_name + ) # If no specific ``form_wizard_view_snippet_template_name`` specified, # fall back to the ``form_wizard_snippet_template_name``. if not self.form_wizard_view_snippet_template_name: - self.form_wizard_view_snippet_template_name = \ + self.form_wizard_view_snippet_template_name = ( self.form_wizard_snippet_template_name + ) # If no specific ``form_wizard_edit_snippet_template_name`` specified, # fall back to the ``form_wizard_snippet_template_name``. if not self.form_wizard_edit_snippet_template_name: - self.form_wizard_edit_snippet_template_name = \ + self.form_wizard_edit_snippet_template_name = ( self.form_wizard_snippet_template_name + ) # If no specific ``form_view_ajax`` specified, fall # back to the ``form_ajax``. @@ -530,13 +545,15 @@ def __init__(self, user=None): # If no specific ``view_embed_form_entry_ajax_template`` specified, # fall back to the ``view_form_entry_ajax_template``. if not self.view_embed_form_entry_ajax_template: - self.view_embed_form_entry_ajax_template = \ + self.view_embed_form_entry_ajax_template = ( self.view_form_entry_ajax_template + ) # Some sort of a embed thank you. if not self.embed_form_entry_submitted_ajax_template: - self.embed_form_entry_submitted_ajax_template = \ + self.embed_form_entry_submitted_ajax_template = ( self.form_entry_submitted_ajax_template + ) # Set theme specific data from settings for to be # referred like `fobi_theme.custom_data`. @@ -670,13 +687,12 @@ def collect_plugin_media(self, form_element_entries, request=None): :return list: """ plugin_media = collect_plugin_media( - form_element_entries, - request=request + form_element_entries, request=request ) if plugin_media: - self.plugin_media_js = plugin_media['js'] - self.plugin_media_css = plugin_media['css'] + self.plugin_media_js = plugin_media["js"] + self.plugin_media_css = plugin_media["css"] def get_media_css(self): """Get all CSS media files (for the layout + plugins). @@ -699,7 +715,7 @@ def get_media_js(self): @property def primary_html_class(self): """Primary HTML class.""" - return 'theme-{0}'.format(self.uid) + return "theme-{0}".format(self.uid) @property def html_class(self): @@ -709,8 +725,8 @@ def html_class(self): :return string: """ - return '{0} {1}'.format( - self.primary_html_class, ' '.join(self.html_classes) + return "{0} {1}".format( + self.primary_html_class, " ".join(self.html_classes) ) @@ -739,6 +755,7 @@ class BasePluginForm(object): >>> ('active': False) >>> ) """ + plugin_data_fields = None def _get_plugin_data(self, fields, request=None, json_format=True): @@ -768,9 +785,11 @@ def get_plugin_data(self, request=None, json_format=True): :param django.http.HttpRequest request: """ if self.plugin_data_fields: - return self._get_plugin_data(self.plugin_data_fields, - request=request, - json_format=json_format) + return self._get_plugin_data( + self.plugin_data_fields, + request=request, + json_format=json_format, + ) def save_plugin_data(self, request=None): """Save plugin data. @@ -796,7 +815,7 @@ class BaseFormFieldPluginForm(BasePluginForm): ("name", ""), ("label", ""), ("help_text", ""), - ("required", False) + ("required", False), ] name = forms.CharField( @@ -812,7 +831,7 @@ class BaseFormFieldPluginForm(BasePluginForm): help_text = forms.CharField( label=_("Help text"), required=False, - widget=forms.widgets.Textarea(attrs={}) + widget=forms.widgets.Textarea(attrs={}), ) required = forms.BooleanField( label=_("Required"), @@ -828,7 +847,7 @@ def validate_plugin_data(self, form_element_entries, request=None): :param django.http.HttpRequest request: :return bool: """ - if not getattr(self, 'cleaned_data', None): + if not getattr(self, "cleaned_data", None): self.full_clean() data = self.get_plugin_data(request=request, json_format=False) @@ -837,19 +856,22 @@ def validate_plugin_data(self, form_element_entries, request=None): plugin = form_element_entry.get_plugin(request=request) # Make sure field name is unique - if plugin.data.name == data['name']: - self._errors.update({'name': [_("Duplicate field name!")]}) + if plugin.data.name == data["name"]: + self._errors.update({"name": [_("Duplicate field name!")]}) return False # Make sure field label is unique - if hasattr(plugin.data, 'label') and \ - plugin.data.label == data['label']: + if ( + hasattr(plugin.data, "label") + and plugin.data.label == data["label"] + ): - self._errors.update({'label': [_("Duplicate label name!")]}) + self._errors.update({"label": [_("Duplicate label name!")]}) return False return True + # ***************************************************************************** # ***************************************************************************** # ******************************** Plugins ************************************ @@ -950,9 +972,7 @@ def __init__(self, user=None): raise NotImplementedError( "You should define `uid`, `name` and `storage` properties in " "your `{0}.{1}` class. {2}".format( - self.__class__.__module__, - self.__class__.__name__, - str(err) + self.__class__.__module__, self.__class__.__name__, str(err) ) ) self.user = user @@ -962,7 +982,7 @@ def __init__(self, user=None): self.data = self.storage() - self._html_id = 'p{0}'.format(uuid.uuid4()) + self._html_id = "p{0}".format(uuid.uuid4()) @property def html_id(self): @@ -981,16 +1001,14 @@ def html_class(self): """ try: html_class = [ - 'plugin-{0} {1}'.format( - self.uid, ' '.join(self.html_classes) - ) + "plugin-{0} {1}".format(self.uid, " ".join(self.html_classes)) ] - return ' '.join(html_class) + return " ".join(html_class) except Exception as err: logger.debug( "Error in class %s. Details: %s", self.__class__.__name__, - str(err) + str(err), ) def process(self, plugin_data=None, fetch_related_data=False): @@ -1020,7 +1038,7 @@ def process(self, plugin_data=None, fetch_related_data=False): logger.debug( "Error in class %s. Details: %s", self.__class__.__name__, - str(err) + str(err), ) # Calling the post processor. @@ -1031,7 +1049,7 @@ def process(self, plugin_data=None, fetch_related_data=False): logger.debug( "Error in class %s. Details: %s", self.__class__.__name__, - str(err) + str(err), ) def load_plugin_data(self, plugin_data): @@ -1055,9 +1073,7 @@ def _process_plugin_data(self, fields, fetch_related_data=False): for field, default_value in fields: try: setattr( - self.data, - field, - self.plugin_data.get(field, default_value) + self.data, field, self.plugin_data.get(field, default_value) ) except Exception: setattr(self.data, field, default_value) @@ -1067,8 +1083,7 @@ def process_plugin_data(self, fetch_related_data=False): form = self.get_form() return self._process_plugin_data( - form.plugin_data_fields, - fetch_related_data=fetch_related_data + form.plugin_data_fields, fetch_related_data=fetch_related_data ) def _get_plugin_form_data(self, fields): @@ -1087,7 +1102,7 @@ def _get_plugin_form_data(self, fields): logger.debug( "Error in class %s. Details: %s", self.__class__.__name__, - str(err) + str(err), ) return form_data @@ -1119,8 +1134,9 @@ def get_form(self): """ return self.form - def get_initialised_create_form(self, data=None, files=None, - initial_data=None): + def get_initialised_create_form( + self, data=None, files=None, initial_data=None + ): """Get initialized create form. Used ``fobi.views.add_form_element_entry`` and @@ -1131,11 +1147,11 @@ def get_initialised_create_form(self, data=None, files=None, if plugin_form: try: kwargs = { - 'data': data, - 'files': files, + "data": data, + "files": files, } if initial_data: - kwargs.update({'initial': initial_data}) + kwargs.update({"initial": initial_data}) return plugin_form(**kwargs) except Exception as err: if DEBUG: @@ -1157,19 +1173,25 @@ def get_initialised_create_form_or_404(self, data=None, files=None): pass try: return self.get_initialised_create_form( - data=data, - files=files, - initial_data=initial_data + data=data, files=files, initial_data=initial_data ) except Exception as err: if DEBUG: logger.debug(err) raise Http404(err) - def get_initialised_edit_form(self, data=None, files=None, - auto_id='id_%s', prefix=None, initial=None, - error_class=ErrorList, label_suffix=':', - empty_permitted=False, instance=None): + def get_initialised_edit_form( + self, + data=None, + files=None, + auto_id="id_%s", + prefix=None, + initial=None, + error_class=ErrorList, + label_suffix=":", + empty_permitted=False, + instance=None, + ): """Get initialized edit form. Used in ``fobi.views.edit_form_element_entry`` and @@ -1178,24 +1200,29 @@ def get_initialised_edit_form(self, data=None, files=None, plugin_form = self.get_form() if plugin_form: kwargs = { - 'data': data, - 'files': files, - 'auto_id': auto_id, - 'prefix': prefix, - 'initial': initial, - 'error_class': error_class, - 'label_suffix': label_suffix, - 'empty_permitted': empty_permitted + "data": data, + "files": files, + "auto_id": auto_id, + "prefix": prefix, + "initial": initial, + "error_class": error_class, + "label_suffix": label_suffix, + "empty_permitted": empty_permitted, } if issubclass(plugin_form, ModelForm): - kwargs.update({'instance': instance}) + kwargs.update({"instance": instance}) return plugin_form(**kwargs) - def get_initialised_edit_form_or_404(self, data=None, files=None, - auto_id='id_%s', prefix=None, - error_class=ErrorList, - label_suffix=':', - empty_permitted=False): + def get_initialised_edit_form_or_404( + self, + data=None, + files=None, + auto_id="id_%s", + prefix=None, + error_class=ErrorList, + label_suffix=":", + empty_permitted=False, + ): """Get initialized edit form or page 404. Same as ``get_initialised_edit_form`` but raises @@ -1213,7 +1240,7 @@ def get_initialised_edit_form_or_404(self, data=None, files=None, error_class=error_class, label_suffix=label_suffix, empty_permitted=empty_permitted, - instance=self.get_instance() + instance=self.get_instance(), ) except Exception as err: if DEBUG: @@ -1242,7 +1269,7 @@ def render(self, request=None): widget = widget_cls(self) render = widget.render(request=request) - return render or '' + return render or "" elif DEBUG: logger.debug("No widget defined for %s.", self.uid) @@ -1353,7 +1380,7 @@ def get_cloned_plugin_data(self, update={}): data = {} for field, default_value in form.plugin_data_fields: - data.update({field: getattr(cloned_data, field, '')}) + data.update({field: getattr(cloned_data, field, "")}) for prop, value in update.items(): data.update({prop: value}) @@ -1372,7 +1399,7 @@ def get_updated_plugin_data(self, update={}): data = {} for field, default_value in form.plugin_data_fields: - data.update({field: getattr(self.data, field, '')}) + data.update({field: getattr(self.data, field, "")}) for prop, value in update.items(): data.update({prop: value}) @@ -1427,10 +1454,18 @@ class FormElementPlugin(BasePlugin): has_value = False is_hidden = False - def _get_form_field_instances(self, form_element_entry=None, origin=None, - kwargs_update_func=None, return_func=None, - extra={}, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def _get_form_field_instances( + self, + form_element_entry=None, + origin=None, + kwargs_update_func=None, + return_func=None, + extra={}, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances (internal method). Used internally. Do not override this method. Gets the instances of @@ -1462,7 +1497,7 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, request=request, form_entry=form_entry, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) else: try: @@ -1470,7 +1505,7 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, request=request, form_entry=form_entry, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) except AttributeError as err: return [] @@ -1485,7 +1520,7 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, # For instance, if user is logged in, ``request.user.username`` # as an initial value should put the current users' username # as initial value in the form. - if 'initial' in field_kwargs and field_kwargs['initial']: + if "initial" in field_kwargs and field_kwargs["initial"]: try: # For security reasons we're not using the original request @@ -1499,7 +1534,7 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, # force-prefixing all dynamic value definitions with # "fobi_dynamic_values." string. See the docs for # more ("Dynamic initial values" section). - initial = field_kwargs['initial'] + initial = field_kwargs["initial"] # For the moment, only string types are dynamic if isinstance(initial, string_types): @@ -1512,14 +1547,16 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, # exposing sensitive data. Further security of # template context processor variables within # "fobi_dynamic_values." is a developer responsibility. - initial = re.sub("{{", "{{fobi_dynamic_values.", - initial) + initial = re.sub( + "{{", "{{fobi_dynamic_values.", initial + ) # Strip loading or executing any complicated template # tags. initial = re.sub("{%.*%}", "", initial) - field_kwargs['initial'] = \ - Template(initial).render(context) + field_kwargs["initial"] = Template(initial).render( + context + ) except Exception as err: logger.debug(err) @@ -1530,7 +1567,7 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, form_element_entry, origin, extra=extra, - widget_cls=Widget + widget_cls=Widget, ) # if 'widget' in field_kwargs: @@ -1547,8 +1584,9 @@ def _get_form_field_instances(self, form_element_entry=None, origin=None, return processed_field_instances - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get the instances of form fields, that plugin contains. :param django.http.HttpRequest request: @@ -1563,13 +1601,15 @@ def get_form_field_instances(self, request=None, form_entry=None, """ return [] - def get_custom_field_instances(self, - integrate_with, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + integrate_with, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get custom field instances. :param str integrate_with: @@ -1595,22 +1635,24 @@ def get_custom_field_instances(self, request=request, form_entry=form_entry, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) return [] - def _get_custom_field_instances(self, - integrate_with, - form_element_entry=None, - origin=None, - kwargs_update_func=None, - return_func=None, - extra={}, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def _get_custom_field_instances( + self, + integrate_with, + form_element_entry=None, + origin=None, + kwargs_update_func=None, + return_func=None, + extra={}, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Gets the instances of form fields, that plugin contains. @@ -1640,7 +1682,7 @@ def _get_custom_field_instances(self, form_entry=form_entry, form_element_entries=form_element_entries, has_value=has_value, - **kwargs + **kwargs, ) else: try: @@ -1650,7 +1692,7 @@ def _get_custom_field_instances(self, form_entry=form_entry, form_element_entries=form_element_entries, has_value=has_value, - **kwargs + **kwargs, ) except AttributeError: return [] @@ -1667,14 +1709,15 @@ def _get_custom_field_instances(self, form_element_entry=form_element_entry, form_entry=form_entry, request=request, - form_element_plugin=self + form_element_plugin=self, ) ) return processed_custom_field_instances - def get_origin_return_func_results(self, return_func, form_element_entry, - origin): + def get_origin_return_func_results( + self, return_func, form_element_entry, origin + ): """Get origin return func results. If ``return_func`` is given, is callable and returns results without @@ -1686,14 +1729,19 @@ def get_origin_return_func_results(self, return_func, form_element_entry, return return_func( form_element_plugin=self, form_element_entry=form_element_entry, - origin=origin + origin=origin, ) except Exception: pass - def get_origin_kwargs_update_func_results(self, kwargs_update_func, - form_element_entry, origin, - extra={}, widget_cls=None): + def get_origin_kwargs_update_func_results( + self, + kwargs_update_func, + form_element_entry, + origin, + extra={}, + widget_cls=None, + ): """Get origin kwargs update func results. If ``kwargs_update_func`` is given, is callable and returns results @@ -1707,7 +1755,7 @@ def get_origin_kwargs_update_func_results(self, kwargs_update_func, form_element_entry=form_element_entry, origin=origin, extra=extra, - widget_cls=widget_cls + widget_cls=widget_cls, ) if kwargs_update: return kwargs_update @@ -1718,8 +1766,9 @@ def get_origin_kwargs_update_func_results(self, kwargs_update_func, logger.error(str(err)) return {} - def _submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def _submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data (internal method). Do not override this method. Use ``submit_plugin_form_data``, @@ -1740,7 +1789,7 @@ def _submit_plugin_form_data(self, form_entry, request, form, request=request, form=form, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) else: try: @@ -1749,13 +1798,14 @@ def _submit_plugin_form_data(self, form_entry, request, form, request=request, form=form, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) except Exception as err: logger.debug(str(err)) - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data. Called on form submission (when user actually @@ -1809,16 +1859,16 @@ def _run(self, form_entry, request, form, form_element_entries=None): form_element_entries = form_entry.formelemententry_set.all()[:] if FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS: - response = self.run(form_entry, request, form, - form_element_entries) + response = self.run(form_entry, request, form, form_element_entries) if response: return response else: return (True, None) else: try: - response = self.run(form_entry, request, form, - form_element_entries) + response = self.run( + form_entry, request, form, form_element_entries + ) if response: return response else: @@ -1828,7 +1878,7 @@ def _run(self, form_entry, request, form, form_element_entries=None): "Error in class %s. Details: %s. Full trace: %s", self.__class__.__name__, str(err), - traceback.format_exc() + traceback.format_exc(), ) return (False, err) @@ -1850,16 +1900,17 @@ def run(self, form_entry, request, form, form_element_entries=None): "subclass.".format(self.__class__.__name__) ) - def run_integration_handler(self, - integrate_with, - form_entry, - request, - form_element_entries=None, - **kwargs): + def run_integration_handler( + self, + integrate_with, + form_entry, + request, + form_element_entries=None, + **kwargs, + ): """Run integration handler.""" cls = integration_form_handler_plugin_registry.get( - integrate_with, - self.uid + integrate_with, self.uid ) if cls: plugin = cls() @@ -1868,7 +1919,7 @@ def run_integration_handler(self, form_entry=form_entry, request=request, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) if response: return response @@ -1876,15 +1927,17 @@ def run_integration_handler(self, return True, None return ( False, - _("No integration handler for plugin {} found.").format(self.uid) + _("No integration handler for plugin {} found.").format(self.uid), ) - def _run_integration_handler(self, - integrate_with, - form_entry, - request, - form_element_entries=None, - **kwargs): + def _run_integration_handler( + self, + integrate_with, + form_entry, + request, + form_element_entries=None, + **kwargs, + ): """Run integration handlers.""" if DEBUG: return self.run_integration_handler( @@ -1892,7 +1945,7 @@ def _run_integration_handler(self, form_entry=form_entry, request=request, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) else: try: @@ -1901,7 +1954,7 @@ def _run_integration_handler(self, form_entry=form_entry, request=request, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) except Exception as err: return False, err @@ -1941,8 +1994,14 @@ class FormWizardHandlerPlugin(BasePlugin): storage = FormWizardHandlerPluginDataStorage allow_multiple = True - def _run(self, form_wizard_entry, request, form_list, form_wizard, - form_element_entries=None): + def _run( + self, + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, + ): """Run (internal method). Safely call the ``run`` method. @@ -1957,17 +2016,20 @@ def _run(self, form_wizard_entry, request, form_list, form_wizard, """ # For backwards compatibility. if not form_element_entries: - form_element_entries = \ + form_element_entries = ( get_form_element_entries_for_form_wizard_entry( form_wizard_entry ) + ) try: - response = self.run(form_wizard_entry, - request, - form_list, - form_wizard, - form_element_entries) + response = self.run( + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries, + ) if response: return response else: @@ -1975,20 +2037,24 @@ def _run(self, form_wizard_entry, request, form_list, form_wizard, except Exception as err: if FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS: raise err.__class__( - "Exception: %s. %s", - str(err), - traceback.format_exc() + "Exception: %s. %s", str(err), traceback.format_exc() ) logger.error( "Error in class %s. Details: %s. Full trace: %s", self.__class__.__name__, str(err), - traceback.format_exc() + traceback.format_exc(), ) return (False, err) - def run(self, form_wizard_entry, request, form_list, form_wizard, - form_element_entries=None): + def run( + self, + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, + ): """Run. Custom code should be implemented here. @@ -2003,7 +2069,7 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, """ raise NotImplementedError( "You should implement ``run`` method in your %s subclass.", - self.__class__.__name__ + self.__class__.__name__, ) def custom_actions(self, form_wizard_entry, request=None): @@ -2040,11 +2106,9 @@ def __init__(self, *args, **kwargs): self.args = args self.kwargs = kwargs - def process_custom_form_field_instance(self, - form_element_entry, - form_entry, - request, - form_element_plugin): + def process_custom_form_field_instance( + self, form_element_entry, form_entry, request, form_element_plugin + ): """You should implement this method in your implementation.""" raise NotImplementedError("You should implement this method!") @@ -2123,7 +2187,7 @@ def _callback(self, form_entry, request, form): logger.debug( "Error in class %s. Details: %s", self.__class__.__name__, - str(err) + str(err), ) def callback(self, form_entry, request, form): @@ -2163,7 +2227,7 @@ def _callback(self, form_entry, request, **kwargs): logger.debug( "Error in class %s. Details: %s", self.__class__.__name__, - str(err) + str(err), ) def callback(self, form_entry, request, **kwargs): @@ -2217,8 +2281,9 @@ class BasePluginWidget(object): def __init__(self, plugin): """Constructor.""" assert self.theme_uid - assert self.plugin_uid and \ - self.plugin_uid in get_registered_plugin_uids() + assert ( + self.plugin_uid and self.plugin_uid in get_registered_plugin_uids() + ) assert isinstance(self.media_js, (list, tuple)) assert isinstance(self.media_css, (list, tuple)) assert self.storage @@ -2239,7 +2304,7 @@ def html_class(cls): :return string: """ - return ' '.join(cls.html_classes) + return " ".join(cls.html_classes) class FormElementPluginWidget(BasePluginWidget): @@ -2266,6 +2331,7 @@ class FormWizardHandlerPluginWidget(BasePluginWidget): # ***************************************************************************** # ***************************************************************************** + class BaseRegistry(object): """Base registry. @@ -2285,8 +2351,9 @@ class BaseRegistry(object): type = None fail_on_missing_plugin = False plugin_not_found_exception_cls = DoesNotExist - plugin_not_found_error_message = "Can't find plugin with uid `{0}` in " \ - "`{1}` registry." + plugin_not_found_error_message = ( + "Can't find plugin with uid `{0}` in " "`{1}` registry." + ) def __init__(self): """Constructor.""" @@ -2390,8 +2457,9 @@ class FormHandlerPluginRegistry(BaseRegistry): class BaseIntegrationPluginRegistry(object): """Base integration plugin registry.""" - plugin_not_found_error_message = "Can't find plugin with uid `{0}` in " \ - "`{1}` registry." + plugin_not_found_error_message = ( + "Can't find plugin with uid `{0}` in " "`{1}` registry." + ) def __init__(self): super(BaseIntegrationPluginRegistry, self).__init__() @@ -2447,8 +2515,10 @@ def unregister(self, cls): ) # Only non-forced items are allowed to be unregistered. - if cls.uid in self._registry[cls.integrate_with] \ - and cls.uid not in self._forced[cls.integrate_with]: + if ( + cls.uid in self._registry[cls.integrate_with] + and cls.uid not in self._forced[cls.integrate_with] + ): self._registry[cls.integrate_with].pop(cls.uid) return True else: @@ -2479,6 +2549,7 @@ def get(self, integrate_with, uid, default=None): class IntegrationFormElementPluginRegistry(BaseIntegrationPluginRegistry): """Integration form element plugin registry.""" + type = (IntegrationFormElementPlugin,) fail_on_missing_plugin = FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS plugin_not_found_exception_cls = IntegrationFormElementPluginDoesNotExist @@ -2486,6 +2557,7 @@ class IntegrationFormElementPluginRegistry(BaseIntegrationPluginRegistry): class IntegrationFormHandlerPluginRegistry(BaseIntegrationPluginRegistry): """Integration form handler plugin registry.""" + type = (IntegrationFormHandlerPlugin,) # TODO fail_on_missing_plugin = FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS @@ -2503,6 +2575,7 @@ class FormWizardHandlerPluginRegistry(BaseRegistry): class ThemeRegistry(BaseRegistry): """Themes registry.""" + type = BaseTheme @@ -2621,6 +2694,7 @@ def get_callbacks(self, integrate_with, stage=None): class BasePluginWidgetRegistry(object): """Registry of plugins widgets (renderers).""" + type = None def __init__(self): @@ -2631,7 +2705,7 @@ def __init__(self): @staticmethod def namify(theme, plugin_uid): """Namify.""" - return '{0}.{1}'.format(theme, plugin_uid) + return "{0}.{1}".format(theme, plugin_uid) def register(self, cls, force=False): """Register the plugin renderer in the registry. @@ -2694,7 +2768,7 @@ def get(self, uid, default=None): logger.debug( "Can't find plugin widget with uid `%s` in `%s` registry", uid, - self.__class__ + self.__class__, ) return item @@ -2725,13 +2799,15 @@ class FormWizardHandlerPluginWidgetRegistry(BasePluginWidgetRegistry): # Register integration form element plugins by calling # integration_form_element_plugin_registry.register() -integration_form_element_plugin_registry = \ +integration_form_element_plugin_registry = ( IntegrationFormElementPluginRegistry() +) # Register integration form handler plugins by calling # integration_form_handler_plugin_registry.register() -integration_form_handler_plugin_registry = \ +integration_form_handler_plugin_registry = ( IntegrationFormHandlerPluginRegistry() +) # Register action plugins by calling form_action_plugin_registry.register() form_wizard_handler_plugin_registry = FormWizardHandlerPluginRegistry() @@ -2755,8 +2831,9 @@ class FormWizardHandlerPluginWidgetRegistry(BasePluginWidgetRegistry): # Register plugin widgets by calling # form_wizard_handler_plugin_widget_registry.register() -form_wizard_handler_plugin_widget_registry = \ +form_wizard_handler_plugin_widget_registry = ( FormWizardHandlerPluginWidgetRegistry() +) # ***************************************************************************** # ***************************************************************************** @@ -2771,9 +2848,11 @@ def ensure_autodiscover(): The form callbacks registry is intentionally left out, since they will be auto-discovered in any case if other modules are discovered. """ - if not (form_element_plugin_registry._registry - and form_handler_plugin_registry._registry - and theme_registry._registry): + if not ( + form_element_plugin_registry._registry + and form_handler_plugin_registry._registry + and theme_registry._registry + ): autodiscover() @@ -2784,6 +2863,7 @@ def assemble_form_field_widget_class(base_class, plugin): #TODO """ + class DeclarativeMetaclass(type): """Wrapped class.""" @@ -2797,7 +2877,7 @@ def __new__(cls, name, bases, attrs): def render(self, name, value, attrs=None, **kwargs): """Smart render.""" widget = plugin.get_widget() - if widget.hasattr('render') and callable(widget.render): + if widget.hasattr("render") and callable(widget.render): return widget.render(name, value, attrs=attrs) else: super(DeclarativeMetaclass, self).render( @@ -2811,6 +2891,7 @@ class WrappedWidget(with_metaclass(DeclarativeMetaclass, base_class)): return WrappedWidget + # ***************************************************************************** # *********************************** Generic ********************************* # ***************************************************************************** @@ -2844,9 +2925,9 @@ def get_registered_plugins(registry, as_instances=False, sort_items=True): return registered_plugins -def get_registered_plugins_grouped(registry, - sort_items=True, - sort_by_value=SORT_PLUGINS_BY_VALUE): +def get_registered_plugins_grouped( + registry, sort_items=True, sort_by_value=SORT_PLUGINS_BY_VALUE +): """Get registered plugins grouped. Gets a list of registered plugins in a form of tuple (plugin name, plugin @@ -2911,6 +2992,7 @@ def validate_plugin_uid(registry, plugin_uid): """ return plugin_uid in get_registered_plugin_uids(registry, flattern=True) + # ***************************************************************************** # ***************************** Form element specific ************************* # ***************************************************************************** @@ -2928,7 +3010,7 @@ def get_registered_form_element_plugins(): def get_registered_form_element_plugins_grouped( - sort_by_value=SORT_PLUGINS_BY_VALUE + sort_by_value=SORT_PLUGINS_BY_VALUE, ): """Get registered form element plugins grouped. @@ -2938,8 +3020,7 @@ def get_registered_form_element_plugins_grouped( :return dict: """ return get_registered_plugins_grouped( - form_element_plugin_registry, - sort_by_value=sort_by_value + form_element_plugin_registry, sort_by_value=sort_by_value ) @@ -2965,8 +3046,9 @@ def validate_form_element_plugin_uid(plugin_uid): return validate_plugin_uid(form_element_plugin_registry, plugin_uid) -def submit_plugin_form_data(form_entry, request, form, - form_element_entries=None, **kwargs): +def submit_plugin_form_data( + form_entry, request, form, form_element_entries=None, **kwargs +): """Submit plugin form data for all plugins. :param fobi.models.FormEntry form_entry: Instance of @@ -2985,7 +3067,7 @@ def submit_plugin_form_data(form_entry, request, form, request=request, form=form, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) if updated_form: form = updated_form @@ -3061,6 +3143,7 @@ def get_ignorable_form_fields(form_element_entries): return ignorable_form_fields + # ***************************************************************************** # **************************** Form handler specific ************************** # ***************************************************************************** @@ -3083,7 +3166,7 @@ def get_cleaned_data(form, keys_to_remove=[], values_to_remove=[]): cleaned_data = clean_dict( cleaned_data, keys=list(set(cleaned_data.keys()) - set(keys_to_remove)), - values=values_to_remove + values=values_to_remove, ) ordered_cleaned_data = OrderedDict() @@ -3109,9 +3192,7 @@ def get_field_name_to_label_map(form, keys_to_remove=[], values_to_remove=[]): values_to_remove = get_ignorable_form_values() field_name_to_label_map = clean_dict( - map_field_name_to_label(form), - keys_to_remove, - values_to_remove + map_field_name_to_label(form), keys_to_remove, values_to_remove ) return field_name_to_label_map @@ -3131,34 +3212,32 @@ def get_processed_form_data(form, form_element_entries): keys_to_remove = get_ignorable_form_fields(form_element_entries) values_to_remove = get_ignorable_form_values() - field_name_to_label_map = \ - get_field_name_to_label_map(form, keys_to_remove, values_to_remove) + field_name_to_label_map = get_field_name_to_label_map( + form, keys_to_remove, values_to_remove + ) keys_to_remove = list(field_name_to_label_map.keys()) return ( field_name_to_label_map, - get_cleaned_data(form, keys_to_remove, values_to_remove) + get_cleaned_data(form, keys_to_remove, values_to_remove), ) -def get_processed_form_wizard_data(form_wizard, form_list, - form_element_entries): +def get_processed_form_wizard_data( + form_wizard, form_list, form_element_entries +): """Get processed form wizard data.""" field_name_to_label_map = {} cleaned_data = {} for form in form_list: _field_name_to_label_map, _cleaned_data = get_processed_form_data( - form, - form_element_entries + form, form_element_entries ) field_name_to_label_map.update(_field_name_to_label_map) cleaned_data.update(_cleaned_data) - return ( - field_name_to_label_map, - cleaned_data - ) + return (field_name_to_label_map, cleaned_data) def get_registered_form_handler_plugins(as_instances=False): @@ -3169,8 +3248,9 @@ def get_registered_form_handler_plugins(as_instances=False): :return list: """ - return get_registered_plugins(form_handler_plugin_registry, - as_instances=as_instances) + return get_registered_plugins( + form_handler_plugin_registry, as_instances=as_instances + ) def get_registered_form_handler_plugin_uids(flattern=True): @@ -3241,7 +3321,7 @@ def run_form_handlers(form_entry, request, form, form_element_entries=None): ordered_form_handlers = get_ordered_form_handler_plugins() # Getting the form handlers to be executed. - form_handlers = form_entry.formhandlerentry_set.order_by('plugin_uid')[:] + form_handlers = form_entry.formhandlerentry_set.order_by("plugin_uid")[:] # Assembling a new dictionary of the form handlers to iterate later. for form_handler in form_handlers: @@ -3257,10 +3337,7 @@ def run_form_handlers(form_entry, request, form, form_element_entries=None): # Run the form handler success, response = form_handler_plugin._run( - form_entry, - request, - form, - form_element_entries + form_entry, request, form, form_element_entries ) if success: @@ -3270,6 +3347,7 @@ def run_form_handlers(form_entry, request, form, form_element_entries=None): return (responses, errors) + # ***************************************************************************** # ************************ Form wizard handler specific *********************** # ***************************************************************************** @@ -3283,8 +3361,9 @@ def get_registered_form_wizard_handler_plugins(as_instances=False): :return list: """ - return get_registered_plugins(form_wizard_handler_plugin_registry, - as_instances=as_instances) + return get_registered_plugins( + form_wizard_handler_plugin_registry, as_instances=as_instances + ) def get_registered_form_wizard_handler_plugin_uids(flattern=True): @@ -3336,8 +3415,13 @@ def get_ordered_form_wizard_handler_plugins(): get_ordered_form_wizard_handlers = get_ordered_form_wizard_handler_plugins -def run_form_wizard_handlers(form_wizard_entry, request, form_list, - form_wizard, form_element_entries=None): +def run_form_wizard_handlers( + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, +): """Run form wizard handlers. :param fobi.models.FormWizardEntry form_wizard_entry: @@ -3359,8 +3443,9 @@ def run_form_wizard_handlers(form_wizard_entry, request, form_list, ordered_form_wizard_handlers = get_ordered_form_wizard_handler_plugins() # Getting the form handlers to be executed. - form_wizard_handlers = form_wizard_entry.formwizardhandlerentry_set \ - .order_by('plugin_uid')[:] + form_wizard_handlers = ( + form_wizard_entry.formwizardhandlerentry_set.order_by("plugin_uid")[:] + ) # Assembling a new dictionary of the form handlers to iterate later. for form_wizard_handler in form_wizard_handlers: @@ -3384,7 +3469,7 @@ def run_form_wizard_handlers(form_wizard_entry, request, form_list, request, form_list, form_wizard, - form_element_entries + form_element_entries, ) if success: @@ -3394,6 +3479,7 @@ def run_form_wizard_handlers(form_wizard_entry, request, form_list, return (responses, errors) + # ***************************************************************************** # ******************************* Theme specific ****************************** # ***************************************************************************** @@ -3498,13 +3584,15 @@ def fire_form_callbacks(form_entry, request, form, stage=None): form = updated_form return form + # ***************************************************************************** # ******************************* Widget specific ***************************** # ***************************************************************************** -def get_plugin_widget(registry, plugin_uid, request=None, as_instance=False, - theme=None): +def get_plugin_widget( + registry, plugin_uid, request=None, as_instance=False, theme=None +): """Get the plugin widget for the ``plugin_uid`` given. Looks up in the ``registry`` provided. @@ -3519,13 +3607,12 @@ def get_plugin_widget(registry, plugin_uid, request=None, as_instance=False, if not theme: theme = get_theme(request=request, as_instance=True) - return registry.get( - BasePluginWidgetRegistry.namify(theme.uid, plugin_uid) - ) + return registry.get(BasePluginWidgetRegistry.namify(theme.uid, plugin_uid)) -def get_form_element_plugin_widget(plugin_uid, request=None, as_instance=False, - theme=None): +def get_form_element_plugin_widget( + plugin_uid, request=None, as_instance=False, theme=None +): """Get the form element plugin widget for the ``plugin_uid`` given. :param str plugin_uid: UID of the plugin to get the widget for. @@ -3539,12 +3626,13 @@ def get_form_element_plugin_widget(plugin_uid, request=None, as_instance=False, plugin_uid=plugin_uid, request=request, as_instance=as_instance, - theme=theme + theme=theme, ) -def get_form_handler_plugin_widget(plugin_uid, request=None, as_instance=False, - theme=None): +def get_form_handler_plugin_widget( + plugin_uid, request=None, as_instance=False, theme=None +): """Get the form handler plugin widget for the ``plugin_uid`` given. :param str plugin_uid: UID of the plugin to get the widget for. @@ -3558,12 +3646,13 @@ def get_form_handler_plugin_widget(plugin_uid, request=None, as_instance=False, plugin_uid=plugin_uid, request=request, as_instance=as_instance, - theme=theme + theme=theme, ) -def get_form_wizard_handler_plugin_widget(plugin_uid, request=None, - as_instance=False, theme=None): +def get_form_wizard_handler_plugin_widget( + plugin_uid, request=None, as_instance=False, theme=None +): """Get the form wizard handler plugin widget for the ``plugin_uid`` given. :param str plugin_uid: UID of the plugin to get the widget for. @@ -3577,7 +3666,7 @@ def get_form_wizard_handler_plugin_widget(plugin_uid, request=None, plugin_uid=plugin_uid, request=request, as_instance=as_instance, - theme=theme + theme=theme, ) @@ -3630,8 +3719,7 @@ def validate_integration_form_element_plugin_uid(plugin_uid): :return bool: """ return validate_plugin_uid( - integration_form_element_plugin_registry, - plugin_uid + integration_form_element_plugin_registry, plugin_uid ) @@ -3673,8 +3761,7 @@ def get_registered_integration_form_handler_plugin_uids(flattern=True): :return list: """ return get_registered_plugin_uids( - integration_form_handler_plugin_registry, - flattern=flattern + integration_form_handler_plugin_registry, flattern=flattern ) @@ -3685,10 +3772,10 @@ def validate_integration_form_handler_plugin_uid(plugin_uid): :return bool: """ return validate_plugin_uid( - integration_form_handler_plugin_registry, - plugin_uid + integration_form_handler_plugin_registry, plugin_uid ) + # ***************************************************************************** # ******************************** Media specific ***************************** # ***************************************************************************** @@ -3714,11 +3801,11 @@ def collect_plugin_media(form_element_entries, request=None): ) ) if widget_cls: - media_js += getattr(widget_cls, 'media_js', []) - media_css += getattr(widget_cls, 'media_css', []) + media_js += getattr(widget_cls, "media_js", []) + media_css += getattr(widget_cls, "media_css", []) else: logger.debug( "No widget for form element entry %s", - form_element_entry.__dict__ + form_element_entry.__dict__, ) - return {'js': media_js, 'css': media_css} + return {"js": media_js, "css": media_css} diff --git a/src/fobi/conf.py b/src/fobi/conf.py index 04f993319..b0e4fcdb3 100644 --- a/src/fobi/conf.py +++ b/src/fobi/conf.py @@ -2,10 +2,10 @@ from . import defaults -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -20,7 +20,7 @@ def get_setting(setting, override=None): None. :return: Setting value. """ - attr_name = 'FOBI_{0}'.format(setting) + attr_name = "FOBI_{0}".format(setting) if hasattr(settings, attr_name): return getattr(settings, attr_name) else: diff --git a/src/fobi/constants.py b/src/fobi/constants.py index a0b99479e..d6021da21 100644 --- a/src/fobi/constants.py +++ b/src/fobi/constants.py @@ -1,41 +1,42 @@ from django.utils.translation import gettext_lazy as _ -__title__ = 'fobi.constants' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.constants" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'ACTION_CHOICE_REPLACE', - 'ACTION_CHOICE_APPEND', - 'ACTION_CHOICES', - 'CALLBACK_BEFORE_FORM_VALIDATION', - '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', - 'WIZARD_TYPE_SESSION', - 'WIZARD_TYPE_COOKIE', - 'WIZARD_TYPES', - 'DEFAULT_WIZARD_TYPE', + "ACTION_CHOICE_REPLACE", + "ACTION_CHOICE_APPEND", + "ACTION_CHOICES", + "CALLBACK_BEFORE_FORM_VALIDATION", + "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", + "WIZARD_TYPE_SESSION", + "WIZARD_TYPE_COOKIE", + "WIZARD_TYPES", + "DEFAULT_WIZARD_TYPE", ) -ACTION_CHOICE_REPLACE = '1' -ACTION_CHOICE_APPEND = '2' +ACTION_CHOICE_REPLACE = "1" +ACTION_CHOICE_APPEND = "2" ACTION_CHOICES = ( (ACTION_CHOICE_APPEND, _("Append")), (ACTION_CHOICE_REPLACE, _("Replace")), ) -CALLBACK_BEFORE_FORM_VALIDATION = 'before_form_validation' -CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA = \ - 'before_submit_plugin_form_data' -CALLBACK_FORM_VALID = 'form_valid' -CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS = 'after_form_handlers' -CALLBACK_FORM_INVALID = 'form_invalid' +CALLBACK_BEFORE_FORM_VALIDATION = "before_form_validation" +CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA = ( + "before_submit_plugin_form_data" +) +CALLBACK_FORM_VALID = "form_valid" +CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS = "after_form_handlers" +CALLBACK_FORM_INVALID = "form_invalid" CALLBACK_STAGES = ( CALLBACK_BEFORE_FORM_VALIDATION, @@ -44,12 +45,12 @@ CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, ) -SUBMIT_VALUE_AS_VAL = 'val' -SUBMIT_VALUE_AS_REPR = 'repr' -SUBMIT_VALUE_AS_MIX = 'mix' +SUBMIT_VALUE_AS_VAL = "val" +SUBMIT_VALUE_AS_REPR = "repr" +SUBMIT_VALUE_AS_MIX = "mix" -WIZARD_TYPE_SESSION = 'SessionWizardView' -WIZARD_TYPE_COOKIE = 'CookieWizardView' +WIZARD_TYPE_SESSION = "SessionWizardView" +WIZARD_TYPE_COOKIE = "CookieWizardView" DEFAULT_WIZARD_TYPE = WIZARD_TYPE_SESSION WIZARD_TYPES = ( (WIZARD_TYPE_SESSION, "Session wizard"), diff --git a/src/fobi/context_processors.py b/src/fobi/context_processors.py index af76fbe4f..74dafd4a7 100644 --- a/src/fobi/context_processors.py +++ b/src/fobi/context_processors.py @@ -4,14 +4,14 @@ from .form_importers import get_form_importer_plugin_urls from .helpers import StrippedRequest -__title__ = 'fobi.context_processors' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.context_processors" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'dynamic_values', - 'form_importers', - 'theme', + "dynamic_values", + "form_importers", + "theme", ) @@ -21,16 +21,16 @@ def theme(request): :param django.http.HttpRequest request: :return fobi.base.BaseTheme: Instance of ``fobi.base.BaseTheme``. """ - return {'fobi_theme': get_theme(request, as_instance=True)} + return {"fobi_theme": get_theme(request, as_instance=True)} def dynamic_values(request): """Dynamic values exposed to public forms.""" return { - 'fobi_dynamic_values': { - 'request': StrippedRequest(request), - 'now': datetime.datetime.now(), - 'today': datetime.date.today(), + "fobi_dynamic_values": { + "request": StrippedRequest(request), + "now": datetime.datetime.now(), + "today": datetime.date.today(), } } @@ -38,5 +38,5 @@ def dynamic_values(request): def form_importers(request): """Form importers.""" return { - 'form_importers': get_form_importer_plugin_urls(), + "form_importers": get_form_importer_plugin_urls(), } diff --git a/src/fobi/contrib/apps/djangocms_integration/__init__.py b/src/fobi/contrib/apps/djangocms_integration/__init__.py index aaf84a8ba..54740654e 100644 --- a/src/fobi/contrib/apps/djangocms_integration/__init__.py +++ b/src/fobi/contrib/apps/djangocms_integration/__init__.py @@ -1,7 +1,7 @@ -__title__ = 'fobi.contrib.apps.djangocms_integration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.apps.djangocms_integration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.apps.djangocms_integration.apps.Config' +default_app_config = "fobi.contrib.apps.djangocms_integration.apps.Config" diff --git a/src/fobi/contrib/apps/djangocms_integration/apps.py b/src/fobi/contrib/apps/djangocms_integration/apps.py index ec07a350b..eda8cfd1c 100644 --- a/src/fobi/contrib/apps/djangocms_integration/apps.py +++ b/src/fobi/contrib/apps/djangocms_integration/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.djangocms_integration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.djangocms_integration.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.djangocms_integration' - label = 'fobi_contrib_apps_djangocms_integration' + name = "fobi.contrib.apps.djangocms_integration" + label = "fobi_contrib_apps_djangocms_integration" diff --git a/src/fobi/contrib/apps/djangocms_integration/cms_plugins.py b/src/fobi/contrib/apps/djangocms_integration/cms_plugins.py index 6e73bdc91..19be00b14 100644 --- a/src/fobi/contrib/apps/djangocms_integration/cms_plugins.py +++ b/src/fobi/contrib/apps/djangocms_integration/cms_plugins.py @@ -1,18 +1,17 @@ -from django.utils.translation import gettext_lazy as _ - from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool - -from fobi.integration.processors import IntegrationProcessor +from django.utils.translation import gettext_lazy as _ from .models import FobiFormWidget from .settings import WIDGET_FORM_SENT_GET_PARAM -__title__ = 'fobi.contrib.apps.djangocms_integration.cms_plugins' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiFormWidgetPlugin',) +from fobi.integration.processors import IntegrationProcessor + +__title__ = "fobi.contrib.apps.djangocms_integration.cms_plugins" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiFormWidgetPlugin",) class FobiFormWidgetPlugin(CMSPluginBase, IntegrationProcessor): @@ -27,7 +26,7 @@ class FobiFormWidgetPlugin(CMSPluginBase, IntegrationProcessor): # Fobi integration processor configuration form_sent_get_param = WIDGET_FORM_SENT_GET_PARAM can_redirect = False - login_required_template_name = 'djangocms_integration/login_required.html' + login_required_template_name = "djangocms_integration/login_required.html" def process(self, request, instance, **kwargs): """This is where most of the form handling happens. @@ -39,14 +38,16 @@ def process(self, request, instance, **kwargs): def render(self, context, instance, placeholder): """Render.""" - self.process(context['request'], instance) - rendered_context = getattr(self, 'rendered_output', '') - context.update({ - 'object': instance, - 'instance': instance, - 'placeholder': placeholder, - 'rendered_context': rendered_context - }) + self.process(context["request"], instance) + rendered_context = getattr(self, "rendered_output", "") + context.update( + { + "object": instance, + "instance": instance, + "placeholder": placeholder, + "rendered_context": rendered_context, + } + ) return context diff --git a/src/fobi/contrib/apps/djangocms_integration/cms_version.py b/src/fobi/contrib/apps/djangocms_integration/cms_version.py index a3b720835..a254c82a7 100644 --- a/src/fobi/contrib/apps/djangocms_integration/cms_version.py +++ b/src/fobi/contrib/apps/djangocms_integration/cms_version.py @@ -1,17 +1,18 @@ from cms import __version__ -__title__ = 'fobi.contrib.apps.djangocms_integration.cms_version' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.djangocms_integration.cms_version" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'CMS_VERSION', - 'CMS_VERSION_LTE_3_0', - 'CMS_VERSION_GT_3_0', + "CMS_VERSION", + "CMS_VERSION_LTE_3_0", + "CMS_VERSION_GT_3_0", ) -CMS_VERSION = [int(__v) for __v in __version__.split('.')] +CMS_VERSION = [int(__v) for __v in __version__.split(".")] -CMS_VERSION_LTE_3_0 = CMS_VERSION[0] <= 2 \ - or (CMS_VERSION[0] == 3 and CMS_VERSION[1] == 0) +CMS_VERSION_LTE_3_0 = CMS_VERSION[0] <= 2 or ( + CMS_VERSION[0] == 3 and CMS_VERSION[1] == 0 +) CMS_VERSION_GT_3_0 = not CMS_VERSION_LTE_3_0 diff --git a/src/fobi/contrib/apps/djangocms_integration/conf.py b/src/fobi/contrib/apps/djangocms_integration/conf.py index ae617b775..11e8fbe1f 100644 --- a/src/fobi/contrib/apps/djangocms_integration/conf.py +++ b/src/fobi/contrib/apps/djangocms_integration/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.apps.djangocms_integration.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.apps.djangocms_integration.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,10 +24,9 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_DJANGOCMS_INTEGRATION_{0}'.format(setting)): + if hasattr(settings, "FOBI_DJANGOCMS_INTEGRATION_{0}".format(setting)): return getattr( - settings, - 'FOBI_DJANGOCMS_INTEGRATION_{0}'.format(setting) + settings, "FOBI_DJANGOCMS_INTEGRATION_{0}".format(setting) ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/apps/djangocms_integration/defaults.py b/src/fobi/contrib/apps/djangocms_integration/defaults.py index 7818b2e42..eb0c9a4f0 100644 --- a/src/fobi/contrib/apps/djangocms_integration/defaults.py +++ b/src/fobi/contrib/apps/djangocms_integration/defaults.py @@ -1,14 +1,14 @@ -__title__ = 'fobi.contrib.apps.djangocms_integration.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.djangocms_integration.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) -WIDGET_FORM_SENT_GET_PARAM = 'sent' +WIDGET_FORM_SENT_GET_PARAM = "sent" FORM_TEMPLATE_CHOICES = [] diff --git a/src/fobi/contrib/apps/djangocms_integration/helpers.py b/src/fobi/contrib/apps/djangocms_integration/helpers.py index 9a755dbed..4ab2acf6c 100644 --- a/src/fobi/contrib/apps/djangocms_integration/helpers.py +++ b/src/fobi/contrib/apps/djangocms_integration/helpers.py @@ -1,14 +1,14 @@ -from fobi.integration.helpers import get_template_choices - from .settings import FORM_TEMPLATE_CHOICES, SUCCESS_PAGE_TEMPLATE_CHOICES -__title__ = 'fobi.contrib.apps.djangocms_integration.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +from fobi.integration.helpers import get_template_choices + +__title__ = "fobi.contrib.apps.djangocms_integration.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'get_form_template_choices', - 'get_success_page_template_choices', + "get_form_template_choices", + "get_success_page_template_choices", ) @@ -20,9 +20,7 @@ def get_form_template_choices(): :return list: """ return get_template_choices( - 'djangocms_integration', - FORM_TEMPLATE_CHOICES, - 'form_template_choices' + "djangocms_integration", FORM_TEMPLATE_CHOICES, "form_template_choices" ) @@ -32,7 +30,7 @@ def get_success_page_template_choices(): :return list: """ return get_template_choices( - 'djangocms_integration', + "djangocms_integration", SUCCESS_PAGE_TEMPLATE_CHOICES, - 'success_page_template_choices' + "success_page_template_choices", ) diff --git a/src/fobi/contrib/apps/djangocms_integration/models.py b/src/fobi/contrib/apps/djangocms_integration/models.py index 27810a74c..6835e100a 100644 --- a/src/fobi/contrib/apps/djangocms_integration/models.py +++ b/src/fobi/contrib/apps/djangocms_integration/models.py @@ -1,20 +1,19 @@ +from cms.models import CMSPlugin from django.db import models from django.utils.translation import gettext_lazy as _ - -from cms.models import CMSPlugin - from six import python_2_unicode_compatible from .cms_version import CMS_VERSION_GT_3_0 from .helpers import ( - get_form_template_choices, get_success_page_template_choices + get_form_template_choices, + get_success_page_template_choices, ) -__title__ = 'fobi.contrib.apps.djangocms_integration.models' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiFormWidget',) +__title__ = "fobi.contrib.apps.djangocms_integration.models" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiFormWidget",) @python_2_unicode_compatible @@ -22,9 +21,7 @@ class FobiFormWidget(CMSPlugin): """Plugin for storing ``django-fobi`` form reference.""" form_entry = models.ForeignKey( - 'fobi.FormEntry', - verbose_name=_("Form"), - on_delete=models.CASCADE + "fobi.FormEntry", verbose_name=_("Form"), on_delete=models.CASCADE ) form_template_name = models.CharField( @@ -33,13 +30,13 @@ class FobiFormWidget(CMSPlugin): null=True, blank=True, choices=get_form_template_choices(), - help_text=_("Template to render the form with.") + help_text=_("Template to render the form with."), ) hide_form_title = models.BooleanField( _("Hide form title"), default=False, - help_text=_("If checked, no form title is shown.") + help_text=_("If checked, no form title is shown."), ) form_title = models.CharField( @@ -47,7 +44,7 @@ class FobiFormWidget(CMSPlugin): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form title.") + help_text=_("Overrides the default form title."), ) form_submit_button_text = models.CharField( @@ -55,7 +52,7 @@ class FobiFormWidget(CMSPlugin): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form submit button text.") + help_text=_("Overrides the default form submit button text."), ) success_page_template_name = models.CharField( @@ -64,13 +61,13 @@ class FobiFormWidget(CMSPlugin): null=True, blank=True, choices=get_success_page_template_choices(), - help_text=_("Template to render the success page with.") + help_text=_("Template to render the success page with."), ) hide_success_page_title = models.BooleanField( _("Hide success page title"), default=False, - help_text=_("If checked, no success page title is shown.") + help_text=_("If checked, no success page title is shown."), ) success_page_title = models.CharField( @@ -78,23 +75,23 @@ class FobiFormWidget(CMSPlugin): max_length=255, null=True, blank=True, - help_text=_("Overrides the default success page title.") + help_text=_("Overrides the default success page title."), ) success_page_text = models.TextField( _("Succes page text"), null=True, blank=True, - help_text=_("Overrides the default success page text.") + help_text=_("Overrides the default success page text."), ) - search_fields = ('form_entry__name',) + search_fields = ("form_entry__name",) class Meta(object): """Meta options.""" if CMS_VERSION_GT_3_0: - db_table = 'djangocms_integration_fobiformwidget' + db_table = "djangocms_integration_fobiformwidget" def __str__(self): return self.form_entry.name diff --git a/src/fobi/contrib/apps/djangocms_integration/settings.py b/src/fobi/contrib/apps/djangocms_integration/settings.py index 354f28a36..cf03b6d4e 100644 --- a/src/fobi/contrib/apps/djangocms_integration/settings.py +++ b/src/fobi/contrib/apps/djangocms_integration/settings.py @@ -4,14 +4,14 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.apps.djangocms_integration.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.djangocms_integration.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) @@ -21,6 +21,6 @@ # ************************************************************** # ************************************************************** -WIDGET_FORM_SENT_GET_PARAM = get_setting('WIDGET_FORM_SENT_GET_PARAM') -FORM_TEMPLATE_CHOICES = get_setting('FORM_TEMPLATE_CHOICES') -SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting('SUCCESS_PAGE_TEMPLATE_CHOICES') +WIDGET_FORM_SENT_GET_PARAM = get_setting("WIDGET_FORM_SENT_GET_PARAM") +FORM_TEMPLATE_CHOICES = get_setting("FORM_TEMPLATE_CHOICES") +SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting("SUCCESS_PAGE_TEMPLATE_CHOICES") diff --git a/src/fobi/contrib/apps/drf_integration/__init__.py b/src/fobi/contrib/apps/drf_integration/__init__.py index 30ca3b230..7779214e6 100644 --- a/src/fobi/contrib/apps/drf_integration/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/__init__.py @@ -1,9 +1,9 @@ -__title__ = 'fobi.contrib.apps.drf_integration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2016-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.apps.drf_integration" +__author__ = "Artur Barseghyan " +__copyright__ = "2016-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.apps.drf_integration.apps.Config' +default_app_config = "fobi.contrib.apps.drf_integration.apps.Config" -UID = 'drf_integration' +UID = "drf_integration" diff --git a/src/fobi/contrib/apps/drf_integration/apps.py b/src/fobi/contrib/apps/drf_integration/apps.py index 8c44b092c..75235eec8 100644 --- a/src/fobi/contrib/apps/drf_integration/apps.py +++ b/src/fobi/contrib/apps/drf_integration/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2016-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2016-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration' - label = 'fobi_contrib_apps_drf_integration' + name = "fobi.contrib.apps.drf_integration" + label = "fobi_contrib_apps_drf_integration" diff --git a/src/fobi/contrib/apps/drf_integration/base.py b/src/fobi/contrib/apps/drf_integration/base.py index 689905b97..b576e42e1 100644 --- a/src/fobi/contrib/apps/drf_integration/base.py +++ b/src/fobi/contrib/apps/drf_integration/base.py @@ -2,30 +2,29 @@ import logging from ....base import ( + IntegrationFormElementPluginProcessor, clean_dict, get_ignorable_form_fields, get_ordered_form_handler_plugins, integration_form_callback_registry, integration_form_element_plugin_registry, - IntegrationFormElementPluginProcessor, ) from ....helpers import get_ignorable_form_values - from . import UID from .helpers import map_field_name_to_label -__title__ = 'fobi.contrib.apps.drf_integration.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2016-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.drf_integration.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2016-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DRFIntegrationFormElementPluginProcessor', - 'DRFSubmitPluginFormDataMixin', - 'get_cleaned_data', - 'get_field_name_to_label_map', - 'get_processed_serializer_data', - 'run_form_handlers', - 'submit_plugin_form_data', + "DRFIntegrationFormElementPluginProcessor", + "DRFSubmitPluginFormDataMixin", + "get_cleaned_data", + "get_field_name_to_label_map", + "get_processed_serializer_data", + "run_form_handlers", + "submit_plugin_form_data", ) @@ -40,22 +39,19 @@ class DRFIntegrationFormElementPluginProcessor( def __init__(self, *args, **kwargs): super(DRFIntegrationFormElementPluginProcessor, self).__init__( - *args, - **kwargs + *args, **kwargs + ) + self.field_class = kwargs.get("field_class") + self.field_kwargs = kwargs.get("field_kwargs", {}) + self.field_metadata = kwargs.get("field_metadata", {}) + self.form_element_plugin = kwargs.get("form_element_plugin") + self.data = ( + self.form_element_plugin.data if self.form_element_plugin else {} ) - self.field_class = kwargs.get('field_class') - self.field_kwargs = kwargs.get('field_kwargs', {}) - self.field_metadata = kwargs.get('field_metadata', {}) - self.form_element_plugin = kwargs.get('form_element_plugin') - self.data = self.form_element_plugin.data \ - if self.form_element_plugin \ - else {} - - def process_custom_form_field_instance(self, - form_element_entry, - form_entry, - request, - form_element_plugin=None): + + def process_custom_form_field_instance( + self, form_element_entry, form_entry, request, form_element_plugin=None + ): """Process.""" if form_element_plugin: self.form_element_plugin = form_element_plugin @@ -67,13 +63,15 @@ def process_custom_form_field_instance(self, class DRFSubmitPluginFormDataMixin(object): """Submit plugin form data mixin.""" - def _submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def _submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data (internal method). Do not override this method. Use ``submit_plugin_form_data``, @@ -96,7 +94,7 @@ def _submit_plugin_form_data(self, request=request, serializer=serializer, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) else: try: @@ -106,18 +104,20 @@ def _submit_plugin_form_data(self, request=request, serializer=serializer, form_element_entries=form_element_entries, - **kwargs + **kwargs, ) except Exception as err: LOGGER.debug(str(err)) - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually @@ -142,25 +142,21 @@ def fire_form_callbacks(form_entry, request, serializer, stage=None): :return rest_framework.serializers.Serializer serializer: """ callbacks = integration_form_callback_registry.get_callbacks( - integrate_with=UID, - stage=stage + integrate_with=UID, stage=stage ) for callback_cls in callbacks: callback = callback_cls() updated_serializer = callback.callback( - form_entry=form_entry, - request=request, - serializer=serializer + form_entry=form_entry, request=request, serializer=serializer ) if updated_serializer: serializer = updated_serializer return serializer -def run_form_handlers(form_entry, - request, - serializer, - form_element_entries=None): +def run_form_handlers( + form_entry, request, serializer, form_element_entries=None +): """Run form handlers. :param fobi.models.FormEntry form_entry: @@ -179,7 +175,7 @@ def run_form_handlers(form_entry, ordered_form_handlers = get_ordered_form_handler_plugins() # Getting the form handlers to be executed. - form_handlers = form_entry.formhandlerentry_set.order_by('plugin_uid')[:] + form_handlers = form_entry.formhandlerentry_set.order_by("plugin_uid")[:] # Assembling a new dictionary of the form handlers to iterate later. for form_handler in form_handlers: @@ -194,14 +190,13 @@ def run_form_handlers(form_entry, form_handler_plugin = form_handler.get_plugin(request=request) # Run the form handler - success, response = \ - form_handler_plugin._run_integration_handler( - integrate_with=UID, - form_entry=form_entry, - request=request, - serializer=serializer, - form_element_entries=form_element_entries, - ) + success, response = form_handler_plugin._run_integration_handler( + integrate_with=UID, + form_entry=form_entry, + request=request, + serializer=serializer, + form_element_entries=form_element_entries, + ) if success: responses.append((form_handler_plugin, response)) @@ -211,11 +206,9 @@ def run_form_handlers(form_entry, return responses, errors -def submit_plugin_form_data(form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): +def submit_plugin_form_data( + form_entry, request, serializer, form_element_entries=None, **kwargs +): """Submit plugin form data for all plugins. :param fobi.models.FormEntry form_entry: Instance of @@ -230,20 +223,18 @@ def submit_plugin_form_data(form_entry, # Get the plugin. form_element_plugin = form_element_entry.get_plugin(request=request) custom_plugin_cls = integration_form_element_plugin_registry.get( - integrate_with=UID, - uid=form_element_plugin.uid + integrate_with=UID, uid=form_element_plugin.uid ) if custom_plugin_cls: custom_plugin = custom_plugin_cls() - updated_serializer = \ - custom_plugin._submit_plugin_form_data( - form_element_plugin=form_element_plugin, - form_entry=form_entry, - request=request, - serializer=serializer, - form_element_entries=form_element_entries, - **kwargs - ) + updated_serializer = custom_plugin._submit_plugin_form_data( + form_element_plugin=form_element_plugin, + form_entry=form_entry, + request=request, + serializer=serializer, + form_element_entries=form_element_entries, + **kwargs, + ) if updated_serializer: serializer = updated_serializer @@ -264,22 +255,21 @@ def get_processed_serializer_data(serializer, form_element_entries): keys_to_remove = get_ignorable_form_fields(form_element_entries) values_to_remove = get_ignorable_form_values() - field_name_to_label_map = \ - get_field_name_to_label_map(serializer, - keys_to_remove, - values_to_remove) + field_name_to_label_map = get_field_name_to_label_map( + serializer, keys_to_remove, values_to_remove + ) keys_to_remove = list(field_name_to_label_map.keys()) return ( field_name_to_label_map, - get_cleaned_data(serializer, keys_to_remove, values_to_remove) + get_cleaned_data(serializer, keys_to_remove, values_to_remove), ) -def get_field_name_to_label_map(serializer, - keys_to_remove=[], - values_to_remove=[]): +def get_field_name_to_label_map( + serializer, keys_to_remove=[], values_to_remove=[] +): """Get field name to label map. :param serializer: @@ -294,9 +284,7 @@ def get_field_name_to_label_map(serializer, values_to_remove = get_ignorable_form_values() field_name_to_label_map = clean_dict( - map_field_name_to_label(serializer), - keys_to_remove, - values_to_remove + map_field_name_to_label(serializer), keys_to_remove, values_to_remove ) return field_name_to_label_map @@ -320,7 +308,7 @@ def get_cleaned_data(serializer, keys_to_remove=[], values_to_remove=[]): cleaned_data = clean_dict( cleaned_data, keys=list(set(cleaned_data.keys()) - set(keys_to_remove)), - values=values_to_remove + values=values_to_remove, ) return cleaned_data diff --git a/src/fobi/contrib/apps/drf_integration/dynamic.py b/src/fobi/contrib/apps/drf_integration/dynamic.py index 6b84fa040..3b0d72360 100644 --- a/src/fobi/contrib/apps/drf_integration/dynamic.py +++ b/src/fobi/contrib/apps/drf_integration/dynamic.py @@ -2,21 +2,16 @@ import copy from collections import Mapping, OrderedDict -from django.core.exceptions import ValidationError as DjangoValidationError +import six +from django.core.exceptions import ValidationError as DjangoValidationError from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ - from rest_framework.exceptions import ErrorDetail, ValidationError -from rest_framework.fields import ( - empty, - get_error_detail, - set_value, - SkipField, -) +from rest_framework.fields import SkipField, empty, get_error_detail, set_value from rest_framework.relations import PKOnlyObject -from rest_framework.settings import api_settings from rest_framework.serializers import BaseSerializer +from rest_framework.settings import api_settings from rest_framework.utils import html, representation from rest_framework.utils.serializer_helpers import ( BindingDict, @@ -25,18 +20,15 @@ ReturnDict, ) -import six - from . import UID as INTEGRATE_WITH_UID - -__title__ = 'fobi.contrib.apps.drf_integration.dynamic' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.drf_integration.dynamic" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'assemble_serializer_class', - 'get_declared_fields', + "assemble_serializer_class", + "get_declared_fields", ) # **************************************************************************** @@ -46,40 +38,39 @@ # **************************************************************************** -def get_declared_fields(form_entry, - request=None, - origin=None, - origin_kwargs_update_func=None, - origin_return_func=None, - form_element_entries=None, - has_value=None): +def get_declared_fields( + form_entry, + request=None, + origin=None, + origin_kwargs_update_func=None, + origin_return_func=None, + form_element_entries=None, + has_value=None, +): """Get declared fields.""" declared_fields = [] declared_fields_metadata = [] if form_element_entries is None: form_element_entries = form_entry.formelemententry_set.all() - for creation_counter, form_element_entry \ - in enumerate(form_element_entries): + for creation_counter, form_element_entry in enumerate(form_element_entries): plugin = form_element_entry.get_plugin(request=request) # We simply make sure the plugin exists. We don't handle # exceptions relate to the non-existent plugins here. They # are instead handled in registry. if plugin: - plugin_custom_field_instances = \ - plugin._get_custom_field_instances( - integrate_with=INTEGRATE_WITH_UID, - form_element_entry=form_element_entry, - origin=origin, - kwargs_update_func=origin_kwargs_update_func, - return_func=origin_return_func, - extra={'counter': creation_counter}, - request=request, - has_value=has_value - ) - for plugin_custom_field_instance \ - in plugin_custom_field_instances: + plugin_custom_field_instances = plugin._get_custom_field_instances( + integrate_with=INTEGRATE_WITH_UID, + form_element_entry=form_element_entry, + origin=origin, + kwargs_update_func=origin_kwargs_update_func, + return_func=origin_return_func, + extra={"counter": creation_counter}, + request=request, + has_value=has_value, + ) + for plugin_custom_field_instance in plugin_custom_field_instances: # The serializer field class custom_field_class = plugin_custom_field_instance.field_class( @@ -92,7 +83,7 @@ def get_declared_fields(form_entry, declared_fields_metadata.append( ( plugin_custom_field_instance.data.name, - plugin_custom_field_instance.field_metadata + plugin_custom_field_instance.field_metadata, ) ) @@ -106,15 +97,17 @@ def get_declared_fields(form_entry, return OrderedDict(declared_fields), OrderedDict(declared_fields_metadata) -def assemble_serializer_class(form_entry, - request=None, - origin=None, - origin_kwargs_update_func=None, - origin_return_func=None, - form_element_entries=None, - has_value=None, - declared_fields=None, - declared_fields_metadata=None): +def assemble_serializer_class( + form_entry, + request=None, + origin=None, + origin_kwargs_update_func=None, + origin_return_func=None, + form_element_entries=None, + has_value=None, + declared_fields=None, + declared_fields_metadata=None, +): """Assemble a serializer class by given entry. :param form_entry: @@ -177,7 +170,7 @@ def assemble_serializer_class(form_entry, origin_return_func=origin_return_func, request=request, form_element_entries=form_element_entries, - has_value=has_value + has_value=has_value, ) # Most of the code below has been copied from rest_framework.serializers @@ -198,10 +191,10 @@ class SerializerMetaclass(type): def _get_declared_fields(cls, bases, attrs): """Modified version of the original _get_declared_fields.""" fields = [ - (field_name, obj) for field_name, obj - in declared_fields.items() - if field_name not in attrs - ] + (field_name, obj) + for field_name, obj in declared_fields.items() + if field_name not in attrs + ] return OrderedDict(fields) @@ -209,8 +202,8 @@ def _get_declared_fields(cls, bases, attrs): def _get_declared_fields_metadata(cls, bases, attrs): """Similar to _get_declared_fields, but for metadata.""" fields = [ - (field_name, obj) for field_name, obj - in declared_fields_metadata.items() + (field_name, obj) + for field_name, obj in declared_fields_metadata.items() if field_name not in attrs ] @@ -218,13 +211,13 @@ def _get_declared_fields_metadata(cls, bases, attrs): def __new__(cls, name, bases, attrs): """Modified version of the original __new__.""" - attrs['_declared_fields'] = cls._get_declared_fields(bases, attrs) - attrs['_declared_fields_metadata'] = \ - cls._get_declared_fields_metadata(bases, attrs) - return super(SerializerMetaclass, cls).__new__(cls, - name, - bases, - attrs) + attrs["_declared_fields"] = cls._get_declared_fields(bases, attrs) + attrs[ + "_declared_fields_metadata" + ] = cls._get_declared_fields_metadata(bases, attrs) + return super(SerializerMetaclass, cls).__new__( + cls, name, bases, attrs + ) def as_serializer_error(exc): assert isinstance(exc, (ValidationError, DjangoValidationError)) @@ -244,19 +237,16 @@ def as_serializer_error(exc): } elif isinstance(detail, list): # Errors raised as a list are non-field errors. - return { - api_settings.NON_FIELD_ERRORS_KEY: detail - } + return {api_settings.NON_FIELD_ERRORS_KEY: detail} # Errors raised as a string are non-field errors. - return { - api_settings.NON_FIELD_ERRORS_KEY: [detail] - } + return {api_settings.NON_FIELD_ERRORS_KEY: [detail]} @six.add_metaclass(SerializerMetaclass) class Serializer(BaseSerializer): default_error_messages = { - 'invalid': _( - 'Invalid data. Expected a dictionary, but got {datatype}.') + "invalid": _( + "Invalid data. Expected a dictionary, but got {datatype}." + ) } @property @@ -267,7 +257,7 @@ def fields(self): # `fields` is evaluated lazily. We do this to ensure that we don't # have issues importing modules that use ModelSerializers as # fields, even if Django's app-loading stage has not yet run. - if not hasattr(self, '_fields'): + if not hasattr(self, "_fields"): self._fields = BindingDict(self) for key, value in self.get_fields().items(): self._fields[key] = value @@ -276,7 +266,8 @@ def fields(self): @cached_property def _writable_fields(self): return [ - field for field in self.fields.values() + field + for field in self.fields.values() if (not field.read_only) or (field.default is not empty) ] @@ -314,33 +305,25 @@ def get_validators(self): Returns a list of validator callables. """ # Used by the lazily-evaluated `validators` property. - meta = getattr(self, 'Meta', None) - validators = getattr(meta, 'validators', None) + meta = getattr(self, "Meta", None) + validators = getattr(meta, "validators", None) return validators[:] if validators else [] def get_initial(self): - if hasattr(self, 'initial_data'): + if hasattr(self, "initial_data"): return OrderedDict( [ - ( - field_name, - field.get_value(self.initial_data) - ) - for field_name, field - in self.fields.items() - if ( - field.get_value(self.initial_data) is not empty - ) and not field.read_only + (field_name, field.get_value(self.initial_data)) + for field_name, field in self.fields.items() + if (field.get_value(self.initial_data) is not empty) + and not field.read_only ] ) return OrderedDict( [ - ( - field.field_name, field.get_initial() - ) - for field - in self.fields.values() + (field.field_name, field.get_initial()) + for field in self.fields.values() if not field.read_only ] ) @@ -349,9 +332,10 @@ def get_value(self, dictionary): # We override the default field access in order to support # nested HTML forms. if html.is_html_input(dictionary): - return html.parse_html_dict( - dictionary, prefix=self.field_name - ) or empty + return ( + html.parse_html_dict(dictionary, prefix=self.field_name) + or empty + ) return dictionary.get(self.field_name, empty) def run_validation(self, data=empty): @@ -368,8 +352,9 @@ def run_validation(self, data=empty): try: self.run_validators(value) value = self.validate(value) - assert value is not None, '.validate() should return the ' \ - 'validated data' + assert value is not None, ( + ".validate() should return the " "validated data" + ) except (ValidationError, DjangoValidationError) as exc: raise ValidationError(detail=as_serializer_error(exc)) @@ -380,21 +365,22 @@ def to_internal_value(self, data): Dict of native values <- Dict of primitive datatypes. """ if not isinstance(data, Mapping): - message = self.error_messages['invalid'].format( + message = self.error_messages["invalid"].format( datatype=type(data).__name__ ) - raise ValidationError({ - api_settings.NON_FIELD_ERRORS_KEY: [message] - }, code='invalid') + raise ValidationError( + {api_settings.NON_FIELD_ERRORS_KEY: [message]}, + code="invalid", + ) ret = OrderedDict() errors = OrderedDict() fields = self._writable_fields for field in fields: - validate_method = getattr(self, - 'validate_' + field.field_name, - None) + validate_method = getattr( + self, "validate_" + field.field_name, None + ) primitive_value = field.get_value(data) try: validated_value = field.run_validation(primitive_value) @@ -432,9 +418,11 @@ def to_representation(self, instance): # # For related fields with `use_pk_only_optimization` we need to # resolve the pk value. - check_for_none = attribute.pk \ - if isinstance(attribute, PKOnlyObject) \ + check_for_none = ( + attribute.pk + if isinstance(attribute, PKOnlyObject) else attribute + ) if check_for_none is None: ret[field.field_name] = None @@ -460,7 +448,7 @@ def __iter__(self): def __getitem__(self, key): field = self.fields[key] value = self.data.get(key) - error = self.errors.get(key) if hasattr(self, '_errors') else None + error = self.errors.get(key) if hasattr(self, "_errors") else None if isinstance(field, Serializer): return NestedBoundField(field, value, error) return BoundField(field, value, error) @@ -476,13 +464,15 @@ def data(self): @property def errors(self): ret = super(Serializer, self).errors - if isinstance(ret, list) \ - and len(ret) == 1 \ - and getattr(ret[0], 'code', None) == 'null': + if ( + isinstance(ret, list) + and len(ret) == 1 + and getattr(ret[0], "code", None) == "null" + ): # Edge case. Provide a more descriptive error than # "this field may not be null", when no data is passed. - detail = ErrorDetail('No data provided', code='null') + detail = ErrorDetail("No data provided", code="null") ret = {api_settings.NON_FIELD_ERRORS_KEY: [detail]} return ReturnDict(ret, serializer=self) diff --git a/src/fobi/contrib/apps/drf_integration/fields.py b/src/fobi/contrib/apps/drf_integration/fields.py index 595a33634..d65e4b57a 100644 --- a/src/fobi/contrib/apps/drf_integration/fields.py +++ b/src/fobi/contrib/apps/drf_integration/fields.py @@ -1,32 +1,29 @@ import copy import six - from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ - -from rest_framework.fields import ( +from rest_framework.fields import ( # ModelField, ChoiceField, Field, - empty, - # ModelField, MultipleChoiceField, + empty, ) -__title__ = 'fobi.contrib.apps.drf_integration.fields' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2016-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.drf_integration.fields" +__author__ = "Artur Barseghyan " +__copyright__ = "2016-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'ContentImageField', - 'ContentMarkdownField', - 'ContentRichTextField', - 'ContentTextField', - 'ContentVideoField', - 'ModelChoiceField', - 'ModelMultipleChoiceField', - 'MultipleChoiceWithMaxField', - 'NoneField', + "ContentImageField", + "ContentMarkdownField", + "ContentRichTextField", + "ContentTextField", + "ContentVideoField", + "ModelChoiceField", + "ModelMultipleChoiceField", + "MultipleChoiceWithMaxField", + "NoneField", ) # ***************************************************************************** @@ -45,23 +42,22 @@ class MultipleChoiceWithMaxField(MultipleChoiceField): default_error_messages = copy.copy( MultipleChoiceField.default_error_messages ) - default_error_messages.update({ - 'max_choices': _('Max number of choices reached.'), - }) + default_error_messages.update( + { + "max_choices": _("Max number of choices reached."), + } + ) def __init__(self, *args, **kwargs): - self.max_choices = kwargs.pop('max_choices', None) + self.max_choices = kwargs.pop("max_choices", None) super(MultipleChoiceWithMaxField, self).__init__(*args, **kwargs) def to_internal_value(self, data): if self.max_choices: if len(data) > self.max_choices: - self.fail('max_choices') + self.fail("max_choices") - return super( - MultipleChoiceWithMaxField, - self - ).to_internal_value(data) + return super(MultipleChoiceWithMaxField, self).to_internal_value(data) class ModelChoiceFieldMixin(object): @@ -83,10 +79,10 @@ class ModelChoiceField(ChoiceField, ModelChoiceFieldMixin): """Model choice field.""" def __init__(self, *args, **kwargs): - self.queryset = kwargs.pop('queryset', None) - self.model_attr = kwargs.pop('model_attr', None) + self.queryset = kwargs.pop("queryset", None) + self.model_attr = kwargs.pop("model_attr", None) choices = self.get_choices() - kwargs.update({'choices': choices}) + kwargs.update({"choices": choices}) super(ModelChoiceField, self).__init__(*args, **kwargs) @@ -94,12 +90,13 @@ class ModelMultipleChoiceField(MultipleChoiceField, ModelChoiceFieldMixin): """Model choice field.""" def __init__(self, *args, **kwargs): - self.queryset = kwargs.pop('queryset', None) - self.model_attr = kwargs.pop('model_attr', None) + self.queryset = kwargs.pop("queryset", None) + self.model_attr = kwargs.pop("model_attr", None) choices = self.get_choices() - kwargs.update({'choices': choices}) + kwargs.update({"choices": choices}) super(ModelMultipleChoiceField, self).__init__(*args, **kwargs) + # ***************************************************************************** # ************************* Presentational fields ***************************** # ***************************************************************************** @@ -109,17 +106,17 @@ class NoneField(Field): """NoneField.""" default_error_messages = {} - initial = '' - default_empty_html = '' + initial = "" + default_empty_html = "" def __init__(self, **kwargs): self.allow_blank = True - self.trim_whitespace = kwargs.pop('trim_whitespace', True) - self.raw_data = kwargs.pop('raw_data', {}) + self.trim_whitespace = kwargs.pop("trim_whitespace", True) + self.raw_data = kwargs.pop("raw_data", {}) super(NoneField, self).__init__(**kwargs) def run_validation(self, data=empty): - return '' + return "" def to_internal_value(self, data): # We're lenient with allowing basic numerics to be coerced into @@ -130,7 +127,7 @@ def to_internal_value(self, data): data, six.string_types + six.integer_types + (float,) ) if isinstance(data, bool) or _not_isinstance_str_int_float: - self.fail('invalid') + self.fail("invalid") value = six.text_type(data) return value.strip() if self.trim_whitespace else value diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/__init__.py index 8cc93ea09..69b7c29c9 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." "content_image" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'content.content_image.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "content.content_image.apps.Config" +) -UID = 'content_image' +UID = "content_image" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/apps.py index d52ff37ed..837550ebc 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image' - label = 'fobi_contrib_apps_drf_integration_form_elements_content_' \ - 'content_image' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_content_" + "content_image" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/base.py index 8da14fb2d..e4196e23a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/base.py @@ -11,19 +11,22 @@ from ....fields import ContentImageField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImagePlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImagePlugin",) LOGGER = logging.getLogger(__name__) -class ContentImagePlugin(IntegrationFormElementPlugin, - DRFSubmitPluginFormDataMixin): +class ContentImagePlugin( + IntegrationFormElementPlugin, DRFSubmitPluginFormDataMixin +): """CharField plugin.""" uid = UID @@ -31,37 +34,39 @@ class ContentImagePlugin(IntegrationFormElementPlugin, name = _("Content image") group = _("Content") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get form field instances.""" rendered_image = form_element_plugin.get_rendered_image() raw_data = form_element_plugin.get_raw_data() field_kwargs = { - 'initial': rendered_image, - 'default': rendered_image, - 'required': False, - 'label': '', - 'read_only': True, - 'raw_data': raw_data, + "initial": rendered_image, + "default": rendered_image, + "required": False, + "label": "", + "read_only": True, + "raw_data": raw_data, } field_metadata = { - 'type': 'content', - 'contenttype': 'image', - 'content': rendered_image, - 'raw_data': raw_data + "type": "content", + "contenttype": "image", + "content": rendered_image, + "raw_data": raw_data, } return [ DRFIntegrationFormElementPluginProcessor( field_class=ContentImageField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/fobi_integration_form_elements.py index b70fd224d..f1c676cc5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import ContentImagePlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImagePlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImagePlugin",) integration_form_element_plugin_registry.register(ContentImagePlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/__init__.py index 45c90ca72..ed33a9d60 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image_url' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image_url" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'content.content_image_url.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "content.content_image_url.apps.Config" +) -UID = 'content_image_url' +UID = "content_image_url" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/apps.py index 1b193cc87..10336e0fa 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image_url.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image_url.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image_url' - label = 'fobi_contrib_apps_drf_integration_form_elements_content_' \ - 'content_image_url' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image_url" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_content_" + "content_image_url" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/base.py index e74f63aea..588d4bde3 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/base.py @@ -11,19 +11,22 @@ from ....fields import ContentImageField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image_url.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImageURLPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image_url.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImageURLPlugin",) LOGGER = logging.getLogger(__name__) -class ContentImageURLPlugin(IntegrationFormElementPlugin, - DRFSubmitPluginFormDataMixin): +class ContentImageURLPlugin( + IntegrationFormElementPlugin, DRFSubmitPluginFormDataMixin +): """CharField plugin.""" uid = UID @@ -31,37 +34,39 @@ class ContentImageURLPlugin(IntegrationFormElementPlugin, name = _("Content image URL") group = _("Content") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get form field instances.""" rendered_image = form_element_plugin.get_rendered_image() raw_data = form_element_plugin.get_raw_data() field_kwargs = { - 'initial': rendered_image, - 'default': rendered_image, - 'required': False, - 'label': '', - 'read_only': True, - 'raw_data': raw_data, + "initial": rendered_image, + "default": rendered_image, + "required": False, + "label": "", + "read_only": True, + "raw_data": raw_data, } field_metadata = { - 'type': 'content', - 'contenttype': 'image', - 'content': rendered_image, - 'raw_data': raw_data + "type": "content", + "contenttype": "image", + "content": rendered_image, + "raw_data": raw_data, } return [ DRFIntegrationFormElementPluginProcessor( field_class=ContentImageField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/fobi_integration_form_elements.py index 106836232..7d62cdee2 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_image_url/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import ContentImageURLPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_image_url.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImageURLPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_image_url.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImageURLPlugin",) integration_form_element_plugin_registry.register(ContentImageURLPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/__init__.py index f472235f1..90c632e54 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_markdown' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_markdown" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'content.content_markdown.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "content.content_markdown.apps.Config" +) -UID = 'content_markdown' +UID = "content_markdown" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/apps.py index 68d5f9eb9..7b4669d92 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_markdown.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_markdown.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_markdown' - label = 'fobi_contrib_apps_drf_integration_form_elements_content_' \ - 'content_markdown' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_markdown" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_content_" + "content_markdown" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/base.py index 66b145eb6..f6e2021e8 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/base.py @@ -11,19 +11,22 @@ from ....fields import ContentMarkdownField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_markdown.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentMarkdownPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_markdown.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentMarkdownPlugin",) LOGGER = logging.getLogger(__name__) -class ContentMarkdownPlugin(IntegrationFormElementPlugin, - DRFSubmitPluginFormDataMixin): +class ContentMarkdownPlugin( + IntegrationFormElementPlugin, DRFSubmitPluginFormDataMixin +): """Content markdown (CharField) plugin.""" uid = UID @@ -31,36 +34,38 @@ class ContentMarkdownPlugin(IntegrationFormElementPlugin, name = _("Content markdown") group = _("Content") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get form field instances.""" rendered_text = form_element_plugin.get_rendered_text() raw_data = form_element_plugin.get_raw_data() field_kwargs = { - 'initial': rendered_text, - 'default': rendered_text, - 'required': False, - 'label': '', - 'read_only': True, - 'raw_data': raw_data, + "initial": rendered_text, + "default": rendered_text, + "required": False, + "label": "", + "read_only": True, + "raw_data": raw_data, } field_metadata = { - 'type': 'content', - 'contenttype': 'text', - 'content': rendered_text, - 'raw_data': raw_data + "type": "content", + "contenttype": "text", + "content": rendered_text, + "raw_data": raw_data, } return [ DRFIntegrationFormElementPluginProcessor( field_class=ContentMarkdownField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/fobi_integration_form_elements.py index 0bf210956..00f7ea89e 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_markdown/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import ContentMarkdownPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_markdown.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentMarkdownPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_markdown.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentMarkdownPlugin",) integration_form_element_plugin_registry.register(ContentMarkdownPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/__init__.py index 2c8138501..a7053d840 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_richtext' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_richtext" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'content.content_richtext.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "content.content_richtext.apps.Config" +) -UID = 'content_richtext' +UID = "content_richtext" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/apps.py index 8731e22b3..db5026be5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_richtext.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_richtext.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_richtext' - label = 'fobi_contrib_apps_drf_integration_form_elements_content_' \ - 'content_richtext' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_richtext" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_content_" + "content_richtext" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/base.py index 3b621f7d5..e013ac71a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/base.py @@ -11,19 +11,22 @@ from ....fields import ContentRichTextField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_richtext.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_richtext.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPlugin",) LOGGER = logging.getLogger(__name__) -class ContentRichTextPlugin(IntegrationFormElementPlugin, - DRFSubmitPluginFormDataMixin): +class ContentRichTextPlugin( + IntegrationFormElementPlugin, DRFSubmitPluginFormDataMixin +): """Content rich text (CharField) plugin.""" uid = UID @@ -31,36 +34,38 @@ class ContentRichTextPlugin(IntegrationFormElementPlugin, name = _("Content rich text") group = _("Content") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get form field instances.""" rendered_text = form_element_plugin.get_rendered_text() raw_data = form_element_plugin.get_raw_data() field_kwargs = { - 'initial': rendered_text, - 'default': rendered_text, - 'required': False, - 'label': '', - 'read_only': True, - 'raw_data': raw_data, + "initial": rendered_text, + "default": rendered_text, + "required": False, + "label": "", + "read_only": True, + "raw_data": raw_data, } field_metadata = { - 'type': 'content', - 'contenttype': 'text', - 'content': rendered_text, - 'raw_data': raw_data + "type": "content", + "contenttype": "text", + "content": rendered_text, + "raw_data": raw_data, } return [ DRFIntegrationFormElementPluginProcessor( field_class=ContentRichTextField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/fobi_integration_form_elements.py index e608a8b3c..cfe89d24b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_richtext/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import ContentRichTextPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_richtext.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_richtext.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPlugin",) integration_form_element_plugin_registry.register(ContentRichTextPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/__init__.py index 920559138..0212b50f0 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_text' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." "content_text" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'content.content_text.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "content.content_text.apps.Config" +) -UID = 'content_text' +UID = "content_text" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/apps.py index 666aa2563..46cacc65d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_text.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_text.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_text' - label = 'fobi_contrib_apps_drf_integration_form_elements_content_' \ - 'content_text' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_text" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_content_" + "content_text" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/base.py index 4df4e3e1d..e06f9eee9 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/base.py @@ -11,19 +11,22 @@ from ....fields import ContentTextField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_text.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentTextPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_text.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentTextPlugin",) LOGGER = logging.getLogger(__name__) -class ContentTextPlugin(IntegrationFormElementPlugin, - DRFSubmitPluginFormDataMixin): +class ContentTextPlugin( + IntegrationFormElementPlugin, DRFSubmitPluginFormDataMixin +): """CharField plugin.""" uid = UID @@ -31,36 +34,38 @@ class ContentTextPlugin(IntegrationFormElementPlugin, name = _("Content text") group = _("Content") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get form field instances.""" rendered_text = form_element_plugin.get_rendered_text() raw_data = form_element_plugin.get_raw_data() field_kwargs = { - 'initial': rendered_text, - 'default': rendered_text, - 'required': False, - 'label': '', - 'read_only': True, - 'raw_data': raw_data, + "initial": rendered_text, + "default": rendered_text, + "required": False, + "label": "", + "read_only": True, + "raw_data": raw_data, } field_metadata = { - 'type': 'content', - 'contenttype': 'text', - 'content': rendered_text, - 'raw_data': raw_data + "type": "content", + "contenttype": "text", + "content": rendered_text, + "raw_data": raw_data, } return [ DRFIntegrationFormElementPluginProcessor( field_class=ContentTextField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/fobi_integration_form_elements.py index 10fb50e4c..7b9302bac 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_text/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import ContentTextPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_text.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentTextPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_text.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentTextPlugin",) integration_form_element_plugin_registry.register(ContentTextPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/__init__.py index a43fa3744..e65dbd558 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_video' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." "content_video" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'content.content_video.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "content.content_video.apps.Config" +) -UID = 'content_video' +UID = "content_video" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/apps.py index 9ca471567..3ef0fc38b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_video.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_video.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_video' - label = 'fobi_contrib_apps_drf_integration_form_elements_content_' \ - 'content_video' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_video" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_content_" + "content_video" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/base.py index bc07b6749..6b1e64b70 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/base.py @@ -11,19 +11,22 @@ from ....fields import ContentVideoField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_video.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentVideoPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_video.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentVideoPlugin",) LOGGER = logging.getLogger(__name__) -class ContentVideoPlugin(IntegrationFormElementPlugin, - DRFSubmitPluginFormDataMixin): +class ContentVideoPlugin( + IntegrationFormElementPlugin, DRFSubmitPluginFormDataMixin +): """CharField plugin.""" uid = UID @@ -31,36 +34,38 @@ class ContentVideoPlugin(IntegrationFormElementPlugin, name = _("Content image") group = _("Content") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - has_value=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + has_value=None, + **kwargs, + ): """Get form field instances.""" rendered_video = form_element_plugin.get_rendered_video() raw_data = form_element_plugin.get_raw_data() field_kwargs = { - 'initial': rendered_video, - 'default': rendered_video, - 'required': False, - 'label': '', - 'read_only': True, - 'raw_data': raw_data, + "initial": rendered_video, + "default": rendered_video, + "required": False, + "label": "", + "read_only": True, + "raw_data": raw_data, } field_metadata = { - 'type': 'content', - 'contenttype': 'video', - 'content': rendered_video, - 'raw_data': raw_data + "type": "content", + "contenttype": "video", + "content": rendered_video, + "raw_data": raw_data, } return [ DRFIntegrationFormElementPluginProcessor( field_class=ContentVideoField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/fobi_integration_form_elements.py index 92df38423..b4493a19b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/content/content_video/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import ContentVideoPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.content.' \ - 'content_video.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentVideoPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.content." + "content_video.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentVideoPlugin",) integration_form_element_plugin_registry.register(ContentVideoPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/__init__.py index 0ea2ce2a2..36a228037 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.boolean' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.boolean" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.boolean.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.boolean.apps.Config" +) -UID = 'boolean' +UID = "boolean" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/apps.py index 4584ad975..16d009bf6 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/apps.py @@ -1,17 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'boolean.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "boolean.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'boolean' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'boolean' + name = "fobi.contrib.apps.drf_integration.form_elements.fields." "boolean" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_" "boolean" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/base.py index 7247cc2a0..d8a6f6073 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import BooleanField from .......base import IntegrationFormFieldPlugin @@ -10,17 +9,18 @@ ) from . import UID - -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.boolean.' \ - 'base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BooleanSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.boolean." "base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BooleanSelectPlugin",) -class BooleanSelectPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class BooleanSelectPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """Boolean select plugin.""" uid = UID @@ -28,22 +28,23 @@ class BooleanSelectPlugin(IntegrationFormFieldPlugin, group = _("Fields") integrate_with = INTEGRATE_WITH_UID - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=BooleanField, - field_kwargs=field_kwargs + field_class=BooleanField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/fobi_integration_form_elements.py index eebf229b2..ebc18c0a4 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/boolean/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import BooleanSelectPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.boolean.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BooleanSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.boolean." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BooleanSelectPlugin",) integration_form_element_plugin_registry.register(BooleanSelectPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/__init__.py index d097629a3..f325f4863 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'checkbox_select_multiple' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "checkbox_select_multiple" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.checkbox_select_multiple.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.checkbox_select_multiple.apps.Config" +) -UID = 'checkbox_select_multiple' +UID = "checkbox_select_multiple" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/apps.py index 0304f8e02..0154a9b4b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'checkbox_select_multiple.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "checkbox_select_multiple.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'checkbox_select_multiple' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'checkbox_select_multiple' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "checkbox_select_multiple" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" + "checkbox_select_multiple" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/base.py index d68327354..2ab396414 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/base.py @@ -1,7 +1,6 @@ import copy from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import MultipleChoiceField from .......base import IntegrationFormFieldPlugin @@ -10,19 +9,21 @@ DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'checkbox_select_multiple.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CheckboxSelectMultipleInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "checkbox_select_multiple.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CheckboxSelectMultipleInputPlugin",) -class CheckboxSelectMultipleInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class CheckboxSelectMultipleInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """MultipleChoiceField plugin.""" uid = UID @@ -30,36 +31,39 @@ class CheckboxSelectMultipleInputPlugin(IntegrationFormFieldPlugin, name = _("Checkbox select multiple") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = form_element_plugin.get_choices() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, # 'max_length': form_element_plugin.data.max_length, - 'choices': choices, + "choices": choices, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=MultipleChoiceField, - field_kwargs=field_kwargs + field_class=MultipleChoiceField, field_kwargs=field_kwargs ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/fobi_integration_form_elements.py index 30c818241..920afa14d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/checkbox_select_multiple/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import CheckboxSelectMultipleInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'checkbox_select_multiple.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CheckboxSelectMultipleInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "checkbox_select_multiple.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CheckboxSelectMultipleInputPlugin",) integration_form_element_plugin_registry.register( diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/__init__.py index 8a1183514..a7782bf64 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.date' -__author__ = 'Artur Barseghyan ' -__copyright__ = 'Copyright (c) 2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.date" +__author__ = "Artur Barseghyan " +__copyright__ = "Copyright (c) 2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.date.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." "fields.date.apps.Config" +) -UID = 'date' +UID = "date" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/apps.py index c5319ce53..04b3a38d9 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.date.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.date.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.date' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_date' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.date" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_date" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/base.py index baf511a9e..7292dc213 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import DateField from .......base import IntegrationFormFieldPlugin @@ -10,17 +9,18 @@ ) from . import UID - -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.date.' \ - 'base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.date." "base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateSelectPlugin",) -class DateSelectPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class DateSelectPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """DateSelect select plugin.""" uid = UID @@ -28,24 +28,25 @@ class DateSelectPlugin(IntegrationFormFieldPlugin, name = _("Date") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=DateField, - field_kwargs=field_kwargs + field_class=DateField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/fobi_integration_form_elements.py index b3ffbfec4..417be42a3 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import DateSelectPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.date.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.date." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateSelectPlugin",) integration_form_element_plugin_registry.register(DateSelectPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/__init__.py index de6db7979..188cf5a8b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'date_drop_down' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "date_drop_down" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.date_drop_down.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.date_drop_down.apps.Config" +) -UID = 'date_drop_down' +UID = "date_drop_down" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/apps.py index 573ab10e4..6a8ef634c 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'date_drop_down.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "date_drop_down.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'date_drop_down' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'date_drop_down' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "date_drop_down" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" + "date_drop_down" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/base.py index 519da3473..7fb8dff6e 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import DateField from .......base import IntegrationFormFieldPlugin @@ -10,17 +9,19 @@ ) from . import UID - -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'date_drop_down.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateDropDownSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "date_drop_down.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateDropDownSelectPlugin",) -class DateDropDownSelectPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class DateDropDownSelectPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """DateSelect select plugin.""" uid = UID @@ -28,24 +29,25 @@ class DateDropDownSelectPlugin(IntegrationFormFieldPlugin, name = _("Date drop down") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=DateField, - field_kwargs=field_kwargs + field_class=DateField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/fobi_integration_form_elements.py index b201aa155..430089fcf 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/date_drop_down/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import DateDropDownSelectPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'date_drop_down.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateDropDownSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "date_drop_down.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateDropDownSelectPlugin",) integration_form_element_plugin_registry.register(DateDropDownSelectPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/__init__.py index 619760af2..858921ea0 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.datetime' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.datetime" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.datetime.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.datetime.apps.Config" +) -UID = 'datetime' +UID = "datetime" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/apps.py index 7fd30d379..804ddb5dd 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'datetime.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "datetime.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.datetime' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_datetime' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.datetime" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_datetime" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/base.py index 08da5e266..a729ec5e2 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import DateTimeField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'datetime.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimeSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "datetime.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimeSelectPlugin",) -class DateTimeSelectPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class DateTimeSelectPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """DateTimeSelect select plugin.""" uid = UID @@ -27,23 +28,24 @@ class DateTimeSelectPlugin(IntegrationFormFieldPlugin, name = _("DateTime") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=DateTimeField, - field_kwargs=field_kwargs + field_class=DateTimeField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/fobi_integration_form_elements.py index aeaf9788b..c28607269 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/datetime/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import DateTimeSelectPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'datetime.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimeSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "datetime.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimeSelectPlugin",) integration_form_element_plugin_registry.register(DateTimeSelectPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/__init__.py index ab0c49d98..556d964c7 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.decimal' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.decimal" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.decimal.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.decimal.apps.Config" +) -UID = 'decimal' +UID = "decimal" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/apps.py index cb47e78f5..b49e4054f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'decimal.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "decimal.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.decimal' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_decimal' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.decimal" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_decimal" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/base.py index fa43ba1f3..2639d1c78 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/base.py @@ -1,7 +1,6 @@ import decimal from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import DecimalField from .......base import IntegrationFormFieldPlugin @@ -12,16 +11,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'decimal.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DecimalInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "decimal.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DecimalInputPlugin",) -class DecimalInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class DecimalInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """DecimalField plugin.""" uid = UID @@ -29,60 +30,60 @@ class DecimalInputPlugin(IntegrationFormFieldPlugin, name = _("Decimal") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.initial: data_initial = decimal.Decimal( str(form_element_plugin.data.initial) ) - field_kwargs.update({'initial': data_initial}) + field_kwargs.update({"initial": data_initial}) if form_element_plugin.data.max_value: data_max_value = decimal.Decimal( str(form_element_plugin.data.max_value) ) - field_kwargs.update({'max_value': data_max_value}) + field_kwargs.update({"max_value": data_max_value}) if form_element_plugin.data.min_value: data_min_value = decimal.Decimal( str(form_element_plugin.data.min_value) ) - field_kwargs.update({'min_value': data_min_value}) + field_kwargs.update({"min_value": data_min_value}) if form_element_plugin.data.max_digits: data_max_digits = int(form_element_plugin.data.max_digits) - field_kwargs.update({'max_digits': data_max_digits}) - field_metadata.update({'max_digits': data_max_digits}) + field_kwargs.update({"max_digits": data_max_digits}) + field_metadata.update({"max_digits": data_max_digits}) else: - field_kwargs.update({'max_digits': 10}) - field_metadata.update({'max_digits': 10}) + field_kwargs.update({"max_digits": 10}) + field_metadata.update({"max_digits": 10}) if form_element_plugin.data.decimal_places: data_decimal_places = int(form_element_plugin.data.decimal_places) - field_kwargs.update({'decimal_places': data_decimal_places}) - field_metadata.update({'decimal_places': data_decimal_places}) + field_kwargs.update({"decimal_places": data_decimal_places}) + field_metadata.update({"decimal_places": data_decimal_places}) else: - field_kwargs.update({'decimal_places': 5}) - field_metadata.update({'decimal_places': 5}) + field_kwargs.update({"decimal_places": 5}) + field_metadata.update({"decimal_places": 5}) return [ DRFIntegrationFormElementPluginProcessor( field_class=DecimalField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/fobi_integration_form_elements.py index 133419371..6a7d4788d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/decimal/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import DecimalInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.decimal.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DecimalInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.decimal." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DecimalInputPlugin",) integration_form_element_plugin_registry.register(DecimalInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/__init__.py index cb9f70a7d..2d9df721b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.duration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.duration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.duration.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.duration.apps.Config" +) -UID = 'duration' +UID = "duration" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/apps.py index 7222e9919..59627d00a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'duration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "duration.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.duration' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_duration' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.duration" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_duration" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/base.py index c19c22f8b..bbaf8448f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/base.py @@ -4,7 +4,6 @@ from django.utils.dateparse import parse_duration from django.utils.encoding import force_str from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import DurationField from .......base import IntegrationFormFieldPlugin @@ -15,16 +14,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'duration.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DurationInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "duration.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DurationInputPlugin",) -class DurationInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class DurationInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """DurationField plugin.""" uid = UID @@ -32,18 +33,20 @@ class DurationInputPlugin(IntegrationFormFieldPlugin, name = _("Duration") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, + "required": form_element_plugin.data.required, # 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } if form_element_plugin.data.initial: @@ -53,27 +56,27 @@ def get_custom_field_instances(self, if parsed_initial is not None: data_initial = parsed_initial - field_kwargs.update({'initial': data_initial}) + field_kwargs.update({"initial": data_initial}) - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder - } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} return [ DRFIntegrationFormElementPluginProcessor( field_class=DurationField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/fobi_integration_form_elements.py index fb122a94c..b21167098 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/duration/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import DurationInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'duration.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DurationInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "duration.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DurationInputPlugin",) integration_form_element_plugin_registry.register(DurationInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/__init__.py index 8d3d83e1f..dedfca2dd 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.email' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.email" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.email.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.email.apps.Config" +) -UID = 'email' +UID = "email" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/apps.py index 8d4919722..5870e59af 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'email.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "email.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.email' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_email' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.email" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_email" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/base.py index 21b40d248..11447cf15 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import EmailField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'email.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('EmailInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "email.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("EmailInputPlugin",) -class EmailInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class EmailInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """EmailField plugin.""" uid = UID @@ -27,32 +28,32 @@ class EmailInputPlugin(IntegrationFormFieldPlugin, name = _("Decimal") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder - } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} return [ DRFIntegrationFormElementPluginProcessor( field_class=EmailField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/fobi_integration_form_elements.py index 8a40968b6..d2b8745d1 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/email/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import EmailInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.email.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('EmailInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.email." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("EmailInputPlugin",) integration_form_element_plugin_registry.register(EmailInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/__init__.py index 0dce5711e..3c8bd3666 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.file' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.file" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.file.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." "fields.file.apps.Config" +) -UID = 'file' +UID = "file" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/apps.py index b735c46e0..cdbcc45e4 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'file.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "file.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.file' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_file' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.file" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_file" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/base.py index f500c8fec..eb45cb170 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/base.py @@ -1,7 +1,6 @@ import copy from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import FileField from .......base import IntegrationFormFieldPlugin @@ -12,16 +11,16 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'file.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FileInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "file.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FileInputPlugin",) -class FileInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class FileInputPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """FileField plugin.""" uid = UID @@ -29,37 +28,40 @@ class FileInputPlugin(IntegrationFormFieldPlugin, name = _("File") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) return [ DRFIntegrationFormElementPluginProcessor( - field_class=FileField, - field_kwargs=field_kwargs + field_class=FileField, field_kwargs=field_kwargs ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/fobi_integration_form_elements.py index 6c36f475e..850f99dc5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/file/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import FileInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.file.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FileInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.file." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FileInputPlugin",) integration_form_element_plugin_registry.register(FileInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/__init__.py index f9a935359..84f10b7d8 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.float' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.float" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.float.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.float.apps.Config" +) -UID = 'float' +UID = "float" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/apps.py index 0e9c142ce..ea343a5cd 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'float.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "float.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.float' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_float' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.float" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_float" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/base.py index 824971e7c..6b2fe68f6 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import FloatField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'float.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FloatInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "float.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FloatInputPlugin",) -class FloatInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class FloatInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """FloatField plugin.""" uid = UID @@ -27,37 +28,37 @@ class FloatInputPlugin(IntegrationFormFieldPlugin, name = _("Float") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.initial: - field_kwargs['initial'] = float(form_element_plugin.data.initial) + field_kwargs["initial"] = float(form_element_plugin.data.initial) if form_element_plugin.data.max_value: data_max_value = float(form_element_plugin.data.max_value) - field_kwargs['max_value'] = data_max_value + field_kwargs["max_value"] = data_max_value if form_element_plugin.data.min_value: data_min_value = float(form_element_plugin.data.min_value) - field_kwargs['min_value'] = data_min_value + field_kwargs["min_value"] = data_min_value return [ DRFIntegrationFormElementPluginProcessor( field_class=FloatField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/fobi_integration_form_elements.py index 1fa49819c..53e5acabf 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/float/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import FloatInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.float.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FloatInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.float." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FloatInputPlugin",) integration_form_element_plugin_registry.register(FloatInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/__init__.py index 445793a50..2e89fc398 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.hidden' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.hidden" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.hidden.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.hidden.apps.Config" +) -UID = 'hidden' +UID = "hidden" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/apps.py index 0c823f879..ad8a3b9cd 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'hidden.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "hidden.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.hidden' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_hidden' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.hidden" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_hidden" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/base.py index 85a04aada..2bf6c2f76 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import HiddenField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'hidden.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HiddenInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "hidden.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HiddenInputPlugin",) -class HiddenInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class HiddenInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """CharField plugin.""" uid = UID @@ -27,22 +28,23 @@ class HiddenInputPlugin(IntegrationFormFieldPlugin, name = _("Hidden") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'default': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "default": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=HiddenField, - field_kwargs=field_kwargs + field_class=HiddenField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/fobi_integration_form_elements.py index dd0a35f50..f3827bf9b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/hidden/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import HiddenInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.hidden.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HiddenInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.hidden." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HiddenInputPlugin",) integration_form_element_plugin_registry.register(HiddenInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/__init__.py index c2215b17a..8fe0037ab 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.input' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.input" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.input.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.input.apps.Config" +) -UID = 'input' +UID = "input" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/apps.py index c9a854b6a..03ebff5de 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'input.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "input.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.input' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_input' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.input" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_input" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/base.py index 48fab1c4a..798cb444b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import CharField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,16 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'input.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "input.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InputPlugin",) -class InputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class InputPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """CharField plugin.""" uid = UID @@ -27,74 +26,75 @@ class InputPlugin(IntegrationFormFieldPlugin, name = _("Text") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.autocomplete_value: - field_metadata.update({'autocomplete': 'on'}) + field_metadata.update({"autocomplete": "on"}) if form_element_plugin.data.autofocus_value: - field_metadata.update({'autofocus': 'autofocus'}) + field_metadata.update({"autofocus": "autofocus"}) if form_element_plugin.data.disabled_value: - field_metadata.update({'disabled': 'disabled'}) + field_metadata.update({"disabled": "disabled"}) if form_element_plugin.data.list_value: - field_metadata.update( - {'list': form_element_plugin.data.list_value} - ) + field_metadata.update({"list": form_element_plugin.data.list_value}) if form_element_plugin.data.max_value: - field_metadata.update({'max': form_element_plugin.data.max_value}) + field_metadata.update({"max": form_element_plugin.data.max_value}) if form_element_plugin.data.min_value: - field_metadata.update({'min': form_element_plugin.data.min_value}) + field_metadata.update({"min": form_element_plugin.data.min_value}) if form_element_plugin.data.multiple_value: - field_metadata.update({'multiple': 'multiple'}) + field_metadata.update({"multiple": "multiple"}) if form_element_plugin.data.pattern_value: field_metadata.update( - {'pattern': form_element_plugin.data.pattern_value} + {"pattern": form_element_plugin.data.pattern_value} ) if form_element_plugin.data.readonly_value: - field_kwargs.update({'read_only': True}) + field_kwargs.update({"read_only": True}) if form_element_plugin.data.step_value: - field_metadata.update( - {'step': form_element_plugin.data.step_value} + field_metadata.update({"step": form_element_plugin.data.step_value}) + + if ( + form_element_plugin.data.type_value + and form_element_plugin.data.type_value + in ( + "submit", + "button", + "reset", ) - - if form_element_plugin.data.type_value \ - and form_element_plugin.data.type_value in ('submit', - 'button', - 'reset',): - field_metadata.update({'value': form_element_plugin.data.label}) + ): + field_metadata.update({"value": form_element_plugin.data.label}) if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) return [ DRFIntegrationFormElementPluginProcessor( field_class=CharField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/fobi_integration_form_elements.py index e84509535..699ca95ba 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/input/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import InputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.input.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.input." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InputPlugin",) integration_form_element_plugin_registry.register(InputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/__init__.py index 054f763f7..c252e28a2 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.integer' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.integer" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.integer.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.integer.apps.Config" +) -UID = 'integer' +UID = "integer" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/apps.py index c43459afb..82c3646e9 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'integer.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "integer.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.integer' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_integer' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.integer" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_integer" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/base.py index a5dc040a1..19b676342 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import IntegerField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'integer.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IntegerInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "integer.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IntegerInputPlugin",) -class IntegerInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class IntegerInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """IntegerField plugin.""" uid = UID @@ -27,38 +28,38 @@ class IntegerInputPlugin(IntegrationFormFieldPlugin, name = _("Integer") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder - } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.initial: field_kwargs.update( - {'initial': int(form_element_plugin.data.initial)} + {"initial": int(form_element_plugin.data.initial)} ) if form_element_plugin.data.max_value: data_max_value = int(form_element_plugin.data.max_value) - field_kwargs['max_value'] = data_max_value + field_kwargs["max_value"] = data_max_value if form_element_plugin.data.min_value: data_min_value = int(form_element_plugin.data.min_value) - field_kwargs['min_value'] = data_min_value + field_kwargs["min_value"] = data_min_value return [ DRFIntegrationFormElementPluginProcessor( field_class=IntegerField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/fobi_integration_form_elements.py index bd4c2b06b..696d8609f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/integer/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import IntegerInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.integer.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IntegerInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.integer." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IntegerInputPlugin",) integration_form_element_plugin_registry.register(IntegerInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/__init__.py index 022992876..708e9f2e7 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.ip_address' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.ip_address" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.ip_address.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.ip_address.apps.Config" +) -UID = 'ip_address' +UID = "ip_address" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/apps.py index 43245c9be..3c82eb07f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'ip_address.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "ip_address.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.ip_address' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_ip_address' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.ip_address" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_ip_address" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/base.py index c3c6d9148..69e492f61 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import IPAddressField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'ip_address.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IPAddressInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "ip_address.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IPAddressInputPlugin",) -class IPAddressInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class IPAddressInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """IPAddressField plugin.""" uid = UID @@ -27,30 +28,30 @@ class IPAddressInputPlugin(IntegrationFormFieldPlugin, name = _("IP address") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) return [ DRFIntegrationFormElementPluginProcessor( field_class=IPAddressField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/fobi_integration_form_elements.py index e81a5a81d..7ec8803bb 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/ip_address/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import IPAddressInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'ip_address.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IPAddressInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "ip_address.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IPAddressInputPlugin",) integration_form_element_plugin_registry.register(IPAddressInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/__init__.py index 42e581510..50500b040 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'null_boolean' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "null_boolean" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.null_boolean.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.null_boolean.apps.Config" +) -UID = 'null_boolean' +UID = "null_boolean" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/apps.py index 25d7d8834..d36661bdd 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/apps.py @@ -1,17 +1,21 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'null_boolean.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "null_boolean.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'null_boolean' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'null_boolean' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "null_boolean" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" "null_boolean" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/base.py index 53537603b..6fd3cc2c4 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import NullBooleanField from .......base import IntegrationFormFieldPlugin @@ -10,17 +9,19 @@ ) from . import UID - -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'null_boolean.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('NullBooleanSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "null_boolean.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("NullBooleanSelectPlugin",) -class NullBooleanSelectPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class NullBooleanSelectPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """NullBooleanField select plugin.""" uid = UID @@ -28,22 +29,23 @@ class NullBooleanSelectPlugin(IntegrationFormFieldPlugin, group = _("Fields") integrate_with = INTEGRATE_WITH_UID - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=NullBooleanField, - field_kwargs=field_kwargs + field_class=NullBooleanField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/fobi_integration_form_elements.py index 20226a74f..9b36e8789 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/null_boolean/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import NullBooleanSelectPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'null_boolean.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('NullBooleanSelectPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "null_boolean.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("NullBooleanSelectPlugin",) integration_form_element_plugin_registry.register(NullBooleanSelectPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/__init__.py index aa2361a69..3b9afd1c7 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.password' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.password" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.password.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.password.apps.Config" +) -UID = 'password' +UID = "password" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/apps.py index 168b1bcdf..369086c4b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'password.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "password.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.password' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_password' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.password" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_password" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/base.py index e8d5a9b39..5189565a4 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import CharField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'password.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('PasswordInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "password.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("PasswordInputPlugin",) -class PasswordInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class PasswordInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """CharField plugin.""" uid = UID @@ -27,31 +28,31 @@ class PasswordInputPlugin(IntegrationFormFieldPlugin, name = _("Text") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) return [ DRFIntegrationFormElementPluginProcessor( field_class=CharField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/fobi_integration_form_elements.py index df125d6b0..912f1dcc5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/password/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import PasswordInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'password.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('PasswordInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "password.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("PasswordInputPlugin",) integration_form_element_plugin_registry.register(PasswordInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/__init__.py index fd1fe445c..1243c81fe 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.radio' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.radio" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.radio.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.radio.apps.Config" +) -UID = 'radio' +UID = "radio" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/apps.py index d48074a6d..5324885ff 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'radio.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "radio.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.radio' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_radio' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.radio" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_radio" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/base.py index 4139bff06..2b2055713 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import ChoiceField from .......base import IntegrationFormFieldPlugin @@ -9,19 +8,20 @@ DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'radio.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RadioInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "radio.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RadioInputPlugin",) -class RadioInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class RadioInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """ChoiceField plugin.""" uid = UID @@ -29,25 +29,26 @@ class RadioInputPlugin(IntegrationFormFieldPlugin, name = _("Radio") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = get_select_field_choices(form_element_plugin.data.choices) field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, # 'max_length': form_element_plugin.data.max_length, - 'choices': choices, + "choices": choices, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=ChoiceField, - field_kwargs=field_kwargs + field_class=ChoiceField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/fobi_integration_form_elements.py index fe1edb74c..7f408d8bb 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/radio/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import RadioInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.radio.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RadioInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.radio." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RadioInputPlugin",) integration_form_element_plugin_registry.register(RadioInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/__init__.py index 55c6f92f0..ff24b2aad 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'range_select' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "range_select" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.range_select.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.range_select.apps.Config" +) -UID = 'range_select' +UID = "range_select" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/apps.py index aec2f52b2..f191cacef 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/apps.py @@ -1,17 +1,21 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'range_select.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "range_select.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'range_select' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'range_select' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "range_select" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" "range_select" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/base.py index 17da09f6a..6bf648854 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import ChoiceField from .......base import IntegrationFormFieldPlugin @@ -8,19 +7,21 @@ DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'range_select.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RangeSelectInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "range_select.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RangeSelectInputPlugin",) -class RangeSelectInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class RangeSelectInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """ChoiceField plugin.""" uid = UID @@ -28,25 +29,26 @@ class RangeSelectInputPlugin(IntegrationFormFieldPlugin, name = _("Range select") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = form_element_plugin.get_choices() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - 'choices': choices, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, + "choices": choices, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=ChoiceField, - field_kwargs=field_kwargs + field_class=ChoiceField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/fobi_integration_form_elements.py index 7997f3eeb..96761f52a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/range_select/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import RangeSelectInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'range_select.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RangeSelectInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "range_select.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RangeSelectInputPlugin",) integration_form_element_plugin_registry.register(RangeSelectInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/__init__.py index 5cb212b14..f41ba470b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.regex' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.regex" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.regex.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.regex.apps.Config" +) -UID = 'regex' +UID = "regex" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/apps.py index 737c0a678..74573d6e5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'regex.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "regex.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.regex' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_regex' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.regex" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_regex" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/base.py index c5e19e8de..95949d132 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import RegexField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,18 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'regex.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RegexInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "regex.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RegexInputPlugin",) -class RegexInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class RegexInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """RegexField plugin.""" uid = UID @@ -27,31 +28,33 @@ class RegexInputPlugin(IntegrationFormFieldPlugin, name = _("Regex") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - 'regex': form_element_plugin.data.regex, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, + "regex": form_element_plugin.data.regex, } field_metadata = { - 'placeholder': form_element_plugin.data.placeholder, - 'regex': form_element_plugin.data.regex, + "placeholder": form_element_plugin.data.placeholder, + "regex": form_element_plugin.data.regex, } if form_element_plugin.data.max_length: - field_kwargs['max_length'] = form_element_plugin.data.max_length + field_kwargs["max_length"] = form_element_plugin.data.max_length return [ DRFIntegrationFormElementPluginProcessor( field_class=RegexField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/fobi_integration_form_elements.py index c9e33e316..955cb252c 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/regex/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import RegexInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.regex.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RegexInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.regex." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RegexInputPlugin",) integration_form_element_plugin_registry.register(RegexInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/__init__.py index 0262e5230..0c7cdbabe 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.select' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.select" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.select.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.select.apps.Config" +) -UID = 'select' +UID = "select" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/apps.py index bdbe52140..5348e7f13 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "select.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.select' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_select' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.select" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_select" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/base.py index 6439f22e9..1afe1bb95 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import ChoiceField from .......base import IntegrationFormFieldPlugin @@ -8,19 +7,20 @@ DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "select.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectInputPlugin",) -class SelectInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SelectInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """ChoiceField plugin.""" uid = UID @@ -28,25 +28,26 @@ class SelectInputPlugin(IntegrationFormFieldPlugin, name = _("Select") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = form_element_plugin.get_choices() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - 'choices': choices, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, + "choices": choices, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=ChoiceField, - field_kwargs=field_kwargs + field_class=ChoiceField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/fobi_integration_form_elements.py index 58d6cfec6..d72896b23 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SelectInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectInputPlugin",) integration_form_element_plugin_registry.register(SelectInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/__init__.py index 57d425d7c..ae294d105 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_model_object' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_model_object" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.select_model_object.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.select_model_object.apps.Config" +) -UID = 'select_model_object' +UID = "select_model_object" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/apps.py index 228c3b059..00f1989bd 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_model_object.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_model_object.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_model_object' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'select_model_object' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_model_object" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" + "select_model_object" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/base.py index c3f5fefe7..1583864ad 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/base.py @@ -9,19 +9,21 @@ DRFSubmitPluginFormDataMixin, ) from ....fields import ModelChoiceField - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_model_object.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectModelObjectInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_model_object.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectModelObjectInputPlugin",) -class SelectModelObjectInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SelectModelObjectInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """ChoiceField plugin.""" uid = UID @@ -29,36 +31,39 @@ class SelectModelObjectInputPlugin(IntegrationFormFieldPlugin, name = _("Select model object") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" queryset = form_element_plugin.get_queryset() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - 'queryset': queryset, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, + "queryset": queryset, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=ModelChoiceField, - field_kwargs=field_kwargs + field_class=ModelChoiceField, field_kwargs=field_kwargs ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/fobi_integration_form_elements.py index 063543b71..3f98ee208 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_model_object/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SelectModelObjectInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_model_object.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectModelObjectInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_model_object.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectModelObjectInputPlugin",) integration_form_element_plugin_registry.register(SelectModelObjectInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/__init__.py index af79bbadf..314babd5c 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "select_multiple" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.select_multiple.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.select_multiple.apps.Config" +) -UID = 'select_multiple' +UID = "select_multiple" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/apps.py index f385eb088..f21ded67a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'select_multiple' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" + "select_multiple" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/base.py index 224aef129..5fd56e692 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/base.py @@ -1,7 +1,6 @@ import copy from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import MultipleChoiceField from .......base import IntegrationFormFieldPlugin @@ -10,19 +9,21 @@ DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleInputPlugin",) -class SelectMultipleInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SelectMultipleInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """MultipleChoiceField plugin.""" uid = UID @@ -30,36 +31,39 @@ class SelectMultipleInputPlugin(IntegrationFormFieldPlugin, name = _("Select multiple") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = form_element_plugin.get_choices() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, # 'max_length': form_element_plugin.data.max_length, - 'choices': choices, + "choices": choices, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=MultipleChoiceField, - field_kwargs=field_kwargs + field_class=MultipleChoiceField, field_kwargs=field_kwargs ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/fobi_integration_form_elements.py index 198c1ab86..f585d86b0 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple/fobi_integration_form_elements.py @@ -1,14 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SelectMultipleInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleInputPlugin",) -integration_form_element_plugin_registry.register( - SelectMultipleInputPlugin -) +integration_form_element_plugin_registry.register(SelectMultipleInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/__init__.py index c7d5154a0..30a443c1a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_model_objects' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_model_objects" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.select_multiple_model_objects.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.select_multiple_model_objects.apps.Config" +) -UID = 'select_multiple_model_objects' +UID = "select_multiple_model_objects" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/apps.py index dabcbafa4..2e7d56f77 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_model_objects.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_model_objects.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_model_objects' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'select_multiple_model_objects' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_model_objects" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" + "select_multiple_model_objects" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/base.py index b25eff53c..99d68b012 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/base.py @@ -9,19 +9,21 @@ DRFSubmitPluginFormDataMixin, ) from ....fields import ModelMultipleChoiceField - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_model_objects.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleModelObjectsInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_model_objects.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleModelObjectsInputPlugin",) -class SelectMultipleModelObjectsInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SelectMultipleModelObjectsInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """ModelMultipleChoiceField plugin.""" uid = UID @@ -29,36 +31,39 @@ class SelectMultipleModelObjectsInputPlugin(IntegrationFormFieldPlugin, name = _("Select multiple model objects") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" queryset = form_element_plugin.get_queryset() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - 'queryset': queryset, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, + "queryset": queryset, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=ModelMultipleChoiceField, - field_kwargs=field_kwargs + field_class=ModelMultipleChoiceField, field_kwargs=field_kwargs ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/fobi_integration_form_elements.py index f56b89ecf..98383d8d5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_model_objects/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SelectMultipleModelObjectsInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_model_objects.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleModelObjectsInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_model_objects.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleModelObjectsInputPlugin",) integration_form_element_plugin_registry.register( diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/__init__.py index 21c180024..30cb6581f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_with_max' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_with_max" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.select_multiple_with_max.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.select_multiple_with_max.apps.Config" +) -UID = 'select_multiple_with_max' +UID = "select_multiple_with_max" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/apps.py index 146881bd0..6dec53f84 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_with_max.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_with_max.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_with_max' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_' \ - 'select_multiple_with_max' + name = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_with_max" + ) + label = ( + "fobi_contrib_apps_drf_integration_form_elements_fields_" + "select_multiple_with_max" + ) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/base.py index c3092dda8..c112cd059 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/base.py @@ -2,27 +2,28 @@ from django.utils.translation import gettext_lazy as _ -from ....fields import MultipleChoiceWithMaxField - from .......base import IntegrationFormFieldPlugin from .... import UID as INTEGRATE_WITH_UID from ....base import ( DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - +from ....fields import MultipleChoiceWithMaxField from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_with_max.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleWithMaxInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_with_max.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleWithMaxInputPlugin",) -class SelectMultipleWithMaxInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SelectMultipleWithMaxInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """MultipleChoiceField with max plugin.""" uid = UID @@ -30,40 +31,44 @@ class SelectMultipleWithMaxInputPlugin(IntegrationFormFieldPlugin, name = _("Select multiple with max") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = form_element_plugin.get_choices() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, # 'max_length': form_element_plugin.data.max_length, - 'choices': choices, + "choices": choices, } if form_element_plugin.data.max_choices: - field_kwargs['max_choices'] = form_element_plugin.data.max_choices + field_kwargs["max_choices"] = form_element_plugin.data.max_choices return [ DRFIntegrationFormElementPluginProcessor( field_class=MultipleChoiceWithMaxField, - field_kwargs=field_kwargs + field_kwargs=field_kwargs, ) ] - def submit_plugin_form_data(self, - form_element_plugin, - form_entry, - request, - serializer, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, + form_element_plugin, + form_entry, + request, + serializer, + form_element_entries=None, + **kwargs, + ): """Submit plugin form data. Called on form submission (when user actually diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/fobi_integration_form_elements.py index 5ceefca0f..4b75eb3ee 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/select_multiple_with_max/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SelectMultipleWithMaxInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'select_multiple_with_max.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleWithMaxInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "select_multiple_with_max.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleWithMaxInputPlugin",) integration_form_element_plugin_registry.register( diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/__init__.py index 205775dd8..89ef333be 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/__init__.py @@ -1,11 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'slider' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields." "slider" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.slider.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.slider.apps.Config" +) -UID = 'slider' +UID = "slider" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/apps.py index 0e51880f3..01bbfd09f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'slider.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "slider.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.slider' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_slider' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.slider" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_slider" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/base.py index f33b5ab70..5b611bb31 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import ChoiceField from .......base import IntegrationFormFieldPlugin @@ -8,19 +7,20 @@ DRFIntegrationFormElementPluginProcessor, DRFSubmitPluginFormDataMixin, ) - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'slider.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SliderInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "slider.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SliderInputPlugin",) -class SliderInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SliderInputPlugin( + IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin +): """ChoiceField plugin.""" uid = UID @@ -28,25 +28,26 @@ class SliderInputPlugin(IntegrationFormFieldPlugin, name = _("Slider") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" choices = form_element_plugin.get_choices() field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - 'choices': choices, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, + "choices": choices, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=ChoiceField, - field_kwargs=field_kwargs + field_class=ChoiceField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/fobi_integration_form_elements.py index 93e8571b5..8f086580d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slider/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SliderInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'slider.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SliderInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "slider.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SliderInputPlugin",) integration_form_element_plugin_registry.register(SliderInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/__init__.py index 24aa0ab36..b00c1c998 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.slug' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.slug" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.slug.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." "fields.slug.apps.Config" +) -UID = 'slug' +UID = "slug" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/apps.py index 0f96f8476..46840215b 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'slug.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "slug.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.slug' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_slug' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.slug" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_slug" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/base.py index fa3b3c0a1..565895475 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import SlugField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,16 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'slug.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SlugInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "slug.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SlugInputPlugin",) -class SlugInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class SlugInputPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """SlugField plugin.""" uid = UID @@ -27,30 +26,30 @@ class SlugInputPlugin(IntegrationFormFieldPlugin, name = _("Slug") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) return [ DRFIntegrationFormElementPluginProcessor( field_class=SlugField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/fobi_integration_form_elements.py index 5dbc787ad..ca0877b10 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/slug/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import SlugInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.slug.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SlugInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.slug." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SlugInputPlugin",) integration_form_element_plugin_registry.register(SlugInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/__init__.py index 1ba8f3b65..d06854f3a 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.text' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.text" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.text.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." "fields.text.apps.Config" +) -UID = 'text' +UID = "text" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/apps.py index 4c2c2a1e7..cf0fb21d9 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'text.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "text.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.text' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_text' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.text" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_text" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/base.py index 3b1345742..d751b291d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import CharField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,16 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'text.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "text.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextInputPlugin",) -class TextInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class TextInputPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """CharField plugin.""" uid = UID @@ -27,31 +26,31 @@ class TextInputPlugin(IntegrationFormFieldPlugin, name = _("Text") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.max_length: - field_kwargs.update({ - 'max_length': int(form_element_plugin.data.max_length) - }) + field_kwargs.update( + {"max_length": int(form_element_plugin.data.max_length)} + ) return [ DRFIntegrationFormElementPluginProcessor( field_class=CharField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/fobi_integration_form_elements.py index 601c90050..79ad1c475 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/text/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import TextInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.text.' \ - 'fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields.text." + "fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextInputPlugin",) integration_form_element_plugin_registry.register(TextInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/__init__.py index 732775be6..5f916c11e 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.textarea' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.textarea" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.textarea.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." + "fields.textarea.apps.Config" +) -UID = 'textarea' +UID = "textarea" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/apps.py index 64c1ead58..85725a38d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'textarea.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "textarea.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.textarea' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_textarea' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.textarea" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_textarea" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/base.py index 0b109ad27..bc95eb752 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import CharField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,16 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'textarea.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextareaPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "textarea.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextareaPlugin",) -class TextareaPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class TextareaPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """CharField plugin.""" uid = UID @@ -27,26 +26,26 @@ class TextareaPlugin(IntegrationFormFieldPlugin, name = _("Textarea") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} return [ DRFIntegrationFormElementPluginProcessor( field_class=CharField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/fobi_integration_form_elements.py index 48900e267..8ce3cfe8d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/textarea/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import TextareaPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'textarea.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextareaPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "textarea.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextareaPlugin",) integration_form_element_plugin_registry.register(TextareaPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/__init__.py index f449458d1..06c3aca3d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.time' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.time" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.time.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." "fields.time.apps.Config" +) -UID = 'time' +UID = "time" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/apps.py index 9ec245ee0..1182ad484 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'time.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "time.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.time' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_time' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.time" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_time" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/base.py index 9a91c9b24..3466988b0 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import TimeField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,16 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'time.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TimeInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." "time.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TimeInputPlugin",) -class TimeInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class TimeInputPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """TimeField plugin.""" uid = UID @@ -27,23 +26,24 @@ class TimeInputPlugin(IntegrationFormFieldPlugin, name = _("Time") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, # 'input_formats': form_element_plugin.data.input_formats, } return [ DRFIntegrationFormElementPluginProcessor( - field_class=TimeField, - field_kwargs=field_kwargs + field_class=TimeField, field_kwargs=field_kwargs ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/fobi_integration_form_elements.py index 525b22f31..90b22f596 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/time/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import TimeInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'time.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TimeInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "time.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TimeInputPlugin",) integration_form_element_plugin_registry.register(TimeInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/__init__.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/__init__.py index 9d613641c..158d3f3a3 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.url' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.url" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_elements.' \ - 'fields.url.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_elements." "fields.url.apps.Config" +) -UID = 'url' +UID = "url" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/apps.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/apps.py index 097e20853..8c4f2e15e 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.url.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields.url.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_elements.fields.url' - label = 'fobi_contrib_apps_drf_integration_form_elements_fields_url' + name = "fobi.contrib.apps.drf_integration.form_elements.fields.url" + label = "fobi_contrib_apps_drf_integration_form_elements_fields_url" diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/base.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/base.py index ad9a1ef0c..a852e19a5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/base.py @@ -1,5 +1,4 @@ from django.utils.translation import gettext_lazy as _ - from rest_framework.fields import URLField from .......base import IntegrationFormFieldPlugin @@ -10,16 +9,14 @@ ) from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'url.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('URLInputPlugin',) +__title__ = "fobi.contrib.apps.drf_integration.form_elements.fields." "url.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("URLInputPlugin",) -class URLInputPlugin(IntegrationFormFieldPlugin, - DRFSubmitPluginFormDataMixin): +class URLInputPlugin(IntegrationFormFieldPlugin, DRFSubmitPluginFormDataMixin): """URLField plugin.""" uid = UID @@ -27,30 +24,30 @@ class URLInputPlugin(IntegrationFormFieldPlugin, name = _("URL") group = _("Fields") - def get_custom_field_instances(self, - form_element_plugin, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_custom_field_instances( + self, + form_element_plugin, + request=None, + form_entry=None, + form_element_entries=None, + **kwargs, + ): """Get form field instances.""" field_kwargs = { - 'required': form_element_plugin.data.required, - 'initial': form_element_plugin.data.initial, - 'label': form_element_plugin.data.label, - 'help_text': form_element_plugin.data.help_text, - } - field_metadata = { - 'placeholder': form_element_plugin.data.placeholder + "required": form_element_plugin.data.required, + "initial": form_element_plugin.data.initial, + "label": form_element_plugin.data.label, + "help_text": form_element_plugin.data.help_text, } + field_metadata = {"placeholder": form_element_plugin.data.placeholder} if form_element_plugin.data.max_length: field_kwargs.update( - {'max_length': int(form_element_plugin.data.max_length)} + {"max_length": int(form_element_plugin.data.max_length)} ) return [ DRFIntegrationFormElementPluginProcessor( field_class=URLField, field_kwargs=field_kwargs, - field_metadata=field_metadata + field_metadata=field_metadata, ) ] diff --git a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/fobi_integration_form_elements.py b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/fobi_integration_form_elements.py index 55c406dc6..1c0c3904c 100644 --- a/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/fobi_integration_form_elements.py +++ b/src/fobi/contrib/apps/drf_integration/form_elements/fields/url/fobi_integration_form_elements.py @@ -1,12 +1,14 @@ from .......base import integration_form_element_plugin_registry from .base import URLInputPlugin -__title__ = 'fobi.contrib.apps.drf_integration.form_elements.fields.' \ - 'url.fobi_integration_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('URLInputPlugin',) +__title__ = ( + "fobi.contrib.apps.drf_integration.form_elements.fields." + "url.fobi_integration_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("URLInputPlugin",) integration_form_element_plugin_registry.register(URLInputPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/__init__.py b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/__init__.py index 6ee38a52f..396dab446 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.db_store' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.db_store" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_handlers.' \ - 'db_store.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_handlers." "db_store.apps.Config" +) -UID = 'db_store' +UID = "db_store" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/apps.py b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/apps.py index fc0a77b87..1ac11b6ad 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.db_store.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.db_store.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_handlers.db_store' - label = 'fobi_contrib_apps_drf_integration_form_handlers_db_store' + name = "fobi.contrib.apps.drf_integration.form_handlers.db_store" + label = "fobi_contrib_apps_drf_integration_form_handlers_db_store" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/base.py b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/base.py index ad8314465..f00841a61 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/base.py @@ -6,20 +6,18 @@ from ......base import IntegrationFormHandlerPlugin from ......helpers import extract_file_path - from ... import UID as INTEGRATE_WITH_UID from ...base import get_processed_serializer_data - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.db_store.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'DBStoreHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.db_store.base" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DBStoreHandlerPlugin",) LOGGER = logging.getLogger(__name__) @@ -34,26 +32,24 @@ class DBStoreHandlerPlugin(IntegrationFormHandlerPlugin): name = _("DB store") integrate_with = INTEGRATE_WITH_UID - def run(self, - form_handler_plugin, - form_entry, - request, - form_element_entries=None, - **kwargs): + def run( + self, + form_handler_plugin, + form_entry, + request, + form_element_entries=None, + **kwargs, + ): """Run.""" - serializer = kwargs['serializer'] + serializer = kwargs["serializer"] # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_serializer_data( - serializer, - form_element_entries + serializer, form_element_entries ) form_handler_plugin.save_form_data_entry( - form_entry, - request, - field_name_to_label_map, - cleaned_data + form_entry, request, field_name_to_label_map, cleaned_data ) def _prepare_files(self, request, serializer): @@ -63,14 +59,13 @@ def _prepare_files(self, request, serializer): def process_path(file_path, imf): if file_path: file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) - files[field_name] = (imf.name, open(file_path, 'rb')) + files[field_name] = (imf.name, open(file_path, "rb")) for field_name, imf in request.FILES.items(): try: - file_path = serializer.validate_data.get(field_name, '') + file_path = serializer.validate_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/fobi_integration_form_handlers.py b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/fobi_integration_form_handlers.py index b0744aa55..0f46cb50c 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/fobi_integration_form_handlers.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/db_store/fobi_integration_form_handlers.py @@ -1,14 +1,14 @@ from ......base import integration_form_handler_plugin_registry from .base import DBStoreHandlerPlugin -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.db_store.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'DBStoreHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.db_store.fobi_form_handlers" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DBStoreHandlerPlugin",) integration_form_handler_plugin_registry.register(DBStoreHandlerPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/__init__.py b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/__init__.py index 7ffc31bb6..32f484a80 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.http_repost' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.http_repost" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_handlers.' \ - 'http_repost.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_handlers." "http_repost.apps.Config" +) -UID = 'http_repost' +UID = "http_repost" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/apps.py b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/apps.py index d6dcb738e..06a4acecb 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.http_repost.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.http_repost.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_handlers.http_repost' - label = 'fobi_contrib_apps_drf_integration_form_handlers_http_repost' + name = "fobi.contrib.apps.drf_integration.form_handlers.http_repost" + label = "fobi_contrib_apps_drf_integration_form_handlers_http_repost" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/base.py b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/base.py index 34e404968..b44bad4b2 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/base.py @@ -1,28 +1,25 @@ import logging -from mimetypes import guess_type import os +from mimetypes import guess_type from django.conf import settings from django.utils.translation import gettext_lazy as _ - from six import PY3 from ......base import IntegrationFormHandlerPlugin from ......helpers import extract_file_path - from ... import UID as INTEGRATE_WITH_UID from ...base import get_processed_serializer_data - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.http_repost.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'HTTPRepostHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.http_repost.base" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HTTPRepostHandlerPlugin",) LOGGER = logging.getLogger(__name__) @@ -34,14 +31,16 @@ class HTTPRepostHandlerPlugin(IntegrationFormHandlerPlugin): name = _("Mail") integrate_with = INTEGRATE_WITH_UID - def run(self, - form_handler_plugin, - form_entry, - request, - form_element_entries=None, - **kwargs): + def run( + self, + form_handler_plugin, + form_entry, + request, + form_element_entries=None, + **kwargs, + ): """Run.""" - serializer = kwargs['serializer'] + serializer = kwargs["serializer"] files = self._prepare_files(request, serializer) @@ -55,25 +54,24 @@ def process_path(file_path, imf): """Processes the file path and the file.""" if file_path: file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = ''.join([c for c in imf.chunks()]) + imf_chunks = "".join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for field_name, imf in request.FILES.items(): try: - file_path = serializer.validated_data.get(field_name, '') + file_path = serializer.validated_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/fobi_integration_form_handlers.py b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/fobi_integration_form_handlers.py index 29ce4cf06..18ea341c4 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/fobi_integration_form_handlers.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/http_repost/fobi_integration_form_handlers.py @@ -1,14 +1,14 @@ from ......base import integration_form_handler_plugin_registry from .base import HTTPRepostHandlerPlugin -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.http_repost.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'HTTPRepostHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.http_repost.fobi_form_handlers" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HTTPRepostHandlerPlugin",) integration_form_handler_plugin_registry.register(HTTPRepostHandlerPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/__init__.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/__init__.py index 99be93ec5..d95155ef8 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.mail' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.mail" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_handlers.' \ - 'mail.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_handlers." "mail.apps.Config" +) -UID = 'mail' +UID = "mail" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/apps.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/apps.py index 1a84e2a36..d7c74b05f 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.mail.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.mail.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_handlers.mail' - label = 'fobi_contrib_apps_drf_integration_form_handlers_mail' + name = "fobi.contrib.apps.drf_integration.form_handlers.mail" + label = "fobi_contrib_apps_drf_integration_form_handlers_mail" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/base.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/base.py index ff05a6aa2..112b8a7d0 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/base.py @@ -1,28 +1,25 @@ import logging -from mimetypes import guess_type import os +from mimetypes import guess_type from django.conf import settings from django.utils.translation import gettext_lazy as _ - from six import PY3 from ......base import IntegrationFormHandlerPlugin from ......helpers import extract_file_path - from ... import UID as INTEGRATE_WITH_UID from ...base import get_processed_serializer_data - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.mail.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MailHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.mail.base" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailHandlerPlugin",) LOGGER = logging.getLogger(__name__) @@ -37,27 +34,26 @@ class MailHandlerPlugin(IntegrationFormHandlerPlugin): name = _("Mail") integrate_with = INTEGRATE_WITH_UID - def run(self, - form_handler_plugin, - form_entry, - request, - form_element_entries=None, - **kwargs): + def run( + self, + form_handler_plugin, + form_entry, + request, + form_element_entries=None, + **kwargs, + ): """Run.""" base_url = form_handler_plugin.get_base_url(request) - serializer = kwargs['serializer'] + serializer = kwargs["serializer"] # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_serializer_data( - serializer, - form_element_entries + serializer, form_element_entries ) rendered_data = form_handler_plugin.get_rendered_data( - serializer.validated_data, - field_name_to_label_map, - base_url + serializer.validated_data, field_name_to_label_map, base_url ) files = self._prepare_files(request, serializer) @@ -72,25 +68,24 @@ def process_path(file_path, imf): """Processes the file path and the file.""" if file_path: file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = ''.join([c for c in imf.chunks()]) + imf_chunks = "".join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for field_name, imf in request.FILES.items(): try: - file_path = serializer.validated_data.get(field_name, '') + file_path = serializer.validated_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/fobi_integration_form_handlers.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/fobi_integration_form_handlers.py index 1f34c7f5c..40f4d0e0d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail/fobi_integration_form_handlers.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail/fobi_integration_form_handlers.py @@ -1,14 +1,14 @@ from ......base import integration_form_handler_plugin_registry from .base import MailHandlerPlugin -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.mail.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MailHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.mail.fobi_form_handlers" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailHandlerPlugin",) integration_form_handler_plugin_registry.register(MailHandlerPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/__init__.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/__init__.py index e60842d11..59abe2c4d 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/__init__.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.mail_sender' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.mail_sender" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.apps.drf_integration.form_handlers.' \ - 'mail_sender.apps.Config' +default_app_config = ( + "fobi.contrib.apps.drf_integration.form_handlers." "mail_sender.apps.Config" +) -UID = 'mail_sender' +UID = "mail_sender" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/apps.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/apps.py index 067ff9624..9ae137310 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/apps.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.drf_integration.form_handlers.mail_sender.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.drf_integration.form_handlers.mail_sender.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.drf_integration.form_handlers.mail_sender' - label = 'fobi_contrib_apps_drf_integration_form_handlers_mail_sender' + name = "fobi.contrib.apps.drf_integration.form_handlers.mail_sender" + label = "fobi_contrib_apps_drf_integration_form_handlers_mail_sender" diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/base.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/base.py index 72813e054..9d058bfa5 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/base.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/base.py @@ -1,28 +1,25 @@ import logging -from mimetypes import guess_type import os +from mimetypes import guess_type from django.conf import settings from django.utils.translation import gettext_lazy as _ - from six import PY3 from ......base import IntegrationFormHandlerPlugin from ......helpers import extract_file_path - from ... import UID as INTEGRATE_WITH_UID from ...base import get_processed_serializer_data - from . import UID -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.mail.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MailSenderHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.mail.base" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailSenderHandlerPlugin",) LOGGER = logging.getLogger(__name__) @@ -37,27 +34,26 @@ class MailSenderHandlerPlugin(IntegrationFormHandlerPlugin): name = _("Mail sender") integrate_with = INTEGRATE_WITH_UID - def run(self, - form_handler_plugin, - form_entry, - request, - form_element_entries=None, - **kwargs): + def run( + self, + form_handler_plugin, + form_entry, + request, + form_element_entries=None, + **kwargs, + ): """Run.""" base_url = form_handler_plugin.get_base_url(request) - serializer = kwargs['serializer'] + serializer = kwargs["serializer"] # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_serializer_data( - serializer, - form_element_entries + serializer, form_element_entries ) rendered_data = form_handler_plugin.get_rendered_data( - serializer.validated_data, - field_name_to_label_map, - base_url + serializer.validated_data, field_name_to_label_map, base_url ) files = self._prepare_files(request, serializer) @@ -72,25 +68,24 @@ def process_path(file_path, imf): """Processes the file path and the file.""" if file_path: file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = ''.join([c for c in imf.chunks()]) + imf_chunks = "".join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for field_name, imf in request.FILES.items(): try: - file_path = serializer.validated_data.get(field_name, '') + file_path = serializer.validated_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) diff --git a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/fobi_integration_form_handlers.py b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/fobi_integration_form_handlers.py index 7ba832cfd..bcb0c9e0e 100644 --- a/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/fobi_integration_form_handlers.py +++ b/src/fobi/contrib/apps/drf_integration/form_handlers/mail_sender/fobi_integration_form_handlers.py @@ -1,14 +1,14 @@ from ......base import integration_form_handler_plugin_registry from .base import MailSenderHandlerPlugin -__title__ = 'fobi.contrib.apps.drf_integration.' \ - 'fobi_integration_form_handlers.mail_sender.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MailSenderHandlerPlugin', +__title__ = ( + "fobi.contrib.apps.drf_integration." + "fobi_integration_form_handlers.mail_sender.fobi_form_handlers" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailSenderHandlerPlugin",) integration_form_handler_plugin_registry.register(MailSenderHandlerPlugin) diff --git a/src/fobi/contrib/apps/drf_integration/helpers.py b/src/fobi/contrib/apps/drf_integration/helpers.py index 25f4039b8..2e40e9253 100644 --- a/src/fobi/contrib/apps/drf_integration/helpers.py +++ b/src/fobi/contrib/apps/drf_integration/helpers.py @@ -1,10 +1,8 @@ -__title__ = 'fobi.contrib.apps.drf_integration.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2016-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'map_field_name_to_label', -) +__title__ = "fobi.contrib.apps.drf_integration.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2016-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("map_field_name_to_label",) def map_field_name_to_label(serializer): @@ -13,6 +11,9 @@ def map_field_name_to_label(serializer): :param serializer: Instance of ``rest_framework.serializers.Serializer``. :return dict: """ - return dict([(field_name, field.label) - for (field_name, field) - in serializer.fields.items()]) + return dict( + [ + (field_name, field.label) + for (field_name, field) in serializer.fields.items() + ] + ) diff --git a/src/fobi/contrib/apps/drf_integration/metadata.py b/src/fobi/contrib/apps/drf_integration/metadata.py index 9473cea0c..b50464d3b 100644 --- a/src/fobi/contrib/apps/drf_integration/metadata.py +++ b/src/fobi/contrib/apps/drf_integration/metadata.py @@ -4,19 +4,17 @@ from rest_framework.utils.field_mapping import ClassLookupDict from .fields import ( - MultipleChoiceWithMaxField, ContentImageField, ContentTextField, ContentVideoField, + MultipleChoiceWithMaxField, ) -__title__ = 'fobi.contrib.apps.drf_integration.metadata' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2016-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'FobiMetaData', -) +__title__ = "fobi.contrib.apps.drf_integration.metadata" +__author__ = "Artur Barseghyan " +__copyright__ = "2016-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiMetaData",) class FobiMetaData(SimpleMetadata): @@ -25,10 +23,10 @@ class FobiMetaData(SimpleMetadata): __mapping = copy.copy(SimpleMetadata.label_lookup.mapping) __mapping.update( { - MultipleChoiceWithMaxField: 'multiple choice', - ContentImageField: 'content', - ContentTextField: 'content', - ContentVideoField: 'content', + MultipleChoiceWithMaxField: "multiple choice", + ContentImageField: "content", + ContentTextField: "content", + ContentVideoField: "content", } ) @@ -42,9 +40,9 @@ def get_field_info(self, field): """ field_info = super(FobiMetaData, self).get_field_info(field) - for __key in ['initial', 'max_value', 'min_value']: + for __key in ["initial", "max_value", "min_value"]: __val = getattr(field, __key, None) - if __val not in (None, ''): + if __val not in (None, ""): field_info[__key] = __val field_metadata = field.root.get_fields_metadata().get( @@ -52,7 +50,7 @@ def get_field_info(self, field): ) if field_metadata: for __k, __val in field_metadata.items(): - if __val not in (None, ''): + if __val not in (None, ""): field_info[__k] = __val return field_info diff --git a/src/fobi/contrib/apps/drf_integration/serializers.py b/src/fobi/contrib/apps/drf_integration/serializers.py index 0d9e6ee68..217a47e68 100644 --- a/src/fobi/contrib/apps/drf_integration/serializers.py +++ b/src/fobi/contrib/apps/drf_integration/serializers.py @@ -6,11 +6,11 @@ from ....models import FormEntry -__title__ = 'fobi.contrib.apps.drf_integration.serializers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FormEntrySerializer',) +__title__ = "fobi.contrib.apps.drf_integration.serializers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FormEntrySerializer",) class FormEntrySerializer(serializers.ModelSerializer): @@ -18,6 +18,7 @@ class FormEntrySerializer(serializers.ModelSerializer): Used for detail and list views. """ + url = serializers.SerializerMethodField() class Meta(object): @@ -25,24 +26,24 @@ class Meta(object): model = FormEntry fields = ( - 'url', - 'id', - 'slug', - 'title', + "url", + "id", + "slug", + "title", ) read_only_fields = ( - 'url', - 'id', - 'slug', - 'title', + "url", + "id", + "slug", + "title", ) def get_url(self, obj): """Get URL.""" return reverse( - 'fobi_form_entry-detail', + "fobi_form_entry-detail", args=[obj.slug], - request=self.context['request'] + request=self.context["request"], ) def get_fields_metadata(self, field_name=None): diff --git a/src/fobi/contrib/apps/drf_integration/urls.py b/src/fobi/contrib/apps/drf_integration/urls.py index c12064a91..2252f2e35 100644 --- a/src/fobi/contrib/apps/drf_integration/urls.py +++ b/src/fobi/contrib/apps/drf_integration/urls.py @@ -1,27 +1,24 @@ -from rest_framework.routers import DefaultRouter from rest_framework import VERSION +from rest_framework.routers import DefaultRouter + from .views import FobiFormEntryViewSet -__title__ = 'fobi.contrib.apps.drf_integration.urls' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.drf_integration.urls" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'urlpatterns', - 'fobi_router', + "urlpatterns", + "fobi_router", ) -DRF_VERSION = [int(_v) for _v in VERSION.split('.')] -basename = 'basename' +DRF_VERSION = [int(_v) for _v in VERSION.split(".")] +basename = "basename" if DRF_VERSION[:2] < [3, 10]: - basename = 'base_name' + basename = "base_name" -router_kwargs = {basename: 'fobi_form_entry'} +router_kwargs = {basename: "fobi_form_entry"} fobi_router = DefaultRouter() -fobi_router.register( - r'fobi-form-entry', - FobiFormEntryViewSet, - **router_kwargs -) +fobi_router.register(r"fobi-form-entry", FobiFormEntryViewSet, **router_kwargs) urlpatterns = fobi_router.urls diff --git a/src/fobi/contrib/apps/drf_integration/utils.py b/src/fobi/contrib/apps/drf_integration/utils.py index 08e235d08..8143f1533 100644 --- a/src/fobi/contrib/apps/drf_integration/utils.py +++ b/src/fobi/contrib/apps/drf_integration/utils.py @@ -1,16 +1,15 @@ from .dynamic import assemble_serializer_class -__title__ = 'fobi.contrib.apps.drf_integration.utils' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_serializer_class',) +__title__ = "fobi.contrib.apps.drf_integration.utils" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_serializer_class",) -def get_serializer_class(form_entry, - request=None, - has_value=None, - declared_fields=None): +def get_serializer_class( + form_entry, request=None, has_value=None, declared_fields=None +): """Get assembled serializer class. :param fobi.models.FormEntry form_entry: @@ -19,7 +18,9 @@ def get_serializer_class(form_entry, :param list declared_fields: :return django.forms.Form: """ - return assemble_serializer_class(form_entry, - request=request, - has_value=has_value, - declared_fields=declared_fields) + return assemble_serializer_class( + form_entry, + request=request, + has_value=has_value, + declared_fields=declared_fields, + ) diff --git a/src/fobi/contrib/apps/drf_integration/views.py b/src/fobi/contrib/apps/drf_integration/views.py index 6a3ccbf25..671f016f3 100644 --- a/src/fobi/contrib/apps/drf_integration/views.py +++ b/src/fobi/contrib/apps/drf_integration/views.py @@ -2,22 +2,19 @@ from django.contrib import messages from django.http import HttpRequest from django.utils.translation import gettext - from django_nine import versions - from rest_framework import mixins, permissions from rest_framework.response import Response from rest_framework.viewsets import GenericViewSet from ....constants import ( CALLBACK_BEFORE_FORM_VALIDATION, - CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, + CALLBACK_FORM_INVALID, CALLBACK_FORM_VALID, CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, - CALLBACK_FORM_INVALID + CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) from ....models import FormEntry - from .base import ( fire_form_callbacks, run_form_handlers, @@ -28,11 +25,11 @@ from .serializers import FormEntrySerializer from .utils import get_serializer_class -__title__ = 'fobi.contrib.apps.drf_integration.views' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiFormEntryViewSet',) +__title__ = "fobi.contrib.apps.drf_integration.views" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiFormEntryViewSet",) class FobiFormEntryViewSet( @@ -41,9 +38,10 @@ class FobiFormEntryViewSet( mixins.UpdateModelMixin, # mixins.DestroyModelMixin, mixins.ListModelMixin, - GenericViewSet + GenericViewSet, ): """FormEntry view set.""" + # By definition of this app we have only list, detail and update actions. # In update action we are going to handle form entry creation. # In case of self.action == 'update' or 'partial_update' we do need to @@ -51,14 +49,14 @@ class FobiFormEntryViewSet( # In all other cases, we need to show serializer of the model (which is # simply one field - model slug). - queryset = FormEntry.objects.filter(is_public=True).select_related('user') + queryset = FormEntry.objects.filter(is_public=True).select_related("user") permission_classes = [permissions.AllowAny] - lookup_field = 'slug' - lookup_url_kwarg = 'slug' + lookup_field = "slug" + lookup_url_kwarg = "slug" metadata_class = FobiMetaData def has_value(self): - return None if self.action == 'metadata' else True + return None if self.action == "metadata" else True def get_queryset(self): """Get queryset. @@ -70,8 +68,8 @@ def get_queryset(self): kwargs = {} if not user_is_authenticated: - kwargs.update({'is_public': True}) - return FormEntry.objects.select_related('user').filter(**kwargs) + kwargs.update({"is_public": True}) + return FormEntry.objects.select_related("user").filter(**kwargs) def get_object(self): """Override get_object to get things done.""" @@ -81,8 +79,7 @@ def get_object(self): # In future we should try to get rid of additional queries # made double. declared_fields, declared_fields_metadata = get_declared_fields( - obj, - has_value=self.has_value() + obj, has_value=self.has_value() ) # Setting all the fields, one by one like they were attributes of @@ -98,14 +95,14 @@ def get_object(self): def get_serializer(self, *args, **kwargs): """Get the serializer.""" - if self.action in ('update', 'partial_update', 'metadata'): + if self.action in ("update", "partial_update", "metadata"): serializer_class = self.get_serializer_class() # kwargs['context'] = {'request': self.request} - kwargs['context'] = self.get_serializer_context() + kwargs["context"] = self.get_serializer_context() else: serializer_class = FormEntrySerializer # kwargs['context'] = {'request': self.request} - kwargs['context'] = self.get_serializer_context() + kwargs["context"] = self.get_serializer_context() serializer = serializer_class(*args, **kwargs) @@ -120,38 +117,35 @@ def get_serializer_class(self): serializer_class = get_serializer_class( form_entry=form_entry, request=self.request, - has_value=self.has_value() + has_value=self.has_value(), ) return serializer_class def update(self, request, *args, **kwargs): - partial = kwargs.pop('partial', False) + partial = kwargs.pop("partial", False) instance = self.get_object() - serializer = self.get_serializer(instance, - data=request.data, - partial=partial) + serializer = self.get_serializer( + instance, data=request.data, partial=partial + ) serializer.is_valid(raise_exception=True) self.perform_update(serializer) # Handle submitted form data by firing form handler plugins. self._handle_form_entry_data_submission( - form_entry=instance, - request=request, - serializer=serializer + form_entry=instance, request=request, serializer=serializer ) - if getattr(instance, '_prefetched_objects_cache', None): + if getattr(instance, "_prefetched_objects_cache", None): # If 'prefetch_related' has been applied to a queryset, we need to # forcibly invalidate the prefetch cache on the instance. instance._prefetched_objects_cache = {} return Response(serializer.data) - def _handle_form_entry_data_submission(self, - form_entry, - request, - serializer): + def _handle_form_entry_data_submission( + self, form_entry, request, serializer + ): """Handle form entry data submission.""" # Try to fetch only once. form_element_entries = form_entry.formelemententry_set.all() @@ -161,14 +155,12 @@ def _handle_form_entry_data_submission(self, form_entry=form_entry, request=request, serializer=serializer, - stage=CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA + stage=CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) # Fire plugin processors serializer = submit_plugin_form_data( - form_entry=form_entry, - request=request, - serializer=serializer + form_entry=form_entry, request=request, serializer=serializer ) # Fire form valid callbacks @@ -176,7 +168,7 @@ def _handle_form_entry_data_submission(self, form_entry=form_entry, request=request, serializer=serializer, - stage=CALLBACK_FORM_VALID + stage=CALLBACK_FORM_VALID, ) # Run all handlers @@ -184,18 +176,20 @@ def _handle_form_entry_data_submission(self, form_entry=form_entry, request=request, serializer=serializer, - form_element_entries=form_element_entries + form_element_entries=form_element_entries, ) # Warning that not everything went ok. if handler_errors: - _request = request \ - if isinstance(request, HttpRequest) \ + _request = ( + request + if isinstance(request, HttpRequest) else request._request + ) for handler_error in handler_errors: messages.warning( _request, - gettext("Error occurred: {0}.").format(handler_error) + gettext("Error occurred: {0}.").format(handler_error), ) # Fire post handler callbacks @@ -203,5 +197,5 @@ def _handle_form_entry_data_submission(self, form_entry=form_entry, request=request, serializer=serializer, - stage=CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS + stage=CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, ) diff --git a/src/fobi/contrib/apps/feincms_integration/__init__.py b/src/fobi/contrib/apps/feincms_integration/__init__.py index 83a4d0c78..e8d26a296 100644 --- a/src/fobi/contrib/apps/feincms_integration/__init__.py +++ b/src/fobi/contrib/apps/feincms_integration/__init__.py @@ -1,7 +1,7 @@ -__title__ = 'fobi.contrib.apps.feincms_integration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.apps.feincms_integration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.apps.feincms_integration.apps.Config' +default_app_config = "fobi.contrib.apps.feincms_integration.apps.Config" diff --git a/src/fobi/contrib/apps/feincms_integration/apps.py b/src/fobi/contrib/apps/feincms_integration/apps.py index 234be3e25..ede9827cb 100644 --- a/src/fobi/contrib/apps/feincms_integration/apps.py +++ b/src/fobi/contrib/apps/feincms_integration/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.feincms_integration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.feincms_integration.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.feincms_integration' - label = 'fobi_contrib_apps_feincms_integration' + name = "fobi.contrib.apps.feincms_integration" + label = "fobi_contrib_apps_feincms_integration" diff --git a/src/fobi/contrib/apps/feincms_integration/conf.py b/src/fobi/contrib/apps/feincms_integration/conf.py index 23a973a18..372711582 100644 --- a/src/fobi/contrib/apps/feincms_integration/conf.py +++ b/src/fobi/contrib/apps/feincms_integration/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.apps.feincms_integration.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.apps.feincms_integration.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,8 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_FEINCMS_INTEGRATION_{0}'.format(setting)): - return getattr(settings, - 'FOBI_FEINCMS_INTEGRATION_{0}'.format(setting)) + if hasattr(settings, "FOBI_FEINCMS_INTEGRATION_{0}".format(setting)): + return getattr(settings, "FOBI_FEINCMS_INTEGRATION_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/apps/feincms_integration/defaults.py b/src/fobi/contrib/apps/feincms_integration/defaults.py index 91d02d505..6c9df83c3 100644 --- a/src/fobi/contrib/apps/feincms_integration/defaults.py +++ b/src/fobi/contrib/apps/feincms_integration/defaults.py @@ -1,14 +1,14 @@ -__title__ = 'fobi.contrib.apps.feincms_integration.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.feincms_integration.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) -WIDGET_FORM_SENT_GET_PARAM = 'sent' +WIDGET_FORM_SENT_GET_PARAM = "sent" FORM_TEMPLATE_CHOICES = [] diff --git a/src/fobi/contrib/apps/feincms_integration/helpers.py b/src/fobi/contrib/apps/feincms_integration/helpers.py index 774badb60..c2b179bb9 100644 --- a/src/fobi/contrib/apps/feincms_integration/helpers.py +++ b/src/fobi/contrib/apps/feincms_integration/helpers.py @@ -1,14 +1,14 @@ -from fobi.integration.helpers import get_template_choices - from .settings import FORM_TEMPLATE_CHOICES, SUCCESS_PAGE_TEMPLATE_CHOICES -__title__ = 'fobi.contrib.apps.feincms_integration.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +from fobi.integration.helpers import get_template_choices + +__title__ = "fobi.contrib.apps.feincms_integration.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'get_form_template_choices', - 'get_success_page_template_choices', + "get_form_template_choices", + "get_success_page_template_choices", ) @@ -20,9 +20,7 @@ def get_form_template_choices(): :return list: """ return get_template_choices( - 'feincms_integration', - FORM_TEMPLATE_CHOICES, - 'form_template_choices' + "feincms_integration", FORM_TEMPLATE_CHOICES, "form_template_choices" ) @@ -32,7 +30,7 @@ def get_success_page_template_choices(): :return list: """ return get_template_choices( - 'feincms_integration', + "feincms_integration", SUCCESS_PAGE_TEMPLATE_CHOICES, - 'success_page_template_choices' + "success_page_template_choices", ) diff --git a/src/fobi/contrib/apps/feincms_integration/settings.py b/src/fobi/contrib/apps/feincms_integration/settings.py index fcfc70a6f..e156efaad 100644 --- a/src/fobi/contrib/apps/feincms_integration/settings.py +++ b/src/fobi/contrib/apps/feincms_integration/settings.py @@ -4,14 +4,14 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.apps.feincms_integration.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.feincms_integration.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) # ************************************************************** @@ -20,6 +20,6 @@ # ************************************************************** # ************************************************************** -WIDGET_FORM_SENT_GET_PARAM = get_setting('WIDGET_FORM_SENT_GET_PARAM') -FORM_TEMPLATE_CHOICES = get_setting('FORM_TEMPLATE_CHOICES') -SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting('SUCCESS_PAGE_TEMPLATE_CHOICES') +WIDGET_FORM_SENT_GET_PARAM = get_setting("WIDGET_FORM_SENT_GET_PARAM") +FORM_TEMPLATE_CHOICES = get_setting("FORM_TEMPLATE_CHOICES") +SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting("SUCCESS_PAGE_TEMPLATE_CHOICES") diff --git a/src/fobi/contrib/apps/feincms_integration/widgets.py b/src/fobi/contrib/apps/feincms_integration/widgets.py index 425edb06a..a158fb4e7 100644 --- a/src/fobi/contrib/apps/feincms_integration/widgets.py +++ b/src/fobi/contrib/apps/feincms_integration/widgets.py @@ -1,20 +1,20 @@ from django.db import models from django.utils.translation import gettext, gettext_lazy as _ - from six import python_2_unicode_compatible -from fobi.integration.processors import IntegrationProcessor - from .helpers import ( - get_form_template_choices, get_success_page_template_choices + get_form_template_choices, + get_success_page_template_choices, ) from .settings import WIDGET_FORM_SENT_GET_PARAM -__title__ = 'fobi.contrib.apps.feincms_integration.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiFormWidget',) +from fobi.integration.processors import IntegrationProcessor + +__title__ = "fobi.contrib.apps.feincms_integration.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiFormWidget",) @python_2_unicode_compatible @@ -31,9 +31,7 @@ class FobiFormWidget(models.Model, IntegrationProcessor): # The configuration fields form_entry = models.ForeignKey( - 'fobi.FormEntry', - verbose_name=_("Form"), - on_delete=models.CASCADE + "fobi.FormEntry", verbose_name=_("Form"), on_delete=models.CASCADE ) form_template_name = models.CharField( @@ -42,13 +40,13 @@ class FobiFormWidget(models.Model, IntegrationProcessor): null=True, blank=True, choices=get_form_template_choices(), - help_text=_("Template to render the form with.") + help_text=_("Template to render the form with."), ) hide_form_title = models.BooleanField( _("Hide form title"), default=False, - help_text=_("If checked, no form title is shown.") + help_text=_("If checked, no form title is shown."), ) form_title = models.CharField( @@ -56,7 +54,7 @@ class FobiFormWidget(models.Model, IntegrationProcessor): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form title.") + help_text=_("Overrides the default form title."), ) form_submit_button_text = models.CharField( @@ -64,7 +62,7 @@ class FobiFormWidget(models.Model, IntegrationProcessor): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form submit button text.") + help_text=_("Overrides the default form submit button text."), ) success_page_template_name = models.CharField( @@ -73,13 +71,13 @@ class FobiFormWidget(models.Model, IntegrationProcessor): null=True, blank=True, choices=get_success_page_template_choices(), - help_text=_("Template to render the success page with.") + help_text=_("Template to render the success page with."), ) hide_success_page_title = models.BooleanField( _("Hide success page title"), default=False, - help_text=_("If checked, no success page title is shown.") + help_text=_("If checked, no success page title is shown."), ) success_page_title = models.CharField( @@ -87,25 +85,25 @@ class FobiFormWidget(models.Model, IntegrationProcessor): max_length=255, null=True, blank=True, - help_text=_("Overrides the default success page title.") + help_text=_("Overrides the default success page title."), ) success_page_text = models.TextField( _("Succes page text"), null=True, blank=True, - help_text=_("Overrides the default success page text.") + help_text=_("Overrides the default success page text."), ) class Meta(object): """Meta options.""" abstract = True - app_label = 'fobi' + app_label = "fobi" # db_table = 'page_page_fobiformwidget' def __str__(self): - return gettext('Fobi form') + return gettext("Fobi form") def process(self, request, **kwargs): """This is where most of the form handling happens. @@ -117,9 +115,9 @@ def process(self, request, **kwargs): def render(self, **kwargs): """Render.""" - return getattr(self, 'rendered_output', '') + return getattr(self, "rendered_output", "") def finalize(self, request, response): """Finalize.""" # Always disable caches if this content type is used somewhere - response['Cache-Control'] = 'no-cache, must-revalidate' + response["Cache-Control"] = "no-cache, must-revalidate" diff --git a/src/fobi/contrib/apps/mezzanine_integration/__init__.py b/src/fobi/contrib/apps/mezzanine_integration/__init__.py index 7228db0b4..3f5cf0b9b 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/__init__.py +++ b/src/fobi/contrib/apps/mezzanine_integration/__init__.py @@ -1,7 +1,7 @@ -__title__ = 'fobi.contrib.apps.mezzanine_integration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.apps.mezzanine_integration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.apps.mezzanine_integration.apps.Config' +default_app_config = "fobi.contrib.apps.mezzanine_integration.apps.Config" diff --git a/src/fobi/contrib/apps/mezzanine_integration/admin.py b/src/fobi/contrib/apps/mezzanine_integration/admin.py index e27dd929b..65a04cd9a 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/admin.py +++ b/src/fobi/contrib/apps/mezzanine_integration/admin.py @@ -1,13 +1,12 @@ from django.contrib import admin - from mezzanine.pages.admin import PageAdmin from .models import FobiFormPage -__title__ = 'fobi.contrib.apps.mezzanine_integration.admin' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.mezzanine_integration.admin" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" admin.site.register(FobiFormPage, PageAdmin) diff --git a/src/fobi/contrib/apps/mezzanine_integration/apps.py b/src/fobi/contrib/apps/mezzanine_integration/apps.py index 5dbd3ba40..c14a285fb 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/apps.py +++ b/src/fobi/contrib/apps/mezzanine_integration/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.mezzanine_integration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.mezzanine_integration.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.mezzanine_integration' - label = 'fobi_contrib_apps_mezzanine_integration' + name = "fobi.contrib.apps.mezzanine_integration" + label = "fobi_contrib_apps_mezzanine_integration" diff --git a/src/fobi/contrib/apps/mezzanine_integration/conf.py b/src/fobi/contrib/apps/mezzanine_integration/conf.py index 26f0024ba..2e8de6e17 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/conf.py +++ b/src/fobi/contrib/apps/mezzanine_integration/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.apps.mezzanine_integration.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.apps.mezzanine_integration.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,10 +24,9 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_MEZZANINE_INTEGRATION_{0}'.format(setting)): + if hasattr(settings, "FOBI_MEZZANINE_INTEGRATION_{0}".format(setting)): return getattr( - settings, - 'FOBI_MEZZANINE_INTEGRATION_{0}'.format(setting) + settings, "FOBI_MEZZANINE_INTEGRATION_{0}".format(setting) ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/apps/mezzanine_integration/defaults.py b/src/fobi/contrib/apps/mezzanine_integration/defaults.py index cfac96382..333423c42 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/defaults.py +++ b/src/fobi/contrib/apps/mezzanine_integration/defaults.py @@ -1,14 +1,14 @@ -__title__ = 'fobi.contrib.apps.mezzanine_integration.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.mezzanine_integration.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) -WIDGET_FORM_SENT_GET_PARAM = 'sent' +WIDGET_FORM_SENT_GET_PARAM = "sent" FORM_TEMPLATE_CHOICES = [] diff --git a/src/fobi/contrib/apps/mezzanine_integration/helpers.py b/src/fobi/contrib/apps/mezzanine_integration/helpers.py index eaaf5fa58..2e342f554 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/helpers.py +++ b/src/fobi/contrib/apps/mezzanine_integration/helpers.py @@ -1,14 +1,14 @@ -from fobi.integration.helpers import get_template_choices - from .settings import FORM_TEMPLATE_CHOICES, SUCCESS_PAGE_TEMPLATE_CHOICES -__title__ = 'fobi.contrib.apps.mezzanine_integration.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +from fobi.integration.helpers import get_template_choices + +__title__ = "fobi.contrib.apps.mezzanine_integration.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'get_form_template_choices', - 'get_success_page_template_choices', + "get_form_template_choices", + "get_success_page_template_choices", ) @@ -20,9 +20,7 @@ def get_form_template_choices(): :return list: """ return get_template_choices( - 'mezzanine_integration', - FORM_TEMPLATE_CHOICES, - 'form_template_choices' + "mezzanine_integration", FORM_TEMPLATE_CHOICES, "form_template_choices" ) @@ -32,7 +30,7 @@ def get_success_page_template_choices(): :return list: """ return get_template_choices( - 'mezzanine_integration', + "mezzanine_integration", SUCCESS_PAGE_TEMPLATE_CHOICES, - 'success_page_template_choices' + "success_page_template_choices", ) diff --git a/src/fobi/contrib/apps/mezzanine_integration/models.py b/src/fobi/contrib/apps/mezzanine_integration/models.py index 2b5251f95..04a69773f 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/models.py +++ b/src/fobi/contrib/apps/mezzanine_integration/models.py @@ -1,21 +1,19 @@ -from six import python_2_unicode_compatible - from django.db import models from django.utils.translation import gettext, gettext_lazy as _ - from mezzanine.core.models import RichText from mezzanine.pages.models import Page +from six import python_2_unicode_compatible from .helpers import ( get_form_template_choices, get_success_page_template_choices, ) -__title__ = 'fobi.contrib.apps.mezzanine_integration.models' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiFormPage',) +__title__ = "fobi.contrib.apps.mezzanine_integration.models" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiFormPage",) @python_2_unicode_compatible @@ -27,9 +25,7 @@ class FobiFormPage(Page, RichText): """ form_entry = models.ForeignKey( - 'fobi.FormEntry', - verbose_name=_("Form"), - on_delete=models.CASCADE + "fobi.FormEntry", verbose_name=_("Form"), on_delete=models.CASCADE ) form_template_name = models.CharField( @@ -38,13 +34,13 @@ class FobiFormPage(Page, RichText): null=True, blank=True, choices=get_form_template_choices(), - help_text=_("Template to render the form with.") + help_text=_("Template to render the form with."), ) hide_form_title = models.BooleanField( _("Hide form title"), default=False, - help_text=_("If checked, no form title is shown.") + help_text=_("If checked, no form title is shown."), ) form_title = models.CharField( @@ -52,7 +48,7 @@ class FobiFormPage(Page, RichText): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form title.") + help_text=_("Overrides the default form title."), ) form_submit_button_text = models.CharField( @@ -60,7 +56,7 @@ class FobiFormPage(Page, RichText): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form submit button text.") + help_text=_("Overrides the default form submit button text."), ) success_page_template_name = models.CharField( @@ -69,13 +65,13 @@ class FobiFormPage(Page, RichText): null=True, blank=True, choices=get_success_page_template_choices(), - help_text=_("Template to render the success page with.") + help_text=_("Template to render the success page with."), ) hide_success_page_title = models.BooleanField( _("Hide success page title"), default=False, - help_text=_("If checked, no success page title is shown.") + help_text=_("If checked, no success page title is shown."), ) success_page_title = models.CharField( @@ -83,23 +79,23 @@ class FobiFormPage(Page, RichText): max_length=255, null=True, blank=True, - help_text=_("Overrides the default success page title.") + help_text=_("Overrides the default success page title."), ) success_page_text = models.TextField( _("Succes page text"), null=True, blank=True, - help_text=_("Overrides the default success page text.") + help_text=_("Overrides the default success page text."), ) class Meta(object): """Meta options.""" - app_label = 'fobi' + app_label = "fobi" verbose_name = _("Fobi form") verbose_name_plural = _("Fobi forms") # db_table = 'fobi_fobiformpage' def __str__(self): - return gettext('Fobi form') + return gettext("Fobi form") diff --git a/src/fobi/contrib/apps/mezzanine_integration/page_processors.py b/src/fobi/contrib/apps/mezzanine_integration/page_processors.py index c56113996..01df65c45 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/page_processors.py +++ b/src/fobi/contrib/apps/mezzanine_integration/page_processors.py @@ -1,18 +1,18 @@ # from mezzanine.conf import settings from mezzanine.pages.page_processors import processor_for -from fobi.integration.processors import IntegrationProcessor - from .models import FobiFormPage from .settings import WIDGET_FORM_SENT_GET_PARAM -__title__ = 'fobi.contrib.apps.mezzanine_integration.page_processors' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +from fobi.integration.processors import IntegrationProcessor + +__title__ = "fobi.contrib.apps.mezzanine_integration.page_processors" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'FobiFormProcessor', - 'process_fobi_form', + "FobiFormProcessor", + "process_fobi_form", ) @@ -42,5 +42,5 @@ def process_fobi_form(request, page): return response return { - 'fobi_form_response': getattr(fobi_form_processor, 'rendered_output') + "fobi_form_response": getattr(fobi_form_processor, "rendered_output") } diff --git a/src/fobi/contrib/apps/mezzanine_integration/settings.py b/src/fobi/contrib/apps/mezzanine_integration/settings.py index b8f3e0f04..8b87b6e33 100644 --- a/src/fobi/contrib/apps/mezzanine_integration/settings.py +++ b/src/fobi/contrib/apps/mezzanine_integration/settings.py @@ -4,14 +4,14 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.apps.mezzanine_integration.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.mezzanine_integration.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) # ************************************************************** @@ -20,6 +20,6 @@ # ************************************************************** # ************************************************************** -WIDGET_FORM_SENT_GET_PARAM = get_setting('WIDGET_FORM_SENT_GET_PARAM') -FORM_TEMPLATE_CHOICES = get_setting('FORM_TEMPLATE_CHOICES') -SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting('SUCCESS_PAGE_TEMPLATE_CHOICES') +WIDGET_FORM_SENT_GET_PARAM = get_setting("WIDGET_FORM_SENT_GET_PARAM") +FORM_TEMPLATE_CHOICES = get_setting("FORM_TEMPLATE_CHOICES") +SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting("SUCCESS_PAGE_TEMPLATE_CHOICES") diff --git a/src/fobi/contrib/apps/wagtail_integration/__init__.py b/src/fobi/contrib/apps/wagtail_integration/__init__.py index 34d9ac7fc..e5f7640a1 100644 --- a/src/fobi/contrib/apps/wagtail_integration/__init__.py +++ b/src/fobi/contrib/apps/wagtail_integration/__init__.py @@ -1,7 +1,7 @@ -__title__ = 'fobi.contrib.apps.wagtail_integration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.apps.wagtail_integration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.apps.wagtail_integration.apps.Config' +default_app_config = "fobi.contrib.apps.wagtail_integration.apps.Config" diff --git a/src/fobi/contrib/apps/wagtail_integration/abstract.py b/src/fobi/contrib/apps/wagtail_integration/abstract.py index 28f20628b..c9c3e56de 100644 --- a/src/fobi/contrib/apps/wagtail_integration/abstract.py +++ b/src/fobi/contrib/apps/wagtail_integration/abstract.py @@ -21,11 +21,11 @@ ) from .settings import WIDGET_FORM_SENT_GET_PARAM -__title__ = 'fobi.contrib.apps.wagtail_integration.abstract' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('AbstractFobiFormPage',) +__title__ = "fobi.contrib.apps.wagtail_integration.abstract" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("AbstractFobiFormPage",) class FobiFormProcessor(IntegrationProcessor): @@ -37,9 +37,7 @@ class FobiFormProcessor(IntegrationProcessor): def get_context_data(self, request, instance, **kwargs): """Get context data.""" context_data = super(FobiFormProcessor, self).get_context_data( - request, - instance, - **kwargs + request, instance, **kwargs ) page_context_data = instance.get_context(request) context_data.update(page_context_data) @@ -82,9 +80,7 @@ class AbstractFobiFormPage(Page): """ form_entry = models.ForeignKey( - 'fobi.FormEntry', - verbose_name=_("Form"), - on_delete=models.PROTECT + "fobi.FormEntry", verbose_name=_("Form"), on_delete=models.PROTECT ) form_template_name = models.CharField( @@ -97,13 +93,13 @@ class AbstractFobiFormPage(Page): "Choose an alternative template to render the form with. Leave " "blank to use the default for this page type (e.g. " "fobi_form_page.html)." - ) + ), ) hide_form_title = models.BooleanField( _("Hide form title"), default=False, - help_text=_("If checked, no form title is shown.") + help_text=_("If checked, no form title is shown."), ) form_title = models.CharField( @@ -111,7 +107,7 @@ class AbstractFobiFormPage(Page): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form title.") + help_text=_("Overrides the default form title."), ) form_submit_button_text = models.CharField( @@ -119,7 +115,7 @@ class AbstractFobiFormPage(Page): max_length=255, null=True, blank=True, - help_text=_("Overrides the default form submit button text.") + help_text=_("Overrides the default form submit button text."), ) success_page_template_name = models.CharField( @@ -132,13 +128,13 @@ class AbstractFobiFormPage(Page): "Choose an alternative template to render the success page with. " "Leave blank to use the default for this page type (e.g. " "fobi_form_page_success.html)." - ) + ), ) hide_success_page_title = models.BooleanField( _("Hide success page title"), default=False, - help_text=_("If checked, no success page title is shown.") + help_text=_("If checked, no success page title is shown."), ) success_page_title = models.CharField( @@ -146,63 +142,63 @@ class AbstractFobiFormPage(Page): max_length=255, null=True, blank=True, - help_text=_("Overrides the default success page title.") + help_text=_("Overrides the default success page title."), ) success_page_text = models.TextField( _("Success page text"), null=True, blank=True, - help_text=_("Overrides the default success page text.") + help_text=_("Overrides the default success page text."), ) form_page_panels = [ - FieldPanel('hide_form_title'), - FieldPanel('form_title'), - FieldPanel('form_entry'), - FieldPanel('form_submit_button_text'), + FieldPanel("hide_form_title"), + FieldPanel("form_title"), + FieldPanel("form_entry"), + FieldPanel("form_submit_button_text"), ] if get_form_template_choices(): - form_page_panels.append(FieldPanel('form_template_name')) + form_page_panels.append(FieldPanel("form_template_name")) success_page_panels = [ - FieldPanel('hide_success_page_title'), - FieldPanel('success_page_title'), - FieldPanel('success_page_text'), + FieldPanel("hide_success_page_title"), + FieldPanel("success_page_title"), + FieldPanel("success_page_text"), ] if get_success_page_template_choices(): - success_page_panels.append(FieldPanel('success_page_template_name')) + success_page_panels.append(FieldPanel("success_page_template_name")) content_panels = Page.content_panels + [ - MultiFieldPanel(form_page_panels, heading=_('Form page')), - MultiFieldPanel(success_page_panels, heading=_('Success page')), + MultiFieldPanel(form_page_panels, heading=_("Form page")), + MultiFieldPanel(success_page_panels, heading=_("Success page")), ] preview_modes = [ - ('form', _('Form page')), - ('success', _('Success page')), + ("form", _("Form page")), + ("success", _("Success page")), ] class Meta(object): """Meta options.""" - verbose_name = _('Fobi form page') - verbose_name_plural = _('Fobi form pages') + verbose_name = _("Fobi form page") + verbose_name_plural = _("Fobi form pages") abstract = True def __init__(self, *args, **kwargs): super(AbstractFobiFormPage, self).__init__(*args, **kwargs) # Some wagtail magic... - if not hasattr(self, 'form_template'): + if not hasattr(self, "form_template"): name, ext = os.path.splitext(self.template) - self.form_template = name + '_form' + ext + self.form_template = name + "_form" + ext - if not hasattr(self, 'success_template'): + if not hasattr(self, "success_template"): name, ext = os.path.splitext(self.template) - self.success_template = name + '_form_success' + ext + self.success_template = name + "_form_success" + ext def get_form_template(self, request): """Get an alternative template name. @@ -240,7 +236,7 @@ def serve(self, request, *args, **kwargs): def serve_preview(self, request, mode): """Serve the page in Wagtail's 'preview' mode.""" - if mode == 'success': + if mode == "success": fobi_form_processor = FobiFormProcessor() # TODO: Returning HttpResponse seems dirty. See if it can be @@ -250,6 +246,5 @@ def serve_preview(self, request, mode): ) else: return super(AbstractFobiFormPage, self).serve_preview( - request, - mode + request, mode ) diff --git a/src/fobi/contrib/apps/wagtail_integration/apps.py b/src/fobi/contrib/apps/wagtail_integration/apps.py index 66636b4b3..0280c8ac6 100644 --- a/src/fobi/contrib/apps/wagtail_integration/apps.py +++ b/src/fobi/contrib/apps/wagtail_integration/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.apps.wagtail_integration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.apps.wagtail_integration.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.apps.wagtail_integration' - label = 'fobi_contrib_apps_wagtail_integration' + name = "fobi.contrib.apps.wagtail_integration" + label = "fobi_contrib_apps_wagtail_integration" diff --git a/src/fobi/contrib/apps/wagtail_integration/conf.py b/src/fobi/contrib/apps/wagtail_integration/conf.py index f0b66962e..d7c93bb0b 100644 --- a/src/fobi/contrib/apps/wagtail_integration/conf.py +++ b/src/fobi/contrib/apps/wagtail_integration/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.apps.wagtail_integration.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.apps.wagtail_integration.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,10 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_WAGTAIL_INTEGRATION_{0}'.format(setting)): - return getattr( - settings, - 'FOBI_WAGTAIL_INTEGRATION_{0}'.format(setting) - ) + if hasattr(settings, "FOBI_WAGTAIL_INTEGRATION_{0}".format(setting)): + return getattr(settings, "FOBI_WAGTAIL_INTEGRATION_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/apps/wagtail_integration/defaults.py b/src/fobi/contrib/apps/wagtail_integration/defaults.py index cd597df8d..c00e79db4 100644 --- a/src/fobi/contrib/apps/wagtail_integration/defaults.py +++ b/src/fobi/contrib/apps/wagtail_integration/defaults.py @@ -1,14 +1,14 @@ -__title__ = 'fobi.contrib.apps.wagtail_integration.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.wagtail_integration.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) -WIDGET_FORM_SENT_GET_PARAM = 'sent' +WIDGET_FORM_SENT_GET_PARAM = "sent" FORM_TEMPLATE_CHOICES = () diff --git a/src/fobi/contrib/apps/wagtail_integration/helpers.py b/src/fobi/contrib/apps/wagtail_integration/helpers.py index 94f17a962..b4917fc0c 100644 --- a/src/fobi/contrib/apps/wagtail_integration/helpers.py +++ b/src/fobi/contrib/apps/wagtail_integration/helpers.py @@ -1,14 +1,14 @@ -from fobi.integration.helpers import get_template_choices - from .settings import FORM_TEMPLATE_CHOICES, SUCCESS_PAGE_TEMPLATE_CHOICES -__title__ = 'fobi.contrib.apps.wagtail_integration.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +from fobi.integration.helpers import get_template_choices + +__title__ = "fobi.contrib.apps.wagtail_integration.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'get_form_template_choices', - 'get_success_page_template_choices', + "get_form_template_choices", + "get_success_page_template_choices", ) @@ -20,9 +20,7 @@ def get_form_template_choices(): :return list: """ return get_template_choices( - 'wagtail_integration', - FORM_TEMPLATE_CHOICES, - 'form_template_choices' + "wagtail_integration", FORM_TEMPLATE_CHOICES, "form_template_choices" ) @@ -32,7 +30,7 @@ def get_success_page_template_choices(): :return list: """ return get_template_choices( - 'wagtail_integration', + "wagtail_integration", SUCCESS_PAGE_TEMPLATE_CHOICES, - 'success_page_template_choices' + "success_page_template_choices", ) diff --git a/src/fobi/contrib/apps/wagtail_integration/models.py b/src/fobi/contrib/apps/wagtail_integration/models.py index 8d9e09cf9..119fda6bc 100644 --- a/src/fobi/contrib/apps/wagtail_integration/models.py +++ b/src/fobi/contrib/apps/wagtail_integration/models.py @@ -2,15 +2,15 @@ from .abstract import AbstractFobiFormPage -__title__ = 'fobi.contrib.apps.wagtail_integration.models' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiFormPage',) +__title__ = "fobi.contrib.apps.wagtail_integration.models" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiFormPage",) class FobiFormPage(AbstractFobiFormPage): """Fobi form page.""" - form_template = 'wagtail_integration/fobi_form_page.html' - success_template = 'wagtail_integration/fobi_form_page_success.html' + form_template = "wagtail_integration/fobi_form_page.html" + success_template = "wagtail_integration/fobi_form_page_success.html" diff --git a/src/fobi/contrib/apps/wagtail_integration/settings.py b/src/fobi/contrib/apps/wagtail_integration/settings.py index f4614e9b4..8d0413fc2 100644 --- a/src/fobi/contrib/apps/wagtail_integration/settings.py +++ b/src/fobi/contrib/apps/wagtail_integration/settings.py @@ -4,14 +4,14 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.apps.wagtail_integration.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.apps.wagtail_integration.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'WIDGET_FORM_SENT_GET_PARAM', - 'FORM_TEMPLATE_CHOICES', - 'SUCCESS_PAGE_TEMPLATE_CHOICES', + "WIDGET_FORM_SENT_GET_PARAM", + "FORM_TEMPLATE_CHOICES", + "SUCCESS_PAGE_TEMPLATE_CHOICES", ) # ************************************************************** @@ -20,6 +20,6 @@ # ************************************************************** # ************************************************************** -WIDGET_FORM_SENT_GET_PARAM = get_setting('WIDGET_FORM_SENT_GET_PARAM') -FORM_TEMPLATE_CHOICES = get_setting('FORM_TEMPLATE_CHOICES') -SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting('SUCCESS_PAGE_TEMPLATE_CHOICES') +WIDGET_FORM_SENT_GET_PARAM = get_setting("WIDGET_FORM_SENT_GET_PARAM") +FORM_TEMPLATE_CHOICES = get_setting("FORM_TEMPLATE_CHOICES") +SUCCESS_PAGE_TEMPLATE_CHOICES = get_setting("SUCCESS_PAGE_TEMPLATE_CHOICES") diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/__init__.py b/src/fobi/contrib/plugins/form_elements/content/content_image/__init__.py index 79e18b7ad..1c2a9b2b1 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_image.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.content." "content_image.apps.Config" +) UID = "content_image" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/apps.py b/src/fobi/contrib/plugins/form_elements/content/content_image/apps.py index ac42e6949..cfd91ba33 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/apps.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.content.content_image' - label = 'fobi_contrib_plugins_form_elements_content_content_image' + name = "fobi.contrib.plugins.form_elements.content.content_image" + label = "fobi_contrib_plugins_form_elements_content_content_image" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/base.py b/src/fobi/contrib/plugins/form_elements/content/content_image/base.py index 781885e78..1babddddc 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/base.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/base.py @@ -6,24 +6,25 @@ from django.conf import settings from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ - from nonefield.fields import NoneField -from fobi.base import FormElementPlugin -from fobi.helpers import delete_file, clone_file - from . import UID from .forms import ContentImageForm from .helpers import get_crop_filter from .settings import ( - FIT_METHOD_FIT_WIDTH, FIT_METHOD_FIT_HEIGHT, IMAGES_UPLOAD_DIR + FIT_METHOD_FIT_HEIGHT, + FIT_METHOD_FIT_WIDTH, + IMAGES_UPLOAD_DIR, ) -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImagePlugin',) +from fobi.base import FormElementPlugin +from fobi.helpers import clone_file, delete_file + +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImagePlugin",) class ContentImagePlugin(FormElementPlugin): @@ -55,7 +56,7 @@ def clone_plugin_data(self, entry): cloned_image = clone_file( IMAGES_UPLOAD_DIR, self.data.file, relative_path=True ) - return self.get_cloned_plugin_data(update={'file': cloned_image}) + return self.get_cloned_plugin_data(update={"file": cloned_image}) def get_raw_data(self): """Get raw data. @@ -64,16 +65,16 @@ def get_raw_data(self): """ return OrderedDict( ( - ('file', "{}{}".format(settings.MEDIA_URL, self.data.file)), - ('alt', self.data.alt), - ('fit_method', self.data.fit_method), - ('size', self.data.size), + ("file", "{}{}".format(settings.MEDIA_URL, self.data.file)), + ("alt", self.data.alt), + ("fit_method", self.data.fit_method), + ("size", self.data.size), ) ) def get_rendered_image(self): """Get rendered image.""" - width, height = self.data.size.split('x') + width, height = self.data.size.split("x") crop = get_crop_filter(self.data.fit_method) if FIT_METHOD_FIT_WIDTH == self.data.fit_method: @@ -84,21 +85,22 @@ def get_rendered_image(self): thumb_size = (width, height) context = { - 'plugin': self, - 'MEDIA_URL': settings.MEDIA_URL, - 'crop': crop, - 'thumb_size': thumb_size + "plugin": self, + "MEDIA_URL": settings.MEDIA_URL, + "crop": crop, + "thumb_size": thumb_size, } - rendered_image = render_to_string('content_image/render.html', context) + rendered_image = render_to_string("content_image/render.html", context) return rendered_image - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'initial': self.get_rendered_image(), - 'required': False, - 'label': '', + "initial": self.get_rendered_image(), + "required": False, + "label": "", } return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/conf.py b/src/fobi/contrib/plugins/form_elements/content/content_image/conf.py index 90fa46dc5..11e28f3c1 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/conf.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,9 +25,9 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_CONTENT_IMAGE_{0}'.format(setting)): + if hasattr(settings, "FOBI_PLUGIN_CONTENT_IMAGE_{0}".format(setting)): return getattr( - settings, 'FOBI_PLUGIN_CONTENT_IMAGE_{0}'.format(setting) + settings, "FOBI_PLUGIN_CONTENT_IMAGE_{0}".format(setting) ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/defaults.py b/src/fobi/contrib/plugins/form_elements/content/content_image/defaults.py index d83703d29..945956abe 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/defaults.py @@ -1,34 +1,34 @@ from django.utils.translation import gettext_lazy as _ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DEFAULT_FIT_METHOD', - 'DEFAULT_SIZE', - 'FIT_METHOD_CROP_CENTER', - 'FIT_METHOD_CROP_SCALE', - 'FIT_METHOD_CROP_SMART', - 'FIT_METHOD_FIT_HEIGHT', - 'FIT_METHOD_FIT_WIDTH', - 'FIT_METHODS_CHOICES', - 'FIT_METHODS_CHOICES_WITH_EMPTY_OPTION', - 'IMAGES_UPLOAD_DIR', - 'SIZE_100x100', - 'SIZE_200x200', - 'SIZE_300x300', - 'SIZE_400x400', - 'SIZE_500x500', - 'SIZE_600x600', - 'SIZES', + "DEFAULT_FIT_METHOD", + "DEFAULT_SIZE", + "FIT_METHOD_CROP_CENTER", + "FIT_METHOD_CROP_SCALE", + "FIT_METHOD_CROP_SMART", + "FIT_METHOD_FIT_HEIGHT", + "FIT_METHOD_FIT_WIDTH", + "FIT_METHODS_CHOICES", + "FIT_METHODS_CHOICES_WITH_EMPTY_OPTION", + "IMAGES_UPLOAD_DIR", + "SIZE_100x100", + "SIZE_200x200", + "SIZE_300x300", + "SIZE_400x400", + "SIZE_500x500", + "SIZE_600x600", + "SIZES", ) -FIT_METHOD_CROP_SMART = 'smart' -FIT_METHOD_CROP_CENTER = 'center' -FIT_METHOD_CROP_SCALE = 'scale' -FIT_METHOD_FIT_WIDTH = 'fit_width' -FIT_METHOD_FIT_HEIGHT = 'fit_height' +FIT_METHOD_CROP_SMART = "smart" +FIT_METHOD_CROP_CENTER = "center" +FIT_METHOD_CROP_SCALE = "scale" +FIT_METHOD_FIT_WIDTH = "fit_width" +FIT_METHOD_FIT_HEIGHT = "fit_height" DEFAULT_FIT_METHOD = FIT_METHOD_CROP_CENTER @@ -40,19 +40,20 @@ (FIT_METHOD_FIT_HEIGHT, _("Fit height")), ) -FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = [('', '---------')] + \ - list(FIT_METHODS_CHOICES) +FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = [("", "---------")] + list( + FIT_METHODS_CHOICES +) -SIZE_100x100 = '100x100' -SIZE_200x200 = '200x200' -SIZE_200x300 = '200x300' -SIZE_300x200 = '300x200' -SIZE_300x300 = '300x300' -SIZE_300x400 = '300x400' -SIZE_400x300 = '400x300' -SIZE_400x400 = '400x400' -SIZE_500x500 = '500x500' -SIZE_600x600 = '600x600' +SIZE_100x100 = "100x100" +SIZE_200x200 = "200x200" +SIZE_200x300 = "200x300" +SIZE_300x200 = "300x200" +SIZE_300x300 = "300x300" +SIZE_300x400 = "300x400" +SIZE_400x300 = "400x300" +SIZE_400x400 = "400x400" +SIZE_500x500 = "500x500" +SIZE_600x600 = "600x600" DEFAULT_SIZE = SIZE_500x500 @@ -69,4 +70,4 @@ (SIZE_600x600, SIZE_600x600), ) -IMAGES_UPLOAD_DIR = 'fobi_plugins/content_image' +IMAGES_UPLOAD_DIR = "fobi_plugins/content_image" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/content/content_image/fobi_form_elements.py index 90816bdb1..b552a6689 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ContentImagePlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImagePlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_image." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImagePlugin",) form_element_plugin_registry.register(ContentImagePlugin) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/forms.py b/src/fobi/contrib/plugins/form_elements/content/content_image/forms.py index c3364586c..8e1dd6730 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/forms.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/forms.py @@ -1,22 +1,22 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from fobi.base import BasePluginForm, get_theme -from fobi.helpers import handle_uploaded_file - from .settings import ( - FIT_METHODS_CHOICES, DEFAULT_FIT_METHOD, DEFAULT_SIZE, - SIZES, + FIT_METHODS_CHOICES, IMAGES_UPLOAD_DIR, + SIZES, ) -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImageForm',) +from fobi.base import BasePluginForm, get_theme +from fobi.helpers import handle_uploaded_file + +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImageForm",) theme = get_theme(request=None, as_instance=True) @@ -41,8 +41,8 @@ class ContentImageForm(forms.Form, BasePluginForm): label=_("Alt text"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) fit_method = forms.ChoiceField( label=_("Fit method"), @@ -50,8 +50,8 @@ class ContentImageForm(forms.Form, BasePluginForm): initial=DEFAULT_FIT_METHOD, choices=FIT_METHODS_CHOICES, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) size = forms.ChoiceField( label=_("Size"), @@ -59,13 +59,13 @@ class ContentImageForm(forms.Form, BasePluginForm): initial=DEFAULT_SIZE, choices=SIZES, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def save_plugin_data(self, request=None): """Saving the plugin data and moving the file.""" - file_path = self.cleaned_data.get('file', None) + file_path = self.cleaned_data.get("file", None) if file_path: saved_image = handle_uploaded_file(IMAGES_UPLOAD_DIR, file_path) - self.cleaned_data['file'] = saved_image + self.cleaned_data["file"] = saved_image diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/helpers.py b/src/fobi/contrib/plugins/form_elements/content/content_image/helpers.py index a6e192245..17038c556 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/helpers.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/helpers.py @@ -4,24 +4,30 @@ from django.conf import settings from .settings import ( - IMAGES_UPLOAD_DIR, FIT_METHOD_CROP_SMART, FIT_METHOD_CROP_CENTER, - FIT_METHOD_CROP_SCALE + FIT_METHOD_CROP_CENTER, + FIT_METHOD_CROP_SCALE, + FIT_METHOD_CROP_SMART, + IMAGES_UPLOAD_DIR, ) -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_crop_filter',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_crop_filter",) logger = logging.getLogger(__file__) -IMAGES_UPLOAD_DIR_ABSOLUTE_PATH = os.path.join(settings.MEDIA_ROOT, - IMAGES_UPLOAD_DIR) +IMAGES_UPLOAD_DIR_ABSOLUTE_PATH = os.path.join( + settings.MEDIA_ROOT, IMAGES_UPLOAD_DIR +) def get_crop_filter(fit_method): """Get crop filter.""" - if fit_method in (FIT_METHOD_CROP_SMART, FIT_METHOD_CROP_CENTER, - FIT_METHOD_CROP_SCALE): + if fit_method in ( + FIT_METHOD_CROP_SMART, + FIT_METHOD_CROP_CENTER, + FIT_METHOD_CROP_SCALE, + ): return fit_method diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image/settings.py b/src/fobi/contrib/plugins/form_elements/content/content_image/settings.py index 60e99fe4a..65f5ae588 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image/settings.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image/settings.py @@ -12,46 +12,47 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_image.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DEFAULT_FIT_METHOD', - 'DEFAULT_SIZE', - 'FIT_METHOD_CROP_CENTER', - 'FIT_METHOD_CROP_SCALE', - 'FIT_METHOD_CROP_SMART', - 'FIT_METHOD_FIT_HEIGHT', - 'FIT_METHOD_FIT_WIDTH', - 'FIT_METHODS_CHOICES', - 'FIT_METHODS_CHOICES_WITH_EMPTY_OPTION', - 'IMAGES_UPLOAD_DIR', - 'SIZE_100x100', - 'SIZE_200x200', - 'SIZE_300x300', - 'SIZE_400x400', - 'SIZE_500x500', - 'SIZE_600x600', - 'SIZES', + "DEFAULT_FIT_METHOD", + "DEFAULT_SIZE", + "FIT_METHOD_CROP_CENTER", + "FIT_METHOD_CROP_SCALE", + "FIT_METHOD_CROP_SMART", + "FIT_METHOD_FIT_HEIGHT", + "FIT_METHOD_FIT_WIDTH", + "FIT_METHODS_CHOICES", + "FIT_METHODS_CHOICES_WITH_EMPTY_OPTION", + "IMAGES_UPLOAD_DIR", + "SIZE_100x100", + "SIZE_200x200", + "SIZE_300x300", + "SIZE_400x400", + "SIZE_500x500", + "SIZE_600x600", + "SIZES", ) -FIT_METHOD_CROP_SMART = get_setting('FIT_METHOD_CROP_SMART') -FIT_METHOD_CROP_CENTER = get_setting('FIT_METHOD_CROP_CENTER') -FIT_METHOD_CROP_SCALE = get_setting('FIT_METHOD_CROP_SCALE') -FIT_METHOD_FIT_WIDTH = get_setting('FIT_METHOD_FIT_WIDTH') -FIT_METHOD_FIT_HEIGHT = get_setting('FIT_METHOD_FIT_HEIGHT') -DEFAULT_FIT_METHOD = get_setting('DEFAULT_FIT_METHOD') -FIT_METHODS_CHOICES = get_setting('FIT_METHODS_CHOICES') -FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = \ - get_setting('FIT_METHODS_CHOICES_WITH_EMPTY_OPTION') -SIZE_100x100 = get_setting('SIZE_100x100') -SIZE_200x200 = get_setting('SIZE_200x200') -SIZE_300x300 = get_setting('SIZE_300x300') -SIZE_400x400 = get_setting('SIZE_400x400') -SIZE_500x500 = get_setting('SIZE_500x500') -SIZE_600x600 = get_setting('SIZE_600x600') -DEFAULT_SIZE = get_setting('DEFAULT_SIZE') -SIZES = get_setting('SIZES') -IMAGES_UPLOAD_DIR = get_setting('IMAGES_UPLOAD_DIR') +FIT_METHOD_CROP_SMART = get_setting("FIT_METHOD_CROP_SMART") +FIT_METHOD_CROP_CENTER = get_setting("FIT_METHOD_CROP_CENTER") +FIT_METHOD_CROP_SCALE = get_setting("FIT_METHOD_CROP_SCALE") +FIT_METHOD_FIT_WIDTH = get_setting("FIT_METHOD_FIT_WIDTH") +FIT_METHOD_FIT_HEIGHT = get_setting("FIT_METHOD_FIT_HEIGHT") +DEFAULT_FIT_METHOD = get_setting("DEFAULT_FIT_METHOD") +FIT_METHODS_CHOICES = get_setting("FIT_METHODS_CHOICES") +FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = get_setting( + "FIT_METHODS_CHOICES_WITH_EMPTY_OPTION" +) +SIZE_100x100 = get_setting("SIZE_100x100") +SIZE_200x200 = get_setting("SIZE_200x200") +SIZE_300x300 = get_setting("SIZE_300x300") +SIZE_400x400 = get_setting("SIZE_400x400") +SIZE_500x500 = get_setting("SIZE_500x500") +SIZE_600x600 = get_setting("SIZE_600x600") +DEFAULT_SIZE = get_setting("DEFAULT_SIZE") +SIZES = get_setting("SIZES") +IMAGES_UPLOAD_DIR = get_setting("IMAGES_UPLOAD_DIR") diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/__init__.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/__init__.py index 50630e4e3..4e21d7af4 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image_url" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_image_url.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.content." + "content_image_url.apps.Config" +) UID = "content_image_url" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/apps.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/apps.py index 135665896..786c71c4f 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/apps.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image_url.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.content.content_image_url' - label = 'fobi_contrib_plugins_form_elements_content_content_image_url' + name = "fobi.contrib.plugins.form_elements.content.content_image_url" + label = "fobi_contrib_plugins_form_elements_content_content_image_url" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/base.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/base.py index 8a460245e..8869ec7d5 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/base.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/base.py @@ -5,23 +5,19 @@ from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ - from nonefield.fields import NoneField -from fobi.base import FormElementPlugin - from . import UID from .forms import ContentImageURLForm -from .settings import ( - FIT_METHOD_FIT_WIDTH, - FIT_METHOD_FIT_HEIGHT, -) +from .settings import FIT_METHOD_FIT_HEIGHT, FIT_METHOD_FIT_WIDTH + +from fobi.base import FormElementPlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImageURLPlugin',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image_url.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImageURLPlugin",) class ContentImageURLPlugin(FormElementPlugin): @@ -46,16 +42,16 @@ def get_raw_data(self): """ return OrderedDict( ( - ('url', self.data.url), - ('alt', self.data.alt), - ('fit_method', self.data.fit_method), - ('size', self.data.size), + ("url", self.data.url), + ("alt", self.data.alt), + ("fit_method", self.data.fit_method), + ("size", self.data.size), ) ) def get_rendered_image(self): """Get rendered image.""" - width, height = self.data.size.split('x') + width, height = self.data.size.split("x") if FIT_METHOD_FIT_WIDTH == self.data.fit_method: thumb_size = (width, 0) @@ -65,22 +61,22 @@ def get_rendered_image(self): thumb_size = (width, height) context = { - 'plugin': self, - 'thumb_size': thumb_size, + "plugin": self, + "thumb_size": thumb_size, } rendered_image = render_to_string( - 'content_image_url/render.html', - context + "content_image_url/render.html", context ) return rendered_image - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'initial': self.get_rendered_image(), - 'required': False, - 'label': '', + "initial": self.get_rendered_image(), + "required": False, + "label": "", } return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/conf.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/conf.py index efb176e95..ec7a27f8d 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/conf.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_image_url.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,9 +25,9 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_CONTENT_IMAGE_URL_{0}'.format(setting)): + if hasattr(settings, "FOBI_PLUGIN_CONTENT_IMAGE_URL_{0}".format(setting)): return getattr( - settings, 'FOBI_PLUGIN_CONTENT_IMAGE_URL_{0}'.format(setting) + settings, "FOBI_PLUGIN_CONTENT_IMAGE_URL_{0}".format(setting) ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/defaults.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/defaults.py index 9954684c5..60fbaaf03 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/defaults.py @@ -1,25 +1,26 @@ from django.utils.translation import gettext_lazy as _ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url.' \ - 'defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_image_url." "defaults" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DEFAULT_FIT_METHOD', - 'DEFAULT_SIZE', - 'SIZE_100x100', - 'SIZE_200x200', - 'SIZE_300x300', - 'SIZE_400x400', - 'SIZE_500x500', - 'SIZE_600x600', - 'SIZES', + "DEFAULT_FIT_METHOD", + "DEFAULT_SIZE", + "SIZE_100x100", + "SIZE_200x200", + "SIZE_300x300", + "SIZE_400x400", + "SIZE_500x500", + "SIZE_600x600", + "SIZES", ) -FIT_METHOD_FIT_WIDTH = 'fit_width' -FIT_METHOD_FIT_HEIGHT = 'fit_height' +FIT_METHOD_FIT_WIDTH = "fit_width" +FIT_METHOD_FIT_HEIGHT = "fit_height" DEFAULT_FIT_METHOD = FIT_METHOD_FIT_WIDTH @@ -28,19 +29,20 @@ (FIT_METHOD_FIT_HEIGHT, _("Fit height")), ) -FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = [('', '---------')] + \ - list(FIT_METHODS_CHOICES) - -SIZE_100x100 = '100x100' -SIZE_200x200 = '200x200' -SIZE_200x300 = '200x300' -SIZE_300x200 = '300x200' -SIZE_300x300 = '300x300' -SIZE_300x400 = '300x400' -SIZE_400x300 = '400x300' -SIZE_400x400 = '400x400' -SIZE_500x500 = '500x500' -SIZE_600x600 = '600x600' +FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = [("", "---------")] + list( + FIT_METHODS_CHOICES +) + +SIZE_100x100 = "100x100" +SIZE_200x200 = "200x200" +SIZE_200x300 = "200x300" +SIZE_300x200 = "300x200" +SIZE_300x300 = "300x300" +SIZE_300x400 = "300x400" +SIZE_400x300 = "400x300" +SIZE_400x400 = "400x400" +SIZE_500x500 = "500x500" +SIZE_600x600 = "600x600" DEFAULT_SIZE = SIZE_500x500 diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/fobi_form_elements.py index b075f4d2f..2645e5e99 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ContentImageURLPlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImageURLPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_image." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImageURLPlugin",) form_element_plugin_registry.register(ContentImageURLPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/forms.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/forms.py index d85307533..74b168a04 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/forms.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/forms.py @@ -1,22 +1,25 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from fobi.base import BasePluginForm, get_theme -# from fobi.widgets import NumberInput - from .settings import ( - FIT_METHODS_CHOICES, DEFAULT_FIT_METHOD, DEFAULT_SIZE, + FIT_METHODS_CHOICES, SIZES, ) -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url.' \ - 'forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentImageURLForm',) +from fobi.base import BasePluginForm, get_theme + +# from fobi.widgets import NumberInput + + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_image_url." "forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentImageURLForm",) theme = get_theme(request=None, as_instance=True) @@ -35,15 +38,15 @@ class ContentImageURLForm(forms.Form, BasePluginForm): label=_("URL"), required=True, widget=forms.widgets.URLInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) alt = forms.CharField( label=_("Alt text"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) fit_method = forms.ChoiceField( label=_("Fit method"), @@ -51,8 +54,8 @@ class ContentImageURLForm(forms.Form, BasePluginForm): initial=DEFAULT_FIT_METHOD, choices=FIT_METHODS_CHOICES, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) # width = forms.IntegerField( # label=_("Width"), @@ -74,6 +77,6 @@ class ContentImageURLForm(forms.Form, BasePluginForm): initial=DEFAULT_SIZE, choices=SIZES, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_image_url/settings.py b/src/fobi/contrib/plugins/form_elements/content/content_image_url/settings.py index 668a11434..e729b6614 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_image_url/settings.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_image_url/settings.py @@ -11,35 +11,37 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.content.content_image_url.' \ - 'settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_image_url." "settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DEFAULT_SIZE', - 'SIZE_100x100', - 'SIZE_200x200', - 'SIZE_300x300', - 'SIZE_400x400', - 'SIZE_500x500', - 'SIZE_600x600', - 'SIZES', + "DEFAULT_SIZE", + "SIZE_100x100", + "SIZE_200x200", + "SIZE_300x300", + "SIZE_400x400", + "SIZE_500x500", + "SIZE_600x600", + "SIZES", ) -FIT_METHOD_FIT_WIDTH = get_setting('FIT_METHOD_FIT_WIDTH') -FIT_METHOD_FIT_HEIGHT = get_setting('FIT_METHOD_FIT_HEIGHT') -DEFAULT_FIT_METHOD = get_setting('DEFAULT_FIT_METHOD') -FIT_METHODS_CHOICES = get_setting('FIT_METHODS_CHOICES') -FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = \ - get_setting('FIT_METHODS_CHOICES_WITH_EMPTY_OPTION') +FIT_METHOD_FIT_WIDTH = get_setting("FIT_METHOD_FIT_WIDTH") +FIT_METHOD_FIT_HEIGHT = get_setting("FIT_METHOD_FIT_HEIGHT") +DEFAULT_FIT_METHOD = get_setting("DEFAULT_FIT_METHOD") +FIT_METHODS_CHOICES = get_setting("FIT_METHODS_CHOICES") +FIT_METHODS_CHOICES_WITH_EMPTY_OPTION = get_setting( + "FIT_METHODS_CHOICES_WITH_EMPTY_OPTION" +) -SIZE_100x100 = get_setting('SIZE_100x100') -SIZE_200x200 = get_setting('SIZE_200x200') -SIZE_300x300 = get_setting('SIZE_300x300') -SIZE_400x400 = get_setting('SIZE_400x400') -SIZE_500x500 = get_setting('SIZE_500x500') -SIZE_600x600 = get_setting('SIZE_600x600') -DEFAULT_SIZE = get_setting('DEFAULT_SIZE') -SIZES = get_setting('SIZES') +SIZE_100x100 = get_setting("SIZE_100x100") +SIZE_200x200 = get_setting("SIZE_200x200") +SIZE_300x300 = get_setting("SIZE_300x300") +SIZE_400x400 = get_setting("SIZE_400x400") +SIZE_500x500 = get_setting("SIZE_500x500") +SIZE_600x600 = get_setting("SIZE_600x600") +DEFAULT_SIZE = get_setting("DEFAULT_SIZE") +SIZES = get_setting("SIZES") diff --git a/src/fobi/contrib/plugins/form_elements/content/content_markdown/__init__.py b/src/fobi/contrib/plugins/form_elements/content/content_markdown/__init__.py index 881b760c5..2f9a1584d 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_markdown/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_markdown/__init__.py @@ -1,10 +1,11 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_markdown' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID') +__title__ = "fobi.contrib.plugins.form_elements.content.content_markdown" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config", "UID") -default_app_config = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_markdown.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.content." "content_markdown.apps.Config" +) -UID = 'content_markdown' +UID = "content_markdown" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_markdown/apps.py b/src/fobi/contrib/plugins/form_elements/content/content_markdown/apps.py index 3350417d4..e15ef8b4f 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_markdown/apps.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_markdown/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.content.content_markdown.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_markdown.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.content.content_markdown' - label = 'fobi_contrib_plugins_form_elements_content_content_markdown' + name = "fobi.contrib.plugins.form_elements.content.content_markdown" + label = "fobi_contrib_plugins_form_elements_content_content_markdown" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_markdown/base.py b/src/fobi/contrib/plugins/form_elements/content/content_markdown/base.py index 90466a5c0..d6e8b4280 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_markdown/base.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_markdown/base.py @@ -4,40 +4,35 @@ from uuid import uuid4 from django.utils.translation import gettext_lazy as _ - from nonefield.fields import NoneField -from fobi.base import FormElementPlugin -from fobi.reusable.markdown_widget.helpers import convert_to_markdown - from . import UID from .forms import ContentMarkdownForm -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentMarkdownPlugin',) +from fobi.base import FormElementPlugin +from fobi.reusable.markdown_widget.helpers import convert_to_markdown + +__title__ = "fobi.contrib.plugins.form_elements.content.content_richtext.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentMarkdownPlugin",) class ContentMarkdownPlugin(FormElementPlugin): """Content markdown plugin.""" uid = UID - name = _('Content markdown') - group = _('Content') + name = _("Content markdown") + group = _("Content") form = ContentMarkdownForm - html_classes = ['content-markdown'] + html_classes = ["content-markdown"] def post_processor(self): - self.data.name = '{0}_{1}'.format(self.uid, uuid4()) + self.data.name = "{0}_{1}".format(self.uid, uuid4()) def get_raw_data(self): - return OrderedDict( - ( - ('text', self.data.text), - ) - ) + return OrderedDict((("text", self.data.text),)) def get_rendered_text(self): """Get rendered text.""" @@ -46,15 +41,13 @@ def get_rendered_text(self): ) return rendered_text - def get_form_field_instances(self, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): field_kwargs = { - 'initial': convert_to_markdown(self.data.text), - 'required': False, - 'label': '', + "initial": convert_to_markdown(self.data.text), + "required": False, + "label": "", } return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_markdown/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/content/content_markdown/fobi_form_elements.py index 4ed4c2084..d55400e51 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_markdown/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_markdown/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ContentMarkdownPlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_markdown.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentMarkdownPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_markdown." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentMarkdownPlugin",) form_element_plugin_registry.register(ContentMarkdownPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_markdown/forms.py b/src/fobi/contrib/plugins/form_elements/content/content_markdown/forms.py index 7d04a12b0..341d0e11b 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_markdown/forms.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_markdown/forms.py @@ -4,11 +4,11 @@ from fobi.base import BasePluginForm, get_theme from fobi.reusable.markdown_widget.widgets import MarkdownWidget -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentMarkdownForm',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_richtext.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentMarkdownForm",) theme = get_theme(request=None, as_instance=True) @@ -17,16 +17,14 @@ class ContentMarkdownForm(forms.Form, BasePluginForm): """ContentMarkDownForm.""" - plugin_data_fields = [ - ('text', '') - ] + plugin_data_fields = [("text", "")] text = forms.CharField( - label=_('Text'), + label=_("Text"), required=True, widget=MarkdownWidget( attrs={ - 'class': '{} content-markdown'.format( + "class": "{} content-markdown".format( theme.form_element_html_class ) } diff --git a/src/fobi/contrib/plugins/form_elements/content/content_markdown/widgets.py b/src/fobi/contrib/plugins/form_elements/content/content_markdown/widgets.py index de2de661a..c3f5fa29d 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_markdown/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_markdown/widgets.py @@ -1,21 +1,20 @@ from __future__ import absolute_import -from fobi.base import FormElementPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_markdown.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'BaseContentMarkdownPluginWidget', +from fobi.base import FormElementPluginWidget + +__title__ = ( + "fobi.contrib.plugins.form_elements.content." "content_markdown.widgets" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseContentMarkdownPluginWidget",) class BaseContentMarkdownPluginWidget(FormElementPluginWidget): """Base content markdown form element plugin widget.""" plugin_uid = UID - html_classes = ['content-markdown'] + html_classes = ["content-markdown"] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_richtext/__init__.py b/src/fobi/contrib/plugins/form_elements/content/content_richtext/__init__.py index c2cf0bb6e..4aebb54c9 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_richtext/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_richtext/__init__.py @@ -1,10 +1,11 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext' -__author__ = 'Frantisek Holop ' -__copyright__ = 'RIPE NCC' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID') +__title__ = "fobi.contrib.plugins.form_elements.content.content_richtext" +__author__ = "Frantisek Holop " +__copyright__ = "RIPE NCC" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config", "UID") -default_app_config = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_richtext.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.content." "content_richtext.apps.Config" +) -UID = 'content_richtext' +UID = "content_richtext" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_richtext/apps.py b/src/fobi/contrib/plugins/form_elements/content/content_richtext/apps.py index e99955d6a..0c11ce705 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_richtext/apps.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_richtext/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext.apps' -__author__ = 'Frantisek Holop ' -__copyright__ = 'RIPE NCC' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_richtext.apps" +__author__ = "Frantisek Holop " +__copyright__ = "RIPE NCC" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.content.content_richtext' - label = 'fobi_contrib_plugins_form_elements_content_content_richtext' + name = "fobi.contrib.plugins.form_elements.content.content_richtext" + label = "fobi_contrib_plugins_form_elements_content_content_richtext" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_richtext/base.py b/src/fobi/contrib/plugins/form_elements/content/content_richtext/base.py index 27c1ae7c3..379469fba 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_richtext/base.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_richtext/base.py @@ -5,53 +5,46 @@ from django.utils.encoding import smart_str from django.utils.translation import gettext_lazy as _ - from nonefield.fields import NoneField -from fobi.base import FormElementPlugin - from . import UID from .forms import ContentRichTextForm -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext.base' -__author__ = 'Frantisek Holop ' -__copyright__ = 'RIPE NCC' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPlugin',) +from fobi.base import FormElementPlugin + +__title__ = "fobi.contrib.plugins.form_elements.content.content_richtext.base" +__author__ = "Frantisek Holop " +__copyright__ = "RIPE NCC" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPlugin",) class ContentRichTextPlugin(FormElementPlugin): """Content rich text plugin.""" uid = UID - name = _('Content rich text') - group = _('Content') + name = _("Content rich text") + group = _("Content") form = ContentRichTextForm def post_processor(self): - self.data.name = '{0}_{1}'.format(self.uid, uuid4()) + self.data.name = "{0}_{1}".format(self.uid, uuid4()) def get_raw_data(self): - return OrderedDict( - ( - ('text', self.data.text), - ) - ) + return OrderedDict((("text", self.data.text),)) def get_rendered_text(self): """Get rendered text.""" rendered_text = "
{0}
".format(smart_str(self.data.text)) return rendered_text - def get_form_field_instances(self, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): field_kwargs = { - 'initial': smart_str(self.data.text), - 'required': False, - 'label': '', + "initial": smart_str(self.data.text), + "required": False, + "label": "", } return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_richtext/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/content/content_richtext/fobi_form_elements.py index ab1ce5ccc..44075b5d2 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_richtext/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_richtext/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ContentRichTextPlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext.' \ - 'fobi_form_elements' -__author__ = 'Frantisek Holop ' -__copyright__ = 'RIPE NCC' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_richtext." + "fobi_form_elements" +) +__author__ = "Frantisek Holop " +__copyright__ = "RIPE NCC" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPlugin",) form_element_plugin_registry.register(ContentRichTextPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_richtext/forms.py b/src/fobi/contrib/plugins/form_elements/content/content_richtext/forms.py index 3e07f49b9..d99b0feb9 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_richtext/forms.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_richtext/forms.py @@ -1,22 +1,22 @@ +from ckeditor.widgets import CKEditorWidget from django import forms from django.conf import settings from django.utils.translation import gettext_lazy as _ -from ckeditor.widgets import CKEditorWidget - from fobi.base import BasePluginForm, get_theme try: import bleach + BLEACH_INSTALLED = True except ImportError: BLEACH_INSTALLED = False -__title__ = 'fobi.contrib.plugins.form_elements.content.content_richtext.forms' -__author__ = 'Frantisek Holop ' -__copyright__ = 'RIPE NCC' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextForm',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_richtext.forms" +__author__ = "Frantisek Holop " +__copyright__ = "RIPE NCC" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextForm",) theme = get_theme(request=None, as_instance=True) @@ -25,38 +25,36 @@ class ContentRichTextForm(forms.Form, BasePluginForm): """ContentRichTextForm.""" - plugin_data_fields = [ - ('text', '') - ] + plugin_data_fields = [("text", "")] text = forms.CharField( - label=_('Text'), + label=_("Text"), required=True, widget=CKEditorWidget(), ) def clean_text(self): if not BLEACH_INSTALLED: - return self.cleaned_data['text'] + return self.cleaned_data["text"] allowed_tags = getattr( settings, - 'FOBI_PLUGIN_CONTENT_RICHTEXT_ALLOWED_TAGS', + "FOBI_PLUGIN_CONTENT_RICHTEXT_ALLOWED_TAGS", bleach.ALLOWED_TAGS, ) allowed_attrs = getattr( settings, - 'FOBI_PLUGIN_CONTENT_RICHTEXT_ALLOWED_ATTRIBUTES', + "FOBI_PLUGIN_CONTENT_RICHTEXT_ALLOWED_ATTRIBUTES", bleach.ALLOWED_ATTRIBUTES, ) allowed_styles = getattr( settings, - 'FOBI_PLUGIN_CONTENT_RICHTEXT_ALLOWED_STYLES', + "FOBI_PLUGIN_CONTENT_RICHTEXT_ALLOWED_STYLES", bleach.ALLOWED_STYLES, ) return bleach.clean( - text=self.cleaned_data['text'], + text=self.cleaned_data["text"], tags=allowed_tags, attributes=allowed_attrs, styles=allowed_styles, diff --git a/src/fobi/contrib/plugins/form_elements/content/content_richtext/widgets.py b/src/fobi/contrib/plugins/form_elements/content/content_richtext/widgets.py index c2efd15a4..2431c3654 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_richtext/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_richtext/widgets.py @@ -1,25 +1,24 @@ from __future__ import absolute_import -from fobi.base import FormElementPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_richtext.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'BaseContentRichTextPluginWidget', +from fobi.base import FormElementPluginWidget + +__title__ = ( + "fobi.contrib.plugins.form_elements.content." "content_richtext.widgets" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseContentRichTextPluginWidget",) class BaseContentRichTextPluginWidget(FormElementPluginWidget): """Base content rich text form element plugin widget.""" plugin_uid = UID - html_classes = ['content-richtext'] + html_classes = ["content-richtext"] media_js = [ - 'ckeditor/ckeditor-init.js', - 'ckeditor/ckeditor/ckeditor.js', + "ckeditor/ckeditor-init.js", + "ckeditor/ckeditor/ckeditor.js", ] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/__init__.py b/src/fobi/contrib/plugins/form_elements/content/content_text/__init__.py index 79b6e7300..2d464cefb 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_text" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_text.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.content." "content_text.apps.Config" +) UID = "content_text" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/apps.py b/src/fobi/contrib/plugins/form_elements/content/content_text/apps.py index e160d8b09..9dc0da8c6 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/apps.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_text.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.content.content_text' - label = 'fobi_contrib_plugins_form_elements_content_content_text' + name = "fobi.contrib.plugins.form_elements.content.content_text" + label = "fobi_contrib_plugins_form_elements_content_content_text" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/base.py b/src/fobi/contrib/plugins/form_elements/content/content_text/base.py index 9feb897b0..33860b09e 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/base.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/base.py @@ -5,19 +5,18 @@ from django.utils.encoding import smart_str from django.utils.translation import gettext_lazy as _ - from nonefield.fields import NoneField -from fobi.base import FormElementPlugin - from . import UID from .forms import ContentTextForm -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentTextPlugin',) +from fobi.base import FormElementPlugin + +__title__ = "fobi.contrib.plugins.form_elements.content.content_text.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentTextPlugin",) class ContentTextPlugin(FormElementPlugin): @@ -40,24 +39,21 @@ def get_raw_data(self): Might be used in integration plugins. """ - return OrderedDict( - ( - ('text', self.data.text), - ) - ) + return OrderedDict((("text", self.data.text),)) def get_rendered_text(self): """Get rendered text.""" rendered_text = "

{0}

".format(smart_str(self.data.text)) return rendered_text - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'initial': self.get_rendered_text(), - 'required': False, - 'label': '', + "initial": self.get_rendered_text(), + "required": False, + "label": "", } return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/conf.py b/src/fobi/contrib/plugins/form_elements/content/content_text/conf.py index 1c7eb0da9..79fbce132 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/conf.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_text.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,10 +25,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_CONTENT_TEXT_{0}'.format(setting)): - return getattr( - settings, - 'FOBI_PLUGIN_CONTENT_TEXT_{0}'.format(setting) - ) + if hasattr(settings, "FOBI_PLUGIN_CONTENT_TEXT_{0}".format(setting)): + return getattr(settings, "FOBI_PLUGIN_CONTENT_TEXT_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/defaults.py b/src/fobi/contrib/plugins/form_elements/content/content_text/defaults.py index 310a7a799..a3a16de48 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/defaults.py @@ -1,29 +1,29 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_text.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'ALLOWED_TAGS', - 'ALLOWED_TAGS', + "ALLOWED_TAGS", + "ALLOWED_TAGS", ) ALLOWED_TAGS = [ - 'a', - 'abbr', - 'acronym', - 'b', - 'blockquote', - 'code', - 'em', - 'i', - 'li', - 'ol', - 'strong', - 'ul', + "a", + "abbr", + "acronym", + "b", + "blockquote", + "code", + "em", + "i", + "li", + "ol", + "strong", + "ul", ] ALLOWED_ATTRIBUTES = { - 'a': ['href', 'title'], - 'abbr': ['title'], - 'acronym': ['title'], + "a": ["href", "title"], + "abbr": ["title"], + "acronym": ["title"], } diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/content/content_text/fobi_form_elements.py index 737d96bf9..52278429c 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ContentTextPlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentTextPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_text." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentTextPlugin",) form_element_plugin_registry.register(ContentTextPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/forms.py b/src/fobi/contrib/plugins/form_elements/content/content_text/forms.py index 730e78105..052833c17 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/forms.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/forms.py @@ -3,21 +3,22 @@ from django.utils.html import strip_tags from django.utils.translation import gettext_lazy as _ -from fobi.base import BasePluginForm, get_theme +from .settings import ALLOWED_ATTRIBUTES, ALLOWED_TAGS -from .settings import ALLOWED_TAGS, ALLOWED_ATTRIBUTES +from fobi.base import BasePluginForm, get_theme try: import bleach + BLEACH_INSTALLED = True except ImportError as err: BLEACH_INSTALLED = False -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentTextForm',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_text.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentTextForm",) theme = get_theme(request=None, as_instance=True) @@ -26,25 +27,23 @@ class ContentTextForm(forms.Form, BasePluginForm): """Form for ``ContentTextPlugin``.""" - plugin_data_fields = [ - ("text", "") - ] + plugin_data_fields = [("text", "")] text = forms.CharField( label=_("Text"), required=True, - widget=Textarea(attrs={'class': theme.form_element_html_class}) + widget=Textarea(attrs={"class": theme.form_element_html_class}), ) def clean_text(self): """Clean text value.""" if BLEACH_INSTALLED: return bleach.clean( - text=self.cleaned_data['text'], + text=self.cleaned_data["text"], tags=ALLOWED_TAGS, attributes=ALLOWED_ATTRIBUTES, strip=True, - strip_comments=True + strip_comments=True, ) else: - return strip_tags(self.cleaned_data['text']) + return strip_tags(self.cleaned_data["text"]) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_text/settings.py b/src/fobi/contrib/plugins/form_elements/content/content_text/settings.py index 8e1041b6c..22607adac 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_text/settings.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_text/settings.py @@ -1,13 +1,13 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.content.content_text.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_text.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'ALLOWED_TAGS', - 'ALLOWED_ATTRIBUTES', + "ALLOWED_TAGS", + "ALLOWED_ATTRIBUTES", ) -ALLOWED_TAGS = get_setting('ALLOWED_TAGS') -ALLOWED_ATTRIBUTES = get_setting('ALLOWED_ATTRIBUTES') +ALLOWED_TAGS = get_setting("ALLOWED_TAGS") +ALLOWED_ATTRIBUTES = get_setting("ALLOWED_ATTRIBUTES") diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/__init__.py b/src/fobi/contrib/plugins/form_elements/content/content_video/__init__.py index 97157fcba..fa96b1307 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/__init__.py @@ -1,13 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_video" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'default_app_config', - 'UID', + "default_app_config", + "UID", ) -default_app_config = 'fobi.contrib.plugins.form_elements.content.' \ - 'content_video.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.content." "content_video.apps.Config" +) UID = "content_video" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/apps.py b/src/fobi/contrib/plugins/form_elements/content/content_video/apps.py index d1628fdf8..6c1ab616c 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/apps.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_video.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.content.content_video' - label = 'fobi_contrib_plugins_form_elements_content_content_video' + name = "fobi.contrib.plugins.form_elements.content.content_video" + label = "fobi_contrib_plugins_form_elements_content_content_video" diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/base.py b/src/fobi/contrib/plugins/form_elements/content/content_video/base.py index bf2b2565c..b34579090 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/base.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/base.py @@ -4,21 +4,19 @@ from uuid import uuid4 from django.utils.translation import gettext_lazy as _ - -from vishap import render_video - from nonefield.fields import NoneField - -from fobi.base import FormElementPlugin +from vishap import render_video from . import UID from .forms import ContentVideoForm -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentVideoPlugin',) +from fobi.base import FormElementPlugin + +__title__ = "fobi.contrib.plugins.form_elements.content.content_video.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentVideoPlugin",) class ContentVideoPlugin(FormElementPlugin): @@ -43,9 +41,9 @@ def get_raw_data(self): """ return OrderedDict( ( - ('title', self.data.title), - ('url', self.data.url), - ('size', self.data.size), + ("title", self.data.title), + ("url", self.data.url), + ("size", self.data.size), ) ) @@ -54,18 +52,19 @@ def get_rendered_video(self): Might be used in integration plugins. """ - width, height = self.data.size.split('x') + width, height = self.data.size.split("x") return render_video(self.data.url, width, height) - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'initial': '
{0}
'.format( + "initial": '
{0}
'.format( self.get_rendered_video() ), - 'required': False, - 'label': '', + "required": False, + "label": "", } return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/conf.py b/src/fobi/contrib/plugins/form_elements/content/content_video/conf.py index 931088d0b..c485d091c 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/conf.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.content.content_video.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,10 +25,9 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_CONTENT_VIDEO_{0}'.format(setting)): + if hasattr(settings, "FOBI_PLUGIN_CONTENT_VIDEO_{0}".format(setting)): return getattr( - settings, - 'FOBI_PLUGIN_CONTENT_VIDEO_{0}'.format(setting) + settings, "FOBI_PLUGIN_CONTENT_VIDEO_{0}".format(setting) ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/defaults.py b/src/fobi/contrib/plugins/form_elements/content/content_video/defaults.py index e8f042674..1fd2f9cd5 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/defaults.py @@ -1,15 +1,15 @@ -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_video.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'SIZES', - 'SIZE_400x300', - 'SIZE_500x400', - 'DEFAULT_SIZE', + "SIZES", + "SIZE_400x300", + "SIZE_500x400", + "DEFAULT_SIZE", ) -SIZE_400x300 = '400x300' -SIZE_500x400 = '500x400' +SIZE_400x300 = "400x300" +SIZE_500x400 = "500x400" DEFAULT_SIZE = SIZE_500x400 diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/content/content_video/fobi_form_elements.py index e623366c0..5c10acb61 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ContentVideoPlugin -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentVideoPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.content.content_video." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentVideoPlugin",) form_element_plugin_registry.register(ContentVideoPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/forms.py b/src/fobi/contrib/plugins/form_elements/content/content_video/forms.py index 21dabb707..4aab60281 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/forms.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/forms.py @@ -1,15 +1,15 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from fobi.base import BasePluginForm, get_theme - from .settings import DEFAULT_SIZE, SIZES -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentVideoForm',) +from fobi.base import BasePluginForm, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.content.content_video.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentVideoForm",) theme = get_theme(request=None, as_instance=True) @@ -27,15 +27,15 @@ class ContentVideoForm(forms.Form, BasePluginForm): label=_("Title"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) url = forms.CharField( label=_("URL"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) size = forms.ChoiceField( label=_("Size"), @@ -43,6 +43,6 @@ class ContentVideoForm(forms.Form, BasePluginForm): initial=DEFAULT_SIZE, choices=SIZES, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/content/content_video/settings.py b/src/fobi/contrib/plugins/form_elements/content/content_video/settings.py index 9d262dcff..89dccb4cc 100644 --- a/src/fobi/contrib/plugins/form_elements/content/content_video/settings.py +++ b/src/fobi/contrib/plugins/form_elements/content/content_video/settings.py @@ -1,17 +1,17 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.content.content_video.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.content.content_video.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'SIZES', - 'SIZE_400x300', - 'SIZE_500x400', - 'DEFAULT_SIZE', + "SIZES", + "SIZE_400x300", + "SIZE_500x400", + "DEFAULT_SIZE", ) -SIZE_400x300 = get_setting('SIZE_400x300') -SIZE_500x400 = get_setting('SIZE_500x400') -DEFAULT_SIZE = get_setting('DEFAULT_SIZE') -SIZES = get_setting('SIZES') +SIZE_400x300 = get_setting("SIZE_400x300") +SIZE_500x400 = get_setting("SIZE_500x400") +DEFAULT_SIZE = get_setting("DEFAULT_SIZE") +SIZES = get_setting("SIZES") diff --git a/src/fobi/contrib/plugins/form_elements/fields/boolean/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/boolean/__init__.py index f8b054fde..2ac5e05d9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/boolean/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/boolean/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.boolean' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.boolean" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'boolean.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "boolean.apps.Config" +) -UID = 'boolean' +UID = "boolean" diff --git a/src/fobi/contrib/plugins/form_elements/fields/boolean/apps.py b/src/fobi/contrib/plugins/form_elements/fields/boolean/apps.py index f37368ba2..9bd8c0123 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/boolean/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/boolean/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.boolean.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.boolean.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.boolean' - label = 'fobi_contrib_plugins_form_elements_fields_boolean' + name = "fobi.contrib.plugins.form_elements.fields.boolean" + label = "fobi_contrib_plugins_form_elements_fields_boolean" diff --git a/src/fobi/contrib/plugins/form_elements/fields/boolean/base.py b/src/fobi/contrib/plugins/form_elements/fields/boolean/base.py index 6b8336845..edffef2c6 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/boolean/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/boolean/base.py @@ -1,16 +1,16 @@ from django.forms.fields import BooleanField from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin - from . import UID from .forms import BooleanSelectForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.boolean.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BooleanSelectPlugin',) +from fobi.base import FormFieldPlugin + +__title__ = "fobi.contrib.plugins.form_elements.fields.boolean.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BooleanSelectPlugin",) class BooleanSelectPlugin(FormFieldPlugin): @@ -21,14 +21,15 @@ class BooleanSelectPlugin(FormFieldPlugin): group = _("Fields") form = BooleanSelectForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, } return [(self.data.name, BooleanField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/boolean/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/boolean/fobi_form_elements.py index 7e2916aa4..10376d4ef 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/boolean/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/boolean/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import BooleanSelectPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.boolean.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BooleanSelectPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields.boolean." "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BooleanSelectPlugin",) form_element_plugin_registry.register(BooleanSelectPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/boolean/forms.py b/src/fobi/contrib/plugins/form_elements/fields/boolean/forms.py index 4eb6a1c57..b4a01dd69 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/boolean/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/boolean/forms.py @@ -3,11 +3,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.fields.boolean.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BooleanSelectForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.boolean.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BooleanSelectForm",) theme = get_theme(request=None, as_instance=True) @@ -20,41 +20,41 @@ class BooleanSelectForm(forms.Form, BaseFormFieldPluginForm): ("name", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.BooleanField( label=_("Initial"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/__init__.py index 76def173b..1705330ec 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "checkbox_select_multiple" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." + "checkbox_select_multiple.apps.Config" +) -UID = 'checkbox_select_multiple' +UID = "checkbox_select_multiple" diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/apps.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/apps.py index 1d9d1889f..2fb4cf112 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/apps.py @@ -1,16 +1,18 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_multiple.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple' - label = 'fobi_contrib_plugins_form_elements_fields_' \ - 'checkbox_select_multiple' + name = ( + "fobi.contrib.plugins.form_elements.fields." "checkbox_select_multiple" + ) + label = ( + "fobi_contrib_plugins_form_elements_fields_" "checkbox_select_multiple" + ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/base.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/base.py index 95fffe440..fb1a3b626 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/base.py @@ -2,22 +2,24 @@ from django.forms.widgets import CheckboxSelectMultiple from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import SUBMIT_VALUE_AS_VAL, SUBMIT_VALUE_AS_REPR -from fobi.helpers import get_select_field_choices, safe_text - from . import UID from .forms import CheckboxSelectMultipleInputForm from .settings import SUBMIT_VALUE_AS +from fobi.base import FormFieldPlugin, get_theme +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL +from fobi.helpers import get_select_field_choices, safe_text + theme = get_theme(request=None, as_instance=True) -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CheckboxSelectMultipleInputPlugin',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "checkbox_select_multiple.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CheckboxSelectMultipleInputPlugin",) class CheckboxSelectMultipleInputPlugin(FormFieldPlugin): @@ -28,19 +30,20 @@ class CheckboxSelectMultipleInputPlugin(FormFieldPlugin): group = _("Fields") form = CheckboxSelectMultipleInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" choices = self.get_choices() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'choices': choices, - 'widget': CheckboxSelectMultiple( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "choices": choices, + "widget": CheckboxSelectMultiple( + attrs={"class": theme.form_element_html_class} ), } @@ -93,12 +96,9 @@ def prepare_plugin_form_data(self, cleaned_data): # ``cleaned_data`` return cleaned_data - def submit_plugin_form_data(self, - form_entry, - request, - form, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/conf.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/conf.py index c5a28afea..4e0f75ea1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/conf.py @@ -2,12 +2,13 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "checkbox_select_multiple.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -27,12 +28,12 @@ def get_setting(setting, override=None): if override is not None: return override if hasattr( - settings, - 'FOBI_FORM_ELEMENT_CHECKBOX_SELECT_MULTIPLE_{0}'.format(setting) + settings, + "FOBI_FORM_ELEMENT_CHECKBOX_SELECT_MULTIPLE_{0}".format(setting), ): return getattr( settings, - 'FOBI_FORM_ELEMENT_CHECKBOX_SELECT_MULTIPLE_{0}'.format(setting) + "FOBI_FORM_ELEMENT_CHECKBOX_SELECT_MULTIPLE_{0}".format(setting), ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/defaults.py index 91e5a285c..b7b3cc3de 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/defaults.py @@ -1,11 +1,13 @@ from fobi.constants import SUBMIT_VALUE_AS_REPR -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "checkbox_select_multiple.defaults" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) SUBMIT_VALUE_AS = SUBMIT_VALUE_AS_REPR diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/fobi_form_elements.py index 108bdbf6c..cf6218c62 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import CheckboxSelectMultipleInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CheckboxSelectMultipleInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "checkbox_select_multiple.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CheckboxSelectMultipleInputPlugin",) form_element_plugin_registry.register(CheckboxSelectMultipleInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/forms.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/forms.py index 86c70f58e..7da65f263 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/forms.py @@ -4,12 +4,14 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import validate_initial_for_multiple_choices -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CheckboxSelectMultipleInputForm',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "checkbox_select_multiple.forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CheckboxSelectMultipleInputForm",) theme = get_theme(request=None, as_instance=True) @@ -23,78 +25,78 @@ class CheckboxSelectMultipleInputForm(forms.Form, BaseFormFieldPluginForm): ("choices", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) choices = forms.CharField( label=_("Choices"), required=True, - 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>' - "
"), + 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} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Validating the initial value.""" - return validate_initial_for_multiple_choices(self, - 'choices', - 'initial') + return validate_initial_for_multiple_choices(self, "choices", "initial") diff --git a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py index 2d1fe03db..b5010ca78 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/checkbox_select_multiple/settings.py @@ -1,15 +1,18 @@ +from fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple.conf import ( + get_setting, +) from fobi.helpers import validate_submit_value_as -from fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple.conf \ - import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'checkbox_select_multiple.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "checkbox_select_multiple.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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/date/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/date/__init__.py index 74ee01db2..f8e2a0b93 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date/__init__.py @@ -1,12 +1,16 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_elements.fields.date' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.date" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'date.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "date.apps.Config" +) -UID = 'date' +UID = "date" diff --git a/src/fobi/contrib/plugins/form_elements/fields/date/apps.py b/src/fobi/contrib/plugins/form_elements/fields/date/apps.py index 16102b0a4..81ee199ef 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.date.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.date.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.date' - label = 'fobi_contrib_plugins_form_elements_fields_date' + name = "fobi.contrib.plugins.form_elements.fields.date" + label = "fobi_contrib_plugins_form_elements_fields_date" diff --git a/src/fobi/contrib/plugins/form_elements/fields/date/base.py b/src/fobi/contrib/plugins/form_elements/fields/date/base.py index e00548bde..46622f5b2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import DateInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import DateInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.date.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.date.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,29 +26,31 @@ class DateInputPlugin(FormFieldPlugin): group = _("Fields") form = DateInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'date', + "class": theme.form_element_html_class, + "type": "date", } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, # 'input_formats': self.data.input_formats, - 'required': self.data.required, - 'widget': DateInput(attrs=widget_attrs), + "required": self.data.required, + "widget": DateInput(attrs=widget_attrs), } # if self.data.input_formats: # kwargs['input_formats'] = self.data.input_formats return [(self.data.name, DateField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/date/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/date/fobi_form_elements.py index bd9d3e9d6..ec40cfbe6 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date/fobi_form_elements.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import DateInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.date.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = "fobi.contrib.plugins.form_elements.fields.date.fobi_form_elements" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateInputPlugin",) form_element_plugin_registry.register(DateInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/date/forms.py b/src/fobi/contrib/plugins/form_elements/fields/date/forms.py index 968fd82e5..bfa53937e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date/forms.py @@ -5,11 +5,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.fields.date.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.date.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateInputForm",) theme = get_theme(request=None, as_instance=True) @@ -31,48 +31,48 @@ class DateInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.DateField( label=_("Initial"), required=False, widget=forms.widgets.DateInput( - attrs={'class': theme.form_element_html_class, 'type': 'date'} - ) + attrs={"class": theme.form_element_html_class, "type": "date"} + ), ) input_formats = forms.CharField( label=_("Input formats"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Clean the initial value.""" - initial = self.cleaned_data['initial'] + initial = self.cleaned_data["initial"] try: return initial.strftime("%Y-%m-%d") except Exception as err: diff --git a/src/fobi/contrib/plugins/form_elements/fields/date/widgets.py b/src/fobi/contrib/plugins/form_elements/fields/date/widgets.py index 93a275f21..18ecd8806 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date/widgets.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import FormElementPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_elements.fields.date.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BaseDatePluginWidget',) +from fobi.base import FormElementPluginWidget + +__title__ = "fobi.contrib.plugins.form_elements.fields.date.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseDatePluginWidget",) class BaseDatePluginWidget(FormElementPluginWidget): diff --git a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/__init__.py index b857d5432..1851d265e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.date_drop_down' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.date_drop_down" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'date_drop_down.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "date_drop_down.apps.Config" +) -UID = 'date_drop_down' +UID = "date_drop_down" diff --git a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/apps.py b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/apps.py index 987cbdd6e..3e13a9a7f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.date_drop_down.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.date_drop_down.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.date_drop_down' - label = 'fobi_contrib_plugins_form_elements_fields_date_drop_down' + name = "fobi.contrib.plugins.form_elements.fields.date_drop_down" + label = "fobi_contrib_plugins_form_elements_fields_date_drop_down" diff --git a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/base.py b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/base.py index b6c81fc33..7dd8c9b2e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/base.py @@ -4,17 +4,16 @@ from django.forms.widgets import SelectDateWidget from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import DateDropDownInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'date_drop_down.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateDropDownInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields." "date_drop_down.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateDropDownInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -28,12 +27,13 @@ class DateDropDownInputPlugin(FormFieldPlugin): group = _("Fields") form = DateDropDownInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'date', + "class": theme.form_element_html_class, + "type": "date", } years = None @@ -41,20 +41,21 @@ def get_form_field_instances(self, request=None, form_entry=None, years = range(self.data.year_min, self.data.year_max) field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, # 'input_formats': self.data.input_formats, - 'required': self.data.required, - 'widget': SelectDateWidget(attrs=widget_attrs, years=years), + "required": self.data.required, + "widget": SelectDateWidget(attrs=widget_attrs, years=years), } # if self.data.input_formats: # kwargs['input_formats'] = self.data.input_formats return [(self.data.name, DateField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py index a9d5f59ce..66653470b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import DateDropDownInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'date_drop_down.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateDropDownInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "date_drop_down.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateDropDownInputPlugin",) form_element_plugin_registry.register(DateDropDownInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/forms.py b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/forms.py index 2c845610e..25e1cd001 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/date_drop_down/forms.py @@ -11,13 +11,14 @@ class NumberInput(TextInput): """Number input.""" - input_type = 'number' + input_type = "number" -__title__ = 'fobi.contrib.plugins.form_elements.fields.date_drop_down.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateDropDownInputForm',) + +__title__ = "fobi.contrib.plugins.form_elements.fields.date_drop_down.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateDropDownInputForm",) theme = get_theme(request=None, as_instance=True) @@ -40,51 +41,51 @@ class DateDropDownInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) year_min = forms.IntegerField( label=_("Minimum year value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) year_max = forms.IntegerField( label=_("Maximum year value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(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} - ) + attrs={"class": theme.form_element_html_class} + ), ) input_formats = forms.CharField( label=_("Input formats"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/datetime/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/datetime/__init__.py index 466e8d2e1..8935527fd 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/datetime/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/datetime/__init__.py @@ -1,12 +1,16 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_elements.fields.datetime' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.datetime" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'datetime.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "datetime.apps.Config" +) -UID = 'datetime' +UID = "datetime" diff --git a/src/fobi/contrib/plugins/form_elements/fields/datetime/apps.py b/src/fobi/contrib/plugins/form_elements/fields/datetime/apps.py index 9bf105986..1b9e8e87d 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/datetime/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/datetime/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.datetime.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.datetime.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.datetime' - label = 'fobi_contrib_plugins_form_elements_fields_datetime' + name = "fobi.contrib.plugins.form_elements.fields.datetime" + label = "fobi_contrib_plugins_form_elements_fields_datetime" diff --git a/src/fobi/contrib/plugins/form_elements/fields/datetime/base.py b/src/fobi/contrib/plugins/form_elements/fields/datetime/base.py index 8d4d4493e..5818bc8c3 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/datetime/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/datetime/base.py @@ -4,17 +4,16 @@ from django.forms.widgets import DateTimeInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import DateTimeInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'datetime.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimeInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields." "datetime.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimeInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -27,29 +26,31 @@ class DateTimeInputPlugin(FormFieldPlugin): group = _("Fields") form = DateTimeInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'datetime', + "class": theme.form_element_html_class, + "type": "datetime", } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, # 'input_formats': self.data.input_formats, - 'required': self.data.required, - 'widget': DateTimeInput(attrs=widget_attrs), + "required": self.data.required, + "widget": DateTimeInput(attrs=widget_attrs), } # if self.data.input_formats: # kwargs['input_formats'] = self.data.input_formats return [(self.data.name, DateTimeField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py index 94ad8ab0f..e4029348a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/datetime/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import DateTimeInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'datetime.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimeInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "datetime.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimeInputPlugin",) form_element_plugin_registry.register(DateTimeInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/datetime/forms.py b/src/fobi/contrib/plugins/form_elements/fields/datetime/forms.py index 1f1cc33dd..dba23e3a7 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/datetime/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/datetime/forms.py @@ -5,11 +5,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.fields.datetime.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimeInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.datetime.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimeInputForm",) theme = get_theme(request=None, as_instance=True) @@ -23,55 +23,55 @@ class DateTimeInputForm(forms.Form, BaseFormFieldPluginForm): ("help_text", ""), ("initial", ""), ("input_formats", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.DateTimeField( label=_("Initial"), required=False, widget=forms.widgets.DateTimeInput( - attrs={'class': theme.form_element_html_class, 'type': 'datetime'} - ) + attrs={"class": theme.form_element_html_class, "type": "datetime"} + ), ) input_formats = forms.CharField( label=_("Input formats"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Clean the initial value.""" - initial = self.cleaned_data['initial'] + initial = self.cleaned_data["initial"] try: return initial.strftime("%Y-%m-%d %H:%M:%S") except Exception as err: diff --git a/src/fobi/contrib/plugins/form_elements/fields/datetime/widgets.py b/src/fobi/contrib/plugins/form_elements/fields/datetime/widgets.py index 782032934..23a8b5c9d 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/datetime/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/fields/datetime/widgets.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import FormElementPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_elements.fields.datetime.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BaseDateTimePluginWidget',) +from fobi.base import FormElementPluginWidget + +__title__ = "fobi.contrib.plugins.form_elements.fields.datetime.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseDateTimePluginWidget",) class BaseDateTimePluginWidget(FormElementPluginWidget): diff --git a/src/fobi/contrib/plugins/form_elements/fields/decimal/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/decimal/__init__.py index 10591cf5f..ce7c19f62 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/decimal/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/decimal/__init__.py @@ -1,12 +1,16 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_elements.fields.decimal' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.decimal" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'decimal.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "decimal.apps.Config" +) -UID = 'decimal' +UID = "decimal" diff --git a/src/fobi/contrib/plugins/form_elements/fields/decimal/apps.py b/src/fobi/contrib/plugins/form_elements/fields/decimal/apps.py index 34de331ce..1078d6e1b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/decimal/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/decimal/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.decimal.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.decimal.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.decimal' - label = 'fobi_contrib_plugins_form_elements_fields_decimal' + name = "fobi.contrib.plugins.form_elements.fields.decimal" + label = "fobi_contrib_plugins_form_elements_fields_decimal" diff --git a/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py b/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py index 8f432bc72..d2f92cc9a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/decimal/base.py @@ -5,18 +5,17 @@ from django.forms.fields import DecimalField from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.widgets import NumberInput - from . import UID from .forms import DecimalInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'decimal.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DecimalInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.widgets import NumberInput + +__title__ = "fobi.contrib.plugins.form_elements.fields." "decimal.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DecimalInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -29,42 +28,43 @@ class DecimalInputPlugin(FormFieldPlugin): group = _("Fields") form = DecimalInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'number', - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "type": "number", + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'required': self.data.required, + "label": self.data.label, + "help_text": self.data.help_text, + "required": self.data.required, } if self.data.initial is not None: data_initial = decimal.Decimal(str(self.data.initial)) - field_kwargs.update({'initial': data_initial}) + field_kwargs.update({"initial": data_initial}) if self.data.max_value is not None: data_max_value = decimal.Decimal(str(self.data.max_value)) - field_kwargs['max_value'] = data_max_value - widget_attrs['max'] = data_max_value + field_kwargs["max_value"] = data_max_value + widget_attrs["max"] = data_max_value if self.data.min_value is not None: data_min_value = decimal.Decimal(str(self.data.min_value)) - field_kwargs['min_value'] = data_min_value - widget_attrs['min'] = data_min_value + field_kwargs["min_value"] = data_min_value + widget_attrs["min"] = data_min_value if self.data.max_digits is not None: data_max_digits = int(self.data.max_digits) - field_kwargs['max_digits'] = data_max_digits + field_kwargs["max_digits"] = data_max_digits if self.data.decimal_places is not None: data_decimal_places = int(self.data.decimal_places) - field_kwargs['decimal_places'] = data_decimal_places + field_kwargs["decimal_places"] = data_decimal_places - field_kwargs['widget'] = NumberInput(attrs=widget_attrs) + field_kwargs["widget"] = NumberInput(attrs=widget_attrs) return [(self.data.name, DecimalField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/decimal/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/decimal/fobi_form_elements.py index e30d57cb7..427a568df 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/decimal/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/decimal/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import DecimalInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'decimal.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DecimalInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "decimal.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DecimalInputPlugin",) form_element_plugin_registry.register(DecimalInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/decimal/forms.py b/src/fobi/contrib/plugins/form_elements/fields/decimal/forms.py index 8d155e111..eb23bb58a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/decimal/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/decimal/forms.py @@ -8,11 +8,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.decimal.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DecimalInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.decimal.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DecimalInputForm",) theme = get_theme(request=None, as_instance=True) @@ -37,100 +37,98 @@ class DecimalInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.DecimalField( label=_("Initial"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) max_digits = forms.IntegerField( label=_("Max digits"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) decimal_places = forms.IntegerField( label=_("Decimal places"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) min_value = forms.DecimalField( label=_("Min value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) max_value = forms.DecimalField( label=_("Max value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): """Validating the values.""" super(DecimalInputForm, self).clean() - max_value = self.cleaned_data['max_value'] - min_value = self.cleaned_data['min_value'] - decimal_places = self.cleaned_data['decimal_places'] - max_digits = self.cleaned_data['max_digits'] - initial = self.cleaned_data['initial'] + max_value = self.cleaned_data["max_value"] + min_value = self.cleaned_data["min_value"] + decimal_places = self.cleaned_data["decimal_places"] + max_digits = self.cleaned_data["max_digits"] + initial = self.cleaned_data["initial"] if ( - max_value is not None and min_value is not None and - max_value < min_value + max_value is not None + and min_value is not None + and max_value < min_value ): self.add_error( - 'max_value', - _("`max_value` should be > than `min_value`.") + "max_value", _("`max_value` should be > than `min_value`.") ) if max_value is not None and initial and max_value < initial: self.add_error( - 'initial', - _("`max_value` should be >= than `initial`.") + "initial", _("`max_value` should be >= than `initial`.") ) if min_value is not None and initial and min_value > initial: self.add_error( - 'min_value', - _("`initial` should be >= than `min_value`.") + "min_value", _("`initial` should be >= than `min_value`.") ) try: self.quantize(initial, decimal_places, max_digits) except decimal.InvalidOperation as err: self.add_error( - 'max_digits', - _("Quantize result has too many digits for current context") + "max_digits", + _("Quantize result has too many digits for current context"), ) def quantize(self, value, decimal_places, max_digits): @@ -142,6 +140,5 @@ def quantize(self, value, decimal_places, max_digits): if max_digits is not None: context.prec = max_digits return value.quantize( - decimal.Decimal('.1') ** decimal_places, - context=context + decimal.Decimal(".1") ** decimal_places, context=context ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/duration/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/duration/__init__.py index c32a74027..0ab00f9a2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/duration/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/duration/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.duration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.duration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'duration.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "duration.apps.Config" +) -UID = 'duration' +UID = "duration" diff --git a/src/fobi/contrib/plugins/form_elements/fields/duration/apps.py b/src/fobi/contrib/plugins/form_elements/fields/duration/apps.py index 003cf227c..a90ee88bc 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/duration/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/duration/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.duration.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.duration.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.duration' - label = 'fobi_contrib_plugins_form_elements_fields_duration' + name = "fobi.contrib.plugins.form_elements.fields.duration" + label = "fobi_contrib_plugins_form_elements_fields_duration" diff --git a/src/fobi/contrib/plugins/form_elements/fields/duration/base.py b/src/fobi/contrib/plugins/form_elements/fields/duration/base.py index 713fdc821..7184d817f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/duration/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/duration/base.py @@ -7,16 +7,16 @@ from django.utils.duration import duration_string from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import DurationInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.duration.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DurationInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.duration.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DurationInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -29,23 +29,21 @@ class DurationInputPlugin(FormFieldPlugin): group = _("Fields") form = DurationInputForm - def get_form_field_instances(self, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } # initial_kwargs = {} # if self.data.weeks: @@ -79,12 +77,9 @@ def prepare_plugin_form_data(self, cleaned_data): # ``cleaned_data`` return cleaned_data - def submit_plugin_form_data(self, - form_entry, - request, - form, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/duration/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/duration/fobi_form_elements.py index b1b891934..49dc65550 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/duration/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/duration/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import DurationInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.duration.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DurationInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields.duration." "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DurationInputPlugin",) form_element_plugin_registry.register(DurationInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/duration/forms.py b/src/fobi/contrib/plugins/form_elements/fields/duration/forms.py index 8fdb7031c..5dcdfdf96 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/duration/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/duration/forms.py @@ -1,18 +1,18 @@ import datetime from django import forms -from django.utils.translation import gettext_lazy as _ from django.utils.dateparse import parse_duration from django.utils.duration import duration_string from django.utils.encoding import force_str +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.fields.duration.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DurationInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.duration.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DurationInputForm",) theme = get_theme(request=None, as_instance=True) @@ -38,63 +38,62 @@ class DurationInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.DurationField( label=_("Initial"), required=False, - help_text=_("Enter string values. Example:
" - "    3 days, 23:10:53
" - "    09:30:00
" - "

"), + help_text=_( + "Enter string values. Example:
" + "    3 days, 23:10:53
" + "    09:30:00
" + "

" + ), widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): """Validation.""" cleaned_data = super(DurationInputForm, self).clean() - initial = cleaned_data.get('initial') + initial = cleaned_data.get("initial") if initial not in forms.Field.empty_values: if not isinstance(initial, datetime.timedelta): if parse_duration(force_str(initial)) is None: - self.add_error( - 'initial', - _("Enter a valid duration.") - ) + self.add_error("initial", _("Enter a valid duration.")) else: - cleaned_data['initial'] = duration_string(initial) + cleaned_data["initial"] = duration_string(initial) return cleaned_data diff --git a/src/fobi/contrib/plugins/form_elements/fields/email/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/email/__init__.py index 3ef7b72d0..1f54bb6d1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/email/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/email/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.email' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.email" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'email.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "email.apps.Config" +) -UID = 'email' +UID = "email" diff --git a/src/fobi/contrib/plugins/form_elements/fields/email/apps.py b/src/fobi/contrib/plugins/form_elements/fields/email/apps.py index 655ff28f7..02165deba 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/email/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/email/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.email.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.email.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.email' - label = 'fobi_contrib_plugins_form_elements_fields_email' + name = "fobi.contrib.plugins.form_elements.fields.email" + label = "fobi_contrib_plugins_form_elements_fields_email" diff --git a/src/fobi/contrib/plugins/form_elements/fields/email/base.py b/src/fobi/contrib/plugins/form_elements/fields/email/base.py index 59138f4da..eff2acbb2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/email/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/email/base.py @@ -4,17 +4,18 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import EmailInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'email.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('EmailInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "email.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("EmailInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -27,32 +28,33 @@ class EmailInputPlugin(FormFieldPlugin): group = _("Fields") form = EmailInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'email', - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "type": "email", + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } if self.data.max_length: try: - field_kwargs['max_length'] = int(self.data.max_length) + field_kwargs["max_length"] = int(self.data.max_length) except ValueError: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None else: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None - field_kwargs['min_length'] = None + field_kwargs["min_length"] = None return [(self.data.name, EmailField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/email/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/email/fobi_form_elements.py index dd8b67942..335688c6c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/email/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/email/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import EmailInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'email.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('EmailInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "email.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("EmailInputPlugin",) form_element_plugin_registry.register(EmailInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/email/forms.py b/src/fobi/contrib/plugins/form_elements/fields/email/forms.py index 3699dcc2c..b668c337f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/email/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/email/forms.py @@ -1,18 +1,18 @@ from __future__ import absolute_import from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.email.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('EmailInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.email.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("EmailInputForm",) theme = get_theme(request=None, as_instance=True) @@ -34,65 +34,71 @@ class EmailInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.EmailField( label=_("Initial"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(EmailInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/file/__init__.py index 2d69db9ef..1b5e0ce5d 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.file' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'file.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "file.apps.Config" +) -UID = 'file' +UID = "file" diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/apps.py b/src/fobi/contrib/plugins/form_elements/fields/file/apps.py index 5016a4416..0fdd94fbb 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.file' - label = 'fobi_contrib_plugins_form_elements_fields_file' + name = "fobi.contrib.plugins.form_elements.fields.file" + label = "fobi_contrib_plugins_form_elements_fields_file" diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/base.py b/src/fobi/contrib/plugins/form_elements/fields/file/base.py index 00017bc08..0ff27237d 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/base.py @@ -1,5 +1,4 @@ -from __future__ import absolute_import -from __future__ import unicode_literals +from __future__ import absolute_import, unicode_literals import os @@ -7,19 +6,19 @@ from django.forms.widgets import ClearableFileInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin -from fobi.helpers import handle_uploaded_file - from . import UID from .fields import AllowedExtensionsFileField as FileField from .forms import FileInputForm from .settings import FILES_UPLOAD_DIR -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FileInputPlugin',) +from fobi.base import FormFieldPlugin +from fobi.helpers import handle_uploaded_file + +__title__ = "fobi.contrib.plugins.form_elements.fields.file.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FileInputPlugin",) class FileInputPlugin(FormFieldPlugin): @@ -30,26 +29,27 @@ class FileInputPlugin(FormFieldPlugin): group = _("Fields") form = FileInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" if self.data.allowed_extensions: - attrs = {'accept': self.data.allowed_extensions.replace(' ', '')} + attrs = {"accept": self.data.allowed_extensions.replace(" ", "")} else: attrs = {} field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': ClearableFileInput(attrs=attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": ClearableFileInput(attrs=attrs), } if self.data.max_length is not None: - field_kwargs['max_length'] = self.data.max_length + field_kwargs["max_length"] = self.data.max_length if self.data.allowed_extensions: - field_kwargs['allowed_extensions'] = self.data.allowed_extensions + field_kwargs["allowed_extensions"] = self.data.allowed_extensions return [(self.data.name, FileField, field_kwargs)] @@ -66,21 +66,17 @@ def prepare_plugin_form_data(self, cleaned_data): saved_file = handle_uploaded_file(FILES_UPLOAD_DIR, file_path) # Overwrite ``cleaned_data`` of the ``form`` with path to moved # file. - file_relative_url = saved_file.replace(os.path.sep, '/') + file_relative_url = saved_file.replace(os.path.sep, "/") cleaned_data[self.data.name] = "{0}{1}".format( - settings.MEDIA_URL, - file_relative_url + settings.MEDIA_URL, file_relative_url ) # It's critically important to return the ``form`` with updated # ``cleaned_data`` return cleaned_data - def submit_plugin_form_data(self, - form_entry, - request, - form, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process file upload. Handling the posted data for file plugin when form is submitted. diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/conf.py b/src/fobi/contrib/plugins/form_elements/fields/file/conf.py index ecc6b9cd7..51b4a4cf1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,7 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_FIELDS_FILE_{0}'.format(setting)): - return getattr(settings, 'FOBI_PLUGIN_FIELDS_FILE_{0}'.format(setting)) + if hasattr(settings, "FOBI_PLUGIN_FIELDS_FILE_{0}".format(setting)): + return getattr(settings, "FOBI_PLUGIN_FIELDS_FILE_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/file/defaults.py index cf1429a89..cb74f8fa1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/defaults.py @@ -1,9 +1,9 @@ import os -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FILES_UPLOAD_DIR',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FILES_UPLOAD_DIR",) -FILES_UPLOAD_DIR = os.path.join('fobi_plugins', 'file') +FILES_UPLOAD_DIR = os.path.join("fobi_plugins", "file") diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/fields.py b/src/fobi/contrib/plugins/form_elements/fields/file/fields.py index a246ee293..2c51dc98f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/fields.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/fields.py @@ -4,11 +4,11 @@ from django.forms.fields import FileField from django.utils.translation import gettext_lazy as _ -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.fields' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('AllowedExtensionsFileField',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file.fields" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("AllowedExtensionsFileField",) class AllowedExtensionsFileField(FileField): @@ -19,16 +19,30 @@ class AllowedExtensionsFileField(FileField): Example: '.pdf, .jpeg' """ - def __init__(self, allowed_extensions=None, required=True, - widget=None, label=None, initial=None, help_text='', - *args, **kwargs): + def __init__( + self, + allowed_extensions=None, + required=True, + widget=None, + label=None, + initial=None, + help_text="", + *args, + **kwargs, + ): super(AllowedExtensionsFileField, self).__init__( - required=required, widget=widget, label=label, - initial=initial, help_text=help_text, *args, **kwargs + required=required, + widget=widget, + label=label, + initial=initial, + help_text=help_text, + *args, + **kwargs, ) if allowed_extensions: - self.allowed_extensions = allowed_extensions.replace(' ', '') \ - .split(',') + self.allowed_extensions = allowed_extensions.replace(" ", "").split( + "," + ) else: self.allowed_extensions = allowed_extensions diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/file/fobi_form_elements.py index 203a49fc3..123e1a7df 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/fobi_form_elements.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import FileInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FileInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = "fobi.contrib.plugins.form_elements.fields.file.fobi_form_elements" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FileInputPlugin",) form_element_plugin_registry.register(FileInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/forms.py b/src/fobi/contrib/plugins/form_elements/fields/file/forms.py index b1b8dec2e..7c9add6f9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/forms.py @@ -6,11 +6,11 @@ from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FileInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FileInputForm",) theme = get_theme(request=None, as_instance=True) @@ -25,73 +25,81 @@ class FileInputForm(forms.Form, BaseFormFieldPluginForm): ("initial", ""), ("max_length", str(DEFAULT_MAX_LENGTH)), ("required", False), - ("allowed_extensions", "") + ("allowed_extensions", ""), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) allowed_extensions = forms.CharField( label=_("Allowed extensions"), - help_text=_("List of allowed file extensions separated by comma " - "(Example: '.pdf, .jpeg'). " - "Leave blank to allow all extensions."), + help_text=_( + "List of allowed file extensions separated by comma " + "(Example: '.pdf, .jpeg'). " + "Leave blank to allow all extensions." + ), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(FileInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/file/settings.py b/src/fobi/contrib/plugins/form_elements/fields/file/settings.py index 2761f3cfb..d4cb5b7d7 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/file/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/file/settings.py @@ -3,10 +3,10 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.file.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FILES_UPLOAD_DIR',) +__title__ = "fobi.contrib.plugins.form_elements.fields.file.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FILES_UPLOAD_DIR",) -FILES_UPLOAD_DIR = get_setting('FILES_UPLOAD_DIR') +FILES_UPLOAD_DIR = get_setting("FILES_UPLOAD_DIR") diff --git a/src/fobi/contrib/plugins/form_elements/fields/float/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/float/__init__.py index 4bc5192fc..e6b3e0e36 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/float/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/float/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.float' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.float" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'float.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "float.apps.Config" +) -UID = 'float' +UID = "float" diff --git a/src/fobi/contrib/plugins/form_elements/fields/float/apps.py b/src/fobi/contrib/plugins/form_elements/fields/float/apps.py index 6a707140a..653e9f6c3 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/float/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/float/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.float.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.float.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.float' - label = 'fobi_contrib_plugins_form_elements_fields_float' + name = "fobi.contrib.plugins.form_elements.fields.float" + label = "fobi_contrib_plugins_form_elements_fields_float" diff --git a/src/fobi/contrib/plugins/form_elements/fields/float/base.py b/src/fobi/contrib/plugins/form_elements/fields/float/base.py index e9db11571..42ad92899 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/float/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/float/base.py @@ -3,17 +3,17 @@ from django.forms.fields import FloatField from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.widgets import NumberInput - from . import UID from .forms import FloatInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.float.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FloatInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.widgets import NumberInput + +__title__ = "fobi.contrib.plugins.form_elements.fields.float.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FloatInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,32 +26,33 @@ class FloatInputPlugin(FormFieldPlugin): group = _("Fields") form = FloatInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'number', - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "type": "number", + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, } if self.data.max_value is not None: data_max_value = float(self.data.max_value) - field_kwargs['max_value'] = data_max_value - widget_attrs['max'] = data_max_value + field_kwargs["max_value"] = data_max_value + widget_attrs["max"] = data_max_value if self.data.min_value is not None: data_min_value = float(self.data.min_value) - field_kwargs['min_value'] = data_min_value - widget_attrs['min'] = data_min_value + field_kwargs["min_value"] = data_min_value + widget_attrs["min"] = data_min_value - field_kwargs['widget'] = NumberInput(attrs=widget_attrs) + field_kwargs["widget"] = NumberInput(attrs=widget_attrs) return [(self.data.name, FloatField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/float/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/float/fobi_form_elements.py index 33270528b..758fa81a9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/float/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/float/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import FloatInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'float.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FloatInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "float.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FloatInputPlugin",) form_element_plugin_registry.register(FloatInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/float/forms.py b/src/fobi/contrib/plugins/form_elements/fields/float/forms.py index e40893c3b..f254e65a4 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/float/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/float/forms.py @@ -4,11 +4,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.float.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FloatInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.float.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FloatInputForm",) theme = get_theme(request=None, as_instance=True) @@ -31,78 +31,76 @@ class FloatInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.FloatField( label=_("Initial"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) min_value = forms.FloatField( label=_("Min value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) max_value = forms.FloatField( label=_("Max value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): """Validating the values.""" super(FloatInputForm, self).clean() - max_value = self.cleaned_data['max_value'] - min_value = self.cleaned_data['min_value'] - initial = self.cleaned_data['initial'] + max_value = self.cleaned_data["max_value"] + min_value = self.cleaned_data["min_value"] + initial = self.cleaned_data["initial"] if ( - max_value is not None and min_value is not None and - max_value < min_value + max_value is not None + and min_value is not None + and max_value < min_value ): self.add_error( - 'max_value', - _("`max_value` should be > than `min_value`.") + "max_value", _("`max_value` should be > than `min_value`.") ) if max_value is not None and initial and max_value < initial: self.add_error( - 'initial', - _("`max_value` should be >= than `initial`.") + "initial", _("`max_value` should be >= than `initial`.") ) if min_value is not None and initial and min_value > initial: self.add_error( - 'min_value', - _("`initial` should be >= than `min_value`.") + "min_value", _("`initial` should be >= than `min_value`.") ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/hidden/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/hidden/__init__.py index b430fb3cf..13b80e18b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/hidden/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/hidden/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.hidden' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.hidden" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'hidden.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "hidden.apps.Config" +) -UID = 'hidden' +UID = "hidden" diff --git a/src/fobi/contrib/plugins/form_elements/fields/hidden/apps.py b/src/fobi/contrib/plugins/form_elements/fields/hidden/apps.py index 83c533277..bb7b1e5d9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/hidden/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/hidden/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.hidden.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.hidden.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.hidden' - label = 'fobi_contrib_plugins_form_elements_fields_hidden' + name = "fobi.contrib.plugins.form_elements.fields.hidden" + label = "fobi_contrib_plugins_form_elements_fields_hidden" diff --git a/src/fobi/contrib/plugins/form_elements/fields/hidden/base.py b/src/fobi/contrib/plugins/form_elements/fields/hidden/base.py index 550c6e2c4..a46cb8a04 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/hidden/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/hidden/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import HiddenInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import HiddenInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.hidden.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HiddenInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.hidden.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HiddenInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -27,19 +27,20 @@ class HiddenInputPlugin(FormFieldPlugin): form = HiddenInputForm is_hidden = True - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'label': self.data.label, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': HiddenInput( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "initial": self.data.initial, + "required": self.data.required, + "widget": HiddenInput( + attrs={"class": theme.form_element_html_class} ), } if self.data.max_length is not None: - field_kwargs['max_length'] = self.data.max_length + field_kwargs["max_length"] = self.data.max_length return [(self.data.name, CharField, field_kwargs)] # return [(self.data.name, (CharField, TextInput), kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py index 83aa86c69..693210230 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/hidden/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import HiddenInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'hidden.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HiddenInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "hidden.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HiddenInputPlugin",) form_element_plugin_registry.register(HiddenInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/hidden/forms.py b/src/fobi/contrib/plugins/form_elements/fields/hidden/forms.py index 0b93c9cc2..6721999e7 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/hidden/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/hidden/forms.py @@ -1,16 +1,16 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.hidden.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HiddenInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.hidden.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HiddenInputForm",) theme = get_theme(request=None, as_instance=True) @@ -23,56 +23,62 @@ class HiddenInputForm(forms.Form, BaseFormFieldPluginForm): ("name", ""), ("initial", ""), ("max_length", str(DEFAULT_MAX_LENGTH)), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean(self): super(HiddenInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/input/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/input/__init__.py index 2c9cde6c2..6b4b3b7e3 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/input/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/input/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.input' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.input" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'input.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "input.apps.Config" +) -UID = 'input' +UID = "input" diff --git a/src/fobi/contrib/plugins/form_elements/fields/input/apps.py b/src/fobi/contrib/plugins/form_elements/fields/input/apps.py index 0ceea5555..ebc26afb4 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/input/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/input/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.input.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.input.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.input' - label = 'fobi_contrib_plugins_form_elements_fields_input' + name = "fobi.contrib.plugins.form_elements.fields.input" + label = "fobi_contrib_plugins_form_elements_fields_input" diff --git a/src/fobi/contrib/plugins/form_elements/fields/input/base.py b/src/fobi/contrib/plugins/form_elements/fields/input/base.py index 1d9ce7d6c..0b98e356f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/input/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/input/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import InputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.input.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.input.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,61 +26,69 @@ class InputPlugin(FormFieldPlugin): group = _("Fields") form = InputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, - 'type': self.data.type_value, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, + "type": self.data.type_value, } if self.data.autocomplete_value is not None: - widget_attrs.update({'autocomplete': 'on'}) + widget_attrs.update({"autocomplete": "on"}) if self.data.autofocus_value is not None: - widget_attrs.update({'autofocus': 'autofocus'}) + widget_attrs.update({"autofocus": "autofocus"}) if self.data.disabled_value is not None: - widget_attrs.update({'disabled': 'disabled'}) + widget_attrs.update({"disabled": "disabled"}) # if self.data.formnovalidate_value: # widget_attrs.update({'formnovalidate': 'formnovalidate'}) if self.data.list_value is not None: - widget_attrs.update({'list': self.data.list_value}) + widget_attrs.update({"list": self.data.list_value}) if self.data.max_value is not None: - widget_attrs.update({'max': self.data.max_value}) + widget_attrs.update({"max": self.data.max_value}) if self.data.min_value is not None: - widget_attrs.update({'min': self.data.min_value}) + widget_attrs.update({"min": self.data.min_value}) if self.data.multiple_value is not None: - widget_attrs.update({'multiple': 'multiple'}) + widget_attrs.update({"multiple": "multiple"}) if self.data.pattern_value is not None: - widget_attrs.update({'pattern': self.data.pattern_value}) + widget_attrs.update({"pattern": self.data.pattern_value}) if self.data.readonly_value is not None: - widget_attrs.update({'readonly': 'readonly'}) + widget_attrs.update({"readonly": "readonly"}) if self.data.step_value is not None: - widget_attrs.update({'step': self.data.step_value}) + widget_attrs.update({"step": self.data.step_value}) - if self.data.type_value and self.data.type_value in ('submit', - 'button', - 'reset',): - widget_attrs.update({'value': self.data.label}) + if self.data.type_value and self.data.type_value in ( + "submit", + "button", + "reset", + ): + widget_attrs.update({"value": self.data.label}) field_kwargs = { - 'label': self.data.label - if self.data.type_value not in ('submit', 'button', 'reset',) - else '', - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label + if self.data.type_value + not in ( + "submit", + "button", + "reset", + ) + else "", + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } # if self.data.max_length is not None: # kwargs['max_length'] = self.data.max_length diff --git a/src/fobi/contrib/plugins/form_elements/fields/input/constants.py b/src/fobi/contrib/plugins/form_elements/fields/input/constants.py index 4dd8acda1..5820fee3c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/input/constants.py +++ b/src/fobi/contrib/plugins/form_elements/fields/input/constants.py @@ -1,86 +1,87 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.input.constants' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.fields.input.constants" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'FORM_FIELD_TYPE_CHOICES', 'FIELD_TYPE_TO_DJANGO_FORM_FIELD_MAPPING', - 'FIELD_TYPE_TO_DJANGO_FORM_WIDGET_MAPPING', + "FORM_FIELD_TYPE_CHOICES", + "FIELD_TYPE_TO_DJANGO_FORM_FIELD_MAPPING", + "FIELD_TYPE_TO_DJANGO_FORM_WIDGET_MAPPING", ) FORM_FIELD_TYPE_CHOICES = ( # ('button', 'button'), - ('checkbox', 'checkbox'), - ('color', 'color'), - ('date', 'date'), - ('datetime', 'datetime'), - ('datetime-local', 'datetime-local'), - ('email', 'email'), - ('file', 'file'), - ('hidden', 'hidden'), - ('image', 'image'), - ('month', 'month'), - ('number', 'number'), - ('password', 'password'), - ('radio', 'radio'), - ('range', 'range'), - ('reset', 'reset'), - ('search', 'search'), + ("checkbox", "checkbox"), + ("color", "color"), + ("date", "date"), + ("datetime", "datetime"), + ("datetime-local", "datetime-local"), + ("email", "email"), + ("file", "file"), + ("hidden", "hidden"), + ("image", "image"), + ("month", "month"), + ("number", "number"), + ("password", "password"), + ("radio", "radio"), + ("range", "range"), + ("reset", "reset"), + ("search", "search"), # ('submit', 'submit'), - ('tel', 'tel'), - ('text', 'text'), - ('time', 'time'), - ('url', 'url'), - ('week', 'week'), + ("tel", "tel"), + ("text", "text"), + ("time", "time"), + ("url", "url"), + ("week", "week"), ) FIELD_TYPE_TO_DJANGO_FORM_FIELD_MAPPING = { - 'button': '', - 'checkbox': '', - 'color': '', - 'date': '', - 'datetime': '', - 'datetime-local': '', - 'email': '', - 'file': '', - 'hidden': '', - 'image': '', - 'month': '', - 'number': '', - 'password': '', - 'radio': '', - 'range': '', - 'reset': '', - 'search': '', - 'submit': '', - 'tel': '', - 'text': '', - 'time': '', - 'url': '', - 'week': '', + "button": "", + "checkbox": "", + "color": "", + "date": "", + "datetime": "", + "datetime-local": "", + "email": "", + "file": "", + "hidden": "", + "image": "", + "month": "", + "number": "", + "password": "", + "radio": "", + "range": "", + "reset": "", + "search": "", + "submit": "", + "tel": "", + "text": "", + "time": "", + "url": "", + "week": "", } FIELD_TYPE_TO_DJANGO_FORM_WIDGET_MAPPING = { - 'button': '', - 'checkbox': '', - 'color': '', - 'date': '', - 'datetime': '', - 'datetime-local': '', - 'email': '', - 'file': '', - 'hidden': '', - 'image': '', - 'month': '', - 'number': '', - 'password': '', - 'radio': '', - 'range': '', - 'reset': '', - 'search': '', - 'submit': '', - 'tel': '', - 'text': '', - 'time': '', - 'url': '', - 'week': '', + "button": "", + "checkbox": "", + "color": "", + "date": "", + "datetime": "", + "datetime-local": "", + "email": "", + "file": "", + "hidden": "", + "image": "", + "month": "", + "number": "", + "password": "", + "radio": "", + "range": "", + "reset": "", + "search": "", + "submit": "", + "tel": "", + "text": "", + "time": "", + "url": "", + "week": "", } diff --git a/src/fobi/contrib/plugins/form_elements/fields/input/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/input/fobi_form_elements.py index 1752ac457..5dcc0a0be 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/input/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/input/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import InputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'input.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "input.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InputPlugin",) form_element_plugin_registry.register(InputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/input/forms.py b/src/fobi/contrib/plugins/form_elements/fields/input/forms.py index f4741cc32..9047e2408 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/input/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/input/forms.py @@ -1,18 +1,18 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ + +from .constants import FORM_FIELD_TYPE_CHOICES from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -from .constants import FORM_FIELD_TYPE_CHOICES - -__title__ = 'fobi.contrib.plugins.form_elements.fields.input.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.input.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InputForm",) theme = get_theme(request=None, as_instance=True) @@ -28,23 +28,22 @@ class InputForm(forms.Form, BaseFormFieldPluginForm): ("max_length", str(DEFAULT_MAX_LENGTH)), ("required", False), ("placeholder", ""), - # Additional elements ("autocomplete_value", "off"), # Possible values are: on, off ("autofocus_value", False), # If set to True, value should be - # "autofocus" + # "autofocus" ("disabled_value", False), # If set to True, value should - # be "disabled" + # be "disabled" # ("formnovalidate_value", ""), # If set to True, value should be # # "formnovalidate" ("list_value", ""), ("max_value", ""), ("min_value", ""), ("multiple_value", False), # If set to True, value should - # be "multiple" + # be "multiple" ("pattern_value", ""), ("readonly_value", False), # If set to True, value should - # be "readonly" + # be "readonly" ("step_value", ""), ("type_value", "text"), ] @@ -53,51 +52,55 @@ class InputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) # Additional elements @@ -105,22 +108,22 @@ class InputForm(forms.Form, BaseFormFieldPluginForm): label=_("Auto-complete (HTML5 autocomplete)"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) autofocus_value = forms.BooleanField( label=_("Auto-focus (HTML5 autofocus)"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) disabled_value = forms.BooleanField( label=_("Disabled"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) # formnovalidate_value = forms.BooleanField( # label=_("Skip validation (HTML5 formnovalidate)"), @@ -133,68 +136,70 @@ class InputForm(forms.Form, BaseFormFieldPluginForm): label=_("List (HTML5 list)"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_value = forms.CharField( label=_("Max (HTML5 max)"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) min_value = forms.CharField( label=_("Min (HTML5 min)"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) multiple_value = forms.BooleanField( label=_("Multiple (HTML5 multiple)"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) pattern_value = forms.CharField( label=_("Pattern (HTML5 pattern)"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) readonly_value = forms.BooleanField( label=_("Read-only (HTML readonly)"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) step_value = forms.IntegerField( label=_("Step (HTML5 step)"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) type_value = forms.ChoiceField( label=_("Type (HTML type)"), required=False, choices=FORM_FIELD_TYPE_CHOICES, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(InputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/integer/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/integer/__init__.py index ea4af4de4..69ad31a12 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/integer/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/integer/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.integer' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.integer" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'integer.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "integer.apps.Config" +) -UID = 'integer' +UID = "integer" diff --git a/src/fobi/contrib/plugins/form_elements/fields/integer/apps.py b/src/fobi/contrib/plugins/form_elements/fields/integer/apps.py index 8bc2e14a9..b5bf57ced 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/integer/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/integer/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.integer.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.integer.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.integer' - label = 'fobi_contrib_plugins_form_elements_fields_integer' + name = "fobi.contrib.plugins.form_elements.fields.integer" + label = "fobi_contrib_plugins_form_elements_fields_integer" diff --git a/src/fobi/contrib/plugins/form_elements/fields/integer/base.py b/src/fobi/contrib/plugins/form_elements/fields/integer/base.py index 78f20bf57..81e768de0 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/integer/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/integer/base.py @@ -3,17 +3,17 @@ from django.forms.fields import IntegerField from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.widgets import NumberInput - from . import UID from .forms import IntegerInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.integer.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IntegerInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.widgets import NumberInput + +__title__ = "fobi.contrib.plugins.form_elements.fields.integer.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IntegerInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,29 +26,30 @@ class IntegerInputPlugin(FormFieldPlugin): group = _("Fields") form = IntegerInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'number', - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "type": "number", + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, } if self.data.max_value is not None: data_max_value = int(self.data.max_value) - field_kwargs['max_value'] = data_max_value - widget_attrs['max'] = data_max_value + field_kwargs["max_value"] = data_max_value + widget_attrs["max"] = data_max_value if self.data.min_value is not None: data_min_value = int(self.data.min_value) - field_kwargs['min_value'] = data_min_value - widget_attrs['min'] = data_min_value + field_kwargs["min_value"] = data_min_value + widget_attrs["min"] = data_min_value - field_kwargs['widget'] = NumberInput(attrs=widget_attrs) + field_kwargs["widget"] = NumberInput(attrs=widget_attrs) return [(self.data.name, IntegerField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/integer/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/integer/fobi_form_elements.py index 00ef5f956..2a8580a47 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/integer/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/integer/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import IntegerInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'integer.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IntegerInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "integer.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IntegerInputPlugin",) form_element_plugin_registry.register(IntegerInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/integer/forms.py b/src/fobi/contrib/plugins/form_elements/fields/integer/forms.py index c1c4001af..10a62e3d1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/integer/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/integer/forms.py @@ -4,11 +4,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.integer.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IntegerInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.integer.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IntegerInputForm",) theme = get_theme(request=None, as_instance=True) @@ -31,78 +31,76 @@ class IntegerInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.IntegerField( label=_("Initial"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) min_value = forms.IntegerField( label=_("Min value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) max_value = forms.IntegerField( label=_("Max value"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): """Validating the values.""" super(IntegerInputForm, self).clean() - max_value = self.cleaned_data['max_value'] - min_value = self.cleaned_data['min_value'] - initial = self.cleaned_data['initial'] + max_value = self.cleaned_data["max_value"] + min_value = self.cleaned_data["min_value"] + initial = self.cleaned_data["initial"] if ( - max_value is not None and min_value is not None and - max_value < min_value + max_value is not None + and min_value is not None + and max_value < min_value ): self.add_error( - 'max_value', - _("`max_value` should be > than `min_value`.") + "max_value", _("`max_value` should be > than `min_value`.") ) if max_value is not None and initial and max_value < initial: self.add_error( - 'initial', - _("`max_value` should be >= than `initial`.") + "initial", _("`max_value` should be >= than `initial`.") ) if min_value is not None and initial and min_value > initial: self.add_error( - 'min_value', - _("`initial` should be >= than `min_value`.") + "min_value", _("`initial` should be >= than `min_value`.") ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/ip_address/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/ip_address/__init__.py index 6e8989a0c..f10673ae9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/ip_address/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/ip_address/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.ip_address' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.ip_address" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'ip_address.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "ip_address.apps.Config" +) -UID = 'ip_address' +UID = "ip_address" diff --git a/src/fobi/contrib/plugins/form_elements/fields/ip_address/apps.py b/src/fobi/contrib/plugins/form_elements/fields/ip_address/apps.py index 14f3130e6..0040c45b1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/ip_address/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/ip_address/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.ip_address.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.ip_address.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.ip_address' - label = 'fobi_contrib_plugins_form_elements_fields_ip_address' + name = "fobi.contrib.plugins.form_elements.fields.ip_address" + label = "fobi_contrib_plugins_form_elements_fields_ip_address" diff --git a/src/fobi/contrib/plugins/form_elements/fields/ip_address/base.py b/src/fobi/contrib/plugins/form_elements/fields/ip_address/base.py index ad0375640..13c5530b2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/ip_address/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/ip_address/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import IPAddressInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.ip_address.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IPAddressInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.ip_address.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IPAddressInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,22 +26,23 @@ class IPAddressInputPlugin(FormFieldPlugin): group = _("Fields") form = IPAddressInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } if self.data.max_length is not None: - field_kwargs['max_length'] = self.data.max_length + field_kwargs["max_length"] = self.data.max_length return [(self.data.name, GenericIPAddressField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/ip_address/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/ip_address/fobi_form_elements.py index 7d89a7b9a..935587721 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/ip_address/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/ip_address/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import IPAddressInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'ip_address.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IPAddressInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "ip_address.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IPAddressInputPlugin",) form_element_plugin_registry.register(IPAddressInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/ip_address/forms.py b/src/fobi/contrib/plugins/form_elements/fields/ip_address/forms.py index bb61b24ef..9b6fc08bd 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/ip_address/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/ip_address/forms.py @@ -1,16 +1,16 @@ from django import forms -from django.core.validators import ip_address_validator_map, MinValueValidator +from django.core.validators import MinValueValidator, ip_address_validator_map from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.ip_address.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IPAddressInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.ip_address.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IPAddressInputForm",) theme = get_theme(request=None, as_instance=True) @@ -34,78 +34,84 @@ class IPAddressInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) protocol = forms.ChoiceField( label=_("Protocol"), choices=[(pr, pr) for pr in ip_address_validator_map.keys()], required=True, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) unpack_ipv4 = forms.BooleanField( label=_("Unpack IPV4"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(IPAddressInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/__init__.py index 4ce8973fa..857415787 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.null_boolean' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.null_boolean" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'null_boolean.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "null_boolean.apps.Config" +) -UID = 'null_boolean' +UID = "null_boolean" diff --git a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/apps.py b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/apps.py index 1e8a93291..a1fb236c1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.null_boolean.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.null_boolean.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.null_boolean' - label = 'fobi_contrib_plugins_form_elements_fields_null_boolean' + name = "fobi.contrib.plugins.form_elements.fields.null_boolean" + label = "fobi_contrib_plugins_form_elements_fields_null_boolean" diff --git a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/base.py b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/base.py index a0041b353..fc8e0bef8 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import NullBooleanSelect from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import NullBooleanSelectForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.null_boolean.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('NullBooleanSelectPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.null_boolean.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("NullBooleanSelectPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,16 +26,17 @@ class NullBooleanSelectPlugin(FormFieldPlugin): group = _("Fields") form = NullBooleanSelectForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': NullBooleanSelect( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": NullBooleanSelect( + attrs={"class": theme.form_element_html_class} ), } diff --git a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/fobi_form_elements.py index 6e97e26e0..dac78b29f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import NullBooleanSelectPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'null_boolean.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('NullBooleanSelectPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "null_boolean.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("NullBooleanSelectPlugin",) form_element_plugin_registry.register(NullBooleanSelectPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/forms.py b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/forms.py index fe88cfdc0..c7340ef75 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/null_boolean/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/null_boolean/forms.py @@ -3,11 +3,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.fields.null_boolean.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('NullBooleanSelectForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.null_boolean.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("NullBooleanSelectForm",) theme = get_theme(request=None, as_instance=True) @@ -20,41 +20,41 @@ class NullBooleanSelectForm(forms.Form, BaseFormFieldPluginForm): ("name", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.NullBooleanField( label=_("Initial"), required=False, widget=forms.widgets.NullBooleanSelect( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/password/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/password/__init__.py index 0fa97a1b5..54edc04bb 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/password/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/password/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.password' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.password" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'password.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "password.apps.Config" +) -UID = 'password' +UID = "password" diff --git a/src/fobi/contrib/plugins/form_elements/fields/password/apps.py b/src/fobi/contrib/plugins/form_elements/fields/password/apps.py index 1b734d7b5..153db907f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/password/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/password/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.password.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.password.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.password' - label = 'fobi_contrib_plugins_form_elements_fields_password' + name = "fobi.contrib.plugins.form_elements.fields.password" + label = "fobi_contrib_plugins_form_elements_fields_password" diff --git a/src/fobi/contrib/plugins/form_elements/fields/password/base.py b/src/fobi/contrib/plugins/form_elements/fields/password/base.py index 37aaa9f80..6a56f9584 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/password/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/password/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import PasswordInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import PasswordInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.password.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('PasswordInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.password.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("PasswordInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,22 +26,23 @@ class PasswordInputPlugin(FormFieldPlugin): group = _("Fields") form = PasswordInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': PasswordInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": PasswordInput(attrs=widget_attrs), } - if self.data.max_length not in (None, ''): - field_kwargs['max_length'] = self.data.max_length + if self.data.max_length not in (None, ""): + field_kwargs["max_length"] = self.data.max_length return [(self.data.name, CharField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/password/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/password/fobi_form_elements.py index f7a9b719d..fd1f59d48 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/password/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/password/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import PasswordInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'password.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('PasswordInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "password.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("PasswordInputPlugin",) form_element_plugin_registry.register(PasswordInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/password/forms.py b/src/fobi/contrib/plugins/form_elements/fields/password/forms.py index ae13a67b3..845b184c1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/password/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/password/forms.py @@ -1,16 +1,16 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.password.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('PasswordInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.password.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("PasswordInputForm",) theme = get_theme(request=None, as_instance=True) @@ -32,63 +32,69 @@ class PasswordInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(PasswordInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/radio/__init__.py index f9b35987f..140e24433 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.radio' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.radio" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'radio.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "radio.apps.Config" +) -UID = 'radio' +UID = "radio" diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/apps.py b/src/fobi/contrib/plugins/form_elements/fields/radio/apps.py index dea3c2c52..5509d4685 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.radio.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.radio' - label = 'fobi_contrib_plugins_form_elements_fields_radio' + name = "fobi.contrib.plugins.form_elements.fields.radio" + label = "fobi_contrib_plugins_form_elements_fields_radio" diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/base.py b/src/fobi/contrib/plugins/form_elements/fields/radio/base.py index ece5c9b66..f29cd871b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/base.py @@ -4,22 +4,19 @@ from django.forms.widgets import RadioSelect from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR -) -from fobi.helpers import get_select_field_choices, safe_text - from . import UID from .forms import RadioInputForm from .settings import SUBMIT_VALUE_AS -__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RadioInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL +from fobi.helpers import get_select_field_choices, safe_text + +__title__ = "fobi.contrib.plugins.form_elements.fields.radio.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RadioInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -32,25 +29,27 @@ class RadioInputPlugin(FormFieldPlugin): group = _("Fields") form = RadioInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" choices = get_select_field_choices(self.data.choices) - widget_attrs = {'class': theme.form_radio_element_html_class} + widget_attrs = {"class": theme.form_radio_element_html_class} field_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), + "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, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py b/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py index 8b9e09a79..cdc06fdd2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.fields.radio.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,7 +24,7 @@ def get_setting(setting, override=None): """ 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)) + 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 index fdc11b3a9..57232f452 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/defaults.py @@ -1,9 +1,9 @@ from fobi.constants import SUBMIT_VALUE_AS_REPR -__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +__title__ = "fobi.contrib.plugins.form_elements.fields.radio.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) 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 69623448e..babb445c7 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 @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import RadioInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'radio.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RadioInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "radio.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RadioInputPlugin",) form_element_plugin_registry.register(RadioInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/forms.py b/src/fobi/contrib/plugins/form_elements/fields/radio/forms.py index 125f38822..ae315bce7 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/forms.py @@ -4,11 +4,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import validate_initial_for_choices -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RadioInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RadioInputForm",) theme = get_theme(request=None, as_instance=True) @@ -22,79 +22,81 @@ class RadioInputForm(forms.Form, BaseFormFieldPluginForm): ("choices", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) choices = forms.CharField( label=_("Choices"), required=True, - 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>' - "
"), + 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} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Validating the initial value.""" - return validate_initial_for_choices(self, 'choices', 'initial') + return validate_initial_for_choices(self, "choices", "initial") # # availalble_choices = dict( # get_select_field_choices(self.cleaned_data['choices']) diff --git a/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py b/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py index 6ce750fbf..61134c610 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/radio/settings.py @@ -1,13 +1,13 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.radio.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = "fobi.contrib.plugins.form_elements.fields.radio.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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/range_select/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/__init__.py index b87f98ff9..33c6b406b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'range_select.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "range_select.apps.Config" +) -UID = 'range_select' +UID = "range_select" diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/apps.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/apps.py index 8b57939ed..c68ba92cd 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.range_select' - label = 'fobi_contrib_plugins_form_elements_fields_range_select' + name = "fobi.contrib.plugins.form_elements.fields.range_select" + label = "fobi_contrib_plugins_form_elements_fields_range_select" diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/base.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/base.py index abf9dd35d..b7a6813a2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/base.py @@ -3,27 +3,23 @@ from django.forms.fields import ChoiceField from django.forms.widgets import Select from django.utils.translation import gettext_lazy as _ - from six import PY3 from ......base import FormFieldPlugin, get_theme - from . import UID from .forms import RangeSelectInputForm -from .settings import ( +from .settings import ( # MAX_VALUE,; MIN_VALUE, INITIAL, INITIAL_MAX_VALUE, INITIAL_MIN_VALUE, - # MAX_VALUE, - # MIN_VALUE, - STEP + STEP, ) -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RangeSelectInputPlugin',) +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RangeSelectInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -36,19 +32,20 @@ class RangeSelectInputPlugin(FormFieldPlugin): group = _("Fields") form = RangeSelectInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" initial = self.get_initial() choices = self.get_choices() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': initial, - 'required': self.data.required, - 'choices': choices, - 'widget': Select(attrs={'class': theme.form_element_html_class}), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": initial, + "required": self.data.required, + "choices": choices, + "widget": Select(attrs={"class": theme.form_element_html_class}), } return [(self.data.name, ChoiceField, field_kwargs)] @@ -65,12 +62,16 @@ def get_choices(self): Might be used in integration plugins. """ - max_value = int(self.data.max_value) \ - if self.data.max_value is not None \ + max_value = ( + int(self.data.max_value) + if self.data.max_value is not None else INITIAL_MAX_VALUE - min_value = int(self.data.min_value) \ - if self.data.min_value is not None \ + ) + min_value = ( + int(self.data.min_value) + if self.data.min_value is not None else INITIAL_MIN_VALUE + ) step = int(self.data.step) if self.data.step else STEP if PY3: diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/conf.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/conf.py index 6541c388b..e3101417e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,11 +25,9 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, - 'FOBI_FORM_ELEMENT_RANGE_SELECT_{0}'.format(setting)): + if hasattr(settings, "FOBI_FORM_ELEMENT_RANGE_SELECT_{0}".format(setting)): return getattr( - settings, - 'FOBI_FORM_ELEMENT_RANGE_SELECT_{0}'.format(setting) + settings, "FOBI_FORM_ELEMENT_RANGE_SELECT_{0}".format(setting) ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/defaults.py index 93eff45c7..67f893f3f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/defaults.py @@ -1,14 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'INITIAL', - 'INITIAL_MAX_VALUE', - 'INITIAL_MIN_VALUE', - 'MAX_VALUE', - 'MIN_VALUE', - 'STEP', + "INITIAL", + "INITIAL_MAX_VALUE", + "INITIAL_MIN_VALUE", + "MAX_VALUE", + "MIN_VALUE", + "STEP", ) INITIAL = 50 diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/fobi_form_elements.py index 09cf029e4..c13bd8930 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import RangeSelectInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RangeSelectInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields.range_select." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RangeSelectInputPlugin",) form_element_plugin_registry.register(RangeSelectInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/forms.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/forms.py index 593b0f95a..150dbffb3 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/forms.py @@ -1,23 +1,23 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from fobi.base import BaseFormFieldPluginForm, get_theme -from fobi.widgets import NumberInput - from .settings import ( INITIAL, INITIAL_MAX_VALUE, INITIAL_MIN_VALUE, MAX_VALUE, MIN_VALUE, - STEP + STEP, ) -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RangeSelectInputForm',) +from fobi.base import BaseFormFieldPluginForm, get_theme +from fobi.widgets import NumberInput + +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RangeSelectInputForm",) theme = get_theme(request=None, as_instance=True) @@ -33,99 +33,95 @@ class RangeSelectInputForm(forms.Form, BaseFormFieldPluginForm): ("step", STEP), ("help_text", ""), ("initial", INITIAL), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) min_value = forms.IntegerField( label=_("Min value"), required=True, initial=INITIAL_MIN_VALUE, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, - max_value=MAX_VALUE + max_value=MAX_VALUE, ) max_value = forms.IntegerField( label=_("Max value"), required=True, initial=INITIAL_MAX_VALUE, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, - max_value=MAX_VALUE + max_value=MAX_VALUE, ) step = forms.IntegerField( label=_("Step"), required=True, help_text=_("Step size"), - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, - max_value=MAX_VALUE + max_value=MAX_VALUE, ) help_text = forms.CharField( label=_("Help text"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.IntegerField( label=_("Initial"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, max_value=MAX_VALUE, - initial=INITIAL + initial=INITIAL, ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean(self): """Validating the values.""" super(RangeSelectInputForm, self).clean() - max_value = self.cleaned_data['max_value'] - min_value = self.cleaned_data['min_value'] - initial = self.cleaned_data['initial'] - step = self.cleaned_data['step'] + max_value = self.cleaned_data["max_value"] + min_value = self.cleaned_data["min_value"] + initial = self.cleaned_data["initial"] + step = self.cleaned_data["step"] if max_value < min_value: self.add_error( - 'max_value', - _("`max_value` should be > than `min_value`.") + "max_value", _("`max_value` should be > than `min_value`.") ) if step > max_value - min_value: self.add_error( - 'step', - _("`step` should be > than `max_value` - `min_value`.") + "step", _("`step` should be > than `max_value` - `min_value`.") ) if max_value < initial: self.add_error( - 'initial', - _("`max_value` should be >= than `initial`.") + "initial", _("`max_value` should be >= than `initial`.") ) if min_value > initial: self.add_error( - 'min_value', - _("`initial` should be >= than `min_value`.") + "min_value", _("`initial` should be >= than `min_value`.") ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/range_select/settings.py b/src/fobi/contrib/plugins/form_elements/fields/range_select/settings.py index 3ab39dea8..a80a6a65f 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/range_select/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/range_select/settings.py @@ -1,26 +1,26 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.range_select.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.fields.range_select.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'INITIAL', - 'INITIAL_MAX_VALUE', - 'INITIAL_MIN_VALUE', - 'MAX_VALUE', - 'MIN_VALUE', - 'STEP', + "INITIAL", + "INITIAL_MAX_VALUE", + "INITIAL_MIN_VALUE", + "MAX_VALUE", + "MIN_VALUE", + "STEP", ) -INITIAL = get_setting('INITIAL') +INITIAL = get_setting("INITIAL") -INITIAL_MAX_VALUE = get_setting('INITIAL_MAX_VALUE') +INITIAL_MAX_VALUE = get_setting("INITIAL_MAX_VALUE") -INITIAL_MIN_VALUE = get_setting('INITIAL_MIN_VALUE') +INITIAL_MIN_VALUE = get_setting("INITIAL_MIN_VALUE") -MAX_VALUE = get_setting('MAX_VALUE') +MAX_VALUE = get_setting("MAX_VALUE") -MIN_VALUE = get_setting('MIN_VALUE') +MIN_VALUE = get_setting("MIN_VALUE") -STEP = get_setting('STEP') +STEP = get_setting("STEP") diff --git a/src/fobi/contrib/plugins/form_elements/fields/regex/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/regex/__init__.py index ec8c45e56..0a54b2cf8 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/regex/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/regex/__init__.py @@ -1,12 +1,16 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_elements.fields.regex' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.regex" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'regex.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "regex.apps.Config" +) -UID = 'regex' +UID = "regex" diff --git a/src/fobi/contrib/plugins/form_elements/fields/regex/apps.py b/src/fobi/contrib/plugins/form_elements/fields/regex/apps.py index f987b8dd0..d358df277 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/regex/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/regex/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.regex.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.regex.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.regex' - label = 'fobi_contrib_plugins_form_elements_fields_regex' + name = "fobi.contrib.plugins.form_elements.fields.regex" + label = "fobi_contrib_plugins_form_elements_fields_regex" diff --git a/src/fobi/contrib/plugins/form_elements/fields/regex/base.py b/src/fobi/contrib/plugins/form_elements/fields/regex/base.py index 7e24347df..859ebff11 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/regex/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/regex/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import RegexInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.regex.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RegexInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.regex.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RegexInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,24 +26,25 @@ class RegexInputPlugin(FormFieldPlugin): group = _("Fields") form = RegexInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'regex': self.data.regex, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "regex": self.data.regex, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } if self.data.max_length is not None: - field_kwargs['max_length'] = self.data.max_length + field_kwargs["max_length"] = self.data.max_length return [(self.data.name, RegexField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/regex/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/regex/fobi_form_elements.py index 97204a87e..1a7f7a31b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/regex/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/regex/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import RegexInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'regex.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RegexInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "regex.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RegexInputPlugin",) form_element_plugin_registry.register(RegexInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/regex/forms.py b/src/fobi/contrib/plugins/form_elements/fields/regex/forms.py index d8dd8d4f0..661207414 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/regex/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/regex/forms.py @@ -1,18 +1,18 @@ from __future__ import absolute_import from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.regex.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('RegexInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.regex.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("RegexInputForm",) theme = get_theme(request=None, as_instance=True) @@ -35,81 +35,89 @@ class RegexInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) regex = forms.RegexField( label=_("Regex"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + attrs={"class": theme.form_element_html_class} ), regex="", - help_text=_("Enter a valid regular expression. A couple of common " - "examples are listed below.
" - "- Allow a single digit from 1 to 9 (example value 6): " - "^[1-9]$
" - "- Allow any combination of characters from a to z, " - "including capitals (example value abcXYZ):" - "^([a-zA-Z])+$
" - "- Allow a hex value (example value #a5c125:" - "^#?([a-f0-9]{6}|[a-f0-9]{3})$
") + help_text=_( + "Enter a valid regular expression. A couple of common " + "examples are listed below.
" + "- Allow a single digit from 1 to 9 (example value 6): " + "^[1-9]$
" + "- Allow any combination of characters from a to z, " + "including capitals (example value abcXYZ):" + "^([a-zA-Z])+$
" + "- Allow a hex value (example value #a5c125:" + "^#?([a-f0-9]{6}|[a-f0-9]{3})$
" + ), ) initial = forms.CharField( label=_("Initial"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): """Validation.""" super(RegexInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select/__init__.py index bfced634b..868318a0e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.select' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "select.apps.Config" +) -UID = 'select' +UID = "select" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select/apps.py index b89d9f924..027c1db05 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.select' - label = 'fobi_contrib_plugins_form_elements_fields_select' + name = "fobi.contrib.plugins.form_elements.fields.select" + label = "fobi_contrib_plugins_form_elements_fields_select" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/base.py b/src/fobi/contrib/plugins/form_elements/fields/select/base.py index 1780c469c..62033b556 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/base.py @@ -4,22 +4,19 @@ from django.forms.widgets import Select from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR, -) -from fobi.helpers import get_select_field_choices, safe_text - from . import UID from .forms import SelectInputForm from .settings import SUBMIT_VALUE_AS -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL +from fobi.helpers import get_select_field_choices, safe_text + +__title__ = "fobi.contrib.plugins.form_elements.fields.select.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -32,18 +29,19 @@ class SelectInputPlugin(FormFieldPlugin): group = _("Fields") form = SelectInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" choices = self.get_choices() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'choices': choices, - 'widget': Select(attrs={'class': theme.form_element_html_class}), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "choices": choices, + "widget": Select(attrs={"class": theme.form_element_html_class}), } return [(self.data.name, ChoiceField, field_kwargs)] @@ -55,8 +53,9 @@ def get_choices(self): """ return get_select_field_choices(self.data.choices) - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select/conf.py index 93ce52265..c3bf3eff2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,10 +24,7 @@ def get_setting(setting, override=None): """ 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) - ) + 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 index 44ca643a2..60486857b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/defaults.py @@ -1,9 +1,9 @@ from fobi.constants import SUBMIT_VALUE_AS_REPR -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) 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 a1bd7e3dc..4507ec9b0 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 @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectInputPlugin",) form_element_plugin_registry.register(SelectInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select/forms.py index b493a1b96..51cf03c97 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/forms.py @@ -4,11 +4,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import validate_initial_for_choices -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectInputForm",) theme = get_theme(request=None, as_instance=True) @@ -22,76 +22,78 @@ class SelectInputForm(forms.Form, BaseFormFieldPluginForm): ("choices", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) choices = forms.CharField( label=_("Choices"), required=True, - 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>' - "
"), + 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} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Validating the initial value.""" - return validate_initial_for_choices(self, 'choices', 'initial') + return validate_initial_for_choices(self, "choices", "initial") diff --git a/src/fobi/contrib/plugins/form_elements/fields/select/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select/settings.py index 56b2d5b24..b339dc67c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select/settings.py @@ -1,13 +1,13 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.select.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = "fobi.contrib.plugins.form_elements.fields.select.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/__init__.py index 28c835343..de201d603 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_model_object' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_model_object" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." + "select_model_object.apps.Config" +) -UID = 'select_model_object' +UID = "select_model_object" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/apps.py index 29f6a8acf..e78a29aad 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_model_object.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.select_model_object' - label = 'fobi_contrib_plugins_form_elements_fields_select_model_object' + name = "fobi.contrib.plugins.form_elements.fields.select_model_object" + label = "fobi_contrib_plugins_form_elements_fields_select_model_object" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/base.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/base.py index a33300d7d..676c4c04b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/base.py @@ -5,27 +5,25 @@ from django.forms.widgets import Select from django.utils.translation import gettext_lazy as _ +from . import UID +from .forms import SelectModelObjectInputForm +from .settings import SUBMIT_VALUE_AS + from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR -) +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL from fobi.helpers import ( - safe_text, get_app_label_and_model_name, - get_model_name_for_object + get_model_name_for_object, + safe_text, ) -from . import UID -from .forms import SelectModelObjectInputForm -from .settings import SUBMIT_VALUE_AS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectModelObjectInputPlugin',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_model_object.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectModelObjectInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -48,21 +46,19 @@ def get_queryset(self): queryset = model._default_manager.all() return queryset - def get_form_field_instances(self, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" queryset = self.get_queryset() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'queryset': queryset, - 'widget': Select(attrs={'class': theme.form_element_html_class}), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "queryset": queryset, + "widget": Select(attrs={"class": theme.form_element_html_class}), } return [(self.data.name, ModelChoiceField, field_kwargs)] @@ -83,18 +79,16 @@ def prepare_plugin_form_data(self, cleaned_data): if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: value = safe_text(obj) elif SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_VAL: - value = '{0}.{1}.{2}'.format( - obj._meta.app_label, - get_model_name_for_object(obj), - obj.pk + value = "{0}.{1}.{2}".format( + obj._meta.app_label, get_model_name_for_object(obj), obj.pk ) else: # Handle the submitted form value - value = '{0}.{1}.{2}.{3}'.format( + value = "{0}.{1}.{2}.{3}".format( obj._meta.app_label, get_model_name_for_object(obj), obj.pk, - safe_text(obj) + safe_text(obj), ) # Overwrite ``cleaned_data`` of the ``form`` with object @@ -105,12 +99,9 @@ def prepare_plugin_form_data(self, cleaned_data): # ``cleaned_data`` return cleaned_data - def submit_plugin_form_data(self, - form_entry, - request, - form, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of @@ -129,18 +120,16 @@ def submit_plugin_form_data(self, if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: value = safe_text(obj) elif SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_VAL: - value = '{0}.{1}.{2}'.format( - obj._meta.app_label, - get_model_name_for_object(obj), - obj.pk + value = "{0}.{1}.{2}".format( + obj._meta.app_label, get_model_name_for_object(obj), obj.pk ) else: # Handle the submitted form value - value = '{0}.{1}.{2}.{3}'.format( + value = "{0}.{1}.{2}.{3}".format( obj._meta.app_label, get_model_name_for_object(obj), obj.pk, - safe_text(obj) + safe_text(obj), ) # Overwrite ``cleaned_data`` of the ``form`` with object 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 9904786f5..8b5ed0da2 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 @@ -2,12 +2,13 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_model_object.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -26,11 +27,12 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, - 'FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_{0}'.format(setting)): + if hasattr( + settings, "FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_{0}".format(setting) + ): return getattr( settings, - 'FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_{0}'.format(setting) + "FOBI_FORM_ELEMENT_SELECT_MODEL_OBJECT_{0}".format(setting), ) else: return getattr(defaults, setting) 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 fab0eb38f..f2cce8ad0 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,11 +1,15 @@ from fobi.constants import SUBMIT_VALUE_AS_MIX -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_model_object.defaults" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) IGNORED_MODELS = [] diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/fobi_form_elements.py index 801d3b694..53a88bbe6 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectModelObjectInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectModelObjectInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_model_object.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectModelObjectInputPlugin",) form_element_plugin_registry.register(SelectModelObjectInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/forms.py index 1a8b6419f..d57a9e1f5 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/forms.py @@ -1,17 +1,18 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from .settings import IGNORED_MODELS + from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import get_registered_models -from .settings import IGNORED_MODELS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectModelObjectInputForm',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_model_object.forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectModelObjectInputForm",) theme = get_theme(request=None, as_instance=True) @@ -25,51 +26,51 @@ class SelectModelObjectInputForm(forms.Form, BaseFormFieldPluginForm): ("model", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) model = forms.ChoiceField( label=_("Model"), choices=[], required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def __init__(self, *args, **kwargs): @@ -78,6 +79,6 @@ def __init__(self, *args, **kwargs): In order to avoid static calls to `get_registered_models`. """ super(SelectModelObjectInputForm, self).__init__(*args, **kwargs) - self.fields['model'].choices = get_registered_models( + self.fields["model"].choices = get_registered_models( ignore=IGNORED_MODELS ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/settings.py index ced4d9ce3..53ed5c0b3 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_model_object/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_model_object/settings.py @@ -1,16 +1,20 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_model_object.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_model_object.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) -IGNORED_MODELS = get_setting('IGNORED_MODELS') +IGNORED_MODELS = get_setting("IGNORED_MODELS") -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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_mptt_model_object/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/__init__.py index 2a99c7fba..b859503fb 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_mptt_model_object" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." + "select_mptt_model_object.apps.Config" +) -UID = 'select_mptt_model_object' +UID = "select_mptt_model_object" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/apps.py index add858cdb..01fe74e80 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/apps.py @@ -1,17 +1,20 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_mptt_model_object.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object' - label = 'fobi_contrib_plugins_form_elements_fields_' \ - 'select_mptt_model_object' + name = ( + "fobi.contrib.plugins.form_elements.fields." "select_mptt_model_object" + ) + label = ( + "fobi_contrib_plugins_form_elements_fields_" "select_mptt_model_object" + ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/base.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/base.py index c5e06851d..16854ff76 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/base.py @@ -3,30 +3,27 @@ from django.apps import apps from django.forms.widgets import Select from django.utils.translation import gettext_lazy as _ - from mptt.fields import TreeNodeChoiceField +from . import UID +from .forms import SelectMPTTModelObjectInputForm +from .settings import SUBMIT_VALUE_AS + from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR -) +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL from fobi.helpers import ( - safe_text, get_app_label_and_model_name, get_model_name_for_object, + safe_text, ) -from . import UID -from .forms import SelectMPTTModelObjectInputForm -from .settings import SUBMIT_VALUE_AS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMPTTModelObjectInputPlugin',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_mptt_model_object.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMPTTModelObjectInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -39,33 +36,28 @@ class SelectMPTTModelObjectInputPlugin(FormFieldPlugin): group = _("Fields") form = SelectMPTTModelObjectInputForm - def get_form_field_instances(self, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" app_label, model_name = get_app_label_and_model_name(self.data.model) model = apps.get_model(app_label, model_name) queryset = model._default_manager.all() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'queryset': queryset, - 'widget': Select(attrs={'class': theme.form_element_html_class}), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "queryset": queryset, + "widget": Select(attrs={"class": theme.form_element_html_class}), } return [(self.data.name, TreeNodeChoiceField, field_kwargs)] - def submit_plugin_form_data(self, - form_entry, - request, - form, - form_element_entries=None, - **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of @@ -84,18 +76,16 @@ def submit_plugin_form_data(self, if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: value = safe_text(obj) elif SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_VAL: - value = '{0}.{1}.{2}'.format( - obj._meta.app_label, - get_model_name_for_object(obj), - obj.pk + value = "{0}.{1}.{2}".format( + obj._meta.app_label, get_model_name_for_object(obj), obj.pk ) else: # Handle the submitted form value - value = '{0}.{1}.{2}.{3}'.format( + value = "{0}.{1}.{2}.{3}".format( obj._meta.app_label, get_model_name_for_object(obj), obj.pk, - safe_text(obj) + safe_text(obj), ) # Overwrite ``cleaned_data`` of the ``form`` with object qualifier. diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/conf.py index 7e670e789..e851fcf3c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/conf.py @@ -2,12 +2,13 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_mptt_model_object.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -27,12 +28,12 @@ def get_setting(setting, override=None): if override is not None: return override if hasattr( - settings, - 'FOBI_FORM_ELEMENT_SELECT_MPTT_MODEL_OBJECT_{0}'.format(setting) + settings, + "FOBI_FORM_ELEMENT_SELECT_MPTT_MODEL_OBJECT_{0}".format(setting), ): return getattr( settings, - 'FOBI_FORM_ELEMENT_SELECT_MPTT_MODEL_OBJECT_{0}'.format(setting) + "FOBI_FORM_ELEMENT_SELECT_MPTT_MODEL_OBJECT_{0}".format(setting), ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/defaults.py index 1f44c7403..48cbfbbb7 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/defaults.py @@ -1,11 +1,16 @@ from fobi.constants import SUBMIT_VALUE_AS_MIX -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = 'Copyright (c) 2014 Artur-2015 Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_mptt_model_object.defaults" +) +__author__ = "Artur Barseghyan " +__copyright__ = "Copyright (c) 2014 Artur-2015 Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) IGNORED_MODELS = [] diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/fobi_form_elements.py index 9c4c07976..1799e3a11 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectMPTTModelObjectInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMPTTModelObjectInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_mptt_model_object.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMPTTModelObjectInputPlugin",) form_element_plugin_registry.register(SelectMPTTModelObjectInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/forms.py index f3ba6e731..5fed5ab7a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/forms.py @@ -1,17 +1,19 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from .settings import IGNORED_MODELS + from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import get_registered_models -from .settings import IGNORED_MODELS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMPTTModelObjectInputForm',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_mptt_model_object.forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMPTTModelObjectInputForm",) theme = get_theme(request=None, as_instance=True) @@ -25,51 +27,51 @@ class SelectMPTTModelObjectInputForm(forms.Form, BaseFormFieldPluginForm): ("model", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) model = forms.ChoiceField( label=_("Model"), choices=[], required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def __init__(self, *args, **kwargs): @@ -78,6 +80,6 @@ def __init__(self, *args, **kwargs): In order to avoid static calls to `get_registered_models`. """ super(SelectMPTTModelObjectInputForm, self).__init__(*args, **kwargs) - self.fields['model'].choices = get_registered_models( + self.fields["model"].choices = get_registered_models( ignore=IGNORED_MODELS ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/settings.py index 665fc8fe6..47d6bd879 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_mptt_model_object/settings.py @@ -1,16 +1,21 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_mptt_model_object.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_mptt_model_object.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) -IGNORED_MODELS = get_setting('IGNORED_MODELS') +IGNORED_MODELS = get_setting("IGNORED_MODELS") -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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_multiple/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/__init__.py index 738feb840..c5f2613f3 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_multiple" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple.apps.Config" +) -UID = 'select_multiple' +UID = "select_multiple" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/apps.py index 97fd2f206..74d085c54 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_multiple.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.select_multiple' - label = 'fobi_contrib_plugins_form_elements_fields_select_multiple' + name = "fobi.contrib.plugins.form_elements.fields.select_multiple" + label = "fobi_contrib_plugins_form_elements_fields_select_multiple" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/base.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/base.py index 230f9dbef..cdddaeb01 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/base.py @@ -4,23 +4,19 @@ from django.forms.widgets import SelectMultiple from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR -) -from fobi.helpers import get_select_field_choices, safe_text - from . import UID from .forms import SelectMultipleInputForm from .settings import SUBMIT_VALUE_AS -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL +from fobi.helpers import get_select_field_choices, safe_text + +__title__ = "fobi.contrib.plugins.form_elements.fields." "select_multiple.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -40,19 +36,20 @@ def get_choices(self): """ return get_select_field_choices(self.data.choices) - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" choices = self.get_choices() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'choices': choices, - 'widget': SelectMultiple( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "choices": choices, + "widget": SelectMultiple( + attrs={"class": theme.form_element_html_class} ), } @@ -98,8 +95,9 @@ def prepare_plugin_form_data(self, cleaned_data): # ``cleaned_data`` return cleaned_data - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of 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 index d0348f3a0..9d5fbff4a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_multiple.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,11 +25,11 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_{0}'.format(setting)): + if hasattr( + settings, "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_{0}".format(setting) + ): return getattr( - settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_{0}'.format(setting) + 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 index 9fe979f03..db7731f86 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/defaults.py @@ -1,10 +1,11 @@ from fobi.constants import SUBMIT_VALUE_AS_REPR -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple.defaults" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) 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 3e7947086..dd71f9d7a 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 @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectMultipleInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleInputPlugin",) form_element_plugin_registry.register(SelectMultipleInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/forms.py index ab5747906..af003ed92 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/forms.py @@ -4,11 +4,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import validate_initial_for_multiple_choices -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_multiple.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleInputForm",) theme = get_theme(request=None, as_instance=True) @@ -22,78 +22,78 @@ class SelectMultipleInputForm(forms.Form, BaseFormFieldPluginForm): ("choices", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) choices = forms.CharField( label=_("Choices"), required=True, - 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>' - "
"), + 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} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Validating the initial value.""" - return validate_initial_for_multiple_choices(self, - 'choices', - 'initial') + return validate_initial_for_multiple_choices(self, "choices", "initial") 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 index d110bef97..22106b957 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple/settings.py @@ -1,14 +1,15 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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_multiple_model_objects/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/__init__.py index ce6b8a55e..96c9d4b80 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple_model_objects" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.apps.Config" +) -UID = 'select_multiple_model_objects' +UID = "select_multiple_model_objects" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/apps.py index 46d635de9..7a4d80954 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects' - label = 'fobi_contrib_plugins_form_elements_fields_' \ - 'select_multiple_model_objects' + name = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects" + ) + label = ( + "fobi_contrib_plugins_form_elements_fields_" + "select_multiple_model_objects" + ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/base.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/base.py index fdea660a4..175489466 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/base.py @@ -1,34 +1,33 @@ from __future__ import absolute_import +import json + from django.apps import apps from django.core.serializers.json import DjangoJSONEncoder from django.forms.models import ModelMultipleChoiceField from django.forms.widgets import SelectMultiple from django.utils.translation import gettext_lazy as _ -import json +from . import UID +from .forms import SelectMultipleModelObjectsInputForm +from .settings import SUBMIT_VALUE_AS from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR -) +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL from fobi.helpers import ( - safe_text, get_app_label_and_model_name, get_model_name_for_object, + safe_text, ) -from . import UID -from .forms import SelectMultipleModelObjectsInputForm -from .settings import SUBMIT_VALUE_AS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleModelObjectsInputPlugin',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleModelObjectsInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -51,26 +50,28 @@ def get_queryset(self): queryset = model._default_manager.all() return queryset - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" queryset = self.get_queryset() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'queryset': queryset, - 'widget': SelectMultiple( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "queryset": queryset, + "widget": SelectMultiple( + attrs={"class": theme.form_element_html_class} ), } return [(self.data.name, ModelMultipleChoiceField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """ Submit plugin form data/process. @@ -94,26 +95,25 @@ def submit_plugin_form_data(self, form_entry, request, form, if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: value = safe_text(obj) elif SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_VAL: - value = '{0}.{1}.{2}'.format( + value = "{0}.{1}.{2}".format( obj._meta.app_label, get_model_name_for_object(obj), - obj.pk + obj.pk, ) else: # Handle the submitted form value - value = '{0}.{1}.{2}.{3}'.format( + value = "{0}.{1}.{2}.{3}".format( obj._meta.app_label, get_model_name_for_object(obj), obj.pk, - safe_text(obj) + safe_text(obj), ) values.append(value) # Overwrite ``cleaned_data`` of the ``form`` with object qualifier. if values: form.cleaned_data[self.data.name] = json.dumps( - values, - cls=DjangoJSONEncoder + values, cls=DjangoJSONEncoder ) else: del form.cleaned_data[self.data.name] diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/conf.py index b1bb1b56a..14563b401 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/conf.py @@ -2,12 +2,14 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -27,16 +29,14 @@ def get_setting(setting, override=None): if override is not None: return override if hasattr( - settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MODEL_OBJECTS_{0}'.format( - setting - ) + settings, + "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MODEL_OBJECTS_{0}".format(setting), ): return getattr( settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MODEL_OBJECTS_{0}'.format( + "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MODEL_OBJECTS_{0}".format( setting - ) + ), ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/defaults.py index 3cf7be73e..30a2404c0 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/defaults.py @@ -1,11 +1,16 @@ from fobi.constants import SUBMIT_VALUE_AS_MIX -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.default' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.default" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) IGNORED_MODELS = [] diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/fobi_form_elements.py index 334a4aca3..74b26cdfa 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectMultipleModelObjectsInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleModelObjectsInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleModelObjectsInputPlugin",) form_element_plugin_registry.register(SelectMultipleModelObjectsInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py index d3a7bcf43..c4c810159 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/forms.py @@ -1,17 +1,19 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from .settings import IGNORED_MODELS + from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import get_registered_models -from .settings import IGNORED_MODELS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleModelObjectsInputForm',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleModelObjectsInputForm",) theme = get_theme(request=None, as_instance=True) @@ -25,50 +27,51 @@ class SelectMultipleModelObjectsInputForm(forms.Form, BaseFormFieldPluginForm): ("model", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) model = forms.ChoiceField( label=_("Model"), choices=[], required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class}) - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def __init__(self, *args, **kwargs): @@ -79,6 +82,6 @@ def __init__(self, *args, **kwargs): super(SelectMultipleModelObjectsInputForm, self).__init__( *args, **kwargs ) - self.fields['model'].choices = get_registered_models( + self.fields["model"].choices = get_registered_models( ignore=IGNORED_MODELS ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/settings.py index 1b2d32dea..9cf6cc41d 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_model_objects/settings.py @@ -1,16 +1,21 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_model_objects.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_model_objects.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) -IGNORED_MODELS = get_setting('IGNORED_MODELS') +IGNORED_MODELS = get_setting("IGNORED_MODELS") -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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_multiple_mptt_model_objects/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/__init__.py index e7f8243b4..8062fec41 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/__init__.py @@ -1,11 +1,18 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.apps.Config" +) -UID = 'select_multiple_mptt_model_objects' +UID = "select_multiple_mptt_model_objects" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/apps.py index bbc1c01bd..73f20394e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects' - label = 'fobi_contrib_plugins_form_elements_fields_' \ - 'select_multiple_mptt_model_objects' + name = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects" + ) + label = ( + "fobi_contrib_plugins_form_elements_fields_" + "select_multiple_mptt_model_objects" + ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/base.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/base.py index b78c26d7c..d6d0607af 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/base.py @@ -1,35 +1,33 @@ from __future__ import absolute_import +import json + from django.apps import apps from django.core.serializers.json import DjangoJSONEncoder from django.forms.widgets import SelectMultiple from django.utils.translation import gettext_lazy as _ - from mptt.fields import TreeNodeMultipleChoiceField -import json +from . import UID +from .forms import SelectMultipleMPTTModelObjectsInputForm +from .settings import SUBMIT_VALUE_AS from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR, -) +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL from fobi.helpers import ( - safe_text, get_app_label_and_model_name, get_model_name_for_object, + safe_text, ) -from . import UID -from .forms import SelectMultipleMPTTModelObjectsInputForm -from .settings import SUBMIT_VALUE_AS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleMPTTModelObjectsInputPlugin',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleMPTTModelObjectsInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -42,28 +40,30 @@ class SelectMultipleMPTTModelObjectsInputPlugin(FormFieldPlugin): group = _("Fields") form = SelectMultipleMPTTModelObjectsInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" app_label, model_name = get_app_label_and_model_name(self.data.model) model = apps.get_model(app_label, model_name) queryset = model._default_manager.all() field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'queryset': queryset, - 'widget': SelectMultiple( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "queryset": queryset, + "widget": SelectMultiple( + attrs={"class": theme.form_element_html_class} ), } return [(self.data.name, TreeNodeMultipleChoiceField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of @@ -86,26 +86,25 @@ def submit_plugin_form_data(self, form_entry, request, form, if SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_REPR: value = safe_text(obj) elif SUBMIT_VALUE_AS == SUBMIT_VALUE_AS_VAL: - value = '{0}.{1}.{2}'.format( + value = "{0}.{1}.{2}".format( obj._meta.app_label, get_model_name_for_object(obj), - obj.pk + obj.pk, ) else: # Handle the submitted form value - value = '{0}.{1}.{2}.{3}'.format( + value = "{0}.{1}.{2}.{3}".format( obj._meta.app_label, get_model_name_for_object(obj), obj.pk, - safe_text(obj) + safe_text(obj), ) values.append(value) # Overwrite ``cleaned_data`` of the ``form`` with object qualifier. if values: form.cleaned_data[self.data.name] = json.dumps( - values, - cls=DjangoJSONEncoder + values, cls=DjangoJSONEncoder ) else: del form.cleaned_data[self.data.name] diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/conf.py index 0018709f0..c530627ab 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/conf.py @@ -2,12 +2,14 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -26,16 +28,16 @@ def get_setting(setting, override=None): if override is not None: return override if hasattr( - settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MPTT_MODEL_OBJECTS_{0}'.format( - setting - ) + settings, + "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MPTT_MODEL_OBJECTS_{0}".format( + setting + ), ): return getattr( settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MPTT_MODEL_OBJECTS_{0}'.format( + "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_MPTT_MODEL_OBJECTS_{0}".format( setting - ) + ), ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/defaults.py index 80efb1e4e..9e0e16c19 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/defaults.py @@ -1,11 +1,16 @@ from fobi.constants import SUBMIT_VALUE_AS_MIX -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.default' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.default" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) IGNORED_MODELS = [] diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/fobi_form_elements.py index f716d780f..48a956d57 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/fobi_form_elements.py @@ -1,17 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectMultipleMPTTModelObjectsInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleMPTTModelObjectsInputPlugin',) - +from fobi.base import form_element_plugin_registry -form_element_plugin_registry.register( - SelectMultipleMPTTModelObjectsInputPlugin +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.fobi_form_elements" ) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleMPTTModelObjectsInputPlugin",) + + +form_element_plugin_registry.register(SelectMultipleMPTTModelObjectsInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/forms.py index 186b79a1c..462d93c3c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/forms.py @@ -1,23 +1,26 @@ from django import forms from django.utils.translation import gettext_lazy as _ +from .settings import IGNORED_MODELS + from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.helpers import get_registered_models -from .settings import IGNORED_MODELS - -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleMPTTModelObjectsInputForm',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleMPTTModelObjectsInputForm",) theme = get_theme(request=None, as_instance=True) -class SelectMultipleMPTTModelObjectsInputForm(forms.Form, - BaseFormFieldPluginForm): +class SelectMultipleMPTTModelObjectsInputForm( + forms.Form, BaseFormFieldPluginForm +): """Form for ``SelectMultipleMPTTModelObjectsPlugin``.""" plugin_data_fields = [ @@ -26,51 +29,51 @@ class SelectMultipleMPTTModelObjectsInputForm(forms.Form, ("model", ""), ("help_text", ""), ("initial", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) model = forms.ChoiceField( label=_("Model"), choices=[], required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def __init__(self, *args, **kwargs): @@ -81,6 +84,6 @@ def __init__(self, *args, **kwargs): super(SelectMultipleMPTTModelObjectsInputForm, self).__init__( *args, **kwargs ) - self.fields['model'].choices = get_registered_models( + self.fields["model"].choices = get_registered_models( ignore=IGNORED_MODELS ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/settings.py index ccb774d73..61f094a59 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_mptt_model_objects/settings.py @@ -1,16 +1,21 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_mptt_model_objects.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IGNORED_MODELS', 'SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_mptt_model_objects.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "IGNORED_MODELS", + "SUBMIT_VALUE_AS", +) -IGNORED_MODELS = get_setting('IGNORED_MODELS') +IGNORED_MODELS = get_setting("IGNORED_MODELS") -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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_multiple_with_max/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/__init__.py index 96c995302..c8a5431aa 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/__init__.py @@ -1,11 +1,17 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple_with_max" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_with_max.apps.Config" +) -UID = 'select_multiple_with_max' +UID = "select_multiple_with_max" diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/apps.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/apps.py index 238d07de3..155ff1f55 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/apps.py @@ -1,17 +1,20 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple_with_max.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max' - label = 'fobi_contrib_plugins_form_elements_fields_' \ - 'select_multiple_with_max' + name = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple_with_max" + ) + label = ( + "fobi_contrib_plugins_form_elements_fields_" "select_multiple_with_max" + ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/base.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/base.py index 81a22fc06..df0cd5f51 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/base.py @@ -3,24 +3,22 @@ from django.forms.widgets import SelectMultiple from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme -from fobi.constants import ( - SUBMIT_VALUE_AS_VAL, - SUBMIT_VALUE_AS_REPR -) -from fobi.helpers import get_select_field_choices, safe_text - from . import UID from .fields import MultipleChoiceWithMaxField from .forms import SelectMultipleWithMaxInputForm from .settings import SUBMIT_VALUE_AS -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleWithMaxInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.constants import SUBMIT_VALUE_AS_REPR, SUBMIT_VALUE_AS_VAL +from fobi.helpers import get_select_field_choices, safe_text + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple_with_max.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleWithMaxInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -40,24 +38,25 @@ def get_choices(self): """ return get_select_field_choices(self.data.choices) - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" choices = get_select_field_choices(self.data.choices) field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'choices': choices, - 'widget': SelectMultiple( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "choices": choices, + "widget": SelectMultiple( + attrs={"class": theme.form_element_html_class} ), } if self.data.max_choices is not None: - field_kwargs['max_choices'] = self.data.max_choices + field_kwargs["max_choices"] = self.data.max_choices return [(self.data.name, MultipleChoiceWithMaxField, field_kwargs)] @@ -101,8 +100,9 @@ def prepare_plugin_form_data(self, cleaned_data): # ``cleaned_data`` return cleaned_data - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/conf.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/conf.py index 43005abf5..7acee72e2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/conf.py @@ -2,12 +2,13 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "select_multiple_with_max.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -28,11 +29,11 @@ def get_setting(setting, override=None): return override if hasattr( settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_WITH_MAX_{0}'.format(setting) + "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_WITH_MAX_{0}".format(setting), ): return getattr( settings, - 'FOBI_FORM_ELEMENT_SELECT_MULTIPLE_WITH_MAX_{0}'.format(setting) + "FOBI_FORM_ELEMENT_SELECT_MULTIPLE_WITH_MAX_{0}".format(setting), ) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/defaults.py index 68fd660a1..831f2c134 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/defaults.py @@ -1,10 +1,12 @@ from fobi.constants import SUBMIT_VALUE_AS_REPR -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_with_max.defaults" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) SUBMIT_VALUE_AS = SUBMIT_VALUE_AS_REPR diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fields.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fields.py index 0f9516f81..7e1684d31 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fields.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fields.py @@ -2,24 +2,41 @@ from django.forms.fields import MultipleChoiceField from django.utils.translation import gettext_lazy as _ -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.fields' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MultipleChoiceWithMaxField',) +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_with_max.fields" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MultipleChoiceWithMaxField",) class MultipleChoiceWithMaxField(MultipleChoiceField): """Multiple choice with max field.""" - def __init__(self, max_choices=None, choices=(), required=True, - widget=None, label=None, initial=None, help_text='', *args, - **kwargs): + def __init__( + self, + max_choices=None, + choices=(), + required=True, + widget=None, + label=None, + initial=None, + help_text="", + *args, + **kwargs, + ): """Constructor.""" super(MultipleChoiceWithMaxField, self).__init__( - choices=choices, required=required, widget=widget, label=label, - initial=initial, help_text=help_text, *args, **kwargs + choices=choices, + required=required, + widget=widget, + label=label, + initial=initial, + help_text=help_text, + *args, + **kwargs, ) self.max_choices = max_choices @@ -28,5 +45,9 @@ def validate(self, value): super(MultipleChoiceWithMaxField, self).validate(value) if self.max_choices: if len(value) > self.max_choices: - raise ValidationError(_("You must choose no more than {0} " - "values.".format(self.max_choices))) + raise ValidationError( + _( + "You must choose no more than {0} " + "values.".format(self.max_choices) + ) + ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fobi_form_elements.py index 401314d4e..0cc3e49b6 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SelectMultipleWithMaxInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleWithMaxInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_with_max.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleWithMaxInputPlugin",) form_element_plugin_registry.register(SelectMultipleWithMaxInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/forms.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/forms.py index 0bd04faea..ec6a77c7e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/forms.py @@ -5,11 +5,11 @@ from fobi.helpers import validate_initial_for_multiple_choices from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.select_multiple.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SelectMultipleWithMaxInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.select_multiple.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SelectMultipleWithMaxInputForm",) theme = get_theme(request=None, as_instance=True) @@ -24,83 +24,83 @@ class SelectMultipleWithMaxInputForm(forms.Form, BaseFormFieldPluginForm): ("help_text", ""), ("initial", ""), ("required", False), - ("max_choices", "") + ("max_choices", ""), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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>' - "
"), + 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} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) max_choices = forms.IntegerField( label=_("Max choices"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) def clean_initial(self): """Validating the initial value.""" - return validate_initial_for_multiple_choices(self, - 'choices', - 'initial') + return validate_initial_for_multiple_choices(self, "choices", "initial") diff --git a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/settings.py b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/settings.py index 6f6cb6a7e..1f007c205 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/select_multiple_with_max/settings.py @@ -1,14 +1,16 @@ -from fobi.helpers import validate_submit_value_as - from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'select_multiple_with_max.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SUBMIT_VALUE_AS',) +from fobi.helpers import validate_submit_value_as + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." + "select_multiple_with_max.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SUBMIT_VALUE_AS",) -SUBMIT_VALUE_AS = get_setting('SUBMIT_VALUE_AS') +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/slider/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/slider/__init__.py index c99a31013..78078e953 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.slider" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'slider.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "slider.apps.Config" +) -UID = 'slider' +UID = "slider" diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/apps.py b/src/fobi/contrib/plugins/form_elements/fields/slider/apps.py index a16e07dd9..55204a1e5 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.slider' - label = 'fobi_contrib_plugins_form_elements_fields_slider' + name = "fobi.contrib.plugins.form_elements.fields.slider" + label = "fobi_contrib_plugins_form_elements_fields_slider" diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/base.py b/src/fobi/contrib/plugins/form_elements/fields/slider/base.py index 7d858cdfd..581af44e8 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/base.py @@ -1,46 +1,39 @@ from __future__ import absolute_import -from six import text_type, PY3 - from django.forms.fields import ChoiceField from django.forms.utils import flatatt from django.utils.html import format_html from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ - from django_nine import versions - -from fobi.base import ( - FormFieldPlugin, - get_theme -) -from fobi.helpers import get_select_field_choices -from fobi.widgets import RichSelectInverseQuotes +from six import PY3, text_type from . import UID from .constants import ( - SLIDER_DEFAULT_TOOLTIP, SLIDER_DEFAULT_HANDLE, + SLIDER_DEFAULT_SHOW_ENDPOINTS_AS, + SLIDER_DEFAULT_TOOLTIP, SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS, SLIDER_SHOW_ENDPOINTS_AS_TICKS, - SLIDER_DEFAULT_SHOW_ENDPOINTS_AS ) from .forms import SliderInputForm from .helpers import generate_ticks -from .settings import ( +from .settings import ( # MAX_VALUE,; MIN_VALUE, INITIAL, INITIAL_MAX_VALUE, INITIAL_MIN_VALUE, - # MAX_VALUE, - # MIN_VALUE, - STEP + STEP, ) -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SliderInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme +from fobi.helpers import get_select_field_choices +from fobi.widgets import RichSelectInverseQuotes + +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SliderInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -52,7 +45,7 @@ class SliderInputPlugin(FormFieldPlugin): name = _("Slider") group = _("Fields") form = SliderInputForm - html_classes = ['slider'] + html_classes = ["slider"] def get_initial(self): """Get initial value. @@ -66,12 +59,16 @@ def get_choices(self): Might be used in integration plugins. """ - max_value = int(self.data.max_value) \ - if self.data.max_value is not None \ + max_value = ( + int(self.data.max_value) + if self.data.max_value is not None else INITIAL_MAX_VALUE - min_value = int(self.data.min_value) \ - if self.data.min_value is not None \ + ) + min_value = ( + int(self.data.min_value) + if self.data.min_value is not None else INITIAL_MIN_VALUE + ) step = int(self.data.step) if self.data.step is not None else STEP if PY3: @@ -83,29 +80,40 @@ def get_choices(self): return choices - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" initial = self.get_initial() - max_value = int(self.data.max_value) \ - if self.data.max_value is not None \ + max_value = ( + int(self.data.max_value) + if self.data.max_value is not None else INITIAL_MAX_VALUE - min_value = int(self.data.min_value) \ - if self.data.min_value is not None \ + ) + min_value = ( + int(self.data.min_value) + if self.data.min_value is not None else INITIAL_MIN_VALUE + ) step = int(self.data.step) if self.data.step is not None else STEP - tooltip = self.data.tooltip \ - if self.data.tooltip is not None \ + tooltip = ( + self.data.tooltip + if self.data.tooltip is not None else SLIDER_DEFAULT_TOOLTIP - handle = self.data.handle \ - if self.data.handle is not None \ + ) + handle = ( + self.data.handle + if self.data.handle is not None else SLIDER_DEFAULT_HANDLE + ) - custom_ticks = get_select_field_choices(self.data.custom_ticks, - key_type=int, - value_type=text_type) \ - if self.data.custom_ticks \ + custom_ticks = ( + get_select_field_choices( + self.data.custom_ticks, key_type=int, value_type=text_type + ) + if self.data.custom_ticks else [] + ) choices = self.get_choices() @@ -115,21 +123,22 @@ def get_form_field_instances(self, request=None, form_entry=None, slider_html_class = "slider" widget_attrs = { - 'class': "{0} {1}".format( - slider_html_class, - theme.form_element_html_class + "class": "{0} {1}".format( + slider_html_class, theme.form_element_html_class ), - 'data-slider-min': min_value, - 'data-slider-max': max_value, - 'data-slider-step': step, - 'data-slider-value': initial, - 'data-slider-tooltip': tooltip, - 'data-slider-handle': handle, + "data-slider-min": min_value, + "data-slider-max": max_value, + "data-slider-step": step, + "data-slider-value": initial, + "data-slider-tooltip": tooltip, + "data-slider-handle": handle, } - show_endpoints_as = self.data.show_endpoints_as \ - if self.data.show_endpoints_as \ + show_endpoints_as = ( + self.data.show_endpoints_as + if self.data.show_endpoints_as else SLIDER_DEFAULT_SHOW_ENDPOINTS_AS + ) prepend_html_list = [] append_html_list = [] @@ -140,10 +149,12 @@ def get_form_field_instances(self, request=None, form_entry=None, if custom_ticks: ticks_data = generate_ticks(custom_ticks) else: - ticks_data = generate_ticks([ - (min_value, self.data.label_start), - (max_value, self.data.label_end), - ]) + ticks_data = generate_ticks( + [ + (min_value, self.data.label_start), + (max_value, self.data.label_end), + ] + ) # label_start = self.data.label_start \ # if self.data.label_start \ # else text_type(min_value) @@ -169,10 +180,12 @@ def get_form_field_instances(self, request=None, form_entry=None, if custom_ticks: ticks_data = generate_ticks(custom_ticks, empty_labels=True) else: - ticks_data = generate_ticks([ - (min_value, ""), - (max_value, ""), - ]) + ticks_data = generate_ticks( + [ + (min_value, ""), + (max_value, ""), + ] + ) # widget_attrs.update({ # 'data-slider-ticks': "[{0}, {1}]".format( @@ -192,7 +205,7 @@ def get_form_field_instances(self, request=None, form_entry=None, prepend_html_list.append( format_html( " ", - flatatt({'class': "slider-endpoint-label-start"}) + flatatt({"class": "slider-endpoint-label-start"}), ) ) prepend_html_list.append(format_html(self.data.label_start)) @@ -202,32 +215,36 @@ def get_form_field_instances(self, request=None, form_entry=None, append_html_list.append( format_html( " ", - flatatt({'class': "slider-endpoint-label-end"}) + flatatt({"class": "slider-endpoint-label-end"}), ) ) append_html_list.append(format_html(self.data.label_end)) append_html_list.append(format_html(" ")) - widget_kwargs = {'attrs': widget_attrs} + widget_kwargs = {"attrs": widget_attrs} # For showing endpoints as labels if prepend_html_list: - widget_kwargs.update({ - 'prepend_html': mark_safe(''.join(prepend_html_list)), - }) + widget_kwargs.update( + { + "prepend_html": mark_safe("".join(prepend_html_list)), + } + ) if append_html_list: - widget_kwargs.update({ - 'append_html': mark_safe(''.join(append_html_list)), - }) + widget_kwargs.update( + { + "append_html": mark_safe("".join(append_html_list)), + } + ) field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': initial, - 'required': self.data.required, - 'choices': choices, - 'widget': RichSelectInverseQuotes(**widget_kwargs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": initial, + "required": self.data.required, + "choices": choices, + "widget": RichSelectInverseQuotes(**widget_kwargs), } return [(self.data.name, ChoiceField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/conf.py b/src/fobi/contrib/plugins/form_elements/fields/slider/conf.py index abba8a497..26d1574cd 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/conf.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,11 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, - 'FOBI_FORM_ELEMENT_SLIDER_{0}'.format(setting)): - return getattr( - settings, - 'FOBI_FORM_ELEMENT_SLIDER_{0}'.format(setting) - ) + if hasattr(settings, "FOBI_FORM_ELEMENT_SLIDER_{0}".format(setting)): + return getattr(settings, "FOBI_FORM_ELEMENT_SLIDER_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/constants.py b/src/fobi/contrib/plugins/form_elements/fields/slider/constants.py index abd6a4847..12e9747fe 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/constants.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/constants.py @@ -1,32 +1,30 @@ from django.utils.translation import gettext_lazy as _ -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.constants' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.constants" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'SLIDER_TOOLTIP_SHOW', - 'SLIDER_TOOLTIP_HIDE', - 'SLIDER_TOOLTIP_ALWAYS', - 'SLIDER_DEFAULT_TOOLTIP', - 'SLIDER_TOOLTIP_CHOICES', - - 'SLIDER_HANDLE_ROUND', - 'SLIDER_HANDLE_SQUARE', - 'SLIDER_HANDLE_TRIANGLE', - 'SLIDER_HANDLE_CUSTOM', - 'SLIDER_HANDLE_CHOICES', - - 'SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS', - 'SLIDER_SHOW_ENDPOINTS_AS_LABELS', - 'SLIDER_SHOW_ENDPOINTS_AS_TICKS', - 'SLIDER_DEFAULT_SHOW_ENDPOINTS_AS', - 'SLIDER_SHOW_ENDPOINTS_AS_CHOICES', + "SLIDER_TOOLTIP_SHOW", + "SLIDER_TOOLTIP_HIDE", + "SLIDER_TOOLTIP_ALWAYS", + "SLIDER_DEFAULT_TOOLTIP", + "SLIDER_TOOLTIP_CHOICES", + "SLIDER_HANDLE_ROUND", + "SLIDER_HANDLE_SQUARE", + "SLIDER_HANDLE_TRIANGLE", + "SLIDER_HANDLE_CUSTOM", + "SLIDER_HANDLE_CHOICES", + "SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS", + "SLIDER_SHOW_ENDPOINTS_AS_LABELS", + "SLIDER_SHOW_ENDPOINTS_AS_TICKS", + "SLIDER_DEFAULT_SHOW_ENDPOINTS_AS", + "SLIDER_SHOW_ENDPOINTS_AS_CHOICES", ) -SLIDER_TOOLTIP_SHOW = 'show' -SLIDER_TOOLTIP_HIDE = 'hide' -SLIDER_TOOLTIP_ALWAYS = 'always' +SLIDER_TOOLTIP_SHOW = "show" +SLIDER_TOOLTIP_HIDE = "hide" +SLIDER_TOOLTIP_ALWAYS = "always" SLIDER_DEFAULT_TOOLTIP = SLIDER_TOOLTIP_SHOW SLIDER_TOOLTIP_CHOICES = ( @@ -35,10 +33,10 @@ (SLIDER_TOOLTIP_ALWAYS, _("Always")), ) -SLIDER_HANDLE_ROUND = 'round' -SLIDER_HANDLE_SQUARE = 'square' -SLIDER_HANDLE_TRIANGLE = 'triangle' -SLIDER_HANDLE_CUSTOM = 'custom' +SLIDER_HANDLE_ROUND = "round" +SLIDER_HANDLE_SQUARE = "square" +SLIDER_HANDLE_TRIANGLE = "triangle" +SLIDER_HANDLE_CUSTOM = "custom" SLIDER_DEFAULT_HANDLE = SLIDER_HANDLE_ROUND SLIDER_HANDLE_CHOICES = ( (SLIDER_HANDLE_ROUND, _("Round")), @@ -47,9 +45,9 @@ (SLIDER_HANDLE_CUSTOM, _("Custom")), ) -SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS = 'labeled_ticks' -SLIDER_SHOW_ENDPOINTS_AS_LABELS = 'labels' -SLIDER_SHOW_ENDPOINTS_AS_TICKS = 'ticks' +SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS = "labeled_ticks" +SLIDER_SHOW_ENDPOINTS_AS_LABELS = "labels" +SLIDER_SHOW_ENDPOINTS_AS_TICKS = "ticks" SLIDER_DEFAULT_SHOW_ENDPOINTS_AS = SLIDER_SHOW_ENDPOINTS_AS_LABELS SLIDER_SHOW_ENDPOINTS_AS_CHOICES = ( (SLIDER_SHOW_ENDPOINTS_AS_LABELS, _("Labels")), diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/defaults.py b/src/fobi/contrib/plugins/form_elements/fields/slider/defaults.py index 972f06a28..152dc9cca 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/defaults.py @@ -1,14 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'INITIAL', - 'INITIAL_MAX_VALUE', - 'INITIAL_MIN_VALUE', - 'MAX_VALUE', - 'MIN_VALUE', - 'STEP', + "INITIAL", + "INITIAL_MAX_VALUE", + "INITIAL_MIN_VALUE", + "MAX_VALUE", + "MIN_VALUE", + "STEP", ) INITIAL = 50 diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/slider/fobi_form_elements.py index 19575cc14..41e99430c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SliderInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SliderInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields.slider." "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SliderInputPlugin",) form_element_plugin_registry.register(SliderInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/forms.py b/src/fobi/contrib/plugins/form_elements/fields/slider/forms.py index fd11b32c5..1cbb37665 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/forms.py @@ -1,37 +1,36 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from fobi.base import BaseFormFieldPluginForm, get_theme -from fobi.helpers import get_select_field_choices -from fobi.widgets import NumberInput - from .constants import ( - SLIDER_DEFAULT_TOOLTIP, SLIDER_DEFAULT_HANDLE, SLIDER_DEFAULT_SHOW_ENDPOINTS_AS, - SLIDER_TOOLTIP_CHOICES, + SLIDER_DEFAULT_TOOLTIP, SLIDER_HANDLE_CHOICES, - SLIDER_SHOW_ENDPOINTS_AS_CHOICES, - SLIDER_HANDLE_TRIANGLE, SLIDER_HANDLE_CUSTOM, + SLIDER_HANDLE_TRIANGLE, + SLIDER_SHOW_ENDPOINTS_AS_CHOICES, SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS, - SLIDER_SHOW_ENDPOINTS_AS_TICKS + SLIDER_SHOW_ENDPOINTS_AS_TICKS, + SLIDER_TOOLTIP_CHOICES, ) - from .settings import ( INITIAL, INITIAL_MAX_VALUE, INITIAL_MIN_VALUE, MAX_VALUE, MIN_VALUE, - STEP + STEP, ) -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SliderInputForm',) +from fobi.base import BaseFormFieldPluginForm, get_theme +from fobi.helpers import get_select_field_choices +from fobi.widgets import NumberInput + +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SliderInputForm",) theme = get_theme(request=None, as_instance=True) @@ -54,70 +53,70 @@ class SliderInputForm(forms.Form, BaseFormFieldPluginForm): ("label_end", ""), ("custom_ticks", ""), ("help_text", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.IntegerField( label=_("Initial"), required=False, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, max_value=MAX_VALUE, - initial=INITIAL + initial=INITIAL, ) min_value = forms.IntegerField( label=_("Min value"), required=True, initial=INITIAL_MIN_VALUE, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, - max_value=MAX_VALUE + max_value=MAX_VALUE, ) max_value = forms.IntegerField( label=_("Max value"), required=True, initial=INITIAL_MAX_VALUE, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, - max_value=MAX_VALUE + max_value=MAX_VALUE, ) step = forms.IntegerField( label=_("Step"), required=True, help_text=_("Step size"), - widget=NumberInput(attrs={'class': theme.form_element_html_class}), + widget=NumberInput(attrs={"class": theme.form_element_html_class}), min_value=MIN_VALUE, - max_value=MAX_VALUE + max_value=MAX_VALUE, ) tooltip = forms.ChoiceField( label=_("Tooltip"), choices=SLIDER_TOOLTIP_CHOICES, required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) handle = forms.ChoiceField( label=_("Handle"), choices=SLIDER_HANDLE_CHOICES, required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) # disable_slider_background = forms.BooleanField( # label=_("Disable slider background"), @@ -131,119 +130,118 @@ class SliderInputForm(forms.Form, BaseFormFieldPluginForm): choices=SLIDER_SHOW_ENDPOINTS_AS_CHOICES, required=False, widget=forms.widgets.Select( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) label_start = forms.CharField( label=_("Start label"), help_text=_("Start endpoint label"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) label_end = forms.CharField( label=_("End label"), help_text=_("End endpoint label"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) custom_ticks = forms.CharField( label=_("Custom ticks"), required=False, - help_text=_("Enter single values/pairs per line. Example:
" - "    1
" - "    2
" - "    3, Alpha
" - "    4, Beta
" - "

" - "It finally transforms into the following HTML " - "code:
" - '    ' - 'data-slider-ticks="[1, 2, 3, 4]"
' - '    ' - "data-slider-ticks-labels='" - '["1", "2", "Alpha", "Beta"]' - "'
"), + help_text=_( + "Enter single values/pairs per line. Example:
" + "    1
" + "    2
" + "    3, Alpha
" + "    4, Beta
" + "

" + "It finally transforms into the following HTML " + "code:
" + "    " + 'data-slider-ticks="[1, 2, 3, 4]"
' + "    " + "data-slider-ticks-labels='" + '["1", "2", "Alpha", "Beta"]' + "'
" + ), widget=forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) help_text = forms.CharField( label=_("Help text"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean(self): """Validating the values.""" super(SliderInputForm, self).clean() - max_value = self.cleaned_data['max_value'] - min_value = self.cleaned_data['min_value'] - initial = self.cleaned_data['initial'] - step = self.cleaned_data['step'] - show_endpoints_as = self.cleaned_data['show_endpoints_as'] - handle = self.cleaned_data['handle'] - custom_ticks = self.cleaned_data['custom_ticks'] + max_value = self.cleaned_data["max_value"] + min_value = self.cleaned_data["min_value"] + initial = self.cleaned_data["initial"] + step = self.cleaned_data["step"] + show_endpoints_as = self.cleaned_data["show_endpoints_as"] + handle = self.cleaned_data["handle"] + custom_ticks = self.cleaned_data["custom_ticks"] if max_value < min_value: self.add_error( - 'max_value', - _("`max_value` should be > than `min_value`.") + "max_value", _("`max_value` should be > than `min_value`.") ) if step > max_value - min_value: self.add_error( - 'step', - _("`step` should be > than `max_value` - `min_value`.") + "step", _("`step` should be > than `max_value` - `min_value`.") ) if max_value < initial: self.add_error( - 'initial', - _("`max_value` should be >= than `initial`.") + "initial", _("`max_value` should be >= than `initial`.") ) if min_value > initial: self.add_error( - 'min_value', - _("`initial` should be >= than `min_value`.") + "min_value", _("`initial` should be >= than `min_value`.") ) label_handles = (SLIDER_HANDLE_TRIANGLE, SLIDER_HANDLE_CUSTOM) tick_endpoints = ( SLIDER_SHOW_ENDPOINTS_AS_LABELED_TICKS, - SLIDER_SHOW_ENDPOINTS_AS_TICKS + SLIDER_SHOW_ENDPOINTS_AS_TICKS, ) if handle in label_handles and show_endpoints_as in tick_endpoints: self.add_error( - 'handle', - _("You are not allowed to use Triangle or Custom handles " - "with ticks enabled.") + "handle", + _( + "You are not allowed to use Triangle or Custom handles " + "with ticks enabled." + ), ) if custom_ticks: ticks = get_select_field_choices( - custom_ticks, - key_type=int, - value_type=str, - fail_silently=False + custom_ticks, key_type=int, value_type=str, fail_silently=False ) if ticks is None: self.add_error( - 'custom_ticks', - _("Invalid format. First value should be an integer, " - "second value should be a string.") + "custom_ticks", + _( + "Invalid format. First value should be an integer, " + "second value should be a string." + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/helpers.py b/src/fobi/contrib/plugins/form_elements/fields/slider/helpers.py index 60b7402d0..aa3b500ee 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/helpers.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/helpers.py @@ -1,14 +1,11 @@ -from six import text_type - from django.utils.html import format_html +from six import text_type -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'generate_ticks', -) +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("generate_ticks",) def generate_ticks(choices, empty_labels=False): @@ -23,17 +20,17 @@ def generate_ticks(choices, empty_labels=False): values = [] if empty_labels: - values = ["".encode('utf8') for k in keys] + values = ["".encode("utf8") for k in keys] else: for k, v in choices: if v is not None: - values.append(v.encode('utf8')) + values.append(v.encode("utf8")) else: - values.append(text_type(k).encode('utf8')) + values.append(text_type(k).encode("utf8")) ticks = { - 'data-slider-ticks': format_html(str(keys)), - 'data-slider-ticks-labels': format_html(str(values).replace("'", '"')), + "data-slider-ticks": format_html(str(keys)), + "data-slider-ticks-labels": format_html(str(values).replace("'", '"')), } return ticks diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/settings.py b/src/fobi/contrib/plugins/form_elements/fields/slider/settings.py index 4c83b7f46..12b447785 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/settings.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/settings.py @@ -1,26 +1,26 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'INITIAL', - 'INITIAL_MAX_VALUE', - 'INITIAL_MIN_VALUE', - 'MAX_VALUE', - 'MIN_VALUE', - 'STEP', + "INITIAL", + "INITIAL_MAX_VALUE", + "INITIAL_MIN_VALUE", + "MAX_VALUE", + "MIN_VALUE", + "STEP", ) -INITIAL = get_setting('INITIAL') +INITIAL = get_setting("INITIAL") -INITIAL_MAX_VALUE = get_setting('INITIAL_MAX_VALUE') +INITIAL_MAX_VALUE = get_setting("INITIAL_MAX_VALUE") -INITIAL_MIN_VALUE = get_setting('INITIAL_MIN_VALUE') +INITIAL_MIN_VALUE = get_setting("INITIAL_MIN_VALUE") -MAX_VALUE = get_setting('MAX_VALUE') +MAX_VALUE = get_setting("MAX_VALUE") -MIN_VALUE = get_setting('MIN_VALUE') +MIN_VALUE = get_setting("MIN_VALUE") -STEP = get_setting('STEP') +STEP = get_setting("STEP") diff --git a/src/fobi/contrib/plugins/form_elements/fields/slider/widgets.py b/src/fobi/contrib/plugins/form_elements/fields/slider/widgets.py index 15b74d4f9..0e67fa10c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slider/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slider/widgets.py @@ -1,20 +1,18 @@ from __future__ import absolute_import -from fobi.base import FormElementPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_elements.fields.slider.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'BaseSliderPluginWidget', -) +from fobi.base import FormElementPluginWidget + +__title__ = "fobi.contrib.plugins.form_elements.fields.slider.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseSliderPluginWidget",) class BaseSliderPluginWidget(FormElementPluginWidget): """Base date form element plugin widget.""" plugin_uid = UID - html_classes = ['slider'] + html_classes = ["slider"] diff --git a/src/fobi/contrib/plugins/form_elements/fields/slug/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/slug/__init__.py index ca53dfc09..14fc97a81 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slug/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slug/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.slug' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.slug" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'slug.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "slug.apps.Config" +) -UID = 'slug' +UID = "slug" diff --git a/src/fobi/contrib/plugins/form_elements/fields/slug/apps.py b/src/fobi/contrib/plugins/form_elements/fields/slug/apps.py index a5a7bacb7..3667d746c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slug/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slug/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.slug.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.slug.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.slug' - label = 'fobi_contrib_plugins_form_elements_fields_slug' + name = "fobi.contrib.plugins.form_elements.fields.slug" + label = "fobi_contrib_plugins_form_elements_fields_slug" diff --git a/src/fobi/contrib/plugins/form_elements/fields/slug/base.py b/src/fobi/contrib/plugins/form_elements/fields/slug/base.py index 2f586347e..cfd0c3317 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slug/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slug/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import SlugInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.slug.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SlugInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.slug.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SlugInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,30 +26,31 @@ class SlugInputPlugin(FormFieldPlugin): group = _("Fields") form = SlugInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } if self.data.max_length: try: - field_kwargs['max_length'] = int(self.data.max_length) + field_kwargs["max_length"] = int(self.data.max_length) except ValueError: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None else: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None - field_kwargs['min_length'] = None + field_kwargs["min_length"] = None return [(self.data.name, SlugField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/slug/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/slug/fobi_form_elements.py index 81ec5d4de..79a6e829b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slug/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slug/fobi_form_elements.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import SlugInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.slug.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SlugInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = "fobi.contrib.plugins.form_elements.fields.slug.fobi_form_elements" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SlugInputPlugin",) form_element_plugin_registry.register(SlugInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/slug/forms.py b/src/fobi/contrib/plugins/form_elements/fields/slug/forms.py index 8d4abd2bd..003a717f9 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/slug/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/slug/forms.py @@ -1,16 +1,16 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.slug.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SlugInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.slug.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SlugInputForm",) theme = get_theme(request=None, as_instance=True) @@ -32,63 +32,69 @@ class SlugInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.SlugField( label=_("Initial"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(SlugInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/text/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/text/__init__.py index a0c3eb774..0c76301f2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/text/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/text/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.text' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.text" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'text.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "text.apps.Config" +) -UID = 'text' +UID = "text" diff --git a/src/fobi/contrib/plugins/form_elements/fields/text/apps.py b/src/fobi/contrib/plugins/form_elements/fields/text/apps.py index 2362bb1ea..c743dff5e 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/text/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/text/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.text.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.text.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.text' - label = 'fobi_contrib_plugins_form_elements_fields_text' + name = "fobi.contrib.plugins.form_elements.fields.text" + label = "fobi_contrib_plugins_form_elements_fields_text" diff --git a/src/fobi/contrib/plugins/form_elements/fields/text/base.py b/src/fobi/contrib/plugins/form_elements/fields/text/base.py index 592f3a5f8..a80a9308a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/text/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/text/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import TextInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.text.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.text.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,30 +26,31 @@ class TextInputPlugin(FormFieldPlugin): group = _("Fields") form = TextInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } if self.data.max_length: try: - field_kwargs['max_length'] = int(self.data.max_length) + field_kwargs["max_length"] = int(self.data.max_length) except ValueError: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None else: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None - field_kwargs['min_length'] = None + field_kwargs["min_length"] = None return [(self.data.name, CharField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/text/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/text/fobi_form_elements.py index 37132ef21..ae36533f2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/text/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/text/fobi_form_elements.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import TextInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.text.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = "fobi.contrib.plugins.form_elements.fields.text.fobi_form_elements" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextInputPlugin",) form_element_plugin_registry.register(TextInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/text/forms.py b/src/fobi/contrib/plugins/form_elements/fields/text/forms.py index d2a45ecbb..2df2fb72b 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/text/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/text/forms.py @@ -1,16 +1,16 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.text.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.text.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextInputForm",) theme = get_theme(request=None, as_instance=True) @@ -32,64 +32,70 @@ class TextInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): """Validation.""" super(TextInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/textarea/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/textarea/__init__.py index 4bd76d2c2..25632b662 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/textarea/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/textarea/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.textarea' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.textarea" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'textarea.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "textarea.apps.Config" +) -UID = 'textarea' +UID = "textarea" diff --git a/src/fobi/contrib/plugins/form_elements/fields/textarea/apps.py b/src/fobi/contrib/plugins/form_elements/fields/textarea/apps.py index 0855269a2..a3f26f6d1 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/textarea/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/textarea/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.textarea.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.textarea.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.textarea' - label = 'fobi_contrib_plugins_form_elements_fields_textarea' + name = "fobi.contrib.plugins.form_elements.fields.textarea" + label = "fobi_contrib_plugins_form_elements_fields_textarea" diff --git a/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py b/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py index 3e529d1a8..1e34eaaa5 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/textarea/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import Textarea from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import TextareaForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.textarea.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextareaPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.textarea.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextareaPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,29 +26,30 @@ class TextareaPlugin(FormFieldPlugin): group = _("Fields") form = TextareaForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': Textarea(attrs=widget_attrs) + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": Textarea(attrs=widget_attrs), } if self.data.max_length: try: - field_kwargs['max_length'] = int(self.data.max_length) + field_kwargs["max_length"] = int(self.data.max_length) except ValueError: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None else: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None - field_kwargs['min_length'] = None + field_kwargs["min_length"] = None return [(self.data.name, CharField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/textarea/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/textarea/fobi_form_elements.py index ca06be987..5bbdad4bb 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/textarea/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/textarea/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import TextareaPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'textarea.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextareaPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "textarea.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextareaPlugin",) form_element_plugin_registry.register(TextareaPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/textarea/forms.py b/src/fobi/contrib/plugins/form_elements/fields/textarea/forms.py index f388d1e5d..da4d56aa7 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/textarea/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/textarea/forms.py @@ -4,11 +4,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.textarea.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TextareaForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.textarea.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TextareaForm",) theme = get_theme(request=None, as_instance=True) @@ -30,48 +30,46 @@ class TextareaForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.CharField( label=_("Initial"), required=False, widget=forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=False, - widget=NumberInput( - attrs={'class': theme.form_element_html_class} - ) + widget=NumberInput(attrs={"class": theme.form_element_html_class}), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/fields/time/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/time/__init__.py index 89e0498aa..450ea52b5 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/time/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/time/__init__.py @@ -1,12 +1,16 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_elements.fields.time' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.time" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'time.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "time.apps.Config" +) -UID = 'time' +UID = "time" diff --git a/src/fobi/contrib/plugins/form_elements/fields/time/apps.py b/src/fobi/contrib/plugins/form_elements/fields/time/apps.py index 8c90e1e6c..494b38765 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/time/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/time/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.time.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.time.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.time' - label = 'fobi_contrib_plugins_form_elements_fields_time' + name = "fobi.contrib.plugins.form_elements.fields.time" + label = "fobi_contrib_plugins_form_elements_fields_time" diff --git a/src/fobi/contrib/plugins/form_elements/fields/time/base.py b/src/fobi/contrib/plugins/form_elements/fields/time/base.py index 02c8c92fd..493b528b2 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/time/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/time/base.py @@ -4,16 +4,16 @@ from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme - from . import UID from .forms import TimeInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.time.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TimeInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.time.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TimeInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -26,29 +26,31 @@ class TimeInputPlugin(FormFieldPlugin): group = _("Fields") form = TimeInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'time', + "class": theme.form_element_html_class, + "type": "time", } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, # 'input_formats': self.data.input_formats, - 'required': self.data.required, - 'widget': TextInput(attrs=widget_attrs), + "required": self.data.required, + "widget": TextInput(attrs=widget_attrs), } # if self.data.input_formats: # kwargs['input_formats'] = self.data.input_formats return [(self.data.name, TimeField, field_kwargs)] - def submit_plugin_form_data(self, form_entry, request, form, - form_element_entries=None, **kwargs): + def submit_plugin_form_data( + self, form_entry, request, form, form_element_entries=None, **kwargs + ): """Submit plugin form data/process. :param fobi.models.FormEntry form_entry: Instance of diff --git a/src/fobi/contrib/plugins/form_elements/fields/time/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/time/fobi_form_elements.py index e25eb1028..150bb1d2d 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/time/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/time/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import TimeInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.' \ - 'time.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TimeInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.fields." "time.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TimeInputPlugin",) form_element_plugin_registry.register(TimeInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/time/forms.py b/src/fobi/contrib/plugins/form_elements/fields/time/forms.py index 7ce62e26d..224ae215a 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/time/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/time/forms.py @@ -5,11 +5,11 @@ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.fields.time.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('TimeInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.time.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("TimeInputForm",) theme = get_theme(request=None, as_instance=True) @@ -23,55 +23,55 @@ class TimeInputForm(forms.Form, BaseFormFieldPluginForm): ("help_text", ""), ("initial", ""), ("input_formats", ""), - ("required", False) + ("required", False), ] label = forms.CharField( label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.TimeField( label=_("Initial"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class, 'type': 'time'} - ) + attrs={"class": theme.form_element_html_class, "type": "time"} + ), ) input_formats = forms.CharField( label=_("Input formats"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) def clean_initial(self): """Clean the initial value.""" - initial = self.cleaned_data['initial'] + initial = self.cleaned_data["initial"] try: return initial.strftime("%H:%M:%S") except Exception as err: diff --git a/src/fobi/contrib/plugins/form_elements/fields/url/__init__.py b/src/fobi/contrib/plugins/form_elements/fields/url/__init__.py index a53bc4402..f65a1ca00 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/url/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/fields/url/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.fields.url' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.fields.url" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.fields.' \ - 'url.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.fields." "url.apps.Config" +) -UID = 'url' +UID = "url" diff --git a/src/fobi/contrib/plugins/form_elements/fields/url/apps.py b/src/fobi/contrib/plugins/form_elements/fields/url/apps.py index c7e6b01f6..4ad8672a6 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/url/apps.py +++ b/src/fobi/contrib/plugins/form_elements/fields/url/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.fields.url.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.fields.url.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.fields.url' - label = 'fobi_contrib_plugins_form_elements_fields_url' + name = "fobi.contrib.plugins.form_elements.fields.url" + label = "fobi_contrib_plugins_form_elements_fields_url" diff --git a/src/fobi/contrib/plugins/form_elements/fields/url/base.py b/src/fobi/contrib/plugins/form_elements/fields/url/base.py index b864a5791..87089490c 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/url/base.py +++ b/src/fobi/contrib/plugins/form_elements/fields/url/base.py @@ -10,20 +10,21 @@ class URLInput(TextInput): """URL input.""" - input_type = 'url' + input_type = "url" -from django.utils.translation import gettext_lazy as _ -from fobi.base import FormFieldPlugin, get_theme +from django.utils.translation import gettext_lazy as _ from . import UID from .forms import URLInputForm -__title__ = 'fobi.contrib.plugins.form_elements.fields.url.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('URLInputPlugin',) +from fobi.base import FormFieldPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.fields.url.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("URLInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -36,31 +37,32 @@ class URLInputPlugin(FormFieldPlugin): group = _("Fields") form = URLInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, - 'type': 'url', - 'placeholder': self.data.placeholder, + "class": theme.form_element_html_class, + "type": "url", + "placeholder": self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, - 'initial': self.data.initial, - 'required': self.data.required, - 'widget': URLInput(attrs=widget_attrs), + "label": self.data.label, + "help_text": self.data.help_text, + "initial": self.data.initial, + "required": self.data.required, + "widget": URLInput(attrs=widget_attrs), } if self.data.max_length: try: - field_kwargs['max_length'] = int(self.data.max_length) + field_kwargs["max_length"] = int(self.data.max_length) except ValueError: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None else: - field_kwargs['max_length'] = None + field_kwargs["max_length"] = None - field_kwargs['min_length'] = None + field_kwargs["min_length"] = None return [(self.data.name, URLField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/fields/url/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/fields/url/fobi_form_elements.py index 610179be3..86252ab49 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/url/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/fields/url/fobi_form_elements.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import URLInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.fields.url.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('URLInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = "fobi.contrib.plugins.form_elements.fields.url.fobi_form_elements" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("URLInputPlugin",) form_element_plugin_registry.register(URLInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/fields/url/forms.py b/src/fobi/contrib/plugins/form_elements/fields/url/forms.py index 0c7cbab95..8880b0cac 100644 --- a/src/fobi/contrib/plugins/form_elements/fields/url/forms.py +++ b/src/fobi/contrib/plugins/form_elements/fields/url/forms.py @@ -1,16 +1,16 @@ from django import forms -from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator +from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme from fobi.settings import DEFAULT_MAX_LENGTH, DEFAULT_MIN_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.fields.url.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('URLInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.fields.url.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("URLInputForm",) theme = get_theme(request=None, as_instance=True) @@ -32,63 +32,69 @@ class URLInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) initial = forms.URLField( label=_("Initial"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class, - 'min': str(DEFAULT_MIN_LENGTH)}), + widget=NumberInput( + attrs={ + "class": theme.form_element_html_class, + "min": str(DEFAULT_MIN_LENGTH), + } + ), initial=DEFAULT_MAX_LENGTH, - validators=[MinValueValidator(DEFAULT_MIN_LENGTH)] + validators=[MinValueValidator(DEFAULT_MIN_LENGTH)], ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) placeholder = forms.CharField( label=_("Placeholder"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) def clean(self): super(URLInputForm, self).clean() - max_length = self.cleaned_data.get('max_length', DEFAULT_MAX_LENGTH) + max_length = self.cleaned_data.get("max_length", DEFAULT_MAX_LENGTH) - if self.cleaned_data['initial']: - len_initial = len(self.cleaned_data['initial']) + if self.cleaned_data["initial"]: + len_initial = len(self.cleaned_data["initial"]) if len_initial > max_length: self.add_error( - 'initial', - _("Ensure this value has at most {0} characters " - "(it has {1}).".format(max_length, len_initial)) + "initial", + _( + "Ensure this value has at most {0} characters " + "(it has {1}).".format(max_length, len_initial) + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/security/captcha/__init__.py b/src/fobi/contrib/plugins/form_elements/security/captcha/__init__.py index 12c5156c4..d076e46d0 100644 --- a/src/fobi/contrib/plugins/form_elements/security/captcha/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/security/captcha/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.security.captcha' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.security.captcha" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.security.' \ - 'captcha.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.security." "captcha.apps.Config" +) -UID = 'captcha' +UID = "captcha" diff --git a/src/fobi/contrib/plugins/form_elements/security/captcha/apps.py b/src/fobi/contrib/plugins/form_elements/security/captcha/apps.py index 14fd1aac7..ecd7e96ad 100644 --- a/src/fobi/contrib/plugins/form_elements/security/captcha/apps.py +++ b/src/fobi/contrib/plugins/form_elements/security/captcha/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.security.captcha.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.security.captcha.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.security.captcha' - label = 'fobi_contrib_plugins_form_elements_security_captcha' + name = "fobi.contrib.plugins.form_elements.security.captcha" + label = "fobi_contrib_plugins_form_elements_security_captcha" diff --git a/src/fobi/contrib/plugins/form_elements/security/captcha/base.py b/src/fobi/contrib/plugins/form_elements/security/captcha/base.py index 0f836986b..30de4f4ca 100644 --- a/src/fobi/contrib/plugins/form_elements/security/captcha/base.py +++ b/src/fobi/contrib/plugins/form_elements/security/captcha/base.py @@ -4,15 +4,12 @@ from django.utils.translation import gettext_lazy as _ -from fobi.base import ( - FormElementPlugin, - get_theme -) - from ......pip_helpers import check_if_installed, get_installed_packages from . import UID from .forms import CaptchaInputForm +from fobi.base import FormElementPlugin, get_theme + logger = logging.getLogger(__name__) DJANGO_RECAPTCHA_INSTALLED = False @@ -41,7 +38,7 @@ "`django-simple-captcha` if you want to make use of the " "`fobi.contrib.plugins.form_elements.security.captcha` " "package." - ) + ) if check_if_installed("django-simple-captcha", installed_packages): DJANGO_SIMPLE_CAPTCHA_INSTALLED = True @@ -64,12 +61,11 @@ "due to app name collision (captcha)." ) -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'captcha.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CaptchaInputPlugin',) +__title__ = "fobi.contrib.plugins.form_elements.security." "captcha.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CaptchaInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -82,20 +78,21 @@ class CaptchaInputPlugin(FormElementPlugin): group = _("Security") form = CaptchaInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, + "class": theme.form_element_html_class, # 'placeholder': self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, + "label": self.data.label, + "help_text": self.data.help_text, # 'initial': self.data.initial, - 'required': self.data.required, - 'widget': CaptchaTextInput(attrs=widget_attrs), + "required": self.data.required, + "widget": CaptchaTextInput(attrs=widget_attrs), } return [(self.data.name, CaptchaField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/security/captcha/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/security/captcha/fobi_form_elements.py index 6112fc5b8..7946cbe64 100644 --- a/src/fobi/contrib/plugins/form_elements/security/captcha/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/security/captcha/fobi_form_elements.py @@ -1,19 +1,20 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ( - CaptchaInputPlugin, DJANGO_RECAPTCHA_INSTALLED, DJANGO_SIMPLE_CAPTCHA_INSTALLED, + CaptchaInputPlugin, ) -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'captcha.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CaptchaInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "captcha.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CaptchaInputPlugin",) # Register only if safe to use. diff --git a/src/fobi/contrib/plugins/form_elements/security/captcha/forms.py b/src/fobi/contrib/plugins/form_elements/security/captcha/forms.py index 9b8036b82..28d24ad39 100644 --- a/src/fobi/contrib/plugins/form_elements/security/captcha/forms.py +++ b/src/fobi/contrib/plugins/form_elements/security/captcha/forms.py @@ -2,13 +2,14 @@ from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme + # from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.security.captcha.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('CaptchaInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.security.captcha.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("CaptchaInputForm",) theme = get_theme(request=None, as_instance=True) @@ -30,22 +31,22 @@ class CaptchaInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) # initial = forms.CharField( # label=_("Initial"), @@ -66,8 +67,8 @@ class CaptchaInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) # placeholder = forms.CharField( # label=_("Placeholder"), diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/__init__.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/__init__.py index 0b870c951..588d97531 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.security.' \ - 'honeypot.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.security." "honeypot.apps.Config" +) -UID = 'honeypot' +UID = "honeypot" diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/apps.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/apps.py index 37ab6416c..11154b2f6 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/apps.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.security.honeypot' - label = 'fobi_contrib_plugins_form_elements_security_honeypot' + name = "fobi.contrib.plugins.form_elements.security.honeypot" + label = "fobi_contrib_plugins_form_elements_security_honeypot" diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/base.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/base.py index 656fad818..ca2eeacd0 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/base.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/base.py @@ -3,17 +3,17 @@ from django.forms.widgets import HiddenInput from django.utils.translation import gettext_lazy as _ -from fobi.base import FormElementPlugin, get_theme - from . import UID from .fields import HoneypotField from .forms import HoneypotInputForm -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HoneypotInputPlugin',) +from fobi.base import FormElementPlugin, get_theme + +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HoneypotInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -27,22 +27,23 @@ class HoneypotInputPlugin(FormElementPlugin): form = HoneypotInputForm is_hidden = True - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'label': self.data.label, - 'initial': self.data.initial, + "label": self.data.label, + "initial": self.data.initial, # 'help_text': self.data.help_text, - 'required': self.data.required, - 'widget': HiddenInput( - attrs={'class': theme.form_element_html_class} + "required": self.data.required, + "widget": HiddenInput( + attrs={"class": theme.form_element_html_class} ), } if self.data.max_length is not None: - field_kwargs['max_length'] = self.data.max_length + field_kwargs["max_length"] = self.data.max_length # return [(self.data.name, (HoneypotField, TextInput), kwargs)] return [(self.data.name, HoneypotField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/conf.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/conf.py index 59259e293..20d92bf39 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/conf.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,7 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_HONEYPOT_{0}'.format(setting)): - return getattr(settings, 'FOBI_PLUGIN_HONEYPOT_{0}'.format(setting)) + if hasattr(settings, "FOBI_PLUGIN_HONEYPOT_{0}".format(setting)): + return getattr(settings, "FOBI_PLUGIN_HONEYPOT_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/defaults.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/defaults.py index 5f49a9fc3..a6bbf2c9f 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/defaults.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/defaults.py @@ -1,9 +1,7 @@ -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'HONEYPOT_VALUE', -) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HONEYPOT_VALUE",) -HONEYPOT_VALUE = '' +HONEYPOT_VALUE = "" diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/fields.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/fields.py index 81bbc243b..784e175fb 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/fields.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/fields.py @@ -5,18 +5,18 @@ # HONEYPOT_VALUE # ) -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.fields' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HoneypotField',) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.fields" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HoneypotField",) class HoneypotField(forms.CharField): """HoneypotField""" default_error_messages = { - 'invalid': _('Field value was tampered with.'), + "invalid": _("Field value was tampered with."), } widget = forms.HiddenInput @@ -24,6 +24,6 @@ def clean(self, value): """Check that honeypot value remained the same.""" if value != self.initial: raise forms.ValidationError( - self.error_messages['invalid'], code='invalid' + self.error_messages["invalid"], code="invalid" ) return value diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/fobi_form_elements.py index a7a6d5553..d1578748b 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/fobi_form_elements.py @@ -1,15 +1,16 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import HoneypotInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'honeypot.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HoneypotInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "honeypot.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HoneypotInputPlugin",) form_element_plugin_registry.register(HoneypotInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/forms.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/forms.py index d454497aa..1d812afb3 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/forms.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/forms.py @@ -5,11 +5,11 @@ from fobi.settings import DEFAULT_MAX_LENGTH from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HoneypotInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HoneypotInputForm",) theme = get_theme(request=None, as_instance=True) @@ -31,15 +31,15 @@ class HoneypotInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) # help_text = forms.CharField( # label=_("Help text"), @@ -52,21 +52,21 @@ class HoneypotInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Initial"), required=False, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) max_length = forms.IntegerField( label=_("Max length"), required=True, - widget=NumberInput(attrs={'class': theme.form_element_html_class}), - initial=DEFAULT_MAX_LENGTH + widget=NumberInput(attrs={"class": theme.form_element_html_class}), + initial=DEFAULT_MAX_LENGTH, ) required = forms.BooleanField( label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) # placeholder = forms.CharField( # label=_("Placeholder"), diff --git a/src/fobi/contrib/plugins/form_elements/security/honeypot/settings.py b/src/fobi/contrib/plugins/form_elements/security/honeypot/settings.py index efd12ccc1..e75f65578 100644 --- a/src/fobi/contrib/plugins/form_elements/security/honeypot/settings.py +++ b/src/fobi/contrib/plugins/form_elements/security/honeypot/settings.py @@ -3,10 +3,10 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.security.honeypot.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HONEYPOT_VALUE',) +__title__ = "fobi.contrib.plugins.form_elements.security.honeypot.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HONEYPOT_VALUE",) -HONEYPOT_VALUE = get_setting('HONEYPOT_VALUE') +HONEYPOT_VALUE = get_setting("HONEYPOT_VALUE") diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/__init__.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/__init__.py index 8fdeb85eb..41a84280e 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/__init__.py @@ -1,10 +1,15 @@ -__title__ = 'fobi.contrib.plugins.form_elements.security.invisible_recaptcha' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.security.invisible_recaptcha" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.security." + "invisible_recaptcha.apps.Config" +) -UID = 'invisible_recaptcha' +UID = "invisible_recaptcha" diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/apps.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/apps.py index fd9954db7..032bf77a5 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/apps.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/apps.py @@ -1,15 +1,16 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "invisible_recaptcha.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.security.invisible_recaptcha' - label = 'fobi_contrib_plugins_form_elements_security_invisible_recaptcha' + name = "fobi.contrib.plugins.form_elements.security.invisible_recaptcha" + label = "fobi_contrib_plugins_form_elements_security_invisible_recaptcha" diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/base.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/base.py index 28269cd94..1e0a3be12 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/base.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/base.py @@ -2,20 +2,21 @@ from django.utils.translation import gettext_lazy as _ -from fobi.base import FormElementPlugin, get_theme - from . import UID from .constants import RECAPTCHA_FIELD from .fields import InvisibleRecaptchaField from .forms import InvisibleRecaptchaInputForm from .widgets import InvisibleRecaptchaWidget -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaInputPlugin',) +from fobi.base import FormElementPlugin, get_theme + +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "invisible_recaptcha.base" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -29,24 +30,22 @@ class InvisibleRecaptchaInputPlugin(FormElementPlugin): form = InvisibleRecaptchaInputForm is_hidden = True - def get_form_field_instances(self, - request=None, - form_entry=None, - form_element_entries=None, - **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" - recaptcha_response = '' - if request.method == 'POST': + recaptcha_response = "" + if request.method == "POST": recaptcha_response = request.POST.get(RECAPTCHA_FIELD) field_kwargs = { - 'label': self.data.label, - 'required': self.data.required, - 'widget': InvisibleRecaptchaWidget( - attrs={'class': theme.form_element_html_class} + "label": self.data.label, + "required": self.data.required, + "widget": InvisibleRecaptchaWidget( + attrs={"class": theme.form_element_html_class} ), - 'recaptcha_response': recaptcha_response, + "recaptcha_response": recaptcha_response, } return [(self.data.name, InvisibleRecaptchaField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/conf.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/conf.py index cee95e5b1..2083082e9 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/conf.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/conf.py @@ -1,11 +1,12 @@ from django.conf import settings -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "invisible_recaptcha.conf" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/constants.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/constants.py index 43a7e3428..8aca3dda3 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/constants.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/constants.py @@ -1,12 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.constants' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2013-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = ( + "fobi.contrib.plugins.form_elements.security." + "invisible_recaptcha.constants" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2013-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'RECAPTCHA_FIELD', - 'SITE_VERIFY_URL', + "RECAPTCHA_FIELD", + "SITE_VERIFY_URL", ) -RECAPTCHA_FIELD = 'g-recaptcha-response' -SITE_VERIFY_URL = 'https://www.google.com/recaptcha/api/siteverify' +RECAPTCHA_FIELD = "g-recaptcha-response" +SITE_VERIFY_URL = "https://www.google.com/recaptcha/api/siteverify" diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fields.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fields.py index 103d9d192..946392d19 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fields.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fields.py @@ -1,20 +1,20 @@ import logging +import requests from django import forms from django.utils.translation import gettext_lazy as _ -import requests - from .conf import get_setting from .constants import SITE_VERIFY_URL from .widgets import InvisibleRecaptchaWidget -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.fields' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaField',) +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "invisible_recaptcha.fields" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaField",) LOGGER = logging.getLogger(__name__) @@ -23,9 +23,9 @@ class InvisibleRecaptchaField(forms.CharField): """Invisible reCAPTCHA field""" default_error_messages = { - 'invalid': _('Field value was tampered with.'), - 'validation_error': _('Invisible reCAPTCHA validation error'), - 'incorrect_captcha': _('Incorrect CAPTCHA, please try again'), + "invalid": _("Field value was tampered with."), + "validation_error": _("Invisible reCAPTCHA validation error"), + "incorrect_captcha": _("Incorrect CAPTCHA, please try again"), } widget = InvisibleRecaptchaWidget @@ -36,44 +36,44 @@ def __init__(self, recaptcha_response=None, *args, **kwargs): def clean(self, value): """Validation.""" - site_secret = get_setting('SITE_SECRET') + site_secret = get_setting("SITE_SECRET") if not (site_secret and self.recaptcha_response): raise forms.ValidationError( - self.error_messages['validation_error'], code='invalid' + self.error_messages["validation_error"], code="invalid" ) response = requests.post( SITE_VERIFY_URL, data={ - 'secret': site_secret, - 'response': self.recaptcha_response, - } + "secret": site_secret, + "response": self.recaptcha_response, + }, ) if response.status_code != requests.codes.ok: LOGGER.error( - 'Invisible reCAPTCHA error: %s: %s', + "Invisible reCAPTCHA error: %s: %s", response.status_code, - response.reason + response.reason, ) raise forms.ValidationError( - self.error_messages['validation_error'], code='invalid' + self.error_messages["validation_error"], code="invalid" ) else: response = response.json() - error_codes = response.get('error-codes') + error_codes = response.get("error-codes") if error_codes: LOGGER.error( - 'Invisible reCAPTCHA verification error: %s', error_codes + "Invisible reCAPTCHA verification error: %s", error_codes ) - result = response.get('success') + result = response.get("success") if result: LOGGER.info(response) return value raise forms.ValidationError( - self.error_messages['incorrect_captcha'], code='invalid' + self.error_messages["incorrect_captcha"], code="invalid" ) diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fobi_form_elements.py index 47030c979..a439eca2a 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/fobi_form_elements.py @@ -1,15 +1,17 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import InvisibleRecaptchaInputPlugin -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.security." + "invisible_recaptcha.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaInputPlugin",) form_element_plugin_registry.register(InvisibleRecaptchaInputPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/forms.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/forms.py index cb0c43a6e..bcd766883 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/forms.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/forms.py @@ -3,12 +3,13 @@ from fobi.base import BaseFormFieldPluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaInputForm',) +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "invisible_recaptcha.forms" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaInputForm",) theme = get_theme(request=None, as_instance=True) @@ -26,20 +27,20 @@ class InvisibleRecaptchaInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/settings.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/settings.py index e6069af6a..8cd7f3228 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/settings.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/settings.py @@ -4,15 +4,17 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = ( + "fobi.contrib.plugins.form_elements.security." + "invisible_recaptcha.settings" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'SITE_KEY', - 'SITE_SECRET', + "SITE_KEY", + "SITE_SECRET", ) -SITE_KEY = get_setting('SITE_KEY') -SITE_SECRET = get_setting('SITE_SECRET') +SITE_KEY = get_setting("SITE_KEY") +SITE_SECRET = get_setting("SITE_SECRET") diff --git a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/widgets.py b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/widgets.py index 8b23a7c0d..27c37bd24 100644 --- a/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/security/invisible_recaptcha/widgets.py @@ -1,18 +1,19 @@ from django.forms.widgets import HiddenInput -from fobi.base import FormElementPluginWidget - from . import UID from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'invisible_recaptcha.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +from fobi.base import FormElementPluginWidget + +__title__ = ( + "fobi.contrib.plugins.form_elements.security." "invisible_recaptcha.widgets" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'InvisibleRecaptchaWidget', - 'BaseInvisibleRecaptchaWidget', + "InvisibleRecaptchaWidget", + "BaseInvisibleRecaptchaWidget", ) @@ -37,8 +38,8 @@ class BaseInvisibleRecaptchaWidget(FormElementPluginWidget): """Base invisible recaptcha form element plugin widget.""" plugin_uid = UID - html_classes = ['invisible-recaptcha'] + html_classes = ["invisible-recaptcha"] media_js = [ - 'https://www.google.com/recaptcha/api.js', - 'invisible_recaptcha/fobi.plugin.invisible_recaptcha.js', + "https://www.google.com/recaptcha/api.js", + "invisible_recaptcha/fobi.plugin.invisible_recaptcha.js", ] diff --git a/src/fobi/contrib/plugins/form_elements/security/recaptcha/__init__.py b/src/fobi/contrib/plugins/form_elements/security/recaptcha/__init__.py index ab9ba834e..d9e1f8bce 100644 --- a/src/fobi/contrib/plugins/form_elements/security/recaptcha/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/security/recaptcha/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.security.recaptcha' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.security.recaptcha" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.security.' \ - 'recaptcha.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.security." "recaptcha.apps.Config" +) -UID = 'recaptcha' +UID = "recaptcha" diff --git a/src/fobi/contrib/plugins/form_elements/security/recaptcha/apps.py b/src/fobi/contrib/plugins/form_elements/security/recaptcha/apps.py index ad61c4170..d41d9cc43 100644 --- a/src/fobi/contrib/plugins/form_elements/security/recaptcha/apps.py +++ b/src/fobi/contrib/plugins/form_elements/security/recaptcha/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.security.recaptcha.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.security.recaptcha.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.security.recaptcha' - label = 'fobi_contrib_plugins_form_elements_security_recaptcha' + name = "fobi.contrib.plugins.form_elements.security.recaptcha" + label = "fobi_contrib_plugins_form_elements_security_recaptcha" diff --git a/src/fobi/contrib/plugins/form_elements/security/recaptcha/base.py b/src/fobi/contrib/plugins/form_elements/security/recaptcha/base.py index 258f2e6d2..716106fae 100644 --- a/src/fobi/contrib/plugins/form_elements/security/recaptcha/base.py +++ b/src/fobi/contrib/plugins/form_elements/security/recaptcha/base.py @@ -2,18 +2,15 @@ import logging -from django.utils.translation import gettext_lazy as _ from django.conf import settings - -from fobi.base import ( - FormElementPlugin, - get_theme, -) +from django.utils.translation import gettext_lazy as _ from ......pip_helpers import check_if_installed, get_installed_packages from . import UID from .forms import ReCaptchaInputForm +from fobi.base import FormElementPlugin, get_theme + logger = logging.getLogger(__name__) DJANGO_RECAPTCHA_INSTALLED = False @@ -67,12 +64,11 @@ "due to app name collision (captcha)." ) -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'recaptcha.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ReCaptchaInputPlugin',) +__title__ = "fobi.contrib.plugins.form_elements.security." "recaptcha.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ReCaptchaInputPlugin",) theme = get_theme(request=None, as_instance=True) @@ -85,20 +81,21 @@ class ReCaptchaInputPlugin(FormElementPlugin): group = _("Security") form = ReCaptchaInputForm - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" widget_attrs = { - 'class': theme.form_element_html_class, + "class": theme.form_element_html_class, # 'placeholder': self.data.placeholder, } field_kwargs = { - 'label': self.data.label, - 'help_text': self.data.help_text, + "label": self.data.label, + "help_text": self.data.help_text, # 'initial': self.data.initial, - 'required': self.data.required, - 'widget': ReCaptchaWidget(attrs=widget_attrs), + "required": self.data.required, + "widget": ReCaptchaWidget(attrs=widget_attrs), } return [(self.data.name, ReCaptchaField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/security/recaptcha/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/security/recaptcha/fobi_form_elements.py index 2be5ce76a..46bffcec7 100644 --- a/src/fobi/contrib/plugins/form_elements/security/recaptcha/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/security/recaptcha/fobi_form_elements.py @@ -1,19 +1,21 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import ( DJANGO_RECAPTCHA_INSTALLED, DJANGO_SIMPLE_CAPTCHA_INSTALLED, ReCaptchaInputPlugin, ) -__title__ = 'fobi.contrib.plugins.form_elements.security.' \ - 'recaptcha.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ReCaptchaInputPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = ( + "fobi.contrib.plugins.form_elements.security." + "recaptcha.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ReCaptchaInputPlugin",) # Register only if safe to use. diff --git a/src/fobi/contrib/plugins/form_elements/security/recaptcha/forms.py b/src/fobi/contrib/plugins/form_elements/security/recaptcha/forms.py index 042d5ac3d..38bbb4d5d 100644 --- a/src/fobi/contrib/plugins/form_elements/security/recaptcha/forms.py +++ b/src/fobi/contrib/plugins/form_elements/security/recaptcha/forms.py @@ -2,14 +2,15 @@ from django.utils.translation import gettext_lazy as _ from fobi.base import BaseFormFieldPluginForm, get_theme + # from fobi.settings import DEFAULT_MAX_LENGTH # from fobi.widgets import NumberInput -__title__ = 'fobi.contrib.plugins.form_elements.security.recaptcha.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ReCaptchaInputForm',) +__title__ = "fobi.contrib.plugins.form_elements.security.recaptcha.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ReCaptchaInputForm",) theme = get_theme(request=None, as_instance=True) @@ -31,22 +32,22 @@ class ReCaptchaInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Label"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + 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} - ) + 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} - ) + attrs={"class": theme.form_element_html_class} + ), ) # initial = forms.CharField( # label=_("Initial"), @@ -67,8 +68,8 @@ class ReCaptchaInputForm(forms.Form, BaseFormFieldPluginForm): label=_("Required"), required=False, widget=forms.widgets.CheckboxInput( - attrs={'class': theme.form_element_checkbox_html_class} - ) + attrs={"class": theme.form_element_checkbox_html_class} + ), ) # placeholder = forms.CharField( # label=_("Placeholder"), diff --git a/src/fobi/contrib/plugins/form_elements/test/dummy/__init__.py b/src/fobi/contrib/plugins/form_elements/test/dummy/__init__.py index a1493822b..721e53dd2 100644 --- a/src/fobi/contrib/plugins/form_elements/test/dummy/__init__.py +++ b/src/fobi/contrib/plugins/form_elements/test/dummy/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_elements.test.dummy' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_elements.test.dummy" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_elements.test.' \ - 'dummy.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_elements.test." "dummy.apps.Config" +) -UID = 'dummy' +UID = "dummy" diff --git a/src/fobi/contrib/plugins/form_elements/test/dummy/apps.py b/src/fobi/contrib/plugins/form_elements/test/dummy/apps.py index 07b9566e4..62638c49c 100644 --- a/src/fobi/contrib/plugins/form_elements/test/dummy/apps.py +++ b/src/fobi/contrib/plugins/form_elements/test/dummy/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_elements.test.dummy.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_elements.test.dummy.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_elements.test.dummy' - label = 'fobi_contrib_plugins_form_elements_test_dummy' + name = "fobi.contrib.plugins.form_elements.test.dummy" + label = "fobi_contrib_plugins_form_elements_test_dummy" diff --git a/src/fobi/contrib/plugins/form_elements/test/dummy/base.py b/src/fobi/contrib/plugins/form_elements/test/dummy/base.py index 01b3807a2..a602331e1 100644 --- a/src/fobi/contrib/plugins/form_elements/test/dummy/base.py +++ b/src/fobi/contrib/plugins/form_elements/test/dummy/base.py @@ -3,19 +3,18 @@ from uuid import uuid4 from django.utils.translation import gettext, gettext_lazy as _ - from nonefield.fields import NoneField +from . import UID + from fobi.base import FormElementPlugin from fobi.helpers import safe_text -from . import UID - -__title__ = 'fobi.contrib.plugins.form_elements.test.dummy.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DummyPlugin',) +__title__ = "fobi.contrib.plugins.form_elements.test.dummy.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DummyPlugin",) class DummyPlugin(FormElementPlugin): @@ -32,15 +31,14 @@ def post_processor(self): """ self.data.name = "{0}_{1}".format(self.uid, uuid4()) - def get_form_field_instances(self, request=None, form_entry=None, - form_element_entries=None, **kwargs): + def get_form_field_instances( + self, request=None, form_entry=None, form_element_entries=None, **kwargs + ): """Get form field instances.""" field_kwargs = { - 'initial': "

{0}

".format( - safe_text(gettext("Dummy content")) - ), - 'required': False, - 'label': '', + "initial": "

{0}

".format(safe_text(gettext("Dummy content"))), + "required": False, + "label": "", } - return[(self.data.name, NoneField, field_kwargs)] + return [(self.data.name, NoneField, field_kwargs)] diff --git a/src/fobi/contrib/plugins/form_elements/test/dummy/fobi_form_elements.py b/src/fobi/contrib/plugins/form_elements/test/dummy/fobi_form_elements.py index f2d90fcf3..e0554d230 100644 --- a/src/fobi/contrib/plugins/form_elements/test/dummy/fobi_form_elements.py +++ b/src/fobi/contrib/plugins/form_elements/test/dummy/fobi_form_elements.py @@ -1,14 +1,14 @@ from __future__ import absolute_import -from fobi.base import form_element_plugin_registry - from .base import DummyPlugin -__title__ = 'fobi.contrib.plugins.form_elements.test.dummy.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DummyPlugin',) +from fobi.base import form_element_plugin_registry + +__title__ = "fobi.contrib.plugins.form_elements.test.dummy.fobi_form_elements" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DummyPlugin",) form_element_plugin_registry.register(DummyPlugin) diff --git a/src/fobi/contrib/plugins/form_elements/test/dummy/widgets.py b/src/fobi/contrib/plugins/form_elements/test/dummy/widgets.py index 5a3f8033c..d480a27c9 100644 --- a/src/fobi/contrib/plugins/form_elements/test/dummy/widgets.py +++ b/src/fobi/contrib/plugins/form_elements/test/dummy/widgets.py @@ -1,12 +1,12 @@ -from fobi.base import FormElementPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_elements.test.dummy.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BaseDummyPluginWidget',) +from fobi.base import FormElementPluginWidget + +__title__ = "fobi.contrib.plugins.form_elements.test.dummy.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseDummyPluginWidget",) class BaseDummyPluginWidget(FormElementPluginWidget): diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/__init__.py b/src/fobi/contrib/plugins/form_handlers/db_store/__init__.py index e06cc05a5..d34d8c626 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/__init__.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/__init__.py @@ -1,9 +1,12 @@ -__title__ = 'fobi.contrib.plugins.form_handlers.db_store' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_handlers.db_store.apps.Config' +default_app_config = "fobi.contrib.plugins.form_handlers.db_store.apps.Config" -UID = 'db_store' +UID = "db_store" diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/admin.py b/src/fobi/contrib/plugins/form_handlers/db_store/admin.py index 754a02983..785ea7151 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/admin.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/admin.py @@ -7,13 +7,13 @@ from .helpers import DataExporter from .models import SavedFormDataEntry, SavedFormWizardDataEntry -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.admin' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.admin" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'SavedFormDataEntryAdmin', - 'SavedFormWizardDataEntryAdmin', + "SavedFormDataEntryAdmin", + "SavedFormWizardDataEntryAdmin", ) # ***************************************************************************** @@ -24,20 +24,18 @@ class BaseSavedFormDataEntryAdmin(admin.ModelAdmin): """Base saved data entry admin.""" - readonly_fields = ('created', 'formatted_saved_data') + readonly_fields = ("created", "formatted_saved_data") - actions = ['export_data'] + actions = ["export_data"] only_args = [] class Media: """Media class.""" js = ( - '{0}js/jquery-1.10.2.min.js'.format(settings.STATIC_URL), - '{0}db_store/js/db_store.js'.format(settings.STATIC_URL), - '{0}db_store/js/jquery.expander.min.js'.format( - settings.STATIC_URL - ), + "{0}js/jquery-1.10.2.min.js".format(settings.STATIC_URL), + "{0}db_store/js/db_store.js".format(settings.STATIC_URL), + "{0}db_store/js/jquery.expander.min.js".format(settings.STATIC_URL), ) def get_queryset(self, request): @@ -51,7 +49,8 @@ def export_data(self, request, queryset): return data_exporter.graceful_export() - export_data.short_description = _('Export data to CSV/XLS') + export_data.short_description = _("Export data to CSV/XLS") + # ***************************************************************************** # **************************** Form handler *********************************** @@ -61,29 +60,55 @@ def export_data(self, request, queryset): class SavedFormDataEntryAdmin(BaseSavedFormDataEntryAdmin): """Saved form data entry admin.""" - list_display = ('form_entry', 'user', 'formatted_saved_data', 'created',) - list_filter = ('form_entry', 'user',) - readonly_fields = ('created', 'formatted_saved_data') + list_display = ( + "form_entry", + "user", + "formatted_saved_data", + "created", + ) + list_filter = ( + "form_entry", + "user", + ) + readonly_fields = ("created", "formatted_saved_data") fieldsets = ( - (None, { - 'fields': ('form_entry', 'user',) - }), - (_("Data"), { - 'fields': ('formatted_saved_data', 'created',) - }), - (_("Raw"), { - 'classes': ('collapse',), - 'fields': ('form_data_headers', 'saved_data',) - }), + ( + None, + { + "fields": ( + "form_entry", + "user", + ) + }, + ), + ( + _("Data"), + { + "fields": ( + "formatted_saved_data", + "created", + ) + }, + ), + ( + _("Raw"), + { + "classes": ("collapse",), + "fields": ( + "form_data_headers", + "saved_data", + ), + }, + ), ) - actions = ['export_data'] - only_args = ['form_entry'] + actions = ["export_data"] + only_args = ["form_entry"] class Meta: """Meta class.""" - app_label = _('Saved form data entry') + app_label = _("Saved form data entry") # class Media: # """Media class.""" @@ -107,30 +132,55 @@ class Meta: class SavedFormWizardDataEntryAdmin(BaseSavedFormDataEntryAdmin): """Saved form wizard data entry admin.""" - list_display = ('form_wizard_entry', 'user', 'formatted_saved_data', - 'created',) - list_filter = ('form_wizard_entry', 'user',) - readonly_fields = ('created', 'formatted_saved_data') + list_display = ( + "form_wizard_entry", + "user", + "formatted_saved_data", + "created", + ) + list_filter = ( + "form_wizard_entry", + "user", + ) + readonly_fields = ("created", "formatted_saved_data") fieldsets = ( - (None, { - 'fields': ('form_wizard_entry', 'user',) - }), - (_("Data"), { - 'fields': ('formatted_saved_data', 'created',) - }), - (_("Raw"), { - 'classes': ('collapse',), - 'fields': ('form_data_headers', 'saved_data',) - }), + ( + None, + { + "fields": ( + "form_wizard_entry", + "user", + ) + }, + ), + ( + _("Data"), + { + "fields": ( + "formatted_saved_data", + "created", + ) + }, + ), + ( + _("Raw"), + { + "classes": ("collapse",), + "fields": ( + "form_data_headers", + "saved_data", + ), + }, + ), ) - actions = ['export_data'] - only_args = ['form_wizard_entry'] + actions = ["export_data"] + only_args = ["form_wizard_entry"] class Meta: """Meta class.""" - app_label = _('Saved form wizard data entry') + app_label = _("Saved form wizard data entry") admin.site.register(SavedFormWizardDataEntry, SavedFormWizardDataEntryAdmin) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/apps.py b/src/fobi/contrib/plugins/form_handlers/db_store/apps.py index 5fe3defea..3f66941a5 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/apps.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_handlers.db_store' - label = 'fobi_contrib_plugins_form_handlers_db_store' + name = "fobi.contrib.plugins.form_handlers.db_store" + label = "fobi_contrib_plugins_form_handlers_db_store" diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/base.py b/src/fobi/contrib/plugins/form_handlers/db_store/base.py index ca6898af3..daf3b2c08 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/base.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/base.py @@ -1,10 +1,9 @@ import datetime - import json from django.core.serializers.json import DjangoJSONEncoder -from django.utils.translation import gettext_lazy as _ from django.urls import reverse +from django.utils.translation import gettext_lazy as _ from .....base import ( FormHandlerPlugin, @@ -18,13 +17,13 @@ from . import UID from .models import SavedFormDataEntry, SavedFormWizardDataEntry -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DBStoreHandlerPlugin', - 'DBStoreWizardHandlerPlugin', + "DBStoreHandlerPlugin", + "DBStoreWizardHandlerPlugin", ) # ***************************************************************************** @@ -54,40 +53,33 @@ def run(self, form_entry, request, form, form_element_entries=None): """ # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_data( - form, - form_element_entries + form, form_element_entries ) self.save_form_data_entry( - form_entry, - request, - field_name_to_label_map, - cleaned_data + form_entry, request, field_name_to_label_map, cleaned_data ) - def save_form_data_entry(self, - form_entry, - request, - field_name_to_label_map, - cleaned_data): + def save_form_data_entry( + self, form_entry, request, field_name_to_label_map, cleaned_data + ): """Save form data entry. Might be used in integration plugins. """ for key, value in cleaned_data.items(): if isinstance(value, (datetime.datetime, datetime.date)): - cleaned_data[key] = value.isoformat() \ - if hasattr(value, 'isoformat') \ - else value + cleaned_data[key] = ( + value.isoformat() if hasattr(value, "isoformat") else value + ) saved_form_data_entry = SavedFormDataEntry( form_entry=form_entry, user=request.user if request.user and request.user.pk else None, form_data_headers=json.dumps( - field_name_to_label_map, - cls=DjangoJSONEncoder + field_name_to_label_map, cls=DjangoJSONEncoder ), - saved_data=json.dumps(cleaned_data, cls=DjangoJSONEncoder) + saved_data=json.dumps(cleaned_data, cls=DjangoJSONEncoder), ) saved_form_data_entry.save() @@ -106,23 +98,27 @@ def custom_actions(self, form_entry, request=None): view_entries_icon_class = widget.view_entries_icon_class export_entries_icon_class = widget.export_entries_icon_class else: - view_entries_icon_class = 'glyphicon glyphicon-list' - export_entries_icon_class = 'glyphicon glyphicon-export' + view_entries_icon_class = "glyphicon glyphicon-list" + export_entries_icon_class = "glyphicon glyphicon-export" return ( ( - reverse('fobi.contrib.plugins.form_handlers.db_store.' - 'view_saved_form_data_entries', - args=[form_entry.pk]), + reverse( + "fobi.contrib.plugins.form_handlers.db_store." + "view_saved_form_data_entries", + args=[form_entry.pk], + ), _("View entries"), - view_entries_icon_class + view_entries_icon_class, ), ( - reverse('fobi.contrib.plugins.form_handlers.db_store.' - 'export_saved_form_data_entries', - args=[form_entry.pk]), + reverse( + "fobi.contrib.plugins.form_handlers.db_store." + "export_saved_form_data_entries", + args=[form_entry.pk], + ), _("Export entries"), - export_entries_icon_class + export_entries_icon_class, ), ) @@ -142,8 +138,14 @@ class DBStoreWizardHandlerPlugin(FormWizardHandlerPlugin): name = _("DB store") allow_multiple = False - def run(self, form_wizard_entry, request, form_list, form_wizard, - form_element_entries=None): + def run( + self, + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, + ): """Run. :param fobi.models.FormWizardEntry form_wizard_entry: Instance @@ -156,32 +158,30 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, ``fobi.models.FormElementEntry`` objects. """ if not form_element_entries: - form_element_entries = \ + form_element_entries = ( get_form_element_entries_for_form_wizard_entry( form_wizard_entry ) + ) # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_wizard_data( - form_wizard, - form_list, - form_element_entries + form_wizard, form_list, form_element_entries ) for key, value in cleaned_data.items(): if isinstance(value, (datetime.datetime, datetime.date)): - cleaned_data[key] = value.isoformat() \ - if hasattr(value, 'isoformat') \ - else value + cleaned_data[key] = ( + value.isoformat() if hasattr(value, "isoformat") else value + ) saved_form_wizard_data_entry = SavedFormWizardDataEntry( form_wizard_entry=form_wizard_entry, user=request.user if request.user and request.user.pk else None, form_data_headers=json.dumps( - field_name_to_label_map, - cls=DjangoJSONEncoder + field_name_to_label_map, cls=DjangoJSONEncoder ), - saved_data=json.dumps(cleaned_data, cls=DjangoJSONEncoder) + saved_data=json.dumps(cleaned_data, cls=DjangoJSONEncoder), ) saved_form_wizard_data_entry.save() @@ -200,22 +200,26 @@ def custom_actions(self, form_wizard_entry, request=None): view_entries_icon_class = widget.view_entries_icon_class export_entries_icon_class = widget.export_entries_icon_class else: - view_entries_icon_class = 'glyphicon glyphicon-list' - export_entries_icon_class = 'glyphicon glyphicon-export' + view_entries_icon_class = "glyphicon glyphicon-list" + export_entries_icon_class = "glyphicon glyphicon-export" return ( ( - reverse('fobi.contrib.plugins.form_handlers.db_store.' - 'view_saved_form_wizard_data_entries', - args=[form_wizard_entry.pk]), + reverse( + "fobi.contrib.plugins.form_handlers.db_store." + "view_saved_form_wizard_data_entries", + args=[form_wizard_entry.pk], + ), _("View entries"), - view_entries_icon_class + view_entries_icon_class, ), ( - reverse('fobi.contrib.plugins.form_handlers.db_store.' - 'export_saved_form_wizard_data_entries', - args=[form_wizard_entry.pk]), + reverse( + "fobi.contrib.plugins.form_handlers.db_store." + "export_saved_form_wizard_data_entries", + args=[form_wizard_entry.pk], + ), _("Export entries"), - export_entries_icon_class + export_entries_icon_class, ), ) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/callbacks.py b/src/fobi/contrib/plugins/form_handlers/db_store/callbacks.py index 72f371c40..eb6ae4a74 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/callbacks.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/callbacks.py @@ -1,23 +1,18 @@ import datetime - import json from django.core.serializers.json import DjangoJSONEncoder -from fobi.base import ( - FormCallback, - get_processed_form_data, -) -from fobi.constants import CALLBACK_FORM_VALID from .models import SavedFormDataEntry -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.callbacks' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'AutoFormDbStore', -) +from fobi.base import FormCallback, get_processed_form_data +from fobi.constants import CALLBACK_FORM_VALID + +__title__ = "fobi.contrib.plugins.form_handlers.db_store.callbacks" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("AutoFormDbStore",) class AutoFormDbStore(FormCallback): @@ -48,23 +43,21 @@ def callback(self, form_entry, request, form): # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_data( - form, - form_element_entries + form, form_element_entries ) for key, value in cleaned_data.items(): if isinstance(value, (datetime.datetime, datetime.date)): - cleaned_data[key] = value.isoformat() \ - if hasattr(value, 'isoformat') \ - else value + cleaned_data[key] = ( + value.isoformat() if hasattr(value, "isoformat") else value + ) saved_form_data_entry = SavedFormDataEntry( form_entry=form_entry, user=request.user if request.user and request.user.pk else None, form_data_headers=json.dumps( - field_name_to_label_map, - cls=DjangoJSONEncoder + field_name_to_label_map, cls=DjangoJSONEncoder ), - saved_data=json.dumps(cleaned_data, cls=DjangoJSONEncoder) + saved_data=json.dumps(cleaned_data, cls=DjangoJSONEncoder), ) saved_form_data_entry.save() diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/conf.py b/src/fobi/contrib/plugins/form_handlers/db_store/conf.py index a728b8705..2abf96a41 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/conf.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -25,7 +25,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_DB_STORE_{0}'.format(setting)): - return getattr(settings, 'FOBI_PLUGIN_DB_STORE_{0}'.format(setting)) + if hasattr(settings, "FOBI_PLUGIN_DB_STORE_{0}".format(setting)): + return getattr(settings, "FOBI_PLUGIN_DB_STORE_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/defaults.py b/src/fobi/contrib/plugins/form_handlers/db_store/defaults.py index 9982ef9d7..630f6a030 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/defaults.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/defaults.py @@ -1,10 +1,11 @@ -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'CSV_DELIMITER', 'CSV_QUOTECHAR', + "CSV_DELIMITER", + "CSV_QUOTECHAR", ) -CSV_DELIMITER = ',' +CSV_DELIMITER = "," CSV_QUOTECHAR = '"' 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 20c6ea8ea..bc732ce0f 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 @@ -4,13 +4,13 @@ ) from .base import DBStoreHandlerPlugin, DBStoreWizardHandlerPlugin -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.fobi_form_handlers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'DBStoreHandlerPlugin', - 'DBStoreWizardHandlerPlugin', + "DBStoreHandlerPlugin", + "DBStoreWizardHandlerPlugin", ) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/helpers.py b/src/fobi/contrib/plugins/form_handlers/db_store/helpers.py index 03bb4c7b4..32cf183f1 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/helpers.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/helpers.py @@ -1,29 +1,27 @@ import csv +import json import logging from django.http import HttpResponse - -import json - -from six import StringIO, BytesIO, text_type +from six import BytesIO, StringIO, text_type from .....exceptions import ImproperlyConfigured from .....helpers import safe_text - from .settings import CSV_DELIMITER, CSV_QUOTECHAR XLWT_INSTALLED = False try: import xlwt + XLWT_INSTALLED = True except ImportError: pass -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DataExporter',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DataExporter",) LOGGER = logging.getLogger(__name__) @@ -42,7 +40,7 @@ def _get_initial_response(self, mimetype="application/csv"): For compatibility with older versions (`mimetype` vs `content_type`). """ - response_kwargs = {'content_type': mimetype} + response_kwargs = {"content_type": mimetype} return HttpResponse(**response_kwargs) def _get_data_headers(self): @@ -52,11 +50,11 @@ def _get_data_headers(self): sure that we obtain all the possible headers, so that later on we can just fill the slots needed. """ - only_args = ['form_data_headers'] + self.only_args + only_args = ["form_data_headers"] + self.only_args # Normal RDMBs try: qs = self.queryset.only(*only_args) - qs = qs.distinct('form_data_headers').order_by('form_data_headers') + qs = qs.distinct("form_data_headers").order_by("form_data_headers") qs = [obj.form_data_headers for obj in qs] # Engines like SQLite @@ -83,10 +81,11 @@ def _export_to_xls(self): # response = HttpResponse(mimetype="application/csv") response = self._get_initial_response(mimetype="application/csv") - response['Content-Disposition'] = \ - 'attachment; filename=db_store_export_data.xls' + response[ + "Content-Disposition" + ] = "attachment; filename=db_store_export_data.xls" wb = xlwt.Workbook(encoding="UTF-8") - ws = wb.add_sheet('Data') + ws = wb.add_sheet("Data") algn1 = xlwt.Alignment() algn1.wrap = 1 @@ -100,7 +99,7 @@ def _export_to_xls(self): data_values = data_headers.values() for cell, value in enumerate(data_values): - ws.write(row, cell, text_type(value), xlwt.easyxf('font: bold on')) + ws.write(row, cell, text_type(value), xlwt.easyxf("font: bold on")) ws.col(cell).width = 256 * 20 # about 20 chars wide cell += 1 row += 1 @@ -108,7 +107,7 @@ def _export_to_xls(self): for obj in self.queryset: data = json.loads(obj.saved_data) for cell, key in enumerate(data_keys): - ws.write(row, cell, text_type(data.get(key, ''))) + ws.write(row, cell, text_type(data.get(key, ""))) cell += 1 row += 1 @@ -129,8 +128,9 @@ def export_to_csv(self): """Export data to CSV.""" # response = HttpResponse(mimetype="text/csv") response = self._get_initial_response(mimetype="text/csv") - response['Content-Disposition'] = \ - 'attachment; filename=db_store_export_data.csv' + response[ + "Content-Disposition" + ] = "attachment; filename=db_store_export_data.csv" data_headers = self._get_data_headers() data_keys = data_headers.keys() @@ -152,9 +152,7 @@ def export_to_csv(self): def writerow(row): """Write row.""" - return csv.writerow( - [safe_text(__cell) for __cell in row] - ) + return csv.writerow([safe_text(__cell) for __cell in row]) data_values = [safe_text(value) for value in data_values] @@ -164,7 +162,7 @@ def writerow(row): data = json.loads(obj.saved_data) row_data = [] for cell, key in enumerate(data_keys): - row_data.append(data.get(key, '')) + row_data.append(data.get(key, "")) writerow(row_data) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/models.py b/src/fobi/contrib/plugins/form_handlers/db_store/models.py index ed496bd7a..e57a8751a 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/models.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/models.py @@ -1,23 +1,23 @@ from __future__ import unicode_literals -import bleach import json -from six import python_2_unicode_compatible, string_types +import bleach from django.conf import settings from django.db import models from django.utils.translation import gettext_lazy as _ +from six import python_2_unicode_compatible, string_types from .....helpers import two_dicts_to_string -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.models' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.models" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'AbstractSavedFormDataEntry', - 'SavedFormDataEntry', - 'SavedFormWizardDataEntry', + "AbstractSavedFormDataEntry", + "SavedFormDataEntry", + "SavedFormWizardDataEntry", ) # **************************************************************************** @@ -38,12 +38,10 @@ class AbstractSavedFormDataEntry(models.Model): verbose_name=_("User"), null=True, blank=True, - on_delete=models.CASCADE + on_delete=models.CASCADE, ) form_data_headers = models.TextField( - _("Form data headers"), - null=True, - blank=True + _("Form data headers"), null=True, blank=True ) saved_data = models.TextField(_("Plugin data"), null=True, blank=True) created = models.DateTimeField(_("Date created"), auto_now_add=True) @@ -65,9 +63,11 @@ def formatted_saved_data(self): if isinstance(value, string_types): value = bleach.clean(value, strip=True) - if (value.startswith(settings.MEDIA_URL) or - value.startswith('http://') or - value.startswith('https://')): + if ( + value.startswith(settings.MEDIA_URL) + or value.startswith("http://") + or value.startswith("https://") + ): value = '{value}'.format( value=value ) @@ -75,7 +75,7 @@ def formatted_saved_data(self): return two_dicts_to_string(headers, data) except (ValueError, json.decoder.JSONDecodeError) as err: - return '' + return "" formatted_saved_data.allow_tags = True formatted_saved_data.short_description = _("Saved data") @@ -86,11 +86,11 @@ class SavedFormDataEntry(AbstractSavedFormDataEntry): """Saved form data.""" form_entry = models.ForeignKey( - 'fobi.FormEntry', + "fobi.FormEntry", verbose_name=_("Form"), null=True, blank=True, - on_delete=models.CASCADE + on_delete=models.CASCADE, ) class Meta(object): @@ -99,7 +99,7 @@ class Meta(object): abstract = False verbose_name = _("Saved form data entry") verbose_name_plural = _("Saved form data entries") - db_table = 'db_store_savedformdataentry' + db_table = "db_store_savedformdataentry" def __str__(self): return "Saved form data entry from {0}".format(self.created) @@ -110,11 +110,11 @@ class SavedFormWizardDataEntry(AbstractSavedFormDataEntry): """Saved form data.""" form_wizard_entry = models.ForeignKey( - 'fobi.FormWizardEntry', + "fobi.FormWizardEntry", verbose_name=_("Form"), null=True, blank=True, - on_delete=models.CASCADE + on_delete=models.CASCADE, ) class Meta(object): @@ -123,7 +123,7 @@ class Meta(object): abstract = False verbose_name = _("Saved form wizard data entry") verbose_name_plural = _("Saved form wizard data entries") - db_table = 'db_store_savedformwizarddataentry' + db_table = "db_store_savedformwizarddataentry" def __str__(self): return "Saved form wizard data entry from {0}".format(self.created) diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/settings.py b/src/fobi/contrib/plugins/form_handlers/db_store/settings.py index c20324462..3357a82c3 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/settings.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/settings.py @@ -4,13 +4,14 @@ """ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'CSV_DELIMITER', 'CSV_QUOTECHAR', + "CSV_DELIMITER", + "CSV_QUOTECHAR", ) -CSV_DELIMITER = get_setting('CSV_DELIMITER') -CSV_QUOTECHAR = get_setting('CSV_QUOTECHAR') +CSV_DELIMITER = get_setting("CSV_DELIMITER") +CSV_QUOTECHAR = get_setting("CSV_QUOTECHAR") diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_handlers.py b/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_handlers.py index 901c350d4..ee5d46c23 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_handlers.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_handlers.py @@ -1,14 +1,12 @@ from django.urls import re_path as url -from ..views import ( - view_saved_form_data_entries, export_saved_form_data_entries, -) +from ..views import export_saved_form_data_entries, view_saved_form_data_entries -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.urls' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('urlpatterns',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store.urls" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("urlpatterns",) urlpatterns = [ @@ -17,34 +15,38 @@ # ************************* Form handlers ******************************* # *********************************************************************** # *********************************************************************** - # *********************************************************************** # **************************** Listing ********************************** # *********************************************************************** # Specific form entries listing - url(r'^(?P\d+)/$', + url( + r"^(?P\d+)/$", view=view_saved_form_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'view_saved_form_data_entries'), - + name="fobi.contrib.plugins.form_handlers.db_store." + "view_saved_form_data_entries", + ), # Form entries listing - url(r'^$', + url( + r"^$", view=view_saved_form_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'view_saved_form_data_entries'), - + name="fobi.contrib.plugins.form_handlers.db_store." + "view_saved_form_data_entries", + ), # *********************************************************************** # ***************************** Export ********************************** # *********************************************************************** # Specific form entries export - url(r'^export/(?P\d+)/$', + url( + r"^export/(?P\d+)/$", view=export_saved_form_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'export_saved_form_data_entries'), - + name="fobi.contrib.plugins.form_handlers.db_store." + "export_saved_form_data_entries", + ), # Form entries export - url(r'^export/$', + url( + r"^export/$", view=export_saved_form_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'export_saved_form_data_entries'), + name="fobi.contrib.plugins.form_handlers.db_store." + "export_saved_form_data_entries", + ), ] diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_wizard_handlers.py b/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_wizard_handlers.py index 9d86c9180..ceb437d58 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_wizard_handlers.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/urls/form_wizard_handlers.py @@ -1,15 +1,15 @@ from django.urls import re_path as url from ..views import ( + export_saved_form_wizard_data_entries, view_saved_form_wizard_data_entries, - export_saved_form_wizard_data_entries ) -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.urls' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('urlpatterns',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store.urls" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("urlpatterns",) urlpatterns = [ @@ -18,34 +18,38 @@ # ********************** Form wizard handlers *************************** # *********************************************************************** # *********************************************************************** - # *********************************************************************** # **************************** Listing ********************************** # *********************************************************************** # Specific form wizard entries listing - url(r'^(?P\d+)/$', + url( + r"^(?P\d+)/$", view=view_saved_form_wizard_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'view_saved_form_wizard_data_entries'), - + name="fobi.contrib.plugins.form_handlers.db_store." + "view_saved_form_wizard_data_entries", + ), # Form wizard entries listing - url(r'^$', + url( + r"^$", view=view_saved_form_wizard_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'view_saved_form_wizard_data_entries'), - + name="fobi.contrib.plugins.form_handlers.db_store." + "view_saved_form_wizard_data_entries", + ), # *********************************************************************** # ***************************** Export ********************************** # *********************************************************************** # Specific form wizard entries export - url(r'^export/(?P\d+)/$', + url( + r"^export/(?P\d+)/$", view=export_saved_form_wizard_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'export_saved_form_wizard_data_entries'), - + name="fobi.contrib.plugins.form_handlers.db_store." + "export_saved_form_wizard_data_entries", + ), # Form wizard entries export - url(r'^export/$', + url( + r"^export/$", view=export_saved_form_wizard_data_entries, - name='fobi.contrib.plugins.form_handlers.db_store.' - 'export_saved_form_wizard_data_entries'), + name="fobi.contrib.plugins.form_handlers.db_store." + "export_saved_form_wizard_data_entries", + ), ] diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/views.py b/src/fobi/contrib/plugins/form_handlers/db_store/views.py index eb31faa9e..6eddf9246 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/views.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/views.py @@ -1,28 +1,26 @@ from django.contrib.auth.decorators import login_required -from django.template import RequestContext from django.shortcuts import render +from django.template import RequestContext +from django_nine import versions # from fobi.decorators import permissions_required, SATISFY_ALL, SATISFY_ANY from .....base import ( get_form_handler_plugin_widget, get_form_wizard_handler_plugin_widget, ) - -from django_nine import versions - from . import UID -from .models import SavedFormDataEntry, SavedFormWizardDataEntry from .helpers import DataExporter +from .models import SavedFormDataEntry, SavedFormWizardDataEntry -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.views' -__author__ = 'Artur Barseghyan ' -__copyright__ = 'Copyright (c) 2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.db_store.views" +__author__ = "Artur Barseghyan " +__copyright__ = "Copyright (c) 2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'view_saved_form_data_entries', - 'export_saved_form_data_entries', - 'view_saved_form_wizard_data_entries', - 'export_saved_form_wizard_data_entries', + "view_saved_form_data_entries", + "export_saved_form_data_entries", + "view_saved_form_wizard_data_entries", + "export_saved_form_wizard_data_entries", ) # ***************************************************************************** @@ -39,8 +37,11 @@ # @permissions_required(satisfy=SATISFY_ANY, perms=entries_permissions) @login_required def view_saved_form_data_entries( - request, form_entry_id=None, theme=None, - template_name='db_store/view_saved_form_data_entries.html'): + request, + form_entry_id=None, + theme=None, + template_name="db_store/view_saved_form_data_entries.html", +): """View saved form data entries. :param django.http.HttpRequest request: @@ -49,19 +50,19 @@ def view_saved_form_data_entries( :param string template_name: :return django.http.HttpResponse: """ - entries = SavedFormDataEntry._default_manager \ - .select_related('form_entry') \ - .filter(form_entry__user__pk=request.user.pk) + entries = SavedFormDataEntry._default_manager.select_related( + "form_entry" + ).filter(form_entry__user__pk=request.user.pk) if form_entry_id: entries = entries.filter(form_entry__id=form_entry_id) - context = {'entries': entries, 'form_entry_id': form_entry_id} + context = {"entries": entries, "form_entry_id": form_entry_id} # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) widget = get_form_handler_plugin_widget( UID, request=request, as_instance=True, theme=theme @@ -82,17 +83,18 @@ def export_saved_form_data_entries(request, form_entry_id=None, theme=None): :param fobi.base.BaseTheme theme: Subclass of ``fobi.base.BaseTheme``. :return django.http.HttpResponse: """ - entries = SavedFormDataEntry._default_manager \ - .select_related('form_entry') \ - .filter(form_entry__user__pk=request.user.pk) + entries = SavedFormDataEntry._default_manager.select_related( + "form_entry" + ).filter(form_entry__user__pk=request.user.pk) if form_entry_id: entries = entries.filter(form_entry__id=form_entry_id) - data_exporter = DataExporter(entries, ['form_entry']) + data_exporter = DataExporter(entries, ["form_entry"]) return data_exporter.graceful_export() + # ***************************************************************************** # ************************ Form wizard handler views ************************* # ***************************************************************************** @@ -100,8 +102,11 @@ def export_saved_form_data_entries(request, form_entry_id=None, theme=None): @login_required def view_saved_form_wizard_data_entries( - request, form_wizard_entry_id=None, theme=None, - template_name='db_store/view_saved_form_wizard_data_entries.html'): + request, + form_wizard_entry_id=None, + theme=None, + template_name="db_store/view_saved_form_wizard_data_entries.html", +): """View saved form wizard data entries. :param django.http.HttpRequest request: @@ -110,38 +115,34 @@ def view_saved_form_wizard_data_entries( :param string template_name: :return django.http.HttpResponse: """ - entries = SavedFormWizardDataEntry._default_manager \ - .select_related('form_wizard_entry') \ - .filter(form_wizard_entry__user__pk=request.user.pk) + entries = SavedFormWizardDataEntry._default_manager.select_related( + "form_wizard_entry" + ).filter(form_wizard_entry__user__pk=request.user.pk) if form_wizard_entry_id: entries = entries.filter(form_wizard_entry__id=form_wizard_entry_id) - context = { - 'entries': entries, - 'form_wizard_entry_id': form_wizard_entry_id - } + context = {"entries": entries, "form_wizard_entry_id": form_wizard_entry_id} # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) widget = get_form_wizard_handler_plugin_widget( UID, request=request, as_instance=True, theme=theme ) if widget and widget.view_saved_form_wizard_data_entries_template_name: - template_name = \ - widget.view_saved_form_wizard_data_entries_template_name + template_name = widget.view_saved_form_wizard_data_entries_template_name return render(request, template_name, context) @login_required -def export_saved_form_wizard_data_entries(request, - form_wizard_entry_id=None, - theme=None): +def export_saved_form_wizard_data_entries( + request, form_wizard_entry_id=None, theme=None +): """Export saved form wizard data entries. :param django.http.HttpRequest request: @@ -149,13 +150,13 @@ def export_saved_form_wizard_data_entries(request, :param fobi.base.BaseTheme theme: Subclass of ``fobi.base.BaseTheme``. :return django.http.HttpResponse: """ - entries = SavedFormWizardDataEntry._default_manager \ - .select_related('form_wizard_entry') \ - .filter(form_wizard_entry__user__pk=request.user.pk) + entries = SavedFormWizardDataEntry._default_manager.select_related( + "form_wizard_entry" + ).filter(form_wizard_entry__user__pk=request.user.pk) if form_wizard_entry_id: entries = entries.filter(form_wizard_entry__id=form_wizard_entry_id) - data_exporter = DataExporter(entries, ['form_wizard_entry']) + data_exporter = DataExporter(entries, ["form_wizard_entry"]) return data_exporter.graceful_export() diff --git a/src/fobi/contrib/plugins/form_handlers/db_store/widgets.py b/src/fobi/contrib/plugins/form_handlers/db_store/widgets.py index d915c3eca..d0cb0b055 100644 --- a/src/fobi/contrib/plugins/form_handlers/db_store/widgets.py +++ b/src/fobi/contrib/plugins/form_handlers/db_store/widgets.py @@ -1,19 +1,19 @@ from .....base import FormHandlerPluginWidget - from . import UID -__title__ = 'fobi.contrib.plugins.form_handlers.db_store.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('BaseDbStorePluginWidget',) +__title__ = "fobi.contrib.plugins.form_handlers.db_store.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseDbStorePluginWidget",) class BaseDbStorePluginWidget(FormHandlerPluginWidget): """Base dummy form element plugin widget.""" plugin_uid = UID - view_entries_icon_class = 'glyphicon glyphicon-list' - export_entries_icon_class = 'glyphicon glyphicon-export' - view_saved_form_data_entries_template_name = \ - 'db_store/view_saved_form_data_entries.html' + view_entries_icon_class = "glyphicon glyphicon-list" + export_entries_icon_class = "glyphicon glyphicon-export" + view_saved_form_data_entries_template_name = ( + "db_store/view_saved_form_data_entries.html" + ) diff --git a/src/fobi/contrib/plugins/form_handlers/http_repost/__init__.py b/src/fobi/contrib/plugins/form_handlers/http_repost/__init__.py index a615b6e41..c164cc408 100644 --- a/src/fobi/contrib/plugins/form_handlers/http_repost/__init__.py +++ b/src/fobi/contrib/plugins/form_handlers/http_repost/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_handlers.http_repost' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_handlers.http_repost" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_handlers.' \ - 'http_repost.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_handlers." "http_repost.apps.Config" +) -UID = 'http_repost' +UID = "http_repost" diff --git a/src/fobi/contrib/plugins/form_handlers/http_repost/apps.py b/src/fobi/contrib/plugins/form_handlers/http_repost/apps.py index ed32e70c1..3ca5f6fb1 100644 --- a/src/fobi/contrib/plugins/form_handlers/http_repost/apps.py +++ b/src/fobi/contrib/plugins/form_handlers/http_repost/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_handlers.http_repost.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_handlers.http_repost.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_handlers.http_repost' - label = 'fobi_contrib_plugins_form_handlers_http_repost' + name = "fobi.contrib.plugins.form_handlers.http_repost" + label = "fobi_contrib_plugins_form_handlers_http_repost" diff --git a/src/fobi/contrib/plugins/form_handlers/http_repost/base.py b/src/fobi/contrib/plugins/form_handlers/http_repost/base.py index 798225d39..0e8b6812e 100644 --- a/src/fobi/contrib/plugins/form_handlers/http_repost/base.py +++ b/src/fobi/contrib/plugins/form_handlers/http_repost/base.py @@ -2,31 +2,28 @@ import os import requests - from django.conf import settings from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ - from six import PY3 from .....base import ( - form_handler_plugin_registry, - form_wizard_handler_plugin_registry, FormHandlerPlugin, FormWizardHandlerPlugin, + form_handler_plugin_registry, + form_wizard_handler_plugin_registry, ) from .....helpers import extract_file_path - from . import UID from .forms import HTTPRepostForm -__title__ = 'fobi.contrib.plugins.form_handlers.http_repost.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.http_repost.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'HTTPRepostHandlerPlugin', - 'HTTPRepostWizardHandlerPlugin', + "HTTPRepostHandlerPlugin", + "HTTPRepostWizardHandlerPlugin", ) logger = logging.getLogger(__name__) @@ -72,7 +69,7 @@ def do_http_repost(self, request, files): data=request.POST.dict(), files=files, allow_redirects=True, - timeout=5 + timeout=5, ) return True, response except Exception as err: @@ -89,14 +86,13 @@ def process_path(file_path, imf): # file_path = file_path[1:] # file_path = settings.PROJECT_DIR('../{0}'.format(file_path)) file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) - files[field_name] = (imf.name, open(file_path, 'rb')) + files[field_name] = (imf.name, open(file_path, "rb")) for field_name, imf in request.FILES.items(): try: - file_path = form.cleaned_data.get(field_name, '') + file_path = form.cleaned_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) @@ -110,9 +106,9 @@ def plugin_data_repr(self): :return string: """ context = { - 'endpoint_url': self.data.endpoint_url, + "endpoint_url": self.data.endpoint_url, } - return render_to_string('http_repost/plugin_data_repr.html', context) + return render_to_string("http_repost/plugin_data_repr.html", context) form_handler_plugin_registry.register(HTTPRepostHandlerPlugin) @@ -134,8 +130,14 @@ class HTTPRepostWizardHandlerPlugin(FormWizardHandlerPlugin): name = _("HTTP Repost") form = HTTPRepostForm - def run(self, form_wizard_entry, request, form_list, form_wizard, - form_element_entries=None): + def run( + self, + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, + ): """Run. :param fobi.models.FormWizardEntry form_wizard_entry: Instance @@ -154,7 +156,7 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, data=request.POST.dict(), files=files, allow_redirects=True, - timeout=5 + timeout=5, ) return (True, response) except Exception as err: @@ -171,15 +173,14 @@ def process_path(file_path, imf): # file_path = file_path[1:] # file_path = settings.PROJECT_DIR('../{0}'.format(file_path)) file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) - files[field_name] = (imf.name, open(file_path, 'rb')) + files[field_name] = (imf.name, open(file_path, "rb")) for form in form_list: for field_name, imf in request.FILES.items(): try: - file_path = form.cleaned_data.get(field_name, '') + file_path = form.cleaned_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) @@ -193,9 +194,9 @@ def plugin_data_repr(self): :return string: """ context = { - 'endpoint_url': self.data.endpoint_url, + "endpoint_url": self.data.endpoint_url, } - return render_to_string('http_repost/plugin_data_repr.html', context) + return render_to_string("http_repost/plugin_data_repr.html", context) form_wizard_handler_plugin_registry.register(HTTPRepostWizardHandlerPlugin) diff --git a/src/fobi/contrib/plugins/form_handlers/http_repost/fobi_form_handlers.py b/src/fobi/contrib/plugins/form_handlers/http_repost/fobi_form_handlers.py index 1b45e21b1..c4119cd19 100644 --- a/src/fobi/contrib/plugins/form_handlers/http_repost/fobi_form_handlers.py +++ b/src/fobi/contrib/plugins/form_handlers/http_repost/fobi_form_handlers.py @@ -1,16 +1,16 @@ from .....base import ( form_handler_plugin_registry, - form_wizard_handler_plugin_registry + form_wizard_handler_plugin_registry, ) from .base import HTTPRepostHandlerPlugin, HTTPRepostWizardHandlerPlugin -__title__ = 'fobi.contrib.plugins.form_handlers.http_repost.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.http_repost.fobi_form_handlers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'HTTPRepostHandlerPlugin', - 'HTTPRepostWizardHandlerPlugin', + "HTTPRepostHandlerPlugin", + "HTTPRepostWizardHandlerPlugin", ) diff --git a/src/fobi/contrib/plugins/form_handlers/http_repost/forms.py b/src/fobi/contrib/plugins/form_handlers/http_repost/forms.py index a64919e70..f1f73d07f 100644 --- a/src/fobi/contrib/plugins/form_handlers/http_repost/forms.py +++ b/src/fobi/contrib/plugins/form_handlers/http_repost/forms.py @@ -3,11 +3,11 @@ from .....base import BasePluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_handlers.http_repost.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('HTTPRepostForm',) +__title__ = "fobi.contrib.plugins.form_handlers.http_repost.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("HTTPRepostForm",) theme = get_theme(request=None, as_instance=True) @@ -23,6 +23,6 @@ class HTTPRepostForm(forms.Form, BasePluginForm): label=_("Endpoint URL"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/__init__.py b/src/fobi/contrib/plugins/form_handlers/mail/__init__.py index 24dc235d6..724d06252 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/__init__.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/__init__.py @@ -1,11 +1,14 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_handlers.mail' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_handlers.mail" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_handlers.mail.apps.Config' +default_app_config = "fobi.contrib.plugins.form_handlers.mail.apps.Config" -UID = 'mail' +UID = "mail" diff --git a/src/fobi/contrib/plugins/form_handlers/mail/apps.py b/src/fobi/contrib/plugins/form_handlers/mail/apps.py index 8aef53709..f34042b47 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/apps.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_handlers.mail.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_handlers.mail.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_handlers.mail' - label = 'fobi_contrib_plugins_form_handlers_mail' + name = "fobi.contrib.plugins.form_handlers.mail" + label = "fobi_contrib_plugins_form_handlers_mail" diff --git a/src/fobi/contrib/plugins/form_handlers/mail/base.py b/src/fobi/contrib/plugins/form_handlers/mail/base.py index 0ff426ba4..d9ea40602 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/base.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/base.py @@ -1,14 +1,13 @@ from __future__ import absolute_import import datetime -from mimetypes import guess_type import os - -from six import string_types, PY3 +from mimetypes import guess_type from django.conf import settings from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ +from six import PY3, string_types from .....base import ( FormHandlerPlugin, @@ -17,24 +16,23 @@ get_processed_form_wizard_data, ) from .....helpers import ( - safe_text, extract_file_path, get_form_element_entries_for_form_wizard_entry, + safe_text, ) - from . import UID from .forms import MailForm from .helpers import send_mail from .mixins import MailHandlerMixin from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER -__title__ = 'fobi.contrib.plugins.form_handlers.mail.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'MailHandlerPlugin', - 'MailWizardHandlerPlugin', + "MailHandlerPlugin", + "MailWizardHandlerPlugin", ) # ***************************************************************************** @@ -67,14 +65,11 @@ def run(self, form_entry, request, form, form_element_entries=None): # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_data( - form, - form_element_entries + form, form_element_entries ) rendered_data = self.get_rendered_data( - cleaned_data, - field_name_to_label_map, - base_url + cleaned_data, field_name_to_label_map, base_url ) files = self._prepare_files(request, form) @@ -89,7 +84,7 @@ def plugin_data_repr(self): to_email = None # Handling more than one email address if isinstance(self.data.to_email, (list, tuple)): - to_email = '{0} '.format(MULTI_EMAIL_FIELD_VALUE_SPLITTER).join( + to_email = "{0} ".format(MULTI_EMAIL_FIELD_VALUE_SPLITTER).join( self.data.to_email ) else: @@ -97,11 +92,11 @@ def plugin_data_repr(self): to_email = self.data.to_email context = { - 'to_name': safe_text(self.data.to_name), - 'to_email': to_email, - 'subject': safe_text(self.data.subject), + "to_name": safe_text(self.data.to_name), + "to_email": to_email, + "subject": safe_text(self.data.subject), } - return render_to_string('mail/plugin_data_repr.html', context) + return render_to_string("mail/plugin_data_repr.html", context) # ***************************************************************************** @@ -120,8 +115,14 @@ class MailWizardHandlerPlugin(FormWizardHandlerPlugin): name = _("Mail") form = MailForm - def run(self, form_wizard_entry, request, form_list, form_wizard, - form_element_entries=None): + def run( + self, + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, + ): """Run. :param fobi.models.FormWizardEntry form_wizard_entry: Instance @@ -133,34 +134,37 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, :param iterable form_element_entries: Iterable of ``fobi.models.FormElementEntry`` objects. """ - base_url = 'http{secure}://{host}'.format( - secure=('s' if request.is_secure() else ''), - host=request.get_host() + base_url = "http{secure}://{host}".format( + secure=("s" if request.is_secure() else ""), host=request.get_host() ) if not form_element_entries: - form_element_entries = \ + form_element_entries = ( get_form_element_entries_for_form_wizard_entry( form_wizard_entry ) + ) # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_wizard_data( - form_wizard, - form_list, - form_element_entries + form_wizard, form_list, form_element_entries ) rendered_data = [] for key, value in cleaned_data.items(): - if value and isinstance(value, string_types) \ - and value.startswith(settings.MEDIA_URL): - cleaned_data[key] = '{base_url}{value}'.format( + if ( + value + and isinstance(value, string_types) + and value.startswith(settings.MEDIA_URL) + ): + cleaned_data[key] = "{base_url}{value}".format( base_url=base_url, value=value ) label = field_name_to_label_map.get(key, key) - rendered_data.append('{0}: {1}\n'.format( - safe_text(label), safe_text(cleaned_data[key])) + rendered_data.append( + "{0}: {1}\n".format( + safe_text(label), safe_text(cleaned_data[key]) + ) ) files = self._prepare_files(request, form_list) @@ -177,13 +181,12 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, send_mail( safe_text(self.data.subject), "{0}\n\n{1}".format( - safe_text(self.data.body), - ''.join(rendered_data) + safe_text(self.data.body), "".join(rendered_data) ), self.data.from_email, to_email, fail_silently=False, - attachments=files.values() + attachments=files.values(), ) def _prepare_files(self, request, form_list): @@ -197,25 +200,24 @@ def process_path(file_path, imf): # file_path = file_path[1:] # file_path = settings.PROJECT_DIR('../{0}'.format(file_path)) file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = ''.join([c for c in imf.chunks()]) + imf_chunks = "".join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for form in form_list: for field_name, imf in request.FILES.items(): try: - file_path = form.cleaned_data.get(field_name, '') + file_path = form.cleaned_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) @@ -231,7 +233,7 @@ def plugin_data_repr(self): to_email = None # Handling more than one email address if isinstance(self.data.to_email, (list, tuple)): - to_email = '{0} '.format(MULTI_EMAIL_FIELD_VALUE_SPLITTER).join( + to_email = "{0} ".format(MULTI_EMAIL_FIELD_VALUE_SPLITTER).join( self.data.to_email ) else: @@ -239,8 +241,8 @@ def plugin_data_repr(self): to_email = self.data.to_email context = { - 'to_name': safe_text(self.data.to_name), - 'to_email': to_email, - 'subject': safe_text(self.data.subject), + "to_name": safe_text(self.data.to_name), + "to_email": to_email, + "subject": safe_text(self.data.subject), } - return render_to_string('mail/plugin_data_repr.html', context) + return render_to_string("mail/plugin_data_repr.html", context) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/callbacks.py b/src/fobi/contrib/plugins/form_handlers/mail/callbacks.py index 515817649..0359af79f 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/callbacks.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/callbacks.py @@ -4,20 +4,18 @@ from .helpers import send_mail from .mixins import MailHandlerMixin from .settings import ( - AUTO_MAIL_TO, AUTO_MAIL_BODY, AUTO_MAIL_FROM, AUTO_MAIL_SUBJECT, + AUTO_MAIL_TO, MULTI_EMAIL_FIELD_VALUE_SPLITTER, ) -__title__ = 'fobi.contrib.plugins.form_handlers.mail.callbacks' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'AutoFormMail', -) +__title__ = "fobi.contrib.plugins.form_handlers.mail.callbacks" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("AutoFormMail",) class AutoFormMail(FormCallback, MailHandlerMixin): @@ -50,14 +48,11 @@ def callback(self, form_entry, request, form): # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_data( - form, - form_element_entries + form, form_element_entries ) rendered_data = self.get_rendered_data( - cleaned_data, - field_name_to_label_map, - base_url + cleaned_data, field_name_to_label_map, base_url ) files = self._prepare_files(request, form) @@ -74,18 +69,15 @@ def send_email(self, rendered_data, files): to_email = AUTO_MAIL_TO else: # Assume that it's string - to_email = AUTO_MAIL_TO.split( - MULTI_EMAIL_FIELD_VALUE_SPLITTER - ) + to_email = AUTO_MAIL_TO.split(MULTI_EMAIL_FIELD_VALUE_SPLITTER) send_mail( safe_text(AUTO_MAIL_SUBJECT), "{0}\n\n{1}".format( - safe_text(AUTO_MAIL_BODY), - ''.join(rendered_data) + safe_text(AUTO_MAIL_BODY), "".join(rendered_data) ), AUTO_MAIL_FROM, to_email, fail_silently=False, - attachments=files.values() + attachments=files.values(), ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/conf.py b/src/fobi/contrib/plugins/form_handlers/mail/conf.py index f09259d20..b5b167eee 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/conf.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_handlers.mail.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_handlers.mail.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,7 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_MAIL_{0}'.format(setting)): - return getattr(settings, 'FOBI_PLUGIN_MAIL_{0}'.format(setting)) + if hasattr(settings, "FOBI_PLUGIN_MAIL_{0}".format(setting)): + return getattr(settings, "FOBI_PLUGIN_MAIL_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/defaults.py b/src/fobi/contrib/plugins/form_handlers/mail/defaults.py index 166a6d8b8..f20ab8231 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/defaults.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/defaults.py @@ -1,18 +1,18 @@ -__title__ = 'fobi.contrib.plugins.form_handlers.mail.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'AUTO_MAIL_BODY', - 'AUTO_MAIL_FROM', - 'AUTO_MAIL_SUBJECT', - 'AUTO_MAIL_TO', - 'MULTI_EMAIL_FIELD_VALUE_SPLITTER', + "AUTO_MAIL_BODY", + "AUTO_MAIL_FROM", + "AUTO_MAIL_SUBJECT", + "AUTO_MAIL_TO", + "MULTI_EMAIL_FIELD_VALUE_SPLITTER", ) -MULTI_EMAIL_FIELD_VALUE_SPLITTER = ',' # But can be '\n' +MULTI_EMAIL_FIELD_VALUE_SPLITTER = "," # But can be '\n' AUTO_MAIL_TO = [] -AUTO_MAIL_SUBJECT = 'Automatic email' -AUTO_MAIL_BODY = 'Automatic email' -AUTO_MAIL_FROM = '' +AUTO_MAIL_SUBJECT = "Automatic email" +AUTO_MAIL_BODY = "Automatic email" +AUTO_MAIL_FROM = "" diff --git a/src/fobi/contrib/plugins/form_handlers/mail/fields.py b/src/fobi/contrib/plugins/form_handlers/mail/fields.py index 64a35d6e0..6bccc04b5 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/fields.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/fields.py @@ -3,21 +3,21 @@ from django.core.validators import validate_email from django.utils.translation import gettext_lazy as _ -from .widgets import MultiEmailWidget from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER +from .widgets import MultiEmailWidget -__title__ = 'fobi.contrib.plugins.form_handlers.mail.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MultiEmailField',) +__title__ = "fobi.contrib.plugins.form_handlers.mail.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MultiEmailField",) class MultiEmailField(forms.Field): """MultiEmailField.""" - message = _('Enter valid email addresses.') - code = 'invalid' + message = _("Enter valid email addresses.") + code = "invalid" widget = MultiEmailWidget def to_python(self, value): @@ -25,9 +25,11 @@ def to_python(self, value): # Return None if no input was given. if not value: return [] - return [v.strip() - for v in value.split(MULTI_EMAIL_FIELD_VALUE_SPLITTER) - if v != ""] + return [ + v.strip() + for v in value.split(MULTI_EMAIL_FIELD_VALUE_SPLITTER) + if v != "" + ] def validate(self, value): """Check if value consists only of valid emails.""" diff --git a/src/fobi/contrib/plugins/form_handlers/mail/fobi_form_handlers.py b/src/fobi/contrib/plugins/form_handlers/mail/fobi_form_handlers.py index 6928e0f84..85c4ecf65 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/fobi_form_handlers.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/fobi_form_handlers.py @@ -4,13 +4,13 @@ ) from .base import MailHandlerPlugin, MailWizardHandlerPlugin -__title__ = 'fobi.contrib.plugins.form_handlers.mail.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail.fobi_form_handlers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'MailHandlerPlugin', - 'MailWizardHandlerPlugin', + "MailHandlerPlugin", + "MailWizardHandlerPlugin", ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/forms.py b/src/fobi/contrib/plugins/form_handlers/mail/forms.py index d438f1fd9..2bff206c9 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/forms.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/forms.py @@ -4,15 +4,14 @@ from django.utils.translation import gettext_lazy as _ from .....base import BasePluginForm, get_theme - from .fields import MultiEmailField from .widgets import MultiEmailWidget -__title__ = 'fobi.contrib.plugins.form_handlers.mail.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MailForm',) +__title__ = "fobi.contrib.plugins.form_handlers.mail.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailForm",) theme = get_theme(request=None, as_instance=True) @@ -33,41 +32,41 @@ class MailForm(forms.Form, BasePluginForm): label=_("From name"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) from_email = forms.EmailField( label=_("From email"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) to_name = forms.CharField( label=_("To name"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) to_email = MultiEmailField( # forms.EmailField( label=_("To email"), required=True, widget=MultiEmailWidget( # forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) subject = forms.CharField( label=_("Subject"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) body = forms.CharField( label=_("Body"), required=False, widget=forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/helpers.py b/src/fobi/contrib/plugins/form_handlers/mail/helpers.py index f7da33687..c28c1aa41 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/helpers.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/helpers.py @@ -3,16 +3,25 @@ from django.core.mail import get_connection from django.core.mail.message import EmailMultiAlternatives -__title__ = 'fobi.contrib.plugins.form_handlers.mail.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('send_mail',) - - -def send_mail(subject, message, from_email, recipient_list, - fail_silently=False, auth_user=None, auth_password=None, - connection=None, html_message=None, attachments=None): +__title__ = "fobi.contrib.plugins.form_handlers.mail.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("send_mail",) + + +def send_mail( + subject, + message, + from_email, + recipient_list, + fail_silently=False, + auth_user=None, + auth_password=None, + connection=None, + html_message=None, + attachments=None, +): """Send email. Easy wrapper for sending a single message to a recipient list. All members @@ -24,13 +33,18 @@ def send_mail(subject, message, from_email, recipient_list, Note: The API for this method is frozen. New code wanting to extend the functionality should use the EmailMessage class directly. """ - connection = connection or get_connection(username=auth_user, - password=auth_password, - fail_silently=fail_silently) - mail = EmailMultiAlternatives(subject, message, from_email, recipient_list, - connection=connection, - attachments=attachments) + connection = connection or get_connection( + username=auth_user, password=auth_password, fail_silently=fail_silently + ) + mail = EmailMultiAlternatives( + subject, + message, + from_email, + recipient_list, + connection=connection, + attachments=attachments, + ) if html_message: - mail.attach_alternative(html_message, 'text/html') + mail.attach_alternative(html_message, "text/html") return mail.send() diff --git a/src/fobi/contrib/plugins/form_handlers/mail/mixins.py b/src/fobi/contrib/plugins/form_handlers/mail/mixins.py index 027f64bac..ae9341bc9 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/mixins.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/mixins.py @@ -2,25 +2,21 @@ from __future__ import absolute_import, unicode_literals import datetime -from mimetypes import guess_type import os - -from six import string_types, PY3 +from mimetypes import guess_type from django.conf import settings +from six import PY3, string_types from .....helpers import extract_file_path, safe_text - from .helpers import send_mail from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER -__title__ = 'fobi.contrib.plugins.form_handlers.mail.mixins' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MailHandlerMixin', -) +__title__ = "fobi.contrib.plugins.form_handlers.mail.mixins" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailHandlerMixin",) # ***************************************************************************** # **************************** Form handler *********************************** @@ -35,16 +31,14 @@ def get_base_url(self, request): Might be used in integration packages. """ - base_url = 'http{secure}://{host}'.format( - secure=('s' if request.is_secure() else ''), - host=request.get_host() + base_url = "http{secure}://{host}".format( + secure=("s" if request.is_secure() else ""), host=request.get_host() ) return base_url - def get_rendered_data(self, - cleaned_data, - field_name_to_label_map, - base_url): + def get_rendered_data( + self, cleaned_data, field_name_to_label_map, base_url + ): """Get rendered data. Might be used in integration packages. @@ -52,23 +46,28 @@ def get_rendered_data(self, rendered_data = [] for key, value in cleaned_data.items(): if value: - if isinstance(value, string_types) \ - and value.startswith(settings.MEDIA_URL): - cleaned_data[key] = '{base_url}{value}'.format( + if isinstance(value, string_types) and value.startswith( + settings.MEDIA_URL + ): + cleaned_data[key] = "{base_url}{value}".format( base_url=base_url, value=value ) if isinstance(value, (datetime.datetime, datetime.date)): - cleaned_data[key] = value.isoformat() \ - if hasattr(value, 'isoformat') \ + cleaned_data[key] = ( + value.isoformat() + if hasattr(value, "isoformat") else value + ) if isinstance(value, list): - cleaned_data[key] = ', '.join([safe_text(v) for v in value]) + cleaned_data[key] = ", ".join([safe_text(v) for v in value]) label = field_name_to_label_map.get(key, key) - rendered_data.append('{0}: {1}\n'.format( - safe_text(label), safe_text(cleaned_data[key])) + rendered_data.append( + "{0}: {1}\n".format( + safe_text(label), safe_text(cleaned_data[key]) + ) ) return rendered_data @@ -88,14 +87,13 @@ def send_email(self, rendered_data, files): send_mail( safe_text(self.data.subject), - u"{0}\n\n{1}".format( - safe_text(self.data.body), - ''.join(rendered_data) + "{0}\n\n{1}".format( + safe_text(self.data.body), "".join(rendered_data) ), self.data.from_email, to_email, fail_silently=False, - attachments=files.values() + attachments=files.values(), ) def _prepare_files(self, request, form): @@ -109,23 +107,22 @@ def process_path(file_path, imf): # file_path = file_path[1:] # file_path = settings.PROJECT_DIR('../{0}'.format(file_path)) file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = str('').join([c for c in imf.chunks()]) + imf_chunks = str("").join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for field_name, imf in request.FILES.items(): try: - file_path = form.cleaned_data.get(field_name, '') + file_path = form.cleaned_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) diff --git a/src/fobi/contrib/plugins/form_handlers/mail/settings.py b/src/fobi/contrib/plugins/form_handlers/mail/settings.py index 9f4960bf8..f36b47ec1 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/settings.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/settings.py @@ -1,33 +1,25 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_handlers.mail.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'AUTO_MAIL_BODY', - 'AUTO_MAIL_FROM', - 'AUTO_MAIL_SUBJECT', - 'AUTO_MAIL_TO', - 'MULTI_EMAIL_FIELD_VALUE_SPLITTER', + "AUTO_MAIL_BODY", + "AUTO_MAIL_FROM", + "AUTO_MAIL_SUBJECT", + "AUTO_MAIL_TO", + "MULTI_EMAIL_FIELD_VALUE_SPLITTER", ) MULTI_EMAIL_FIELD_VALUE_SPLITTER = get_setting( - 'MULTI_EMAIL_FIELD_VALUE_SPLITTER' + "MULTI_EMAIL_FIELD_VALUE_SPLITTER" ) -AUTO_MAIL_TO = get_setting( - 'AUTO_MAIL_TO' -) +AUTO_MAIL_TO = get_setting("AUTO_MAIL_TO") -AUTO_MAIL_SUBJECT = get_setting( - 'AUTO_MAIL_SUBJECT' -) +AUTO_MAIL_SUBJECT = get_setting("AUTO_MAIL_SUBJECT") -AUTO_MAIL_BODY = get_setting( - 'AUTO_MAIL_BODY' -) +AUTO_MAIL_BODY = get_setting("AUTO_MAIL_BODY") -AUTO_MAIL_FROM = get_setting( - 'AUTO_MAIL_FROM' -) +AUTO_MAIL_FROM = get_setting("AUTO_MAIL_FROM") diff --git a/src/fobi/contrib/plugins/form_handlers/mail/widgets.py b/src/fobi/contrib/plugins/form_handlers/mail/widgets.py index 484064c91..d0d8b1075 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail/widgets.py +++ b/src/fobi/contrib/plugins/form_handlers/mail/widgets.py @@ -1,18 +1,17 @@ import six - from django.core import validators from django.core.exceptions import ValidationError from django.forms.widgets import Textarea from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER -__title__ = 'fobi.contrib.plugins.form_handlers.mail.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MultiEmailWidget',) +__title__ = "fobi.contrib.plugins.form_handlers.mail.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MultiEmailWidget",) -MULTI_EMAIL_FIELD_EMPTY_VALUES = validators.EMPTY_VALUES + ('[]',) +MULTI_EMAIL_FIELD_EMPTY_VALUES = validators.EMPTY_VALUES + ("[]",) class MultiEmailWidget(Textarea): @@ -21,19 +20,18 @@ class MultiEmailWidget(Textarea): is_hidden = False def prep_value(self, value): - """ Prepare value before effectively render widget """ + """Prepare value before effectively render widget""" if value in MULTI_EMAIL_FIELD_EMPTY_VALUES: return "" elif isinstance(value, six.string_types): return value elif isinstance(value, list): return MULTI_EMAIL_FIELD_VALUE_SPLITTER.join(value) - raise ValidationError('Invalid format.') + raise ValidationError("Invalid format.") def render(self, name, value, attrs=None, **kwargs): """Render.""" value = self.prep_value(value) - return super(MultiEmailWidget, self).render(name, - value, - attrs, - **kwargs) + return super(MultiEmailWidget, self).render( + name, value, attrs, **kwargs + ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/__init__.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/__init__.py index c389398dd..1f56eb16a 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/__init__.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/__init__.py @@ -1,12 +1,16 @@ from __future__ import absolute_import -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_handlers.mail_sender.apps.' \ - 'Config' +default_app_config = ( + "fobi.contrib.plugins.form_handlers.mail_sender.apps." "Config" +) -UID = 'mail_sender' +UID = "mail_sender" diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/apps.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/apps.py index 92ac271ce..deb1a5e15 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/apps.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/apps.py @@ -1,15 +1,16 @@ from __future__ import absolute_import + from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_handlers.mail_sender' - label = 'fobi_contrib_plugins_form_handlers_mail_sender' + name = "fobi.contrib.plugins.form_handlers.mail_sender" + label = "fobi_contrib_plugins_form_handlers_mail_sender" diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/base.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/base.py index f0b719140..3976d37fc 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/base.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/base.py @@ -1,14 +1,13 @@ from __future__ import absolute_import import datetime -from mimetypes import guess_type import os - -from six import string_types, PY3 +from mimetypes import guess_type from django.conf import settings from django.template.loader import render_to_string from django.utils.translation import gettext_lazy as _ +from six import PY3, string_types from .....base import ( FormHandlerPlugin, @@ -17,24 +16,23 @@ get_processed_form_wizard_data, ) from .....helpers import ( - safe_text, extract_file_path, get_form_element_entries_for_form_wizard_entry, + safe_text, ) - from . import UID from .forms import MailSenderForm from .helpers import send_mail from .mixins import MailSenderHandlerMixin from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'MailSenderHandlerPlugin', - 'MailSenderWizardHandlerPlugin', + "MailSenderHandlerPlugin", + "MailSenderWizardHandlerPlugin", ) # ***************************************************************************** @@ -67,14 +65,11 @@ def run(self, form_entry, request, form, form_element_entries=None): # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_data( - form, - form_element_entries + form, form_element_entries ) rendered_data = self.get_rendered_data( - cleaned_data, - field_name_to_label_map, - base_url + cleaned_data, field_name_to_label_map, base_url ) files = self._prepare_files(request, form) @@ -87,11 +82,11 @@ def plugin_data_repr(self): :return string: """ context = { - 'to_name': safe_text(self.data.to_name), - 'form_field_name_to_email': self.data.form_field_name_to_email, - 'subject': safe_text(self.data.subject), + "to_name": safe_text(self.data.to_name), + "form_field_name_to_email": self.data.form_field_name_to_email, + "subject": safe_text(self.data.subject), } - return render_to_string('mail_sender/plugin_data_repr.html', context) + return render_to_string("mail_sender/plugin_data_repr.html", context) # ***************************************************************************** @@ -110,8 +105,14 @@ class MailSenderWizardHandlerPlugin(FormWizardHandlerPlugin): name = _("Mail the sender") form = MailSenderForm - def run(self, form_wizard_entry, request, form_list, form_wizard, - form_element_entries=None): + def run( + self, + form_wizard_entry, + request, + form_list, + form_wizard, + form_element_entries=None, + ): """Run. :param fobi.models.FormWizardEntry form_wizard_entry: Instance @@ -123,34 +124,37 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, :param iterable form_element_entries: Iterable of ``fobi.models.FormElementEntry`` objects. """ - base_url = 'http{secure}://{host}'.format( - secure=('s' if request.is_secure() else ''), - host=request.get_host() + base_url = "http{secure}://{host}".format( + secure=("s" if request.is_secure() else ""), host=request.get_host() ) if not form_element_entries: - form_element_entries = \ + form_element_entries = ( get_form_element_entries_for_form_wizard_entry( form_wizard_entry ) + ) # Clean up the values, leave our content fields and empty values. field_name_to_label_map, cleaned_data = get_processed_form_wizard_data( - form_wizard, - form_list, - form_element_entries + form_wizard, form_list, form_element_entries ) rendered_data = [] for key, value in cleaned_data.items(): - if value and isinstance(value, string_types) \ - and value.startswith(settings.MEDIA_URL): - cleaned_data[key] = '{base_url}{value}'.format( + if ( + value + and isinstance(value, string_types) + and value.startswith(settings.MEDIA_URL) + ): + cleaned_data[key] = "{base_url}{value}".format( base_url=base_url, value=value ) label = field_name_to_label_map.get(key, key) - rendered_data.append('{0}: {1}\n'.format( - safe_text(label), safe_text(cleaned_data[key])) + rendered_data.append( + "{0}: {1}\n".format( + safe_text(label), safe_text(cleaned_data[key]) + ) ) files = self._prepare_files(request, form_list) @@ -161,20 +165,17 @@ def run(self, form_wizard_entry, request, form_list, form_wizard, pass # Anything else needed here? else: # Assume that it's string - to_email = to_email.split( - MULTI_EMAIL_FIELD_VALUE_SPLITTER - ) + to_email = to_email.split(MULTI_EMAIL_FIELD_VALUE_SPLITTER) send_mail( safe_text(self.data.subject), "{0}\n\n{1}".format( - safe_text(self.data.body), - ''.join(rendered_data) + safe_text(self.data.body), "".join(rendered_data) ), self.data.from_email, to_email, fail_silently=False, - attachments=files.values() + attachments=files.values(), ) def _prepare_files(self, request, form_list): @@ -188,25 +189,24 @@ def process_path(file_path, imf): # file_path = file_path[1:] # file_path = settings.PROJECT_DIR('../{0}'.format(file_path)) file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = ''.join([c for c in imf.chunks()]) + imf_chunks = "".join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for form in form_list: for field_name, imf in request.FILES.items(): try: - file_path = form.cleaned_data.get(field_name, '') + file_path = form.cleaned_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) @@ -220,10 +220,10 @@ def plugin_data_repr(self): :return string: """ context = { - 'to_name': safe_text(self.data.to_name), - 'form_field_name_to_email': safe_text( + "to_name": safe_text(self.data.to_name), + "form_field_name_to_email": safe_text( self.data.form_field_name_to_email ), - 'subject': safe_text(self.data.subject), + "subject": safe_text(self.data.subject), } - return render_to_string('mail_sender/plugin_data_repr.html', context) + return render_to_string("mail_sender/plugin_data_repr.html", context) diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/conf.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/conf.py index 5ca257569..873c7ecdc 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/conf.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/conf.py @@ -2,11 +2,11 @@ from . import defaults -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.conf' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_setting',) +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.conf" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_setting",) def get_setting(setting, override=None): @@ -24,7 +24,7 @@ def get_setting(setting, override=None): """ if override is not None: return override - if hasattr(settings, 'FOBI_PLUGIN_MAIL_SENDER_{0}'.format(setting)): - return getattr(settings, 'FOBI_PLUGIN_MAIL_SENDER_{0}'.format(setting)) + if hasattr(settings, "FOBI_PLUGIN_MAIL_SENDER_{0}".format(setting)): + return getattr(settings, "FOBI_PLUGIN_MAIL_SENDER_{0}".format(setting)) else: return getattr(defaults, setting) diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/defaults.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/defaults.py index 329ebab25..373182829 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/defaults.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/defaults.py @@ -1,18 +1,18 @@ -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'AUTO_MAIL_BODY', - 'AUTO_MAIL_FROM', - 'AUTO_MAIL_SUBJECT', - 'AUTO_MAIL_TO', - 'MULTI_EMAIL_FIELD_VALUE_SPLITTER', + "AUTO_MAIL_BODY", + "AUTO_MAIL_FROM", + "AUTO_MAIL_SUBJECT", + "AUTO_MAIL_TO", + "MULTI_EMAIL_FIELD_VALUE_SPLITTER", ) -MULTI_EMAIL_FIELD_VALUE_SPLITTER = ',' # But can be '\n' +MULTI_EMAIL_FIELD_VALUE_SPLITTER = "," # But can be '\n' AUTO_MAIL_TO = [] -AUTO_MAIL_SUBJECT = 'Automatic email' -AUTO_MAIL_BODY = 'Automatic email' -AUTO_MAIL_FROM = '' +AUTO_MAIL_SUBJECT = "Automatic email" +AUTO_MAIL_BODY = "Automatic email" +AUTO_MAIL_FROM = "" diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/fobi_form_handlers.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/fobi_form_handlers.py index 718644fef..7582f52d8 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/fobi_form_handlers.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/fobi_form_handlers.py @@ -4,13 +4,13 @@ ) from .base import MailSenderHandlerPlugin, MailSenderWizardHandlerPlugin -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.fobi_form_handlers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.fobi_form_handlers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'MailSenderHandlerPlugin', - 'MailSenderWizardHandlerPlugin', + "MailSenderHandlerPlugin", + "MailSenderWizardHandlerPlugin", ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/forms.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/forms.py index 35677b9b1..6ed829e2d 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/forms.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/forms.py @@ -5,11 +5,11 @@ from .....base import BasePluginForm, get_theme -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MailSenderForm',) +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailSenderForm",) theme = get_theme(request=None, as_instance=True) @@ -30,42 +30,42 @@ class MailSenderForm(forms.Form, BasePluginForm): label=_("From name"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) from_email = forms.EmailField( label=_("From email"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) to_name = forms.CharField( label=_("To name"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) form_field_name_to_email = forms.CharField( label=_("Form field name to email"), required=True, help_text=_("Name of the form field to be used as email."), widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) subject = forms.CharField( label=_("Subject"), required=True, widget=forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) body = forms.CharField( label=_("Body"), required=False, widget=forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} - ) + attrs={"class": theme.form_element_html_class} + ), ) diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/helpers.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/helpers.py index dc0ed9f6b..af064eb01 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/helpers.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/helpers.py @@ -3,16 +3,25 @@ from django.core.mail import get_connection from django.core.mail.message import EmailMultiAlternatives -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('send_mail',) - - -def send_mail(subject, message, from_email, recipient_list, - fail_silently=False, auth_user=None, auth_password=None, - connection=None, html_message=None, attachments=None): +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("send_mail",) + + +def send_mail( + subject, + message, + from_email, + recipient_list, + fail_silently=False, + auth_user=None, + auth_password=None, + connection=None, + html_message=None, + attachments=None, +): """Send email. Easy wrapper for sending a single message to a recipient list. All members @@ -24,13 +33,18 @@ def send_mail(subject, message, from_email, recipient_list, Note: The API for this method is frozen. New code wanting to extend the functionality should use the EmailMessage class directly. """ - connection = connection or get_connection(username=auth_user, - password=auth_password, - fail_silently=fail_silently) - mail = EmailMultiAlternatives(subject, message, from_email, recipient_list, - connection=connection, - attachments=attachments) + connection = connection or get_connection( + username=auth_user, password=auth_password, fail_silently=fail_silently + ) + mail = EmailMultiAlternatives( + subject, + message, + from_email, + recipient_list, + connection=connection, + attachments=attachments, + ) if html_message: - mail.attach_alternative(html_message, 'text/html') + mail.attach_alternative(html_message, "text/html") return mail.send() diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/mixins.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/mixins.py index 1d9859a5e..527c86dfc 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/mixins.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/mixins.py @@ -1,25 +1,21 @@ from __future__ import absolute_import, unicode_literals import datetime -from mimetypes import guess_type import os - -from six import string_types, PY3 +from mimetypes import guess_type from django.conf import settings +from six import PY3, string_types from .....helpers import extract_file_path, safe_text - from .helpers import send_mail from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.mixins' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MailSenderHandlerMixin', -) +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.mixins" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailSenderHandlerMixin",) # ***************************************************************************** # **************************** Form handler *********************************** @@ -34,16 +30,14 @@ def get_base_url(self, request): Might be used in integration packages. """ - base_url = 'http{secure}://{host}'.format( - secure=('s' if request.is_secure() else ''), - host=request.get_host() + base_url = "http{secure}://{host}".format( + secure=("s" if request.is_secure() else ""), host=request.get_host() ) return base_url - def get_rendered_data(self, - cleaned_data, - field_name_to_label_map, - base_url): + def get_rendered_data( + self, cleaned_data, field_name_to_label_map, base_url + ): """Get rendered data. Might be used in integration packages. @@ -51,20 +45,25 @@ def get_rendered_data(self, rendered_data = [] for key, value in cleaned_data.items(): if value: - if isinstance(value, string_types) \ - and value.startswith(settings.MEDIA_URL): - cleaned_data[key] = '{base_url}{value}'.format( + if isinstance(value, string_types) and value.startswith( + settings.MEDIA_URL + ): + cleaned_data[key] = "{base_url}{value}".format( base_url=base_url, value=value ) if isinstance(value, (datetime.datetime, datetime.date)): - cleaned_data[key] = value.isoformat() \ - if hasattr(value, 'isoformat') \ + cleaned_data[key] = ( + value.isoformat() + if hasattr(value, "isoformat") else value + ) label = field_name_to_label_map.get(key, key) - rendered_data.append('{0}: {1}\n'.format( - safe_text(label), safe_text(cleaned_data[key])) + rendered_data.append( + "{0}: {1}\n".format( + safe_text(label), safe_text(cleaned_data[key]) + ) ) return rendered_data @@ -79,20 +78,17 @@ def send_email(self, rendered_data, cleaned_data, files): pass # Anything else needed here? else: # Assume that it's string - to_email = to_email.split( - MULTI_EMAIL_FIELD_VALUE_SPLITTER - ) + to_email = to_email.split(MULTI_EMAIL_FIELD_VALUE_SPLITTER) send_mail( safe_text(self.data.subject), - u"{0}\n\n{1}".format( - safe_text(self.data.body), - ''.join(rendered_data) + "{0}\n\n{1}".format( + safe_text(self.data.body), "".join(rendered_data) ), self.data.from_email, to_email, fail_silently=False, - attachments=files.values() + attachments=files.values(), ) def _prepare_files(self, request, form): @@ -106,23 +102,22 @@ def process_path(file_path, imf): # file_path = file_path[1:] # file_path = settings.PROJECT_DIR('../{0}'.format(file_path)) file_path = file_path.replace( - settings.MEDIA_URL, - os.path.join(settings.MEDIA_ROOT, '') + settings.MEDIA_URL, os.path.join(settings.MEDIA_ROOT, "") ) mime_type = guess_type(imf.name) if PY3: - imf_chunks = b''.join([c for c in imf.chunks()]) + imf_chunks = b"".join([c for c in imf.chunks()]) else: - imf_chunks = str('').join([c for c in imf.chunks()]) + imf_chunks = str("").join([c for c in imf.chunks()]) files[field_name] = ( imf.name, imf_chunks, - mime_type[0] if mime_type else '' + mime_type[0] if mime_type else "", ) for field_name, imf in request.FILES.items(): try: - file_path = form.cleaned_data.get(field_name, '') + file_path = form.cleaned_data.get(field_name, "") process_path(file_path, imf) except Exception as err: file_path = extract_file_path(imf.name) diff --git a/src/fobi/contrib/plugins/form_handlers/mail_sender/settings.py b/src/fobi/contrib/plugins/form_handlers/mail_sender/settings.py index 8b13d5b27..baa801368 100644 --- a/src/fobi/contrib/plugins/form_handlers/mail_sender/settings.py +++ b/src/fobi/contrib/plugins/form_handlers/mail_sender/settings.py @@ -1,13 +1,11 @@ from .conf import get_setting -__title__ = 'fobi.contrib.plugins.form_handlers.mail_sender.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'MULTI_EMAIL_FIELD_VALUE_SPLITTER', -) +__title__ = "fobi.contrib.plugins.form_handlers.mail_sender.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MULTI_EMAIL_FIELD_VALUE_SPLITTER",) MULTI_EMAIL_FIELD_VALUE_SPLITTER = get_setting( - 'MULTI_EMAIL_FIELD_VALUE_SPLITTER' + "MULTI_EMAIL_FIELD_VALUE_SPLITTER" ) diff --git a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/__init__.py b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/__init__.py index 8e345706f..53155ec1f 100644 --- a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/__init__.py +++ b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.plugins.form_importers.mailchimp_importer' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.plugins.form_importers.mailchimp_importer" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.plugins.form_importers.' \ - 'mailchimp_importer.apps.Config' +default_app_config = ( + "fobi.contrib.plugins.form_importers." "mailchimp_importer.apps.Config" +) -UID = 'mailchimp' +UID = "mailchimp" diff --git a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/apps.py b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/apps.py index 9510904c5..7e95df90d 100644 --- a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/apps.py +++ b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.plugins.form_importers.mailchimp_importer.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.plugins.form_importers.mailchimp_importer.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.plugins.form_importers.mailchimp_importer' - label = 'fobi_contrib_plugins_form_importers_mailchimp_importer' + name = "fobi.contrib.plugins.form_importers.mailchimp_importer" + label = "fobi_contrib_plugins_form_importers_mailchimp_importer" diff --git a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/base.py b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/base.py index 57282d0fd..6b013afc7 100644 --- a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/base.py +++ b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/base.py @@ -2,60 +2,57 @@ from .....contrib.plugins.form_elements import fields from .....form_importers import BaseFormImporter - from .views import MailchimpImporterWizardView -__title__ = 'fobi.contrib.plugins.form_importers.mailchimp_importer.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MailChimpImporter',) +__title__ = "fobi.contrib.plugins.form_importers.mailchimp_importer.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailChimpImporter",) class MailChimpImporter(BaseFormImporter): """MailChimp data importer.""" - uid = 'mailchimp' + uid = "mailchimp" name = _("MailChimp") wizard = MailchimpImporterWizardView templates = [ - 'mailchimp_importer/0.html', - 'mailchimp_importer/1.html', + "mailchimp_importer/0.html", + "mailchimp_importer/1.html", ] # field_type (MailChimp): uid (django-fobi) fields_mapping = { # Implemented - 'email': fields.email.UID, - 'text': fields.text.UID, - 'number': fields.integer.UID, - 'dropdown': fields.select.UID, - 'date': fields.date.UID, - 'url': fields.url.UID, - 'radio': fields.radio.UID, - + "email": fields.email.UID, + "text": fields.text.UID, + "number": fields.integer.UID, + "dropdown": fields.select.UID, + "date": fields.date.UID, + "url": fields.url.UID, + "radio": fields.radio.UID, # Transformed into something else - 'address': fields.text.UID, - 'zip': fields.text.UID, - 'phone': fields.text.UID, - 'imageurl': fields.url.UID, - + "address": fields.text.UID, + "zip": fields.text.UID, + "phone": fields.text.UID, + "imageurl": fields.url.UID, # Not implemented yet # 'birthday': '???', } # Django standard: remote field_properties_mapping = { - 'label': 'name', - 'name': 'tag', - 'help_text': 'helptext', - 'initial': 'default', - 'required': 'req', - 'choices': 'choices', + "label": "name", + "name": "tag", + "help_text": "helptext", + "initial": "default", + "required": "req", + "choices": "choices", } - field_type_prop_name = 'field_type' - position_prop_name = 'order' + field_type_prop_name = "field_type" + position_prop_name = "order" def extract_field_properties(self, field_data): """Extract field properties. @@ -66,7 +63,7 @@ def extract_field_properties(self, field_data): field_properties = {} for prop, val in self.field_properties_mapping.items(): if val in field_data: - if 'choices' == val: + if "choices" == val: field_properties[prop] = "\n".join(field_data[val]) else: field_properties[prop] = field_data[val] diff --git a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/fobi_form_importers.py b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/fobi_form_importers.py index 667ee7160..88e65a5eb 100644 --- a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/fobi_form_importers.py +++ b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/fobi_form_importers.py @@ -1,12 +1,14 @@ from .....form_importers import form_importer_plugin_registry from .base import MailChimpImporter -__title__ = 'fobi.contrib.plugins.form_importers.mailchimp_importer.' \ - 'fobi_form_importers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MailChimpImporter',) +__title__ = ( + "fobi.contrib.plugins.form_importers.mailchimp_importer." + "fobi_form_importers" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailChimpImporter",) form_importer_plugin_registry.register(MailChimpImporter) diff --git a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/forms.py b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/forms.py index 2343e1925..b10f7f759 100644 --- a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/forms.py +++ b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/forms.py @@ -1,12 +1,14 @@ import mailchimp - from django import forms -__title__ = 'fobi.contrib.plugins.form_importers.mailchimp_importer.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MailchimpAPIKeyForm', 'MailchimpListIDForm',) +__title__ = "fobi.contrib.plugins.form_importers.mailchimp_importer.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "MailchimpAPIKeyForm", + "MailchimpListIDForm", +) class MailchimpAPIKeyForm(forms.Form): @@ -15,6 +17,7 @@ class MailchimpAPIKeyForm(forms.Form): First form the the wizard. Here users are supposed to provide the API key of their Mailchimp account. """ + api_key = forms.CharField(required=True) @@ -24,21 +27,22 @@ class MailchimpListIDForm(forms.Form): Second form of the wizard. Here users are supposed to choose the form they want to import. """ + list_id = forms.ChoiceField(required=True, choices=[]) def __init__(self, *args, **kwargs): """Constructor.""" self._api_key = None - if 'api_key' in kwargs: - self._api_key = kwargs.pop('api_key', None) + if "api_key" in kwargs: + self._api_key = kwargs.pop("api_key", None) super(MailchimpListIDForm, self).__init__(*args, **kwargs) if self._api_key: client = mailchimp.Mailchimp(self._api_key) lists = client.lists.list() - choices = [(l['id'], l['name']) for l in lists['data']] - self.fields['list_id'].choices = choices + choices = [(l["id"], l["name"]) for l in lists["data"]] + self.fields["list_id"].choices = choices # else: # self.fields['list_id'] = forms.CharField(required=True) diff --git a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/views.py b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/views.py index f623863d2..165c155c5 100644 --- a/src/fobi/contrib/plugins/form_importers/mailchimp_importer/views.py +++ b/src/fobi/contrib/plugins/form_importers/mailchimp_importer/views.py @@ -1,21 +1,19 @@ import logging +import mailchimp from django.contrib import messages from django.shortcuts import redirect -from django.utils.translation import gettext_lazy as _ from django.urls import reverse - -import mailchimp +from django.utils.translation import gettext_lazy as _ from .....wizard import SessionWizardView - from .forms import MailchimpAPIKeyForm, MailchimpListIDForm -__title__ = 'fobi.contrib.plugins.form_importers.mailchimp_importer.views' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MailchimpImporterWizardView',) +__title__ = "fobi.contrib.plugins.form_importers.mailchimp_importer.views" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MailchimpImporterWizardView",) logger = logging.getLogger(__name__) @@ -27,10 +25,10 @@ class MailchimpImporterWizardView(SessionWizardView): def get_form_kwargs(self, step): """Get form kwargs.""" - if '1' == step: - data = self.get_cleaned_data_for_step('0') or {} - api_key = data.get('api_key', None) - return {'api_key': api_key} + if "1" == step: + data = self.get_cleaned_data_for_step("0") or {} + api_key = data.get("api_key", None) + return {"api_key": api_key} return {} def done(self, form_list, **kwargs): @@ -41,36 +39,36 @@ def done(self, form_list, **kwargs): # cleaned_data = self.get_all_cleaned_data() # Connecting to mailchimp - client = mailchimp.Mailchimp(cleaned_data['api_key']) + client = mailchimp.Mailchimp(cleaned_data["api_key"]) # Fetching the form data form_data = client.lists.merge_vars( - id={'list_id': cleaned_data['list_id']} + id={"list_id": cleaned_data["list_id"]} ) # We need the first form only try: - form_data = form_data['data'][0] + form_data = form_data["data"][0] except Exception as err: messages.warning( self.request, - _('Selected form could not be imported due errors.') + _("Selected form could not be imported due errors."), ) - return redirect(reverse('fobi.dashboard')) + return redirect(reverse("fobi.dashboard")) # Actually, import the form form_entry = self._form_importer.import_data( - {'name': form_data['name'], 'user': self.request.user}, - form_data['merge_vars'] + {"name": form_data["name"], "user": self.request.user}, + form_data["merge_vars"], ) redirect_url = reverse( - 'fobi.edit_form_entry', kwargs={'form_entry_id': form_entry.pk} + "fobi.edit_form_entry", kwargs={"form_entry_id": form_entry.pk} ) messages.info( self.request, - _('Form {0} imported successfully.').format(form_data['name']) + _("Form {0} imported successfully.").format(form_data["name"]), ) return redirect("{0}".format(redirect_url)) diff --git a/src/fobi/contrib/themes/bootstrap3/__init__.py b/src/fobi/contrib/themes/bootstrap3/__init__.py index 10ee7a164..596aebe76 100644 --- a/src/fobi/contrib/themes/bootstrap3/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/__init__.py @@ -1,9 +1,12 @@ -__title__ = 'fobi.contrib.themes.bootstrap3' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.themes.bootstrap3" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.themes.bootstrap3.apps.Config' +default_app_config = "fobi.contrib.themes.bootstrap3.apps.Config" -UID = 'bootstrap3' +UID = "bootstrap3" diff --git a/src/fobi/contrib/themes/bootstrap3/apps.py b/src/fobi/contrib/themes/bootstrap3/apps.py index 88dad809c..8eadf33af 100644 --- a/src/fobi/contrib/themes/bootstrap3/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.themes.bootstrap3.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3' - label = 'fobi_contrib_themes_bootstrap3' + name = "fobi.contrib.themes.bootstrap3" + label = "fobi_contrib_themes_bootstrap3" diff --git a/src/fobi/contrib/themes/bootstrap3/fobi_themes.py b/src/fobi/contrib/themes/bootstrap3/fobi_themes.py index 8c1fc2d17..d6d315b95 100644 --- a/src/fobi/contrib/themes/bootstrap3/fobi_themes.py +++ b/src/fobi/contrib/themes/bootstrap3/fobi_themes.py @@ -1,14 +1,14 @@ from django.utils.translation import gettext_lazy as _ -from fobi.base import BaseTheme, theme_registry - from . import UID -__title__ = 'fobi.contrib.themes.bootstrap3.fobi_themes' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Bootstrap3Theme',) +from fobi.base import BaseTheme, theme_registry + +__title__ = "fobi.contrib.themes.bootstrap3.fobi_themes" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Bootstrap3Theme",) class Bootstrap3Theme(BaseTheme): @@ -18,18 +18,18 @@ class Bootstrap3Theme(BaseTheme): name = _("Bootstrap 3") media_css = ( - 'bootstrap3/css/bootstrap.css', - 'bootstrap3/css/bootstrap3_fobi_extras.css', - 'css/fobi.core.css', + "bootstrap3/css/bootstrap.css", + "bootstrap3/css/bootstrap3_fobi_extras.css", + "css/fobi.core.css", ) media_js = ( - 'js/jquery-1.10.2.min.js', - 'jquery-ui/js/jquery-ui-1.10.4.custom.min.js', - 'bootstrap3/js/bootstrap.min.js', - 'js/jquery.slugify.js', - 'js/fobi.core.js', - 'bootstrap3/js/bootstrap3_fobi_extras.js', # Theme-specific scripts + "js/jquery-1.10.2.min.js", + "jquery-ui/js/jquery-ui-1.10.4.custom.min.js", + "bootstrap3/js/bootstrap.min.js", + "js/jquery.slugify.js", + "js/fobi.core.js", + "bootstrap3/js/bootstrap3_fobi_extras.js", # Theme-specific scripts ) # footer_text = '© django-fobi example site 2014' @@ -39,20 +39,20 @@ class Bootstrap3Theme(BaseTheme): # ********************** Form HTML specific ***************************** # *********************************************************************** # *********************************************************************** - form_element_html_class = 'form-control' - form_element_checkbox_html_class = 'checkbox' + form_element_html_class = "form-control" + form_element_checkbox_html_class = "checkbox" # Important! - form_view_form_entry_option_class = 'glyphicon glyphicon-list' + form_view_form_entry_option_class = "glyphicon glyphicon-list" # Important! - form_edit_form_entry_option_class = 'glyphicon glyphicon-edit' + form_edit_form_entry_option_class = "glyphicon glyphicon-edit" # Important! - form_delete_form_entry_option_class = 'glyphicon glyphicon-remove' + form_delete_form_entry_option_class = "glyphicon glyphicon-remove" # Important! - form_list_container_class = 'list-inline' + form_list_container_class = "list-inline" # *********************************************************************** # *********************************************************************** @@ -63,130 +63,144 @@ class Bootstrap3Theme(BaseTheme): # *********************************************************************** # *************************** Base templates **************************** # *********************************************************************** - master_base_template = 'bootstrap3/_base.html' - base_template = 'bootstrap3/base.html' + master_base_template = "bootstrap3/_base.html" + base_template = "bootstrap3/base.html" # *********************************************************************** # ***************************** Snippets ******************************** # *********************************************************************** - form_snippet_template_name = 'bootstrap3/snippets/form_snippet.html' + form_snippet_template_name = "bootstrap3/snippets/form_snippet.html" - form_properties_snippet_template_name = \ - 'bootstrap3/snippets/form_properties_snippet.html' + form_properties_snippet_template_name = ( + "bootstrap3/snippets/form_properties_snippet.html" + ) - messages_snippet_template_name = \ - 'bootstrap3/snippets/messages_snippet.html' + messages_snippet_template_name = "bootstrap3/snippets/messages_snippet.html" - form_non_field_and_hidden_errors_snippet_template = \ - 'bootstrap3/snippets/form_non_field_and_hidden_errors_snippet.html' + form_non_field_and_hidden_errors_snippet_template = ( + "bootstrap3/snippets/form_non_field_and_hidden_errors_snippet.html" + ) - form_ajax = 'bootstrap3/snippets/form_ajax.html' + form_ajax = "bootstrap3/snippets/form_ajax.html" - form_wizard_ajax = 'bootstrap3/snippets/form_wizard_ajax.html' + form_wizard_ajax = "bootstrap3/snippets/form_wizard_ajax.html" - form_wizard_snippet_template_name = \ - 'bootstrap3/snippets/form_wizard_snippet.html' + form_wizard_snippet_template_name = ( + "bootstrap3/snippets/form_wizard_snippet.html" + ) - form_wizard_properties_snippet_template_name = \ - 'bootstrap3/snippets/form_wizard_properties_snippet.html' + form_wizard_properties_snippet_template_name = ( + "bootstrap3/snippets/form_wizard_properties_snippet.html" + ) # *********************************************************************** # **************************** Form entry CRUD ************************** # *********************************************************************** - create_form_entry_template = 'bootstrap3/create_form_entry.html' - create_form_entry_ajax_template = 'bootstrap3/create_form_entry_ajax.html' + create_form_entry_template = "bootstrap3/create_form_entry.html" + create_form_entry_ajax_template = "bootstrap3/create_form_entry_ajax.html" - edit_form_entry_template = 'bootstrap3/edit_form_entry.html' - edit_form_entry_ajax_template = 'bootstrap3/edit_form_entry_ajax.html' + edit_form_entry_template = "bootstrap3/edit_form_entry.html" + edit_form_entry_ajax_template = "bootstrap3/edit_form_entry_ajax.html" - form_entry_submitted_template = 'bootstrap3/form_entry_submitted.html' - form_entry_submitted_ajax_template = \ - 'bootstrap3/form_entry_submitted_ajax.html' + form_entry_submitted_template = "bootstrap3/form_entry_submitted.html" + form_entry_submitted_ajax_template = ( + "bootstrap3/form_entry_submitted_ajax.html" + ) - embed_form_entry_submitted_ajax_template = \ - 'bootstrap3/embed_form_entry_submitted_ajax.html' + embed_form_entry_submitted_ajax_template = ( + "bootstrap3/embed_form_entry_submitted_ajax.html" + ) - view_form_entry_template = 'bootstrap3/view_form_entry.html' - view_form_entry_ajax_template = 'bootstrap3/view_form_entry_ajax.html' + view_form_entry_template = "bootstrap3/view_form_entry.html" + view_form_entry_ajax_template = "bootstrap3/view_form_entry_ajax.html" - view_embed_form_entry_ajax_template = \ - 'bootstrap3/view_embed_form_entry_ajax.html' + view_embed_form_entry_ajax_template = ( + "bootstrap3/view_embed_form_entry_ajax.html" + ) # *********************************************************************** # *********************** Form element entry CUD ************************ # *********************************************************************** - add_form_element_entry_template = 'bootstrap3/add_form_element_entry.html' - add_form_element_entry_ajax_template = \ - 'bootstrap3/add_form_element_entry_ajax.html' + add_form_element_entry_template = "bootstrap3/add_form_element_entry.html" + add_form_element_entry_ajax_template = ( + "bootstrap3/add_form_element_entry_ajax.html" + ) - edit_form_element_entry_template = \ - 'bootstrap3/edit_form_element_entry.html' - edit_form_element_entry_ajax_template = \ - 'bootstrap3/edit_form_element_entry_ajax.html' + edit_form_element_entry_template = "bootstrap3/edit_form_element_entry.html" + edit_form_element_entry_ajax_template = ( + "bootstrap3/edit_form_element_entry_ajax.html" + ) # *********************************************************************** # *********************** Form handler entry CUD ************************ # *********************************************************************** - add_form_handler_entry_template = 'bootstrap3/add_form_handler_entry.html' - add_form_handler_entry_ajax_template = \ - 'bootstrap3/add_form_handler_entry_ajax.html' + add_form_handler_entry_template = "bootstrap3/add_form_handler_entry.html" + add_form_handler_entry_ajax_template = ( + "bootstrap3/add_form_handler_entry_ajax.html" + ) - edit_form_handler_entry_template = \ - 'bootstrap3/edit_form_handler_entry.html' - edit_form_handler_entry_ajax_template = \ - 'bootstrap3/edit_form_handler_entry_ajax.html' + edit_form_handler_entry_template = "bootstrap3/edit_form_handler_entry.html" + edit_form_handler_entry_ajax_template = ( + "bootstrap3/edit_form_handler_entry_ajax.html" + ) # *********************************************************************** # ******************* Form wizard handler entry CUD ********************* # *********************************************************************** # Not even sure if this one is used - TODO: find out - form_wizard_template = 'bootstrap3/snippets/form_wizard.html' + form_wizard_template = "bootstrap3/snippets/form_wizard.html" - add_form_wizard_handler_entry_template = \ - 'bootstrap3/add_form_wizard_handler_entry.html' - add_form_wizard_handler_entry_ajax_template = \ - 'bootstrap3/add_form_wizard_handler_entry_ajax.html' + add_form_wizard_handler_entry_template = ( + "bootstrap3/add_form_wizard_handler_entry.html" + ) + add_form_wizard_handler_entry_ajax_template = ( + "bootstrap3/add_form_wizard_handler_entry_ajax.html" + ) - edit_form_wizard_handler_entry_template = \ - 'bootstrap3/edit_form_wizard_handler_entry.html' - edit_form_wizard_handler_entry_ajax_template = \ - 'bootstrap3/edit_form_wizard_handler_entry_ajax.html' + edit_form_wizard_handler_entry_template = ( + "bootstrap3/edit_form_wizard_handler_entry.html" + ) + edit_form_wizard_handler_entry_ajax_template = ( + "bootstrap3/edit_form_wizard_handler_entry_ajax.html" + ) # *********************************************************************** # ***************************** Dashboard ******************************* # *********************************************************************** - dashboard_template = 'bootstrap3/dashboard.html' - form_wizards_dashboard_template = 'bootstrap3/form_wizards_dashboard.html' - forms_list_template = 'bootstrap3/forms_list.html' + dashboard_template = "bootstrap3/dashboard.html" + form_wizards_dashboard_template = "bootstrap3/form_wizards_dashboard.html" + forms_list_template = "bootstrap3/forms_list.html" # *********************************************************************** # ************************ Form wizard entry CUD ************************ # *********************************************************************** - create_form_wizard_entry_template = \ - 'bootstrap3/create_form_wizard_entry.html' - create_form_wizard_entry_ajax_template = \ - 'bootstrap3/create_form_wizard_entry_ajax.html' + create_form_wizard_entry_template = ( + "bootstrap3/create_form_wizard_entry.html" + ) + create_form_wizard_entry_ajax_template = ( + "bootstrap3/create_form_wizard_entry_ajax.html" + ) - edit_form_wizard_entry_template = \ - 'bootstrap3/edit_form_wizard_entry.html' - edit_form_wizard_entry_ajax_template = \ - 'bootstrap3/edit_form_wizard_entry_ajax.html' + edit_form_wizard_entry_template = "bootstrap3/edit_form_wizard_entry.html" + edit_form_wizard_entry_ajax_template = ( + "bootstrap3/edit_form_wizard_entry_ajax.html" + ) - view_form_wizard_entry_template = \ - 'bootstrap3/view_form_wizard_entry.html' - view_form_wizard_entry_ajax_template = \ - 'bootstrap3/view_form_wizard_entry_ajax.html' + view_form_wizard_entry_template = "bootstrap3/view_form_wizard_entry.html" + view_form_wizard_entry_ajax_template = ( + "bootstrap3/view_form_wizard_entry_ajax.html" + ) # *********************************************************************** # ************************* Form importer templates ********************* # *********************************************************************** - form_importer_template = 'bootstrap3/form_importer.html' - form_importer_ajax_template = 'bootstrap3/form_importer_ajax.html' + form_importer_template = "bootstrap3/form_importer.html" + form_importer_ajax_template = "bootstrap3/form_importer_ajax.html" def __init__(self, user=None): """Constructor.""" super(Bootstrap3Theme, self).__init__(user=user) - self.form_radio_element_html_class = '' + self.form_radio_element_html_class = "" theme_registry.register(Bootstrap3Theme) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/__init__.py index ba12654df..ef7fd950a 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_markdown_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_markdown_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_markdown_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_markdown_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/apps.py index 0a51d76a4..58ff19b10 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_markdown_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_markdown_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_markdown_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'content_markdown_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_markdown_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "content_markdown_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/fobi_form_elements.py index e11394681..b2c7457bc 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_markdown_bootstrap3_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.content.content_markdown.widgets \ - import ( - BaseContentMarkdownPluginWidget - ) +from fobi.contrib.plugins.form_elements.content.content_markdown.widgets import ( + BaseContentMarkdownPluginWidget, +) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_richtext_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentMarkdownPluginWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_richtext_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentMarkdownPluginWidget",) class ContentMarkdownPluginWidget(BaseContentMarkdownPluginWidget): diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/__init__.py index 4e4463e1b..19b0522c9 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_richtext_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_richtext_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_richtext_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_richtext_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/apps.py index 343c75d41..9bff75730 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_richtext_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_richtext_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_richtext_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'content_richtext_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_richtext_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "content_richtext_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/fobi_form_elements.py index ef6b1d3d9..d71988ca7 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/content_richtext_bootstrap3_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.content.content_richtext.widgets \ - import ( - BaseContentRichTextPluginWidget - ) +from fobi.contrib.plugins.form_elements.content.content_richtext.widgets import ( + BaseContentRichTextPluginWidget, +) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'content_richtext_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPluginWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "content_richtext_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPluginWidget",) class ContentRichTextPluginWidget(BaseContentRichTextPluginWidget): diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/__init__.py index 75be80fb7..3788b011a 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'date_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "date_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'date_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "date_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/apps.py index 7176abfd8..c8feb0721 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'date_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "date_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'date_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'date_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "date_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "date_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/fobi_form_elements.py index 2cd731364..4af4a8153 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/date_bootstrap3_widget/fobi_form_elements.py @@ -1,15 +1,17 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.fields.date.widgets import ( - BaseDatePluginWidget + BaseDatePluginWidget, ) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'date_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DatePluginWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "date_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DatePluginWidget",) class DatePluginWidget(BaseDatePluginWidget): @@ -17,12 +19,12 @@ class DatePluginWidget(BaseDatePluginWidget): theme_uid = UID media_js = [ - 'js/moment-with-locales.js', - 'bootstrap3/js/bootstrap-datetimepicker.min.js', - 'bootstrap3/js/fobi.plugin.date-bootstrap3-widget.js', + "js/moment-with-locales.js", + "bootstrap3/js/bootstrap-datetimepicker.min.js", + "bootstrap3/js/fobi.plugin.date-bootstrap3-widget.js", ] media_css = [ - 'bootstrap3/css/bootstrap-datetimepicker.min.css', + "bootstrap3/css/bootstrap-datetimepicker.min.css", # 'datetime/css/fobi.plugin.date-bootstrap3-widget.css', ] diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/__init__.py index 7273fdf5d..95aa45794 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'datetime_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "datetime_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'datetime_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "datetime_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/apps.py index 1dfc2412d..1b19995c2 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'datetime_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "datetime_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'datetime_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'datetime_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "datetime_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "datetime_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/fobi_form_elements.py index bfbf040b2..b23376242 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/datetime_bootstrap3_widget/fobi_form_elements.py @@ -1,15 +1,17 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.fields.datetime.widgets import ( - BaseDateTimePluginWidget + BaseDateTimePluginWidget, ) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'datetime_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimePluginWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "datetime_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimePluginWidget",) class DateTimePluginWidget(BaseDateTimePluginWidget): @@ -17,12 +19,12 @@ class DateTimePluginWidget(BaseDateTimePluginWidget): theme_uid = UID media_js = [ - 'js/moment-with-locales.js', - 'bootstrap3/js/bootstrap-datetimepicker.min.js', - 'bootstrap3/js/fobi.plugin.datetime-bootstrap3-widget.js', + "js/moment-with-locales.js", + "bootstrap3/js/bootstrap-datetimepicker.min.js", + "bootstrap3/js/fobi.plugin.datetime-bootstrap3-widget.js", ] media_css = [ - 'bootstrap3/css/bootstrap-datetimepicker.min.css', + "bootstrap3/css/bootstrap-datetimepicker.min.css", # 'datetime/css/fobi.plugin.datetime-bootstrap3-widget.css', ] diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/__init__.py index 8e985df4c..e2f40302f 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'dummy_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "dummy_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'dummy_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "dummy_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/apps.py index 5f3e6719a..2f7ed9fca 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'dummy_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "dummy_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'dummy_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'dummy_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "dummy_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "dummy_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/fobi_form_elements.py index 003b5f5d0..5974642c3 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/dummy_bootstrap3_widget/fobi_form_elements.py @@ -1,19 +1,22 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.test.dummy.widgets import ( - BaseDummyPluginWidget + BaseDummyPluginWidget, ) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'dummy_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DummyPluginWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "dummy_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DummyPluginWidget",) class DummyPluginWidget(BaseDummyPluginWidget): """Dummy plugin widget for Boootstrap 3.""" + theme_uid = UID media_js = [ # 'bootstrap3/js/fobi.plugin.dummy-bootstrap3-widget.js', diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/__init__.py index 725c37aa4..7126620f6 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'invisible_recaptcha_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "invisible_recaptcha_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'invisible_recaptcha_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "invisible_recaptcha_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/apps.py index c4232573f..a6d08a9c8 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'invisible_recaptcha_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "invisible_recaptcha_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'invisible_recaptcha_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'invisible_recaptcha_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "invisible_recaptcha_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "invisible_recaptcha_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/fobi_form_elements.py index 1dce485a6..597ac8601 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/invisible_recaptcha_bootstrap3_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets \ - import ( - BaseInvisibleRecaptchaWidget - ) +from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets import ( + BaseInvisibleRecaptchaWidget, +) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'invisible_recaptcha_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "invisible_recaptcha_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaWidget",) class InvisibleRecaptchaWidget(BaseInvisibleRecaptchaWidget): diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/__init__.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/__init__.py index 3f423e67e..0f751d6a2 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/__init__.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'slider_bootstrap3_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "slider_bootstrap3_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'slider_bootstrap3_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "slider_bootstrap3_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/apps.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/apps.py index 72e41e803..1367d3f38 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/apps.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'slider_bootstrap3_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "slider_bootstrap3_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'slider_bootstrap3_widget' - label = 'fobi_contrib_themes_bootstrap3_widgets_form_elements_' \ - 'slider_bootstrap3_widget' + name = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "slider_bootstrap3_widget" + ) + label = ( + "fobi_contrib_themes_bootstrap3_widgets_form_elements_" + "slider_bootstrap3_widget" + ) diff --git a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/fobi_form_elements.py b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/fobi_form_elements.py index 2e8718a09..22affca46 100644 --- a/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/bootstrap3/widgets/form_elements/slider_bootstrap3_widget/fobi_form_elements.py @@ -1,15 +1,17 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.fields.slider.widgets import ( - BaseSliderPluginWidget + BaseSliderPluginWidget, ) from fobi.contrib.themes.bootstrap3 import UID -__title__ = 'fobi.contrib.themes.bootstrap3.widgets.form_elements.' \ - 'slider_bootstrap3_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SliderPluginWidget',) +__title__ = ( + "fobi.contrib.themes.bootstrap3.widgets.form_elements." + "slider_bootstrap3_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SliderPluginWidget",) class SliderPluginWidget(BaseSliderPluginWidget): @@ -17,12 +19,12 @@ class SliderPluginWidget(BaseSliderPluginWidget): theme_uid = UID media_js = [ - 'bootstrap3/js/bootstrap-slider.min.js', - 'bootstrap3/js/fobi.plugin.slider-bootstrap3-widget.js', + "bootstrap3/js/bootstrap-slider.min.js", + "bootstrap3/js/fobi.plugin.slider-bootstrap3-widget.js", ] media_css = [ - 'bootstrap3/css/bootstrap-slider.min.css', - 'bootstrap3/css/fobi.plugin.slider-bootstrap3-widget.css', + "bootstrap3/css/bootstrap-slider.min.css", + "bootstrap3/css/fobi.plugin.slider-bootstrap3-widget.css", ] diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/__init__.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/__init__.py index 618bba4e5..1f5ca42f5 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/__init__.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2015-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.themes.djangocms_admin_style_theme" +__author__ = "Artur Barseghyan " +__copyright__ = "2015-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.themes.' \ - 'djangocms_admin_style_theme.apps.Config' +default_app_config = ( + "fobi.contrib.themes." "djangocms_admin_style_theme.apps.Config" +) -UID = 'djangocms_admin_style_theme' +UID = "djangocms_admin_style_theme" diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/apps.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/apps.py index 5fd4f51a6..a321bf528 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/apps.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2015-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.themes.djangocms_admin_style_theme.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2015-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.djangocms_admin_style_theme' - label = 'fobi_contrib_themes_djangocms_admin_style_theme' + name = "fobi.contrib.themes.djangocms_admin_style_theme" + label = "fobi_contrib_themes_djangocms_admin_style_theme" diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/fobi_themes.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/fobi_themes.py index 8cf7c62bb..b286d8f24 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/fobi_themes.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/fobi_themes.py @@ -1,14 +1,14 @@ from django.utils.translation import gettext_lazy as _ -from fobi.base import BaseTheme, theme_registry - from . import UID -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.fobi_themes' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DjangoCMSAdminStyleTheme',) +from fobi.base import BaseTheme, theme_registry + +__title__ = "fobi.contrib.themes.djangocms_admin_style_theme.fobi_themes" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DjangoCMSAdminStyleTheme",) class DjangoCMSAdminStyleTheme(BaseTheme): @@ -21,16 +21,16 @@ class DjangoCMSAdminStyleTheme(BaseTheme): # 'admin/css/base.css', # 'admin/css/forms.css', # 'admin/css/widgets.css', - 'djangocms_admin_style_theme/css/fobi.djangocms_admin_style_theme.css', - 'jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css', + "djangocms_admin_style_theme/css/fobi.djangocms_admin_style_theme.css", + "jquery-ui/css/smoothness/jquery-ui-1.10.3.custom.min.css", # 'admin_tools/css/menu.css', # TODO at least a conditional insert ) media_js = ( - 'js/jquery-1.10.2.min.js', - 'jquery-ui/js/jquery-ui-1.10.4.custom.min.js', - 'js/jquery.slugify.js', - 'js/fobi.core.js', + "js/jquery-1.10.2.min.js", + "jquery-ui/js/jquery-ui-1.10.4.custom.min.js", + "js/jquery.slugify.js", + "js/fobi.core.js", # 'js/fobi.simple.js', ) @@ -39,91 +39,113 @@ class DjangoCMSAdminStyleTheme(BaseTheme): # ************************************************************************* # ********************** Form HTML specific ******************************* # ************************************************************************* - form_element_html_class = 'vTextField' - form_radio_element_html_class = 'radiolist' - form_element_checkbox_html_class = 'checkbox' + form_element_html_class = "vTextField" + form_radio_element_html_class = "radiolist" + form_element_checkbox_html_class = "checkbox" # Important - form_view_form_entry_option_class = 'viewlink' + form_view_form_entry_option_class = "viewlink" # Important - form_edit_form_entry_option_class = 'edit' + form_edit_form_entry_option_class = "edit" # Important - form_delete_form_entry_option_class = 'deletelink' + form_delete_form_entry_option_class = "deletelink" # Important - form_list_container_class = 'list-inline' + form_list_container_class = "list-inline" # ************************************************************************* # ********************** Templates specific ******************************* # ************************************************************************* - master_base_template = 'djangocms_admin_style_theme/_base.html' - base_template = 'djangocms_admin_style_theme/base.html' - base_view_template = 'djangocms_admin_style_theme/base_view.html' - base_edit_template = 'djangocms_admin_style_theme/base_edit.html' - - form_ajax = 'djangocms_admin_style_theme/snippets/form_ajax.html' - form_snippet_template_name = \ - 'djangocms_admin_style_theme/snippets/form_snippet.html' - form_view_snippet_template_name = \ - 'djangocms_admin_style_theme/snippets/form_view_snippet.html' - form_edit_ajax = \ - 'djangocms_admin_style_theme/snippets/form_edit_ajax.html' - form_edit_snippet_template_name = \ - 'djangocms_admin_style_theme/snippets/form_edit_snippet.html' - form_properties_snippet_template_name = \ - 'djangocms_admin_style_theme/snippets/form_properties_snippet.html' - messages_snippet_template_name = \ - 'djangocms_admin_style_theme/snippets/messages_snippet.html' - - add_form_element_entry_template = \ - 'djangocms_admin_style_theme/add_form_element_entry.html' - add_form_element_entry_ajax_template = \ - 'djangocms_admin_style_theme/add_form_element_entry_ajax.html' - - add_form_handler_entry_template = \ - 'djangocms_admin_style_theme/add_form_handler_entry.html' - add_form_handler_entry_ajax_template = \ - 'djangocms_admin_style_theme/add_form_handler_entry_ajax.html' - - create_form_entry_template = \ - 'djangocms_admin_style_theme/create_form_entry.html' - create_form_entry_ajax_template = \ - 'djangocms_admin_style_theme/create_form_entry_ajax.html' - - dashboard_template = 'djangocms_admin_style_theme/dashboard.html' - forms_list_template = 'djangocms_admin_style_theme/forms_list.html' - - edit_form_element_entry_template = \ - 'djangocms_admin_style_theme/edit_form_element_entry.html' - edit_form_element_entry_ajax_template = \ - 'djangocms_admin_style_theme/edit_form_element_entry_ajax.html' - - edit_form_entry_template = \ - 'djangocms_admin_style_theme/edit_form_entry.html' - edit_form_entry_ajax_template = \ - 'djangocms_admin_style_theme/edit_form_entry_ajax.html' - - edit_form_handler_entry_template = \ - 'djangocms_admin_style_theme/edit_form_handler_entry.html' - edit_form_handler_entry_ajax_template = \ - 'djangocms_admin_style_theme/edit_form_handler_entry_ajax.html' - - form_entry_submitted_template = \ - 'djangocms_admin_style_theme/form_entry_submitted.html' - form_entry_submitted_ajax_template = \ - 'djangocms_admin_style_theme/form_entry_submitted_ajax.html' - - view_form_entry_template = \ - 'djangocms_admin_style_theme/view_form_entry.html' - view_form_entry_ajax_template = \ - 'djangocms_admin_style_theme/view_form_entry_ajax.html' - - import_form_entry_template = \ - 'djangocms_admin_style_theme/import_form_entry.html' - import_form_entry_ajax_template = \ - 'djangocms_admin_style_theme/import_form_entry_ajax.html' + master_base_template = "djangocms_admin_style_theme/_base.html" + base_template = "djangocms_admin_style_theme/base.html" + base_view_template = "djangocms_admin_style_theme/base_view.html" + base_edit_template = "djangocms_admin_style_theme/base_edit.html" + + form_ajax = "djangocms_admin_style_theme/snippets/form_ajax.html" + form_snippet_template_name = ( + "djangocms_admin_style_theme/snippets/form_snippet.html" + ) + form_view_snippet_template_name = ( + "djangocms_admin_style_theme/snippets/form_view_snippet.html" + ) + form_edit_ajax = "djangocms_admin_style_theme/snippets/form_edit_ajax.html" + form_edit_snippet_template_name = ( + "djangocms_admin_style_theme/snippets/form_edit_snippet.html" + ) + form_properties_snippet_template_name = ( + "djangocms_admin_style_theme/snippets/form_properties_snippet.html" + ) + messages_snippet_template_name = ( + "djangocms_admin_style_theme/snippets/messages_snippet.html" + ) + + add_form_element_entry_template = ( + "djangocms_admin_style_theme/add_form_element_entry.html" + ) + add_form_element_entry_ajax_template = ( + "djangocms_admin_style_theme/add_form_element_entry_ajax.html" + ) + + add_form_handler_entry_template = ( + "djangocms_admin_style_theme/add_form_handler_entry.html" + ) + add_form_handler_entry_ajax_template = ( + "djangocms_admin_style_theme/add_form_handler_entry_ajax.html" + ) + + create_form_entry_template = ( + "djangocms_admin_style_theme/create_form_entry.html" + ) + create_form_entry_ajax_template = ( + "djangocms_admin_style_theme/create_form_entry_ajax.html" + ) + + dashboard_template = "djangocms_admin_style_theme/dashboard.html" + forms_list_template = "djangocms_admin_style_theme/forms_list.html" + + edit_form_element_entry_template = ( + "djangocms_admin_style_theme/edit_form_element_entry.html" + ) + edit_form_element_entry_ajax_template = ( + "djangocms_admin_style_theme/edit_form_element_entry_ajax.html" + ) + + edit_form_entry_template = ( + "djangocms_admin_style_theme/edit_form_entry.html" + ) + edit_form_entry_ajax_template = ( + "djangocms_admin_style_theme/edit_form_entry_ajax.html" + ) + + edit_form_handler_entry_template = ( + "djangocms_admin_style_theme/edit_form_handler_entry.html" + ) + edit_form_handler_entry_ajax_template = ( + "djangocms_admin_style_theme/edit_form_handler_entry_ajax.html" + ) + + form_entry_submitted_template = ( + "djangocms_admin_style_theme/form_entry_submitted.html" + ) + form_entry_submitted_ajax_template = ( + "djangocms_admin_style_theme/form_entry_submitted_ajax.html" + ) + + view_form_entry_template = ( + "djangocms_admin_style_theme/view_form_entry.html" + ) + view_form_entry_ajax_template = ( + "djangocms_admin_style_theme/view_form_entry_ajax.html" + ) + + import_form_entry_template = ( + "djangocms_admin_style_theme/import_form_entry.html" + ) + import_form_entry_ajax_template = ( + "djangocms_admin_style_theme/import_form_entry_ajax.html" + ) @classmethod def edit_form_entry_edit_option_html(cls): @@ -136,10 +158,10 @@ def edit_form_entry_edit_option_html(cls): {edit_text} """.format( - edit_url="{edit_url}", - edit_option_class=cls.form_edit_form_entry_option_class, - edit_text="{edit_text}", - ) + edit_url="{edit_url}", + edit_option_class=cls.form_edit_form_entry_option_class, + edit_text="{edit_text}", + ) @classmethod def edit_form_entry_help_text_extra(cls): @@ -161,15 +183,15 @@ def edit_form_entry_help_text_extra(cls): """.format( - container_class=cls.form_list_container_class, - edit_option_html="{edit_option_html}", - delete_url="{delete_url}", - delete_option_class=cls.form_delete_form_entry_option_class, - delete_text="{delete_text}", - form_element_position="{form_element_position}", - counter="{counter}", - form_element_pk="{form_element_pk}", - ) + container_class=cls.form_list_container_class, + edit_option_html="{edit_option_html}", + delete_url="{delete_url}", + delete_option_class=cls.form_delete_form_entry_option_class, + delete_text="{delete_text}", + form_element_position="{form_element_position}", + counter="{counter}", + form_element_pk="{form_element_pk}", + ) theme_registry.register(DjangoCMSAdminStyleTheme) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/__init__.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/__init__.py index 92aa73299..f9c8faee9 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/__init__.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/__init__.py @@ -1,11 +1,15 @@ -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.content_richtext_admin_style_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements.content_richtext_admin_style_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.djangocms_admin_style_theme.' \ - 'widgets.form_elements.' \ - 'content_richtext_admin_style_widget.' \ - 'apps.Config' +default_app_config = ( + "fobi.contrib.themes.djangocms_admin_style_theme." + "widgets.form_elements." + "content_richtext_admin_style_widget." + "apps.Config" +) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/apps.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/apps.py index 9ff86bf10..23f9e131a 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/apps.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/apps.py @@ -1,19 +1,25 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.' \ - 'content_richtext_admin_style_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements." + "content_richtext_admin_style_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.' \ - 'content_richtext_admin_style_widget' - label = 'fobi_contrib_themes_djangocms_admin_style_theme_widgets_' \ - 'form_elements_content_richtext_admin_style_widget' + name = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements." + "content_richtext_admin_style_widget" + ) + label = ( + "fobi_contrib_themes_djangocms_admin_style_theme_widgets_" + "form_elements_content_richtext_admin_style_widget" + ) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/fobi_form_elements.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/fobi_form_elements.py index f9e20c058..23a52015d 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/content_richtext_admin_style_widget/fobi_form_elements.py @@ -1,17 +1,18 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.content.content_richtext.widgets \ - import ( - BaseContentRichTextPluginWidget - ) +from fobi.contrib.plugins.form_elements.content.content_richtext.widgets import ( + BaseContentRichTextPluginWidget, +) from fobi.contrib.themes.simple import UID -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.content_richtext_admin_style_widget.' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPluginWidget',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements.content_richtext_admin_style_widget." + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPluginWidget",) class ContentRichTextPluginWidget(BaseContentRichTextPluginWidget): diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/__init__.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/__init__.py index 423779d6b..65cbc086f 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/__init__.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/__init__.py @@ -1,10 +1,14 @@ -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.invisible_recaptcha_admin_style_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements.invisible_recaptcha_admin_style_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.djangocms_admin_style_theme.' \ - 'widgets.form_elements.' \ - 'invisible_recaptcha_admin_style_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.djangocms_admin_style_theme." + "widgets.form_elements." + "invisible_recaptcha_admin_style_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/apps.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/apps.py index aac9233ef..566c13fd9 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/apps.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.invisible_recaptcha_admin_style_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements.invisible_recaptcha_admin_style_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.invisible_recaptcha_admin_style_widget' - label = 'fobi_contrib_themes_djangocms_admin_style_theme_widgets_' \ - 'form_elements_invisible_recaptcha_admin_style_widget' + name = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements.invisible_recaptcha_admin_style_widget" + ) + label = ( + "fobi_contrib_themes_djangocms_admin_style_theme_widgets_" + "form_elements_invisible_recaptcha_admin_style_widget" + ) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/fobi_form_elements.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/fobi_form_elements.py index 59543a575..98bd32287 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_elements/invisible_recaptcha_admin_style_widget/fobi_form_elements.py @@ -1,17 +1,18 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets \ - import ( - BaseInvisibleRecaptchaWidget - ) +from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets import ( + BaseInvisibleRecaptchaWidget, +) from fobi.contrib.themes.simple import UID -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_elements.invisible_recaptcha_admin_style_widget.s' \ - 'fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaWidget',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_elements.invisible_recaptcha_admin_style_widget.s" + "fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaWidget",) class InvisibleRecaptchaWidget(BaseInvisibleRecaptchaWidget): diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/__init__.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/__init__.py index 5a7bf342a..268d380db 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/__init__.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_handlers.db_store' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2015-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_handlers.db_store" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2015-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.djangocms_admin_style_theme.' \ - 'widgets.form_handlers.db_store.apps.Config' +default_app_config = ( + "fobi.contrib.themes.djangocms_admin_style_theme." + "widgets.form_handlers.db_store.apps.Config" +) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/apps.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/apps.py index a189efd2e..82a3922b1 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/apps.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/apps.py @@ -1,16 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_handlers.db_store.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = 'Copyright (c) 2015 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_handlers.db_store.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "Copyright (c) 2015 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_handlers.db_store' - label = 'fobi_contrib_themes_djangocms_admin_style_theme_widgets_' \ - 'form_handlers_db_store' + + name = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_handlers.db_store" + ) + label = ( + "fobi_contrib_themes_djangocms_admin_style_theme_widgets_" + "form_handlers_db_store" + ) diff --git a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/fobi_form_elements.py b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/fobi_form_elements.py index 1a99d1d77..1c058ae8b 100644 --- a/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/fobi_form_elements.py +++ b/src/fobi/contrib/themes/djangocms_admin_style_theme/widgets/form_handlers/db_store/fobi_form_elements.py @@ -1,23 +1,25 @@ from fobi.base import form_handler_plugin_widget_registry from fobi.contrib.plugins.form_handlers.db_store.widgets import ( - BaseDbStorePluginWidget + BaseDbStorePluginWidget, ) from fobi.contrib.themes.djangocms_admin_style_theme import UID -__title__ = 'fobi.contrib.themes.djangocms_admin_style_theme.widgets.' \ - 'form_handlers.db_store.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2015-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DbStorePluginWidget',) +__title__ = ( + "fobi.contrib.themes.djangocms_admin_style_theme.widgets." + "form_handlers.db_store.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2015-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DbStorePluginWidget",) class DbStorePluginWidget(BaseDbStorePluginWidget): """DbStore plugin widget for djangocms_admin_style_theme theme.""" theme_uid = UID - view_entries_icon_class = '' - export_entries_icon_class = '' + view_entries_icon_class = "" + export_entries_icon_class = "" # Registering the widget diff --git a/src/fobi/contrib/themes/foundation5/__init__.py b/src/fobi/contrib/themes/foundation5/__init__.py index eab3c67dc..e0f9dc3b2 100644 --- a/src/fobi/contrib/themes/foundation5/__init__.py +++ b/src/fobi/contrib/themes/foundation5/__init__.py @@ -1,9 +1,9 @@ -__title__ = 'fobi.contrib.themes.foundation5' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.themes.foundation5" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.apps.Config' +default_app_config = "fobi.contrib.themes.foundation5.apps.Config" -UID = 'foundation5' +UID = "foundation5" diff --git a/src/fobi/contrib/themes/foundation5/apps.py b/src/fobi/contrib/themes/foundation5/apps.py index 1b2d55c31..fdc64e92c 100644 --- a/src/fobi/contrib/themes/foundation5/apps.py +++ b/src/fobi/contrib/themes/foundation5/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.themes.foundation5.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5' - label = 'fobi_contrib_themes_foundation5' + name = "fobi.contrib.themes.foundation5" + label = "fobi_contrib_themes_foundation5" diff --git a/src/fobi/contrib/themes/foundation5/fobi_themes.py b/src/fobi/contrib/themes/foundation5/fobi_themes.py index 27eb86f34..aa61b2723 100644 --- a/src/fobi/contrib/themes/foundation5/fobi_themes.py +++ b/src/fobi/contrib/themes/foundation5/fobi_themes.py @@ -1,14 +1,14 @@ from django.utils.translation import gettext_lazy as _ -from fobi.base import BaseTheme, theme_registry - from . import UID -__title__ = 'fobi.contrib.themes.foundation5.fobi_themes' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Foundation5Theme',) +from fobi.base import BaseTheme, theme_registry + +__title__ = "fobi.contrib.themes.foundation5.fobi_themes" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Foundation5Theme",) class Foundation5Theme(BaseTheme): @@ -18,13 +18,14 @@ class Foundation5Theme(BaseTheme): Click `here `_ for more. """ + uid = UID name = _("Foundation 5") media_css = ( - 'foundation5/css/foundation.min.css', - 'foundation5/css/foundation_fobi_extras.css', - 'foundation5/icons/3/icons/foundation-icons.css', + "foundation5/css/foundation.min.css", + "foundation5/css/foundation_fobi_extras.css", + "foundation5/icons/3/icons/foundation-icons.css", # 'foundation5/icons/2/accessibility/stylesheets/' # 'accessibility_foundicons.css', # 'foundation5/css/foundation_template-4.css', # Foundation Template 4 @@ -33,17 +34,17 @@ class Foundation5Theme(BaseTheme): ) media_js = ( - 'foundation5/js/vendor/modernizr.js', + "foundation5/js/vendor/modernizr.js", # 'foundation5/js/foundation.min.js', # 'js/jquery-1.10.2.min.js', - 'foundation5/js/vendor/jquery.js', + "foundation5/js/vendor/jquery.js", # 'foundation5/js/vendor/fastclick.js', - 'jquery-ui/js/jquery-ui-1.10.4.custom.min.js', + "jquery-ui/js/jquery-ui-1.10.4.custom.min.js", # 'foundation5/js/foundation_template-4.js', # Foundation Template 4 - 'foundation5/js/foundation.min.js', - 'js/fobi.core.js', - 'js/jquery.slugify.js', - 'foundation5/js/foundation5_fobi_extras.js', # Theme specific scripts + "foundation5/js/foundation.min.js", + "js/fobi.core.js", + "js/jquery.slugify.js", + "foundation5/js/foundation5_fobi_extras.js", # Theme specific scripts ) # footer_text = '© django-fobi example site 2014' @@ -52,20 +53,20 @@ class Foundation5Theme(BaseTheme): # *********************************************************************** # ********************** Form HTML specific ***************************** # *********************************************************************** - form_element_html_class = 'form-control' - form_element_checkbox_html_class = 'checkbox' + form_element_html_class = "form-control" + form_element_checkbox_html_class = "checkbox" # Important - form_view_form_entry_option_class = 'fi-list' + form_view_form_entry_option_class = "fi-list" # Important - form_edit_form_entry_option_class = 'fi-page-edit' + form_edit_form_entry_option_class = "fi-page-edit" # Important - form_delete_form_entry_option_class = 'fi-page-delete' + form_delete_form_entry_option_class = "fi-page-delete" # Important - form_list_container_class = 'inline-list' + form_list_container_class = "inline-list" # *********************************************************************** # *********************************************************************** @@ -76,75 +77,84 @@ class Foundation5Theme(BaseTheme): # *********************************************************************** # *************************** Base templates **************************** # *********************************************************************** - master_base_template = 'foundation5/_base.html' - base_template = 'foundation5/base.html' + master_base_template = "foundation5/_base.html" + base_template = "foundation5/base.html" # *********************************************************************** # ***************************** Snippets ******************************** # *********************************************************************** - form_snippet_template_name = 'foundation5/snippets/form_snippet.html' + form_snippet_template_name = "foundation5/snippets/form_snippet.html" - form_properties_snippet_template_name = \ - 'foundation5/snippets/form_properties_snippet.html' + form_properties_snippet_template_name = ( + "foundation5/snippets/form_properties_snippet.html" + ) - messages_snippet_template_name = \ - 'foundation5/snippets/messages_snippet.html' + messages_snippet_template_name = ( + "foundation5/snippets/messages_snippet.html" + ) - form_non_field_and_hidden_errors_snippet_template = \ - 'foundation5/snippets/form_non_field_and_hidden_errors_snippet.html' + form_non_field_and_hidden_errors_snippet_template = ( + "foundation5/snippets/form_non_field_and_hidden_errors_snippet.html" + ) - form_ajax = 'foundation5/snippets/form_ajax.html' + form_ajax = "foundation5/snippets/form_ajax.html" - form_wizard_ajax = 'foundation5/snippets/form_wizard_ajax.html' # TODO + form_wizard_ajax = "foundation5/snippets/form_wizard_ajax.html" # TODO - form_wizard_snippet_template_name = \ - 'foundation5/snippets/form_wizard_snippet.html' # TODO + form_wizard_snippet_template_name = ( + "foundation5/snippets/form_wizard_snippet.html" # TODO + ) - form_wizard_properties_snippet_template_name = \ - 'foundation5/snippets/form_wizard_properties_snippet.html' + form_wizard_properties_snippet_template_name = ( + "foundation5/snippets/form_wizard_properties_snippet.html" + ) # *********************************************************************** # **************************** Form entry CRUD ************************** # *********************************************************************** - create_form_entry_template = 'foundation5/create_form_entry.html' - create_form_entry_ajax_template = \ - 'foundation5/create_form_entry_ajax.html' + create_form_entry_template = "foundation5/create_form_entry.html" + create_form_entry_ajax_template = "foundation5/create_form_entry_ajax.html" - edit_form_entry_template = 'foundation5/edit_form_entry.html' - edit_form_entry_ajax_template = 'foundation5/edit_form_entry_ajax.html' + edit_form_entry_template = "foundation5/edit_form_entry.html" + edit_form_entry_ajax_template = "foundation5/edit_form_entry_ajax.html" - form_entry_submitted_template = 'foundation5/form_entry_submitted.html' - form_entry_submitted_ajax_template = \ - 'foundation5/form_entry_submitted_ajax.html' + form_entry_submitted_template = "foundation5/form_entry_submitted.html" + form_entry_submitted_ajax_template = ( + "foundation5/form_entry_submitted_ajax.html" + ) - view_form_entry_template = 'foundation5/view_form_entry.html' - view_form_entry_ajax_template = 'foundation5/view_form_entry_ajax.html' + view_form_entry_template = "foundation5/view_form_entry.html" + view_form_entry_ajax_template = "foundation5/view_form_entry_ajax.html" # *********************************************************************** # *********************** Form element entry CUD ************************ # *********************************************************************** - add_form_element_entry_template = \ - 'foundation5/add_form_element_entry.html' - add_form_element_entry_ajax_template = \ - 'foundation5/add_form_element_entry_ajax.html' + add_form_element_entry_template = "foundation5/add_form_element_entry.html" + add_form_element_entry_ajax_template = ( + "foundation5/add_form_element_entry_ajax.html" + ) - edit_form_element_entry_template = \ - 'foundation5/edit_form_element_entry.html' - edit_form_element_entry_ajax_template = \ - 'foundation5/edit_form_element_entry_ajax.html' + edit_form_element_entry_template = ( + "foundation5/edit_form_element_entry.html" + ) + edit_form_element_entry_ajax_template = ( + "foundation5/edit_form_element_entry_ajax.html" + ) # *********************************************************************** # *********************** Form handler entry CUD ************************ # *********************************************************************** - add_form_handler_entry_template = \ - 'foundation5/add_form_handler_entry.html' - add_form_handler_entry_ajax_template = \ - 'foundation5/add_form_handler_entry_ajax.html' + add_form_handler_entry_template = "foundation5/add_form_handler_entry.html" + add_form_handler_entry_ajax_template = ( + "foundation5/add_form_handler_entry_ajax.html" + ) - edit_form_handler_entry_template = \ - 'foundation5/edit_form_handler_entry.html' - edit_form_handler_entry_ajax_template = \ - 'foundation5/edit_form_handler_entry_ajax.html' + edit_form_handler_entry_template = ( + "foundation5/edit_form_handler_entry.html" + ) + edit_form_handler_entry_ajax_template = ( + "foundation5/edit_form_handler_entry_ajax.html" + ) # *********************************************************************** # ******************* Form wizard handler entry CUD ********************* @@ -153,35 +163,36 @@ class Foundation5Theme(BaseTheme): # *********************************************************************** # ***************************** Dashboard ******************************* # *********************************************************************** - dashboard_template = 'foundation5/dashboard.html' - form_wizards_dashboard_template = 'foundation5/form_wizards_dashboard.html' - forms_list_template = 'foundation5/forms_list.html' + dashboard_template = "foundation5/dashboard.html" + form_wizards_dashboard_template = "foundation5/form_wizards_dashboard.html" + forms_list_template = "foundation5/forms_list.html" # *********************************************************************** # ************************ Form wizard entry CUD ************************ # *********************************************************************** - create_form_wizard_entry_template = \ - 'foundation5/create_form_wizard_entry.html' - create_form_wizard_entry_ajax_template = \ - 'foundation5/create_form_wizard_entry_ajax.html' + create_form_wizard_entry_template = ( + "foundation5/create_form_wizard_entry.html" + ) + create_form_wizard_entry_ajax_template = ( + "foundation5/create_form_wizard_entry_ajax.html" + ) - edit_form_wizard_entry_template = \ - 'foundation5/edit_form_wizard_entry.html' - edit_form_wizard_entry_ajax_template = \ - 'foundation5/edit_form_wizard_entry_ajax.html' + edit_form_wizard_entry_template = "foundation5/edit_form_wizard_entry.html" + edit_form_wizard_entry_ajax_template = ( + "foundation5/edit_form_wizard_entry_ajax.html" + ) - view_form_wizard_entry_template = \ - 'foundation5/view_form_wizard_entry.html' - view_form_wizard_entry_ajax_template = \ - 'foundation5/view_form_wizard_entry_ajax.html' + view_form_wizard_entry_template = "foundation5/view_form_wizard_entry.html" + view_form_wizard_entry_ajax_template = ( + "foundation5/view_form_wizard_entry_ajax.html" + ) # *********************************************************************** # ************************* Form importer templates ********************* # *********************************************************************** - import_form_entry_template = 'foundation5/import_form_entry.html' - import_form_entry_ajax_template = \ - 'foundation5/import_form_entry_ajax.html' + import_form_entry_template = "foundation5/import_form_entry.html" + import_form_entry_ajax_template = "foundation5/import_form_entry_ajax.html" theme_registry.register(Foundation5Theme) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/__init__.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/__init__.py index 37066f54a..0581125f8 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/__init__.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'content_richtext_foundation5_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "content_richtext_foundation5_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'content_richtext_foundation5_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "content_richtext_foundation5_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/apps.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/apps.py index ac963ae8b..425bb1b2a 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/apps.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'content_richtext_foundation5_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "content_richtext_foundation5_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'content_richtext_foundation5_widget' - label = 'fobi_contrib_themes_foundation5_widgets_form_elements_' \ - 'content_richtext_foundation5_widget' + name = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "content_richtext_foundation5_widget" + ) + label = ( + "fobi_contrib_themes_foundation5_widgets_form_elements_" + "content_richtext_foundation5_widget" + ) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/fobi_form_elements.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/fobi_form_elements.py index 2db4514c5..a1c6b91a1 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/content_richtext_foundation5_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.content.content_richtext.widgets \ - import ( - BaseContentRichTextPluginWidget - ) +from fobi.contrib.plugins.form_elements.content.content_richtext.widgets import ( + BaseContentRichTextPluginWidget, +) from fobi.contrib.themes.foundation5 import UID -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'content_richtext_foundation5_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPluginWidget',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "content_richtext_foundation5_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPluginWidget",) class ContentRichTextPluginWidget(BaseContentRichTextPluginWidget): diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/__init__.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/__init__.py index 74e0b295e..b6478d726 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/__init__.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'date_foundation5_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "date_foundation5_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'date_foundation5_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "date_foundation5_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/apps.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/apps.py index bca8a590b..7d0c36863 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/apps.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'date_foundation5_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "date_foundation5_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'date_foundation5_widget' - label = 'fobi_contrib_themes_foundation5_widgets_form_elements_' \ - 'date_foundation5_widget' + name = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "date_foundation5_widget" + ) + label = ( + "fobi_contrib_themes_foundation5_widgets_form_elements_" + "date_foundation5_widget" + ) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/fobi_form_elements.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/fobi_form_elements.py index ca11966e4..7b77077a5 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/date_foundation5_widget/fobi_form_elements.py @@ -1,15 +1,17 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.fields.date.widgets import ( - BaseDatePluginWidget + BaseDatePluginWidget, ) from fobi.contrib.themes.foundation5 import UID -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'date_foundation5_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DatePluginWidget',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "date_foundation5_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DatePluginWidget",) class DatePluginWidget(BaseDatePluginWidget): @@ -17,12 +19,12 @@ class DatePluginWidget(BaseDatePluginWidget): theme_uid = UID media_js = [ - 'js/moment-with-locales.js', - 'foundation5/js/foundation-datepicker.js', - 'foundation5/js/fobi.plugin.date-foundation5-widget.js', + "js/moment-with-locales.js", + "foundation5/js/foundation-datepicker.js", + "foundation5/js/fobi.plugin.date-foundation5-widget.js", ] media_css = [ - 'foundation5/css/foundation-datepicker.css', + "foundation5/css/foundation-datepicker.css", # 'datetime/css/fobi.plugin.date-foundation5-widget.css', ] diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/__init__.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/__init__.py index 65a2e54d8..b66d84d5b 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/__init__.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'datetime_foundation5_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "datetime_foundation5_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'datetime_foundation5_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "datetime_foundation5_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/apps.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/apps.py index 5569bb5c2..1816b0139 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/apps.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'datetime_foundation5_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "datetime_foundation5_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'datetime_foundation5_widget' - label = 'fobi_contrib_themes_foundation5_widgets_form_elements_' \ - 'datetime_foundation5_widget' + name = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "datetime_foundation5_widget" + ) + label = ( + "fobi_contrib_themes_foundation5_widgets_form_elements_" + "datetime_foundation5_widget" + ) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/fobi_form_elements.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/fobi_form_elements.py index 64e6f15ba..a7a27cb31 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/datetime_foundation5_widget/fobi_form_elements.py @@ -1,15 +1,17 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.fields.datetime.widgets import ( - BaseDateTimePluginWidget + BaseDateTimePluginWidget, ) from fobi.contrib.themes.foundation5 import UID -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'datetime_foundation5_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DateTimePluginWidget',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "datetime_foundation5_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DateTimePluginWidget",) class DateTimePluginWidget(BaseDateTimePluginWidget): @@ -17,12 +19,12 @@ class DateTimePluginWidget(BaseDateTimePluginWidget): theme_uid = UID media_js = [ - 'js/moment-with-locales.js', - 'foundation5/js/foundation-datetimepicker.js', - 'foundation5/js/fobi.plugin.datetime-foundation5-widget.js', + "js/moment-with-locales.js", + "foundation5/js/foundation-datetimepicker.js", + "foundation5/js/fobi.plugin.datetime-foundation5-widget.js", ] media_css = [ - 'foundation5/css/foundation-datetimepicker.css', + "foundation5/css/foundation-datetimepicker.css", # 'datetime/css/fobi.plugin.datetime-foundation5-widget.css', ] diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/__init__.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/__init__.py index a3f43f862..a77cf1569 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/__init__.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'dummy_foundation5_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "dummy_foundation5_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'dummy_foundation5_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "dummy_foundation5_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/apps.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/apps.py index 97e6c395f..a26a1381e 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/apps.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'dummy_foundation5_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "dummy_foundation5_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'dummy_foundation5_widget' - label = 'fobi_contrib_themes_foundation5_widgets_form_elements_' \ - 'dummy_foundation5_widget' + name = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "dummy_foundation5_widget" + ) + label = ( + "fobi_contrib_themes_foundation5_widgets_form_elements_" + "dummy_foundation5_widget" + ) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/fobi_form_elements.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/fobi_form_elements.py index fcb723efd..300055cba 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/dummy_foundation5_widget/fobi_form_elements.py @@ -1,15 +1,17 @@ from fobi.base import form_element_plugin_widget_registry from fobi.contrib.plugins.form_elements.test.dummy.widgets import ( - BaseDummyPluginWidget + BaseDummyPluginWidget, ) from fobi.contrib.themes.foundation5 import UID -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'dummy_foundation5_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DummyPluginWidget',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "dummy_foundation5_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DummyPluginWidget",) class DummyPluginWidget(BaseDummyPluginWidget): diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/__init__.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/__init__.py index bec8752af..7e21089ee 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/__init__.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'invisible_recaptcha_foundation5_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "invisible_recaptcha_foundation5_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'invisible_recaptcha_foundation5_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "invisible_recaptcha_foundation5_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/apps.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/apps.py index 3e604c6fe..f17e352c4 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/apps.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'invisible_recaptcha_foundation5_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "invisible_recaptcha_foundation5_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'invisible_recaptcha_foundation5_widget' - label = 'fobi_contrib_themes_foundation5_widgets_form_elements_' \ - 'invisible_recaptcha_foundation5_widget' + name = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "invisible_recaptcha_foundation5_widget" + ) + label = ( + "fobi_contrib_themes_foundation5_widgets_form_elements_" + "invisible_recaptcha_foundation5_widget" + ) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/fobi_form_elements.py b/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/fobi_form_elements.py index 12077cc69..99eda7492 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_elements/invisible_recaptcha_foundation5_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets \ - import ( - BaseInvisibleRecaptchaWidget - ) +from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets import ( + BaseInvisibleRecaptchaWidget, +) from fobi.contrib.themes.foundation5 import UID -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_elements.' \ - 'invisible_recaptcha_foundation5_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaWidget',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_elements." + "invisible_recaptcha_foundation5_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaWidget",) class InvisibleRecaptchaWidget(BaseInvisibleRecaptchaWidget): diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/__init__.py b/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/__init__.py index f237253d4..bc3df5978 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/__init__.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_handlers.' \ - 'db_store_foundation5_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_handlers." + "db_store_foundation5_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.foundation5.widgets.form_handlers.' \ - 'db_store_foundation5_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.foundation5.widgets.form_handlers." + "db_store_foundation5_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/apps.py b/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/apps.py index 9495eca3a..b13345139 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/apps.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_handlers.' \ - 'db_store_foundation5_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_handlers." + "db_store_foundation5_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.foundation5.widgets.form_handlers.' \ - 'db_store_foundation5_widget' - label = 'fobi_contrib_themes_foundation5_widgets_form_handlers_' \ - 'db_store_foundation5_widget' + name = ( + "fobi.contrib.themes.foundation5.widgets.form_handlers." + "db_store_foundation5_widget" + ) + label = ( + "fobi_contrib_themes_foundation5_widgets_form_handlers_" + "db_store_foundation5_widget" + ) diff --git a/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/fobi_form_elements.py b/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/fobi_form_elements.py index 68fce9efb..e37c05627 100644 --- a/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/foundation5/widgets/form_handlers/db_store_foundation5_widget/fobi_form_elements.py @@ -1,25 +1,28 @@ from fobi.base import form_handler_plugin_widget_registry from fobi.contrib.plugins.form_handlers.db_store.widgets import ( - BaseDbStorePluginWidget + BaseDbStorePluginWidget, ) from fobi.contrib.themes.foundation5 import UID -__title__ = 'fobi.contrib.themes.foundation5.widgets.form_handlers.' \ - 'db_store_foundation5_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DbStorePluginWidget',) +__title__ = ( + "fobi.contrib.themes.foundation5.widgets.form_handlers." + "db_store_foundation5_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DbStorePluginWidget",) class DbStorePluginWidget(BaseDbStorePluginWidget): """DbStore plugin widget for Foundation 5.""" theme_uid = UID - view_entries_icon_class = 'fi-list' - export_entries_icon_class = 'fi-page-export' - view_saved_form_data_entries_template_name = \ - 'db_store_foundation5_widget/view_saved_form_data_entries.html' + view_entries_icon_class = "fi-list" + export_entries_icon_class = "fi-page-export" + view_saved_form_data_entries_template_name = ( + "db_store_foundation5_widget/view_saved_form_data_entries.html" + ) # Registering the widget diff --git a/src/fobi/contrib/themes/simple/__init__.py b/src/fobi/contrib/themes/simple/__init__.py index 1492ea9c3..8e8c43759 100644 --- a/src/fobi/contrib/themes/simple/__init__.py +++ b/src/fobi/contrib/themes/simple/__init__.py @@ -1,9 +1,12 @@ -__title__ = 'fobi.contrib.themes.simple' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config', 'UID',) +__title__ = "fobi.contrib.themes.simple" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ( + "default_app_config", + "UID", +) -default_app_config = 'fobi.contrib.themes.simple.apps.Config' +default_app_config = "fobi.contrib.themes.simple.apps.Config" -UID = 'simple' +UID = "simple" diff --git a/src/fobi/contrib/themes/simple/apps.py b/src/fobi/contrib/themes/simple/apps.py index 9a64da070..df1023470 100644 --- a/src/fobi/contrib/themes/simple/apps.py +++ b/src/fobi/contrib/themes/simple/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.simple.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.themes.simple.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.simple' - label = 'fobi_contrib_themes_simple' + name = "fobi.contrib.themes.simple" + label = "fobi_contrib_themes_simple" diff --git a/src/fobi/contrib/themes/simple/fobi_themes.py b/src/fobi/contrib/themes/simple/fobi_themes.py index 5ac642f05..bf9c25545 100644 --- a/src/fobi/contrib/themes/simple/fobi_themes.py +++ b/src/fobi/contrib/themes/simple/fobi_themes.py @@ -3,11 +3,11 @@ from fobi.base import BaseTheme, theme_registry from fobi.contrib.themes.simple import UID -__title__ = 'fobi.contrib.themes.simple.fobi_themes' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SimpleTheme',) +__title__ = "fobi.contrib.themes.simple.fobi_themes" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SimpleTheme",) class SimpleTheme(BaseTheme): @@ -20,16 +20,16 @@ class SimpleTheme(BaseTheme): # 'admin/css/base.css', # 'admin/css/forms.css', # 'admin/css/widgets.css', - 'simple/css/fobi.simple.css', - 'jquery-ui/css/django-admin-theme/jquery-ui-1.10.4.custom.min.css', + "simple/css/fobi.simple.css", + "jquery-ui/css/django-admin-theme/jquery-ui-1.10.4.custom.min.css", # 'admin_tools/css/menu.css', # TODO at least a conditional insert ) media_js = ( - 'js/jquery-1.10.2.min.js', - 'jquery-ui/js/jquery-ui-1.10.4.custom.min.js', - 'js/jquery.slugify.js', - 'js/fobi.core.js', + "js/jquery-1.10.2.min.js", + "jquery-ui/js/jquery-ui-1.10.4.custom.min.js", + "js/jquery.slugify.js", + "js/fobi.core.js", # 'js/fobi.simple.js', ) @@ -40,21 +40,21 @@ class SimpleTheme(BaseTheme): # ********************** Form HTML specific ***************************** # *********************************************************************** # *********************************************************************** - form_element_html_class = 'vTextField' - form_radio_element_html_class = 'radiolist' - form_element_checkbox_html_class = 'checkbox' + form_element_html_class = "vTextField" + form_radio_element_html_class = "radiolist" + form_element_checkbox_html_class = "checkbox" # Important - form_view_form_entry_option_class = 'glyphicon glyphicon-list' + form_view_form_entry_option_class = "glyphicon glyphicon-list" # Important - form_edit_form_entry_option_class = 'glyphicon glyphicon-edit' + form_edit_form_entry_option_class = "glyphicon glyphicon-edit" # Important - form_delete_form_entry_option_class = 'glyphicon glyphicon-remove' + form_delete_form_entry_option_class = "glyphicon glyphicon-remove" # Important - form_list_container_class = 'list-inline' + form_list_container_class = "list-inline" # *********************************************************************** # *********************************************************************** @@ -66,65 +66,71 @@ class SimpleTheme(BaseTheme): # *************************** Base templates **************************** # *********************************************************************** - master_base_template = 'simple/_base.html' - base_template = 'simple/base.html' - base_view_template = 'simple/base_view.html' - base_edit_template = 'simple/base_edit.html' + master_base_template = "simple/_base.html" + base_template = "simple/base.html" + base_view_template = "simple/base_view.html" + base_edit_template = "simple/base_edit.html" # *********************************************************************** # ***************************** Snippets ******************************** # *********************************************************************** - form_snippet_template_name = 'simple/snippets/form_snippet.html' - form_properties_snippet_template_name = \ - 'simple/snippets/form_properties_snippet.html' - messages_snippet_template_name = 'simple/snippets/messages_snippet.html' - form_ajax = 'simple/snippets/form_ajax.html' - form_view_snippet_template_name = 'simple/snippets/form_view_snippet.html' + form_snippet_template_name = "simple/snippets/form_snippet.html" + form_properties_snippet_template_name = ( + "simple/snippets/form_properties_snippet.html" + ) + messages_snippet_template_name = "simple/snippets/messages_snippet.html" + form_ajax = "simple/snippets/form_ajax.html" + form_view_snippet_template_name = "simple/snippets/form_view_snippet.html" - form_edit_ajax = 'simple/snippets/form_edit_ajax.html' - form_edit_snippet_template_name = 'simple/snippets/form_edit_snippet.html' + form_edit_ajax = "simple/snippets/form_edit_ajax.html" + form_edit_snippet_template_name = "simple/snippets/form_edit_snippet.html" - form_wizard_snippet_template_name = \ - 'simple/snippets/form_wizard_snippet.html' + form_wizard_snippet_template_name = ( + "simple/snippets/form_wizard_snippet.html" + ) - form_wizard_properties_snippet_template_name = \ - 'simple/snippets/form_wizard_properties_snippet.html' + form_wizard_properties_snippet_template_name = ( + "simple/snippets/form_wizard_properties_snippet.html" + ) # *********************************************************************** # **************************** Form entry CRUD ************************** # *********************************************************************** - create_form_entry_template = 'simple/create_form_entry.html' - create_form_entry_ajax_template = 'simple/create_form_entry_ajax.html' + create_form_entry_template = "simple/create_form_entry.html" + create_form_entry_ajax_template = "simple/create_form_entry_ajax.html" - edit_form_entry_template = 'simple/edit_form_entry.html' - edit_form_entry_ajax_template = 'simple/edit_form_entry_ajax.html' + edit_form_entry_template = "simple/edit_form_entry.html" + edit_form_entry_ajax_template = "simple/edit_form_entry_ajax.html" - form_entry_submitted_template = 'simple/form_entry_submitted.html' - form_entry_submitted_ajax_template = \ - 'simple/form_entry_submitted_ajax.html' + form_entry_submitted_template = "simple/form_entry_submitted.html" + form_entry_submitted_ajax_template = "simple/form_entry_submitted_ajax.html" - view_form_entry_template = 'simple/view_form_entry.html' - view_form_entry_ajax_template = 'simple/view_form_entry_ajax.html' + view_form_entry_template = "simple/view_form_entry.html" + view_form_entry_ajax_template = "simple/view_form_entry_ajax.html" # *********************************************************************** # *********************** Form element entry CUD ************************ # *********************************************************************** - add_form_element_entry_template = 'simple/add_form_element_entry.html' - add_form_element_entry_ajax_template = \ - 'simple/add_form_element_entry_ajax.html' + add_form_element_entry_template = "simple/add_form_element_entry.html" + add_form_element_entry_ajax_template = ( + "simple/add_form_element_entry_ajax.html" + ) - edit_form_element_entry_template = 'simple/edit_form_element_entry.html' - edit_form_element_entry_ajax_template = \ - 'simple/edit_form_element_entry_ajax.html' + edit_form_element_entry_template = "simple/edit_form_element_entry.html" + edit_form_element_entry_ajax_template = ( + "simple/edit_form_element_entry_ajax.html" + ) # *********************************************************************** # *********************** Form handler entry CUD ************************ # *********************************************************************** - add_form_handler_entry_template = 'simple/add_form_handler_entry.html' - add_form_handler_entry_ajax_template = \ - 'simple/add_form_handler_entry_ajax.html' + add_form_handler_entry_template = "simple/add_form_handler_entry.html" + add_form_handler_entry_ajax_template = ( + "simple/add_form_handler_entry_ajax.html" + ) - edit_form_handler_entry_template = 'simple/edit_form_handler_entry.html' - edit_form_handler_entry_ajax_template = \ - 'simple/edit_form_handler_entry_ajax.html' + edit_form_handler_entry_template = "simple/edit_form_handler_entry.html" + edit_form_handler_entry_ajax_template = ( + "simple/edit_form_handler_entry_ajax.html" + ) # *********************************************************************** # ******************* Form wizard handler entry CUD ********************* @@ -133,33 +139,33 @@ class SimpleTheme(BaseTheme): # *********************************************************************** # ***************************** Dashboard ******************************* # *********************************************************************** - dashboard_template = 'simple/dashboard.html' - forms_list_template = 'simple/forms_list.html' + dashboard_template = "simple/dashboard.html" + forms_list_template = "simple/forms_list.html" # *********************************************************************** # ************************ Form wizard entry CUD ************************ # *********************************************************************** - create_form_wizard_entry_template = \ - 'simple/create_form_wizard_entry.html' - create_form_wizard_entry_ajax_template = \ - 'simple/create_form_wizard_entry_ajax.html' + create_form_wizard_entry_template = "simple/create_form_wizard_entry.html" + create_form_wizard_entry_ajax_template = ( + "simple/create_form_wizard_entry_ajax.html" + ) - edit_form_wizard_entry_template = \ - 'simple/edit_form_wizard_entry.html' - edit_form_wizard_entry_ajax_template = \ - 'simple/edit_form_wizard_entry_ajax.html' + edit_form_wizard_entry_template = "simple/edit_form_wizard_entry.html" + edit_form_wizard_entry_ajax_template = ( + "simple/edit_form_wizard_entry_ajax.html" + ) - view_form_wizard_entry_template = \ - 'simple/view_form_wizard_entry.html' - view_form_wizard_entry_ajax_template = \ - 'simple/view_form_wizard_entry_ajax.html' + view_form_wizard_entry_template = "simple/view_form_wizard_entry.html" + view_form_wizard_entry_ajax_template = ( + "simple/view_form_wizard_entry_ajax.html" + ) # *********************************************************************** # ************************* Form importer templates ********************* # *********************************************************************** - import_form_entry_template = 'simple/import_form_entry.html' - import_form_entry_ajax_template = 'simple/import_form_entry_ajax.html' + import_form_entry_template = "simple/import_form_entry.html" + import_form_entry_ajax_template = "simple/import_form_entry_ajax.html" theme_registry.register(SimpleTheme) diff --git a/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/__init__.py b/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/__init__.py index 9fab64a5a..97b9402e2 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/__init__.py +++ b/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'content_richtext_simple_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "content_richtext_simple_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'content_richtext_simple_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "content_richtext_simple_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/apps.py b/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/apps.py index ef04ea426..560b56f21 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/apps.py +++ b/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'content_richtext_simple_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "content_richtext_simple_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'content_richtext_simple_widget' - label = 'fobi_contrib_themes_simple_widgets_form_elements_' \ - 'content_richtext_simple_widget' + name = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "content_richtext_simple_widget" + ) + label = ( + "fobi_contrib_themes_simple_widgets_form_elements_" + "content_richtext_simple_widget" + ) diff --git a/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/fobi_form_elements.py b/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/fobi_form_elements.py index df3386961..973dda778 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/simple/widgets/form_elements/content_richtext_simple_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.content.content_richtext.widgets \ - import ( - BaseContentRichTextPluginWidget - ) +from fobi.contrib.plugins.form_elements.content.content_richtext.widgets import ( + BaseContentRichTextPluginWidget, +) from fobi.contrib.themes.simple import UID -__title__ = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'content_richtext_simple_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('ContentRichTextPluginWidget',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "content_richtext_simple_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("ContentRichTextPluginWidget",) class ContentRichTextPluginWidget(BaseContentRichTextPluginWidget): diff --git a/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/__init__.py b/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/__init__.py index 52f6f33cf..69565a214 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/__init__.py +++ b/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/__init__.py @@ -1,9 +1,13 @@ -__title__ = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'invisible_recaptcha_simple_widget' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "invisible_recaptcha_simple_widget" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'invisible_recaptcha_simple_widget.apps.Config' +default_app_config = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "invisible_recaptcha_simple_widget.apps.Config" +) diff --git a/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/apps.py b/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/apps.py index c1e2be703..22bfc2ee2 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/apps.py +++ b/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/apps.py @@ -1,17 +1,23 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'invisible_recaptcha_simple_widget.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "invisible_recaptcha_simple_widget.apps" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'invisible_recaptcha_simple_widget' - label = 'fobi_contrib_themes_simple_widgets_form_elements_' \ - 'invisible_recaptcha_simple_widget' + name = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "invisible_recaptcha_simple_widget" + ) + label = ( + "fobi_contrib_themes_simple_widgets_form_elements_" + "invisible_recaptcha_simple_widget" + ) diff --git a/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/fobi_form_elements.py b/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/fobi_form_elements.py index bb74b0516..92bfab2fb 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/fobi_form_elements.py +++ b/src/fobi/contrib/themes/simple/widgets/form_elements/invisible_recaptcha_simple_widget/fobi_form_elements.py @@ -1,16 +1,17 @@ from fobi.base import form_element_plugin_widget_registry -from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets \ - import ( - BaseInvisibleRecaptchaWidget - ) +from fobi.contrib.plugins.form_elements.security.invisible_recaptcha.widgets import ( + BaseInvisibleRecaptchaWidget, +) from fobi.contrib.themes.simple import UID -__title__ = 'fobi.contrib.themes.simple.widgets.form_elements.' \ - 'invisible_recaptcha_simple_widget.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('InvisibleRecaptchaWidget',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_elements." + "invisible_recaptcha_simple_widget.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("InvisibleRecaptchaWidget",) class InvisibleRecaptchaWidget(BaseInvisibleRecaptchaWidget): diff --git a/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/__init__.py b/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/__init__.py index 289e1cb51..20bf91b1a 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/__init__.py +++ b/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/__init__.py @@ -1,8 +1,9 @@ -__title__ = 'fobi.contrib.themes.simple.widgets.form_handlers.db_store' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('default_app_config',) +__title__ = "fobi.contrib.themes.simple.widgets.form_handlers.db_store" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("default_app_config",) -default_app_config = 'fobi.contrib.themes.simple.widgets.form_handlers.' \ - 'db_store.apps.Config' +default_app_config = ( + "fobi.contrib.themes.simple.widgets.form_handlers." "db_store.apps.Config" +) diff --git a/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/apps.py b/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/apps.py index 93498dee9..cf8932e33 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/apps.py +++ b/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/apps.py @@ -1,14 +1,14 @@ from django.apps import AppConfig -__title__ = 'fobi.contrib.themes.simple.widgets.form_handlers.db_store.apps' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('Config',) +__title__ = "fobi.contrib.themes.simple.widgets.form_handlers.db_store.apps" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("Config",) class Config(AppConfig): """Config.""" - name = 'fobi.contrib.themes.simple.widgets.form_handlers.db_store' - label = 'fobi_contrib_themes_simple_widgets_form_handlers_db_store' + name = "fobi.contrib.themes.simple.widgets.form_handlers.db_store" + label = "fobi_contrib_themes_simple_widgets_form_handlers_db_store" diff --git a/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/fobi_form_elements.py b/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/fobi_form_elements.py index bf7ea4f66..96026dc34 100644 --- a/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/fobi_form_elements.py +++ b/src/fobi/contrib/themes/simple/widgets/form_handlers/db_store/fobi_form_elements.py @@ -1,23 +1,25 @@ from fobi.base import form_handler_plugin_widget_registry from fobi.contrib.plugins.form_handlers.db_store.widgets import ( - BaseDbStorePluginWidget + BaseDbStorePluginWidget, ) from fobi.contrib.themes.simple import UID -__title__ = 'fobi.contrib.themes.simple.widgets.form_handlers.' \ - 'db_store.fobi_form_elements' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('DbStorePluginWidget',) +__title__ = ( + "fobi.contrib.themes.simple.widgets.form_handlers." + "db_store.fobi_form_elements" +) +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("DbStorePluginWidget",) class DbStorePluginWidget(BaseDbStorePluginWidget): """DbStore plugin widget for Simple theme.""" theme_uid = UID - view_entries_icon_class = '' - export_entries_icon_class = '' + view_entries_icon_class = "" + export_entries_icon_class = "" # Registering the widget diff --git a/src/fobi/data_structures.py b/src/fobi/data_structures.py index 9ddaa3670..6fda0ca86 100644 --- a/src/fobi/data_structures.py +++ b/src/fobi/data_structures.py @@ -2,11 +2,11 @@ import six -__title__ = 'fobi.data_structures' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('SortableDict', ) +__title__ = "fobi.data_structures" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("SortableDict",) class SortableDict(dict): @@ -41,8 +41,9 @@ def __init__(self, data=None): super_set(key, value) def __deepcopy__(self, memo): - return self.__class__([(key, copy.deepcopy(value, memo)) - for key, value in self.items()]) + return self.__class__( + [(key, copy.deepcopy(value, memo)) for key, value in self.items()] + ) def __copy__(self): # The Python's default copy implementation will alter the state @@ -152,8 +153,9 @@ def __repr__(self): Replaces the normal dict.__repr__ with a version that returns the keys in their sorted order. """ - return '{%s}' % ', '.join(['%r: %r' % (key, val) - for key, val in six.iteritems(self)]) + return "{%s}" % ", ".join( + ["%r: %r" % (key, val) for key, val in six.iteritems(self)] + ) def clear(self): """Clear.""" @@ -164,9 +166,9 @@ def clear(self): # ************************** Additional methods *************************** # ************************************************************************* - def insert_before_key(self, target_key, key, value, - fail_silently=True, - offset=0): + def insert_before_key( + self, target_key, key, value, fail_silently=True, offset=0 + ): """Insert the {``key``: ``value``} before the ``target_key``. :param immutable target_key: @@ -197,15 +199,17 @@ def insert_after_key(self, target_key, key, value, fail_silently=True): :param int offset: :return bool: """ - return self.insert_before_key(target_key=target_key, - key=key, - value=value, - fail_silently=fail_silently, - offset=1) - - def move_before_key(self, source_key, target_key, - fail_silently=True, - offset=0): + return self.insert_before_key( + target_key=target_key, + key=key, + value=value, + fail_silently=fail_silently, + offset=1, + ) + + def move_before_key( + self, source_key, target_key, fail_silently=True, offset=0 + ): """Move the {``key``: ``value``} before the given ``source_key``. :param immutable source_key: @@ -216,12 +220,17 @@ def move_before_key(self, source_key, target_key, """ if target_key in self.key_order and source_key in self.key_order: source_value = self.pop(source_key) - return self.insert_before_key(target_key, source_key, source_value, - fail_silently=True, - offset=offset) + return self.insert_before_key( + target_key, + source_key, + source_value, + fail_silently=True, + offset=offset, + ) elif not fail_silently: - raise ValueError("Non existing keys: {0}, {1}.".format(source_key, - target_key)) + raise ValueError( + "Non existing keys: {0}, {1}.".format(source_key, target_key) + ) else: return False @@ -233,7 +242,9 @@ def move_after_key(self, source_key, target_key, fail_silently=True): :param boolean fail_silently: :return bool: """ - return self.move_before_key(source_key=source_key, - target_key=target_key, - fail_silently=fail_silently, - offset=1) + return self.move_before_key( + source_key=source_key, + target_key=target_key, + fail_silently=fail_silently, + offset=1, + ) diff --git a/src/fobi/decorators.py b/src/fobi/decorators.py index 553429a25..593019639 100644 --- a/src/fobi/decorators.py +++ b/src/fobi/decorators.py @@ -1,27 +1,28 @@ -from django.core.exceptions import PermissionDenied from django.contrib.auth.decorators import user_passes_test +from django.core.exceptions import PermissionDenied -SATISFY_ANY = 'any' -SATISFY_ALL = 'all' +SATISFY_ANY = "any" +SATISFY_ALL = "all" DEFAULT_SATISFY = SATISFY_ALL -__title__ = 'fobi.decorators' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.decorators" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'SATISFY_ANY', - 'SATISFY_ALL', - 'DEFAULT_SATISFY', - 'permissions_required', - 'all_permissions_required', - 'any_permission_required', + "SATISFY_ANY", + "SATISFY_ALL", + "DEFAULT_SATISFY", + "permissions_required", + "all_permissions_required", + "any_permission_required", ) -def permissions_required(perms, satisfy=DEFAULT_SATISFY, login_url=None, - raise_exception=False): +def permissions_required( + perms, satisfy=DEFAULT_SATISFY, login_url=None, raise_exception=False +): """Check for the permissions given based on the strategy chosen. :param iterable perms: @@ -57,6 +58,7 @@ def check_perms(user): raise PermissionDenied # As the last resort, show the login form return False + else: # ``SATISFY_ANY`` case def check_perms(user): @@ -90,9 +92,12 @@ def all_permissions_required(perms, login_url=None, raise_exception=False): >>> def edit_dashboard(request): >>> # your code """ - return permissions_required(perms, satisfy=SATISFY_ALL, - login_url=login_url, - raise_exception=raise_exception) + return permissions_required( + perms, + satisfy=SATISFY_ALL, + login_url=login_url, + raise_exception=raise_exception, + ) def any_permission_required(perms, login_url=None, raise_exception=False): @@ -111,6 +116,9 @@ def any_permission_required(perms, login_url=None, raise_exception=False): >>> def edit_dashboard(request): >>> # your code """ - return permissions_required(perms, satisfy=SATISFY_ANY, - login_url=login_url, - raise_exception=raise_exception) + return permissions_required( + perms, + satisfy=SATISFY_ANY, + login_url=login_url, + raise_exception=raise_exception, + ) diff --git a/src/fobi/defaults.py b/src/fobi/defaults.py index c28ed6d08..30cf74565 100644 --- a/src/fobi/defaults.py +++ b/src/fobi/defaults.py @@ -1,38 +1,38 @@ import os -__title__ = 'fobi.defaults' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.defaults" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'CUSTOM_THEME_DATA', - 'DEBUG', - 'DEFAULT_MAX_LENGTH', - 'DEFAULT_THEME', - 'DISPLAY_AUTH_LINK', - 'FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS', - 'FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS', - 'FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS', - 'FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS', - 'FAIL_ON_MISSING_FORM_HANDLER_PLUGINS', - 'FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS', - 'FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS', - 'FORM_CALLBACKS_MODULE_NAME', - 'FORM_ELEMENT_PLUGINS_MODULE_NAME', - 'FORM_HANDLER_PLUGINS_EXECUTION_ORDER', - 'FORM_HANDLER_PLUGINS_MODULE_NAME', - 'FORM_IMPORTER_PLUGINS_MODULE_NAME', - 'FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER', - 'GET_PARAM_INITIAL_DATA', - 'SORT_PLUGINS_BY_VALUE', - 'INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME', - 'INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME', - 'RESTRICT_PLUGIN_ACCESS', - 'THEME_FOOTER_TEXT', - 'THEMES_MODULE_NAME', - 'WAIT_AT_TEST_END', - 'WAIT_BETWEEN_TEST_STEPS', - 'WIZARD_FILES_UPLOAD_DIR', + "CUSTOM_THEME_DATA", + "DEBUG", + "DEFAULT_MAX_LENGTH", + "DEFAULT_THEME", + "DISPLAY_AUTH_LINK", + "FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS", + "FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS", + "FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS", + "FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS", + "FAIL_ON_MISSING_FORM_HANDLER_PLUGINS", + "FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS", + "FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS", + "FORM_CALLBACKS_MODULE_NAME", + "FORM_ELEMENT_PLUGINS_MODULE_NAME", + "FORM_HANDLER_PLUGINS_EXECUTION_ORDER", + "FORM_HANDLER_PLUGINS_MODULE_NAME", + "FORM_IMPORTER_PLUGINS_MODULE_NAME", + "FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER", + "GET_PARAM_INITIAL_DATA", + "SORT_PLUGINS_BY_VALUE", + "INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME", + "INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME", + "RESTRICT_PLUGIN_ACCESS", + "THEME_FOOTER_TEXT", + "THEMES_MODULE_NAME", + "WAIT_AT_TEST_END", + "WAIT_BETWEEN_TEST_STEPS", + "WIZARD_FILES_UPLOAD_DIR", ) # ************************************************************** @@ -47,33 +47,33 @@ RESTRICT_PLUGIN_ACCESS = True # Name of the module in which the fobi form field plugins are registered. -FORM_ELEMENT_PLUGINS_MODULE_NAME = 'fobi_form_elements' +FORM_ELEMENT_PLUGINS_MODULE_NAME = "fobi_form_elements" # Name of the module in which the fobi form handler plugins are registered. -FORM_HANDLER_PLUGINS_MODULE_NAME = 'fobi_form_handlers' +FORM_HANDLER_PLUGINS_MODULE_NAME = "fobi_form_handlers" # Name of the module in which the fobi integration form element plugins are # registered. -INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME = 'fobi_integration_form_elements' +INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME = "fobi_integration_form_elements" # Name of the module in which the fobi integration form handler plugins are # registered. -INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME = 'fobi_integration_form_handlers' +INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME = "fobi_integration_form_handlers" # Name of the module in which the fobi form importer plugins are registered. -FORM_IMPORTER_PLUGINS_MODULE_NAME = 'fobi_form_importers' +FORM_IMPORTER_PLUGINS_MODULE_NAME = "fobi_form_importers" # Name of the module in which the fobi form calacks are registered. -FORM_CALLBACKS_MODULE_NAME = 'fobi_form_callbacks' +FORM_CALLBACKS_MODULE_NAME = "fobi_form_callbacks" # Name of the module in which the fobi themes are discovered. -THEMES_MODULE_NAME = 'fobi_themes' +THEMES_MODULE_NAME = "fobi_themes" # Default theme -DEFAULT_THEME = 'bootstrap3' +DEFAULT_THEME = "bootstrap3" # GET param to tell whether initial data shall be loaded. -GET_PARAM_INITIAL_DATA = 'fobi_initial_data' +GET_PARAM_INITIAL_DATA = "fobi_initial_data" DISPLAY_AUTH_LINK = True @@ -86,7 +86,7 @@ # ************************************************************** CUSTOM_THEME_DATA = {} -THEME_FOOTER_TEXT = '© django-fobi example site 2014' +THEME_FOOTER_TEXT = "© django-fobi example site 2014" # ************************************************************** # ************************************************************** @@ -98,15 +98,15 @@ DEFAULT_MIN_LENGTH = 1 FORM_HANDLER_PLUGINS_EXECUTION_ORDER = ( - 'http_repost', - 'mail', + "http_repost", + "mail", # The 'db_store' is left out intentionally, since it should # be the last plugin to be executed. ) FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER = ( - 'http_repost', - 'mail', + "http_repost", + "mail", # The 'db_store' is left out intentionally, since it should # be the last plugin to be executed. ) @@ -129,7 +129,7 @@ # ************************************************************** # Relative path. If relative path provided, `MEDIA_ROOT` would be prepended. -WIZARD_FILES_UPLOAD_DIR = os.path.join('fobi_wizards', 'files') +WIZARD_FILES_UPLOAD_DIR = os.path.join("fobi_wizards", "files") # ************************************************************** # ************************************************************** diff --git a/src/fobi/discover.py b/src/fobi/discover.py index 4e88b0fea..dfd4c4c55 100644 --- a/src/fobi/discover.py +++ b/src/fobi/discover.py @@ -2,20 +2,19 @@ import logging import sys +import six # from django.conf import settings from django.utils.module_loading import autodiscover_modules -import six - from .conf import get_setting logger = logging.getLogger(__file__) -__title__ = 'fobi.discover' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('autodiscover',) +__title__ = "fobi.discover" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("autodiscover",) def autodiscover(): @@ -30,28 +29,24 @@ def autodiscover(): sys.setrecursionlimit(recursion_limit) FORM_ELEMENT_PLUGINS_MODULE_NAME = get_setting( - 'FORM_ELEMENT_PLUGINS_MODULE_NAME' + "FORM_ELEMENT_PLUGINS_MODULE_NAME" ) FORM_HANDLER_PLUGINS_MODULE_NAME = get_setting( - 'FORM_HANDLER_PLUGINS_MODULE_NAME' - ) - THEMES_MODULE_NAME = get_setting( - 'THEMES_MODULE_NAME' - ) - FORM_CALLBACKS_MODULE_NAME = get_setting( - 'FORM_CALLBACKS_MODULE_NAME' + "FORM_HANDLER_PLUGINS_MODULE_NAME" ) + THEMES_MODULE_NAME = get_setting("THEMES_MODULE_NAME") + FORM_CALLBACKS_MODULE_NAME = get_setting("FORM_CALLBACKS_MODULE_NAME") INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME = get_setting( - 'INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME' + "INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME" ) INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME = get_setting( - 'INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME' + "INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME" ) FORM_IMPORTER_PLUGINS_MODULE_NAME = get_setting( - 'FORM_IMPORTER_PLUGINS_MODULE_NAME' + "FORM_IMPORTER_PLUGINS_MODULE_NAME" ) # Discover modules diff --git a/src/fobi/dynamic.py b/src/fobi/dynamic.py index 9c3076a6d..0f7249e70 100644 --- a/src/fobi/dynamic.py +++ b/src/fobi/dynamic.py @@ -4,24 +4,22 @@ from django.forms.widgets import media_property from django.http import HttpResponseRedirect from django.urls import reverse - from formtools.wizard.views import ( CookieWizardView, SessionWizardView, WizardView, ) - from six import with_metaclass from .constants import WIZARD_TYPE_COOKIE, WIZARD_TYPE_SESSION -__title__ = 'fobi.dynamic' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.dynamic" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'assemble_form_class', - 'assemble_form_wizard_class', + "assemble_form_class", + "assemble_form_wizard_class", ) # **************************************************************************** @@ -31,14 +29,16 @@ # **************************************************************************** -def assemble_form_class(form_entry, - base_class=BaseForm, - request=None, - origin=None, - origin_kwargs_update_func=None, - origin_return_func=None, - form_element_entries=None, - get_form_field_instances_kwargs={}): +def assemble_form_class( + form_entry, + base_class=BaseForm, + request=None, + origin=None, + origin_kwargs_update_func=None, + origin_return_func=None, + form_element_entries=None, + get_form_field_instances_kwargs={}, +): """Assemble a form class by given entry. :param form_entry: @@ -69,38 +69,42 @@ def __new__(cls, name, bases, attrs): """New.""" base_fields = [] - for creation_counter, form_element_entry \ - in enumerate(form_element_entries): + for creation_counter, form_element_entry in enumerate( + form_element_entries + ): plugin = form_element_entry.get_plugin(request=request) # We simply make sure the plugin exists. We don't handle # exceptions relate to the non-existent plugins here. They # are instead handled in registry. if plugin: - plugin_form_field_instances = \ + plugin_form_field_instances = ( plugin._get_form_field_instances( form_element_entry=form_element_entry, origin=origin, kwargs_update_func=origin_kwargs_update_func, return_func=origin_return_func, - extra={'counter': creation_counter}, + extra={"counter": creation_counter}, request=request, form_entry=form_entry, form_element_entries=form_element_entries, - **get_form_field_instances_kwargs + **get_form_field_instances_kwargs, ) - for form_field_name, form_field_instance \ - in plugin_form_field_instances: + ) + for ( + form_field_name, + form_field_instance, + ) in plugin_form_field_instances: base_fields.append( (form_field_name, form_field_instance) ) - attrs['base_fields'] = OrderedDict(base_fields) + attrs["base_fields"] = OrderedDict(base_fields) new_class = super(DeclarativeFieldsMetaclass, cls).__new__( cls, name, bases, attrs ) - if 'media' not in attrs: + if "media" not in attrs: new_class.media = media_property(new_class) return new_class @@ -113,14 +117,16 @@ class DynamicForm(with_metaclass(DeclarativeFieldsMetaclass, base_class)): return DynamicForm -def assemble_form_wizard_class(form_wizard_entry, - base_class=SessionWizardView, - request=None, - origin=None, - origin_kwargs_update_func=None, - origin_return_func=None, - form_wizard_form_entries=None, - template_name=None): +def assemble_form_wizard_class( + form_wizard_entry, + base_class=SessionWizardView, + request=None, + origin=None, + origin_kwargs_update_func=None, + origin_return_func=None, + form_wizard_form_entries=None, + template_name=None, +): """Assemble form wizard class. :param form_wizard_entry: @@ -144,14 +150,12 @@ def assemble_form_wizard_class(form_wizard_entry, if form_wizard_form_entries is None: form_entries = [ form_wizard_form_entry.form_entry - for form_wizard_form_entry - in form_wizard_entry.formwizardformentry_set.all() + for form_wizard_form_entry in form_wizard_entry.formwizardformentry_set.all() ] else: form_entries = [ form_wizard_form_entry.form_entry - for form_wizard_form_entry - in form_wizard_form_entries + for form_wizard_form_entry in form_wizard_form_entries ] # DeclarativeFormsMetaclass @@ -182,20 +186,14 @@ def __new__(cls, name, bases, attrs): """ form_list = [] - for creation_counter, form_entry \ - in enumerate(form_entries): + for creation_counter, form_entry in enumerate(form_entries): - form_cls = assemble_form_class( - form_entry, - request=request - ) + form_cls = assemble_form_class(form_entry, request=request) - form_list.append( - (form_entry.slug, form_cls) - ) + form_list.append((form_entry.slug, form_cls)) - attrs['form_list'] = form_list - attrs['template_name'] = template_name + attrs["form_list"] = form_list + attrs["template_name"] = template_name new_class = super(DeclarativeFormsMetaclass, cls).__new__( cls, name, bases, attrs ) @@ -206,15 +204,17 @@ def __new__(cls, name, bases, attrs): return new_class # DynamicFormWizard - class DynamicFormWizard(with_metaclass( - DeclarativeFormsMetaclass, base_class)): + class DynamicFormWizard( + with_metaclass(DeclarativeFormsMetaclass, base_class) + ): """Dynamically created form wizard class.""" def done(self, form_list, **kwargs): """Done.""" # do_something_with_the_form_data(form_list) - redirect_url = reverse('fobi.form_wizard_entry_submitted', - [form_wizard_entry.slug]) + redirect_url = reverse( + "fobi.form_wizard_entry_submitted", [form_wizard_entry.slug] + ) return HttpResponseRedirect(redirect_url) # Finally, return the dynamic wizard diff --git a/src/fobi/exceptions.py b/src/fobi/exceptions.py index 6302a555e..2ab6d884e 100644 --- a/src/fobi/exceptions.py +++ b/src/fobi/exceptions.py @@ -1,24 +1,24 @@ -__title__ = 'fobi.exceptions' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.exceptions" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'BaseException', - 'DoesNotExist', - 'FormCallbackError', - 'FormElementPluginDoesNotExist', - 'FormElementPluginError', - 'FormHandlerPluginDoesNotExist', - 'FormHandlerPluginError', - 'FormPluginError', - 'FormWizardHandlerPluginDoesNotExist', - 'ImproperlyConfigured', - 'IntegrationFormElementPluginDoesNotExist', - 'IntegrationFormHandlerPluginDoesNotExist', - 'InvalidRegistryItemType', - 'NoDefaultThemeSet', - 'PluginDoesNotExist', - 'ThemeDoesNotExist', + "BaseException", + "DoesNotExist", + "FormCallbackError", + "FormElementPluginDoesNotExist", + "FormElementPluginError", + "FormHandlerPluginDoesNotExist", + "FormHandlerPluginError", + "FormPluginError", + "FormWizardHandlerPluginDoesNotExist", + "ImproperlyConfigured", + "IntegrationFormElementPluginDoesNotExist", + "IntegrationFormHandlerPluginDoesNotExist", + "InvalidRegistryItemType", + "NoDefaultThemeSet", + "PluginDoesNotExist", + "ThemeDoesNotExist", ) diff --git a/src/fobi/form_importers.py b/src/fobi/form_importers.py index db5e245ae..2d9f5873e 100644 --- a/src/fobi/form_importers.py +++ b/src/fobi/form_importers.py @@ -1,24 +1,23 @@ -from django.urls import reverse - import json from django.core.serializers.json import DjangoJSONEncoder +from django.urls import reverse from six import text_type from .base import BaseRegistry from .discover import autodiscover -__title__ = 'fobi.form_importers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.form_importers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'BaseFormImporter', - 'FormImporterPluginRegistry', - 'form_importer_plugin_registry', - 'ensure_autodiscover', - 'get_form_importer_plugin_uids', - 'get_form_importer_plugin_urls', + "BaseFormImporter", + "FormImporterPluginRegistry", + "form_importer_plugin_registry", + "ensure_autodiscover", + "get_form_importer_plugin_uids", + "get_form_importer_plugin_urls", ) @@ -41,8 +40,13 @@ class BaseFormImporter(object): wizard = None templates = None - def __init__(self, form_entry_cls, form_element_entry_cls, - form_properties=None, form_data=None): + def __init__( + self, + form_entry_cls, + form_element_entry_cls, + form_properties=None, + form_data=None, + ): """Constructor. :param django.contrib.auth.models.User user: User importing the form. @@ -59,7 +63,7 @@ def __init__(self, form_entry_cls, form_element_entry_cls, assert form_entry_cls is not None assert form_element_entry_cls is not None - for prop in ('name', 'label', 'help_text', 'initial', 'required'): + for prop in ("name", "label", "help_text", "initial", "required"): assert prop in self.field_properties_mapping self.form_data = form_data @@ -84,7 +88,7 @@ def import_data(self, form_properties, form_data): self.form_properties = form_properties self.form_data = form_data - assert 'name' in self.form_properties + assert "name" in self.form_properties form_entry = self.form_entry_cls() for prop, val in self.form_properties.items(): setattr(form_entry, prop, val) @@ -94,19 +98,18 @@ def import_data(self, form_properties, form_data): data = self.get_form_data() for field_data in data: # Skip non-existing - if field_data[self.field_type_prop_name] \ - not in self.fields_mapping: + if field_data[self.field_type_prop_name] not in self.fields_mapping: continue form_element_entry = self.form_element_entry_cls() form_element_entry.form_entry = form_entry form_element_entry.plugin_uid = self.fields_mapping[ - field_data[self.field_type_prop_name]] + field_data[self.field_type_prop_name] + ] # Assign form data form_element_entry.plugin_data = json.dumps( - self.extract_field_properties(field_data), - cls=DjangoJSONEncoder + self.extract_field_properties(field_data), cls=DjangoJSONEncoder ) # Assign position in form @@ -171,8 +174,10 @@ def get_form_importer_plugin_urls(): ( uid, plugin.name, - reverse('fobi.form_importer', - kwargs={'form_importer_plugin_uid': uid}) + reverse( + "fobi.form_importer", + kwargs={"form_importer_plugin_uid": uid}, + ), ) ) return urls diff --git a/src/fobi/form_utils.py b/src/fobi/form_utils.py index 86bae9346..ad237269b 100644 --- a/src/fobi/form_utils.py +++ b/src/fobi/form_utils.py @@ -4,13 +4,13 @@ ) from django.utils.encoding import force_str -__title__ = 'fobi.form_utils' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.form_utils" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'ErrorDict', - 'ErrorList', + "ErrorDict", + "ErrorList", ) @@ -19,9 +19,11 @@ class ErrorDict(DjangoErrorDict): def as_text(self): """As text.""" - return '\n'.join( - [' %s\n%s' % (k, '\n'.join([' %s' % force_str(i) for i in v])) - for k, v in self.items()] + return "\n".join( + [ + " %s\n%s" % (k, "\n".join([" %s" % force_str(i) for i in v])) + for k, v in self.items() + ] ) @@ -31,5 +33,5 @@ class ErrorList(DjangoErrorList): def as_text(self): """As text.""" if not self: - return '' - return '\n'.join([' %s' % force_str(e) for e in self]) + return "" + return "\n".join([" %s" % force_str(e) for e in self]) diff --git a/src/fobi/forms.py b/src/fobi/forms.py index 06a665f7d..7c1263c1e 100644 --- a/src/fobi/forms.py +++ b/src/fobi/forms.py @@ -1,66 +1,60 @@ import socket -from six.moves.urllib.parse import urlparse - from django import forms from django.forms.models import modelformset_factory from django.utils.translation import gettext, gettext_lazy as _ +from six.moves.urllib.parse import urlparse # from nonefield.fields import NoneField try: from ckeditor.widgets import CKEditorWidget + CKEDITOR_INSTALLED = True except ImportError: CKEDITOR_INSTALLED = False -from .base import ( +from .base import ( # get_registered_form_wizard_handler_plugins, get_registered_form_element_plugins, get_registered_form_handler_plugins, - # get_registered_form_wizard_handler_plugins, get_theme, ) from .constants import ACTION_CHOICES from .exceptions import ImproperlyConfigured -from .models import ( - # Form plugins +from .models import ( # Form plugins; Form entries; Form wizard entries FormElement, - FormHandler, - FormWizardHandler, - - # Form entries + FormElementEntry, FormEntry, FormFieldsetEntry, - FormElementEntry, + FormHandler, FormHandlerEntry, - - # Form wizard entries FormWizardEntry, + FormWizardFormEntry, + FormWizardHandler, FormWizardHandlerEntry, - FormWizardFormEntry ) from .validators import url_exists -__title__ = 'fobi.forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'BulkChangeFormElementPluginsForm', - 'BulkChangeFormHandlerPluginsForm', - 'BulkChangeFormWizardHandlerPluginsForm', - 'FormElementEntryForm', - 'FormElementEntryFormSet', - 'FormEntryForm', - 'FormFieldsetEntryForm', - 'FormHandlerEntryForm', - 'FormHandlerForm', - 'FormWizardEntryForm', - 'FormWizardFormEntryForm', - 'FormWizardFormEntryFormSet', - 'FormWizardHandlerEntryForm', - 'ImportFormEntryForm', - 'ImportFormWizardEntryForm', + "BulkChangeFormElementPluginsForm", + "BulkChangeFormHandlerPluginsForm", + "BulkChangeFormWizardHandlerPluginsForm", + "FormElementEntryForm", + "FormElementEntryFormSet", + "FormEntryForm", + "FormFieldsetEntryForm", + "FormHandlerEntryForm", + "FormHandlerForm", + "FormWizardEntryForm", + "FormWizardFormEntryForm", + "FormWizardFormEntryFormSet", + "FormWizardHandlerEntryForm", + "ImportFormEntryForm", + "ImportFormWizardEntryForm", ) # ***************************************************************************** @@ -78,22 +72,22 @@ class Meta(object): model = FormEntry fields = ( - 'name', - 'title', - 'is_public', - 'active_date_from', - 'active_date_to', - 'inactive_page_title', - 'inactive_page_message', - 'success_page_title', - 'success_page_message', - 'action', + "name", + "title", + "is_public", + "active_date_from", + "active_date_to", + "inactive_page_title", + "inactive_page_message", + "success_page_title", + "success_page_message", + "action", # 'is_cloneable', ) def __init__(self, *args, **kwargs): """Constructor.""" - self.request = kwargs.pop('request', None) + self.request = kwargs.pop("request", None) if self.request is None: raise ImproperlyConfigured( gettext( @@ -105,58 +99,58 @@ def __init__(self, *args, **kwargs): super(FormEntryForm, self).__init__(*args, **kwargs) theme = get_theme(request=None, as_instance=True) - self.fields['name'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["name"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['title'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["title"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['success_page_title'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["success_page_title"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['inactive_page_title'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["inactive_page_title"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['active_date_from'].widget = forms.widgets.DateTimeInput( - format='%Y-%m-%d %H:%M', - attrs={'class': theme.form_element_html_class} + self.fields["active_date_from"].widget = forms.widgets.DateTimeInput( + format="%Y-%m-%d %H:%M", + attrs={"class": theme.form_element_html_class}, ) - self.fields['active_date_to'].widget = forms.widgets.DateTimeInput( - format='%Y-%m-%d %H:%M', - attrs={'class': theme.form_element_html_class} + self.fields["active_date_to"].widget = forms.widgets.DateTimeInput( + format="%Y-%m-%d %H:%M", + attrs={"class": theme.form_element_html_class}, ) if CKEDITOR_INSTALLED: - self.fields['success_page_message'].widget = CKEditorWidget( - attrs={'class': theme.form_element_html_class} + self.fields["success_page_message"].widget = CKEditorWidget( + attrs={"class": theme.form_element_html_class} ) - self.fields['inactive_page_message'].widget = CKEditorWidget( - attrs={'class': theme.form_element_html_class} + self.fields["inactive_page_message"].widget = CKEditorWidget( + attrs={"class": theme.form_element_html_class} ) else: - self.fields['success_page_message'].widget = \ - forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} - ) - self.fields['inactive_page_message'].widget = \ - forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} - ) + self.fields["success_page_message"].widget = forms.widgets.Textarea( + attrs={"class": theme.form_element_html_class} + ) + self.fields[ + "inactive_page_message" + ].widget = forms.widgets.Textarea( + attrs={"class": theme.form_element_html_class} + ) - self.fields['action'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["action"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) # At the moment this is done for Foundation 5 theme. Remove this once # it's possible for a theme to override this form. Alternatively, add # the attrs to the theme API. - self.fields['is_public'].widget = forms.widgets.CheckboxInput( - attrs={'data-customforms': 'disabled'} + self.fields["is_public"].widget = forms.widgets.CheckboxInput( + attrs={"data-customforms": "disabled"} ) # self.fields['is_cloneable'].widget = forms.widgets.CheckboxInput( # attrs={'data-customforms': 'disabled'} @@ -167,11 +161,11 @@ def clean_action(self): Checks if URL exists. """ - url = self.cleaned_data['action'] + url = self.cleaned_data["action"] if url: full_url = url - if not (url.startswith('http://') or url.startswith('https://')): + if not (url.startswith("http://") or url.startswith("https://")): full_url = self.request.build_absolute_uri(url) parsed_url = urlparse(full_url) @@ -179,17 +173,17 @@ def clean_action(self): local = False try: - localhost = socket.gethostbyname('localhost') + localhost = socket.gethostbyname("localhost") except Exception as err: - localhost = '127.0.0.1' + localhost = "127.0.0.1" - if parsed_url.hostname == 'testserver': + if parsed_url.hostname == "testserver": local = True else: try: host = socket.gethostbyname(parsed_url.hostname) - local = (localhost == host) + local = localhost == host except socket.gaierror as err: pass @@ -211,14 +205,14 @@ class Meta(object): """Meta class.""" model = FormFieldsetEntry - fields = ('name',) + fields = ("name",) def __init__(self, *args, **kwargs): """Constructor.""" super(FormFieldsetEntryForm, self).__init__(*args, **kwargs) theme = get_theme(request=None, as_instance=True) - self.fields['name'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["name"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) @@ -233,7 +227,7 @@ class Meta(object): """Meta class.""" model = FormElement - fields = ('users', 'groups') + fields = ("users", "groups") class FormElementEntryForm(forms.ModelForm): @@ -247,7 +241,7 @@ class Meta(object): """Meta class.""" model = FormElementEntry - fields = ('form_entry', 'plugin_data', 'plugin_uid', 'position') + fields = ("form_entry", "plugin_data", "plugin_uid", "position") class _FormElementEntryForm(forms.ModelForm): @@ -260,14 +254,11 @@ class Meta(object): """Meta class.""" model = FormElementEntry - fields = ('position',) + fields = ("position",) FormElementEntryFormSet = modelformset_factory( - FormElementEntry, - fields=('position',), - extra=0, - form=_FormElementEntryForm + FormElementEntry, fields=("position",), extra=0, form=_FormElementEntryForm ) @@ -282,7 +273,7 @@ class Meta(object): """Meta class.""" model = FormHandler - fields = ('users', 'groups') + fields = ("users", "groups") class FormHandlerEntryForm(forms.ModelForm): @@ -296,7 +287,7 @@ class Meta(object): """Meta class.""" model = FormHandlerEntry - fields = ('form_entry', 'plugin_data', 'plugin_uid') + fields = ("form_entry", "plugin_data", "plugin_uid") # ***************************************************************************** @@ -305,17 +296,18 @@ class Meta(object): # ***************************************************************************** # ***************************************************************************** -class FormWizardFormEntryForm(forms.ModelForm): - """FormWizardFormEntryForm form. - - """ +class FormWizardFormEntryForm(forms.ModelForm): + """FormWizardFormEntryForm form.""" class Meta(object): """Meta class.""" model = FormWizardFormEntry - fields = ('form_wizard_entry', 'form_entry',) + fields = ( + "form_wizard_entry", + "form_entry", + ) class _FormWizardFormEntryForm(forms.ModelForm): @@ -337,7 +329,7 @@ class Meta(object): """Meta class.""" model = FormWizardFormEntry - fields = ('position',) + fields = ("position",) # def __init__(self, *args, **kwargs): # """Constructor.""" @@ -356,9 +348,9 @@ class Meta(object): FormWizardFormEntryFormSet = modelformset_factory( FormWizardFormEntry, - fields=('position',), + fields=("position",), extra=0, - form=_FormWizardFormEntryForm + form=_FormWizardFormEntryForm, ) @@ -369,15 +361,21 @@ class Meta(object): """Meta class.""" model = FormWizardEntry - fields = ('name', 'title', 'is_public', 'success_page_title', - 'success_page_message', 'show_all_navigation_buttons',) + fields = ( + "name", + "title", + "is_public", + "success_page_title", + "success_page_message", + "show_all_navigation_buttons", + ) # 'wizard_type' # 'action', # 'is_cloneable', def __init__(self, *args, **kwargs): """Constructor.""" - self.request = kwargs.pop('request', None) + self.request = kwargs.pop("request", None) if self.request is None: raise ImproperlyConfigured( gettext( @@ -389,25 +387,26 @@ def __init__(self, *args, **kwargs): super(FormWizardEntryForm, self).__init__(*args, **kwargs) theme = get_theme(request=None, as_instance=True) - self.fields['name'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["name"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['title'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["title"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['show_all_navigation_buttons'].widget = \ - forms.widgets.CheckboxInput( - attrs={'data-customforms': 'disabled'} - ) + self.fields[ + "show_all_navigation_buttons" + ].widget = forms.widgets.CheckboxInput( + attrs={"data-customforms": "disabled"} + ) - self.fields['success_page_title'].widget = forms.widgets.TextInput( - attrs={'class': theme.form_element_html_class} + self.fields["success_page_title"].widget = forms.widgets.TextInput( + attrs={"class": theme.form_element_html_class} ) - self.fields['success_page_message'].widget = forms.widgets.Textarea( - attrs={'class': theme.form_element_html_class} + self.fields["success_page_message"].widget = forms.widgets.Textarea( + attrs={"class": theme.form_element_html_class} ) # self.fields['action'].widget = forms.widgets.TextInput( @@ -421,8 +420,8 @@ def __init__(self, *args, **kwargs): # At the moment this is done for Foundation 5 theme. Remove this once # it's possible for a theme to override this form. Alternatively, add # the attrs to the theme API. - self.fields['is_public'].widget = forms.widgets.CheckboxInput( - attrs={'data-customforms': 'disabled'} + self.fields["is_public"].widget = forms.widgets.CheckboxInput( + attrs={"data-customforms": "disabled"} ) # self.fields['is_cloneable'].widget = forms.widgets.CheckboxInput( # attrs={'data-customforms': 'disabled'} @@ -478,7 +477,8 @@ class Meta(object): """Meta class.""" model = FormWizardHandlerEntry - fields = ('form_wizard_entry', 'plugin_data', 'plugin_uid') + fields = ("form_wizard_entry", "plugin_data", "plugin_uid") + # ***************************************************************************** # ***************************************************************************** @@ -501,35 +501,37 @@ class BaseBulkChangePluginsForm(forms.ModelForm): selected_plugins = forms.CharField( required=True, label=_("Selected plugins"), - widget=forms.widgets.HiddenInput + widget=forms.widgets.HiddenInput, ) users_action = forms.ChoiceField( required=False, label=_("Users action"), choices=ACTION_CHOICES, - help_text=_("If set to ``replace``, the groups are replaced; " - "otherwise - appended.") + help_text=_( + "If set to ``replace``, the groups are replaced; " + "otherwise - appended." + ), ) groups_action = forms.ChoiceField( required=False, label=_("Groups action"), choices=ACTION_CHOICES, - help_text=_("If set to ``replace``, the groups are replaced; " - "otherwise - appended.") + help_text=_( + "If set to ``replace``, the groups are replaced; " + "otherwise - appended." + ), ) class Media(object): """Media class.""" - css = { - 'all': ('css/admin_custom.css',) - } + css = {"all": ("css/admin_custom.css",)} def __init__(self, *args, **kwargs): """Constructor.""" super(BaseBulkChangePluginsForm, self).__init__(*args, **kwargs) - self.fields['users'].required = False - self.fields['groups'].required = False + self.fields["users"].required = False + self.fields["groups"].required = False class BulkChangeFormElementPluginsForm(BaseBulkChangePluginsForm): @@ -539,7 +541,7 @@ class Meta(object): """Meta class.""" model = FormElement - fields = ['groups', 'groups_action', 'users', 'users_action'] + fields = ["groups", "groups_action", "users", "users_action"] class BulkChangeFormHandlerPluginsForm(BaseBulkChangePluginsForm): @@ -549,7 +551,7 @@ class Meta(object): """Meta class.""" model = FormHandler - fields = ['groups', 'groups_action', 'users', 'users_action'] + fields = ["groups", "groups_action", "users", "users_action"] class BulkChangeFormWizardHandlerPluginsForm(BaseBulkChangePluginsForm): @@ -559,7 +561,8 @@ class Meta(object): """Meta class.""" model = FormWizardHandler - fields = ['groups', 'groups_action', 'users', 'users_action'] + fields = ["groups", "groups_action", "users", "users_action"] + # ***************************************************************************** # ***************************************************************************** diff --git a/src/fobi/helpers.py b/src/fobi/helpers.py index 7aeb6e430..15e07b617 100644 --- a/src/fobi/helpers.py +++ b/src/fobi/helpers.py @@ -4,30 +4,29 @@ `fobi.constants` and `fobi.exceptions` modules). """ from __future__ import unicode_literals + import glob import logging import os import shutil import uuid +import django.apps from autoslug.settings import slugify - from django import forms -import django.apps from django.conf import settings -from django.contrib.auth.models import User, AnonymousUser +from django.contrib.auth.models import AnonymousUser, User # from django.contrib.contenttypes.models import ContentType from django.core.files.base import File -from django.urls import reverse # from django.db.utils import DatabaseError from django.http import HttpResponse from django.templatetags.static import static from django.test.client import RequestFactory +from django.urls import reverse from django.utils.encoding import force_str, smart_str from django.utils.html import format_html_join from django.utils.translation import gettext_lazy as _ - -from six import text_type, PY3 +from six import PY3, text_type from .constants import ( SUBMIT_VALUE_AS_MIX, @@ -36,46 +35,44 @@ ) from .exceptions import ImproperlyConfigured - - -__title__ = 'fobi.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'admin_change_url', - 'clean_dict', - 'clone_file', - 'combine_dicts', - 'delete_file', - 'do_slugify', - 'empty_string', - 'ensure_unique_filename', - 'extract_file_path', - 'flatatt_inverse_quotes', - 'get_app_label_and_model_name', - 'get_form_element_entries_for_form_wizard_entry', - 'get_ignorable_form_values', - 'get_model_name_for_object', - 'get_registered_models', - 'get_select_field_choices', - 'get_wizard_form_field_value_from_post', - 'get_wizard_form_field_value_from_request', - 'get_wizard_form_field_value_from_session', - 'handle_uploaded_file', - 'iterable_to_dict', - 'JSONDataExporter', - 'lists_overlap', - 'map_field_name_to_label', - 'safe_text', - 'StrippedRequest', - 'StrippedUser', - 'two_dicts_to_string', - 'uniquify_sequence', - 'update_plugin_data', - 'validate_initial_for_choices', - 'validate_initial_for_multiple_choices', - 'validate_submit_value_as', + "admin_change_url", + "clean_dict", + "clone_file", + "combine_dicts", + "delete_file", + "do_slugify", + "empty_string", + "ensure_unique_filename", + "extract_file_path", + "flatatt_inverse_quotes", + "get_app_label_and_model_name", + "get_form_element_entries_for_form_wizard_entry", + "get_ignorable_form_values", + "get_model_name_for_object", + "get_registered_models", + "get_select_field_choices", + "get_wizard_form_field_value_from_post", + "get_wizard_form_field_value_from_request", + "get_wizard_form_field_value_from_session", + "handle_uploaded_file", + "iterable_to_dict", + "JSONDataExporter", + "lists_overlap", + "map_field_name_to_label", + "safe_text", + "StrippedRequest", + "StrippedUser", + "two_dicts_to_string", + "uniquify_sequence", + "update_plugin_data", + "validate_initial_for_choices", + "validate_initial_for_multiple_choices", + "validate_submit_value_as", ) logger = logging.getLogger(__name__) @@ -133,9 +130,12 @@ def map_field_name_to_label(form): :param django.forms.Form form: Instance of ``django.forms.Form``. :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=[]): @@ -159,10 +159,10 @@ def combine_dicts(headers, data): Takes two dictionaries, assuming one contains a mapping keys to titles and another keys to data. Joins as string and returns a result dict. """ - return [(value, data.get(key, '')) for key, value in list(headers.items())] + return [(value, data.get(key, "")) for key, value in list(headers.items())] -def two_dicts_to_string(headers, data, html_element='p'): +def two_dicts_to_string(headers, data, html_element="p"): """Two dicts to string. Takes two dictionaries, assuming one contains a mapping keys to titles @@ -170,16 +170,19 @@ def two_dicts_to_string(headers, data, html_element='p'): HTML "p" tag. """ formatted_data = [ - (value, data.get(key, '')) for key, value in list(headers.items()) + (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('') +empty_string = text_type("") def absolute_path(path): @@ -188,7 +191,7 @@ def absolute_path(path): path. An absolute path will be returned unchanged while a relative path will be passed to django.templatetags.static.static(). """ - if path.startswith(('http://', 'https://', '/')): + if path.startswith(("http://", "https://", "/")): return path return static(path) @@ -204,8 +207,9 @@ def uniquify_sequence(sequence): """ seen = set() seen_add = seen.add - return [absolute_path(x) - for x in sequence if x not in seen and not seen_add(x)] + return [ + absolute_path(x) for x in sequence if x not in seen and not seen_add(x) + ] def get_ignorable_form_values(): @@ -224,6 +228,7 @@ def get_model_name_for_object(obj): Django version agnostic.""" return obj._meta.model_name + # ***************************************************************************** # ***************************************************************************** # ****************************** File helpers ********************************* @@ -261,7 +266,7 @@ def handle_uploaded_file(upload_dir, image_file): os.path.join(upload_dir_absolute_path, image_file.name) ) image_filename = image_file.name - with open(destination_path, 'wb+') as destination: + with open(destination_path, "wb+") as destination: image_filename = os.path.basename(destination.name) for chunk in image_file.chunks(): destination.write(chunk) @@ -306,9 +311,9 @@ def clone_file(upload_dir, source_filename, relative_path=True): shutil.copyfile(source_filename, destination_filename) if relative_path: destination_filename = destination_filename.replace( - settings.MEDIA_ROOT, '' + settings.MEDIA_ROOT, "" ) - if destination_filename.startswith('/'): + if destination_filename.startswith("/"): destination_filename = destination_filename[1:] return destination_filename except Exception as err: @@ -323,6 +328,7 @@ def extract_file_path(name): """ return os.path.join(settings.MEDIA_ROOT, name) + # ***************************************************************************** # ***************************************************************************** # ****************************** Model helpers ******************************** @@ -342,10 +348,9 @@ def get_registered_models(ignore=[]): registered_models = [ ( "{0}.{1}".format(_m._meta.app_label, _m._meta.model_name), - _m._meta.object_name + _m._meta.object_name, ) - for _m - in get_models() + for _m in get_models() ] return registered_models @@ -358,8 +363,9 @@ def get_app_label_and_model_name(path): in the Django `ContentType` model. :return tuple: app_label, model_name """ - parts = path.split('.') - return (''.join(parts[:-1]), parts[-1]) + parts = path.split(".") + return ("".join(parts[:-1]), parts[-1]) + # ***************************************************************************** # ***************************************************************************** @@ -368,8 +374,9 @@ def get_app_label_and_model_name(path): # ***************************************************************************** -def admin_change_url(app_label, module_name, object_id, extra_path='', - url_title=None): +def admin_change_url( + app_label, module_name, object_id, extra_path="", url_title=None +): """ Gets an admin change URL for the object given. @@ -382,15 +389,21 @@ def admin_change_url(app_label, module_name, object_id, extra_path='', :return str: """ try: - url = reverse('admin:{0}_{1}_change'.format(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'{1}'.format(url, url_title) + return '{1}'.format(url, url_title) else: return url except Exception: return None + # ***************************************************************************** # ***************************************************************************** # ****************************** Fobi data helpers **************************** @@ -410,10 +423,9 @@ def update_plugin_data(entry, request=None): return plugin._update_plugin_data(entry) -def get_select_field_choices(raw_choices_data, - key_type=None, - value_type=None, - fail_silently=True): +def get_select_field_choices( + raw_choices_data, key_type=None, value_type=None, fail_silently=True +): """Get select field choices. Used in ``radio``, ``select`` and other choice based @@ -430,12 +442,12 @@ def get_select_field_choices(raw_choices_data, values = set([]) # For checking uniqueness of values # Looping through the raw data - for choice in raw_choices_data.split('\n'): + for choice in raw_choices_data.split("\n"): choice = choice.strip() # If comma separated key, value - if ',' in choice: - key, value = choice.split(',', 1) + if "," in choice: + key, value = choice.split(",", 1) key = key.strip() # If type specified, cast to the type @@ -453,9 +465,7 @@ def get_select_field_choices(raw_choices_data, except (ValueError, TypeError): return [] if fail_silently else None - if key is not None \ - and key not in keys \ - and value not in values: + if key is not None and key not in keys and value not in values: choices.append((key, value)) keys.add(key) values.add(value) @@ -463,9 +473,11 @@ def get_select_field_choices(raw_choices_data, # If key is also the value else: choice = choice.strip() - if choice is not None \ - and choice not in keys \ - and choice not in values: + if ( + choice is not None + and choice not in keys + and choice not in values + ): choices.append((choice, choice)) keys.add(choice) values.add(choice) @@ -473,8 +485,9 @@ def get_select_field_choices(raw_choices_data, return choices -def validate_initial_for_choices(plugin_form, field_name_choices='choices', - field_name_initial='initial'): +def validate_initial_for_choices( + plugin_form, field_name_choices="choices", field_name_initial="initial" +): """Validate init for choices. Validates the initial value for the choices given. @@ -487,21 +500,27 @@ def validate_initial_for_choices(plugin_form, field_name_choices='choices', get_select_field_choices(plugin_form.cleaned_data[field_name_choices]) ).keys() - if plugin_form.cleaned_data[field_name_initial] \ - and not plugin_form.cleaned_data[field_name_initial] \ - in available_choices: + if ( + plugin_form.cleaned_data[field_name_initial] + and not plugin_form.cleaned_data[field_name_initial] + in available_choices + ): raise forms.ValidationError( - _("Invalid value for initial: {0}. Should be any of the following" - ": {1}".format(plugin_form.cleaned_data[field_name_initial], - ','.join(available_choices))) + _( + "Invalid value for initial: {0}. Should be any of the following" + ": {1}".format( + plugin_form.cleaned_data[field_name_initial], + ",".join(available_choices), + ) + ) ) return plugin_form.cleaned_data[field_name_initial] -def validate_initial_for_multiple_choices(plugin_form, - field_name_choices='choices', - field_name_initial='initial'): +def validate_initial_for_multiple_choices( + plugin_form, field_name_choices="choices", field_name_initial="initial" +): """Validates the initial value for the multiple choices given. :param fobi.base.BaseFormFieldPluginForm plugin_form: @@ -510,19 +529,19 @@ def validate_initial_for_multiple_choices(plugin_form, :return str: """ available_choices = dict( - get_select_field_choices( - plugin_form.cleaned_data[field_name_choices] - ) + get_select_field_choices(plugin_form.cleaned_data[field_name_choices]) ).keys() if plugin_form.cleaned_data[field_name_initial]: - for choice in plugin_form.cleaned_data[field_name_initial].split(','): + for choice in plugin_form.cleaned_data[field_name_initial].split(","): choice = choice.strip() if choice not in available_choices: raise forms.ValidationError( - _("Invalid value for initial: {0}. Should be any " - "of the following: {1}" - "".format(choice, ','.join(available_choices))) + _( + "Invalid value for initial: {0}. Should be any " + "of the following: {1}" + "".format(choice, ",".join(available_choices)) + ) ) return plugin_form.cleaned_data[field_name_initial] @@ -533,13 +552,18 @@ def validate_submit_value_as(value): :param str value: """ - if value not 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)) + if value not 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 + ) + ) class StrippedUser(object): @@ -614,9 +638,9 @@ def __init__(self, request): self._request = request else: request_factory = RequestFactory() - self._request = request_factory.get('/') + self._request = request_factory.get("/") - if hasattr(request, 'user') and request.user: + if hasattr(request, "user") and request.user: self.user = StrippedUser(self._request.user) else: self.user = StrippedUser(AnonymousUser()) @@ -668,20 +692,21 @@ def META(self): - REMOTE_ADDR: The IP address of the client. """ _meta = { - 'HTTP_ACCEPT_ENCODING': self._request.META.get( - 'HTTP_ACCEPT_ENCODING' + "HTTP_ACCEPT_ENCODING": self._request.META.get( + "HTTP_ACCEPT_ENCODING" ), - 'HTTP_ACCEPT_LANGUAGE': self._request.META.get( - 'HTTP_ACCEPT_LANGUAGE' + "HTTP_ACCEPT_LANGUAGE": self._request.META.get( + "HTTP_ACCEPT_LANGUAGE" ), - 'HTTP_HOST': self._request.META.get('HTTP_HOST'), - 'HTTP_REFERER': self._request.META.get('HTTP_REFERER'), - 'HTTP_USER_AGENT': self._request.META.get('HTTP_USER_AGENT'), - 'QUERY_STRING': self._request.META.get('QUERY_STRING'), - 'REMOTE_ADDR': self._request.META.get('REMOTE_ADDR'), + "HTTP_HOST": self._request.META.get("HTTP_HOST"), + "HTTP_REFERER": self._request.META.get("HTTP_REFERER"), + "HTTP_USER_AGENT": self._request.META.get("HTTP_USER_AGENT"), + "QUERY_STRING": self._request.META.get("QUERY_STRING"), + "REMOTE_ADDR": self._request.META.get("REMOTE_ADDR"), } return _meta + # ***************************************************************************** # ***************************************************************************** # ******************************** Export related ***************************** @@ -709,14 +734,15 @@ def _get_initial_response(self, mimetype="application/json"): :param str mimetype: :return django.http.HttpResponse: """ - response_kwargs = {'content_type': mimetype} + response_kwargs = {"content_type": mimetype} return HttpResponse(**response_kwargs) def export_to_json(self): """Export data to JSON.""" response = self._get_initial_response(mimetype="text/json") - response['Content-Disposition'] = \ - 'attachment; filename={0}.json'.format(self.filename) + response[ + "Content-Disposition" + ] = "attachment; filename={0}.json".format(self.filename) response.write(self.data) return response @@ -730,19 +756,18 @@ def get_form_element_entries_for_form_wizard_entry(form_wizard_entry): """Get form element entries for the form wizard entry.""" form_element_entries = [] # TODO: Perhaps add select related here? - for form_wizard_form_entry \ - in form_wizard_entry.formwizardformentry_set.all(): - form_element_entries += form_wizard_form_entry \ - .form_entry \ - .formelemententry_set.all()[:] + for ( + form_wizard_form_entry + ) in form_wizard_entry.formwizardformentry_set.all(): + form_element_entries += ( + form_wizard_form_entry.form_entry.formelemententry_set.all()[:] + ) return form_element_entries -def get_wizard_form_field_value_from_session(request, - wizard_view_name, - form_key, - field_name, - fail_silently=True): +def get_wizard_form_field_value_from_session( + request, wizard_view_name, form_key, field_name, fail_silently=True +): """Get wizard form field value from session. This is what we could have: @@ -772,24 +797,24 @@ def get_wizard_form_field_value_from_session(request, if not fail_silently: - return request.session[wizard_view_name]['step_data'][form_key][ - session_field_name][0] + return request.session[wizard_view_name]["step_data"][form_key][ + session_field_name + ][0] else: try: - return request.session[wizard_view_name]['step_data'][form_key][ - session_field_name][0] + return request.session[wizard_view_name]["step_data"][form_key][ + session_field_name + ][0] except (KeyError, IndexError) as err: logger.error(err) return None -def get_wizard_form_field_value_from_post(request, - wizard_view_name, - form_key, - field_name, - fail_silently=True): +def get_wizard_form_field_value_from_post( + request, wizard_view_name, form_key, field_name, fail_silently=True +): """Get wizard form field value from POST. This is what we could have: @@ -836,12 +861,14 @@ def get_wizard_form_field_value_from_post(request, return None -def get_wizard_form_field_value_from_request(request, - wizard_view_name, - form_key, - field_name, - fail_silently=True, - session_priority=False): +def get_wizard_form_field_value_from_request( + request, + wizard_view_name, + form_key, + field_name, + fail_silently=True, + session_priority=False, +): """Get wizard form field value from request. Note, that we know nothing about the types here, type conversion should @@ -859,35 +886,23 @@ def get_wizard_form_field_value_from_request(request, if session_priority: # First try session value = get_wizard_form_field_value_from_session( - request, - wizard_view_name, - form_key, - field_name, - fail_silently + request, wizard_view_name, form_key, field_name, fail_silently ) if value is not None: return value # Then try POST - if request.method == 'POST': + if request.method == "POST": value = get_wizard_form_field_value_from_post( - request, - wizard_view_name, - form_key, - field_name, - fail_silently + request, wizard_view_name, form_key, field_name, fail_silently ) else: # First try POST - if request.method == 'POST': + if request.method == "POST": value = get_wizard_form_field_value_from_post( - request, - wizard_view_name, - form_key, - field_name, - fail_silently + request, wizard_view_name, form_key, field_name, fail_silently ) if value is not None: @@ -895,15 +910,12 @@ def get_wizard_form_field_value_from_request(request, # Then try session value = get_wizard_form_field_value_from_session( - request, - wizard_view_name, - form_key, - field_name, - fail_silently + request, wizard_view_name, form_key, field_name, fail_silently ) return value + # ***************************************************************************** # ***************************************************************************** # ******************************** Export related ***************************** @@ -931,7 +943,6 @@ def flatatt_inverse_quotes(attrs): else: key_value_attrs.append((attr, value)) - return ( - format_html_join("", " {}='{}'", sorted(key_value_attrs)) + - format_html_join("", " {}", sorted(boolean_attrs)) - ) + return format_html_join( + "", " {}='{}'", sorted(key_value_attrs) + ) + format_html_join("", " {}", sorted(boolean_attrs)) diff --git a/src/fobi/integration/helpers.py b/src/fobi/integration/helpers.py index 248670cb9..815374ea1 100644 --- a/src/fobi/integration/helpers.py +++ b/src/fobi/integration/helpers.py @@ -1,10 +1,10 @@ from ..base import get_theme -__title__ = 'fobi.integration.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('get_template_choices',) +__title__ = "fobi.integration.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("get_template_choices",) def get_template_choices(source, choices, theme_specific_choices_key): diff --git a/src/fobi/integration/processors.py b/src/fobi/integration/processors.py index 9d419b64b..9011b4c0a 100644 --- a/src/fobi/integration/processors.py +++ b/src/fobi/integration/processors.py @@ -22,11 +22,11 @@ from ..exceptions import ImproperlyConfigured from ..settings import GET_PARAM_INITIAL_DATA -__title__ = 'fobi.integration.processors' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('IntegrationProcessor',) +__title__ = "fobi.integration.processors" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("IntegrationProcessor",) class IntegrationProcessor(object): @@ -45,8 +45,8 @@ class IntegrationProcessor(object): """ can_redirect = True - form_sent_get_param = 'sent' - login_required_template_name = 'fobi/integration/login_required.html' + form_sent_get_param = "sent" + login_required_template_name = "fobi/integration/login_required.html" def integration_check(self, instance): """Integration check. @@ -55,15 +55,15 @@ def integration_check(self, instance): has been implemented according to the expectations. """ expected_fields = ( - ('form_entry', 'models.ForeignKey("fobi.FormEntry)'), - ('form_template_name', 'models.CharField'), - ('hide_form_title', 'models.BooleanField'), - ('form_title', 'models.CharField'), - ('form_submit_button_text', 'models.CharField'), - ('success_page_template_name', 'models.CharField'), - ('hide_success_page_title', 'models.BooleanField'), - ('success_page_title', 'models.CharField'), - ('success_page_text', 'models.CharField'), + ("form_entry", 'models.ForeignKey("fobi.FormEntry)'), + ("form_template_name", "models.CharField"), + ("hide_form_title", "models.BooleanField"), + ("form_title", "models.CharField"), + ("form_submit_button_text", "models.CharField"), + ("success_page_template_name", "models.CharField"), + ("hide_success_page_title", "models.BooleanField"), + ("success_page_title", "models.CharField"), + ("success_page_text", "models.CharField"), ) for field_name, field_info in expected_fields: @@ -76,7 +76,7 @@ def integration_check(self, instance): def get_context_data(self, request, instance, **kwargs): """Get context data.""" context = { - 'form_entry': instance.form_entry, + "form_entry": instance.form_entry, } context.update(kwargs) return context @@ -101,9 +101,7 @@ def get_process_form_redirect_url(self, request, instance): :return str: """ return "{0}?{1}={2}".format( - request.path, - self.form_sent_get_param, - instance.form_entry.slug + request.path, self.form_sent_get_param, instance.form_entry.slug ) def _process_form(self, request, instance, **kwargs): @@ -123,8 +121,7 @@ def _process_form(self, request, instance, **kwargs): # Handle public/non-public forms. If form requires user authentication # redirect to login form with next parameter set to current request # path. - if not user_is_authenticated \ - and not instance.form_entry.is_public: + if not user_is_authenticated and not instance.form_entry.is_public: if self.can_redirect: return redirect( "{0}?next={1}".format(settings.LOGIN_URL, request.path) @@ -134,17 +131,16 @@ def _process_form(self, request, instance, **kwargs): request, instance, **kwargs ) - form_element_entries = instance.form_entry.formelemententry_set.all( - )[:] + form_element_entries = instance.form_entry.formelemententry_set.all()[:] # This is where the most of the magic happens. Our form is being built # dynamically. form_cls = assemble_form_class( instance.form_entry, form_element_entries=form_element_entries, - request=request + request=request, ) - if request.method == 'POST': + if request.method == "POST": form = form_cls(request.POST, request.FILES) # Fire pre form validation callbacks @@ -152,7 +148,7 @@ def _process_form(self, request, instance, **kwargs): form_entry=instance.form_entry, request=request, form=form, - stage=CALLBACK_BEFORE_FORM_VALIDATION + stage=CALLBACK_BEFORE_FORM_VALIDATION, ) if form.is_valid(): @@ -162,14 +158,12 @@ def _process_form(self, request, instance, **kwargs): form_entry=instance.form_entry, request=request, form=form, - stage=CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA + stage=CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) # Fire plugin processors form = submit_plugin_form_data( - form_entry=instance.form_entry, - request=request, - form=form + form_entry=instance.form_entry, request=request, form=form ) # Fire form valid callbacks @@ -177,14 +171,12 @@ def _process_form(self, request, instance, **kwargs): form_entry=instance.form_entry, request=request, form=form, - stage=CALLBACK_FORM_VALID + stage=CALLBACK_FORM_VALID, ) # Run all handlers run_form_handlers( - form_entry=instance.form_entry, - request=request, - form=form + form_entry=instance.form_entry, request=request, form=form ) # Fire post handler callbacks @@ -192,13 +184,14 @@ def _process_form(self, request, instance, **kwargs): form_entry=instance.form_entry, request=request, form=form, - stage=CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS + stage=CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, ) messages.info( request, - _('Form {0} was submitted ' - 'successfully.').format(instance.form_entry.name) + _("Form {0} was submitted " "successfully.").format( + instance.form_entry.name + ), ) if self.can_redirect: @@ -214,7 +207,7 @@ def _process_form(self, request, instance, **kwargs): form_entry=instance.form_entry, request=request, form=form, - stage=CALLBACK_FORM_INVALID + stage=CALLBACK_FORM_INVALID, ) else: @@ -223,15 +216,17 @@ def _process_form(self, request, instance, **kwargs): # GET. kwargs = {} if GET_PARAM_INITIAL_DATA in request.GET: - kwargs = {'initial': request.GET} + kwargs = {"initial": request.GET} form = form_cls(**kwargs) theme = get_theme(request=request, as_instance=True) theme.collect_plugin_media(form_element_entries) - form_title = instance.form_title \ - if instance.form_title \ + form_title = ( + instance.form_title + if instance.form_title else instance.form_entry.title + ) context = self.get_context_data( request=request, @@ -240,16 +235,16 @@ def _process_form(self, request, instance, **kwargs): fobi_theme=theme, fobi_form_title=form_title, fobi_hide_form_title=instance.hide_form_title, - fobi_form_submit_button_text=instance.form_submit_button_text + fobi_form_submit_button_text=instance.form_submit_button_text, ) if not template_name: template_name = theme.view_embed_form_entry_ajax_template render_kwargs = { - 'template_name': template_name, - 'context': context, - 'request': request, + "template_name": template_name, + "context": context, + "request": request, } self.rendered_output = render_to_string(**render_kwargs) @@ -265,13 +260,12 @@ def _show_login_required_page(self, request, instance, **kwargs): instance=instance, login_url="{0}?next={1}".format(settings.LOGIN_URL, request.path), ) - template_name = self.get_login_required_template_name(request, - instance) + template_name = self.get_login_required_template_name(request, instance) render_kwargs = { - 'template_name': template_name, - 'context': context, - 'request': request, + "template_name": template_name, + "context": context, + "request": request, } return render_to_string(**render_kwargs) @@ -300,9 +294,9 @@ def _show_thanks_page(self, request, instance, **kwargs): template_name = theme.embed_form_entry_submitted_ajax_template render_kwargs = { - 'template_name': template_name, - 'context': context, - 'request': request, + "template_name": template_name, + "context": context, + "request": request, } self.rendered_output = render_to_string(**render_kwargs) diff --git a/src/fobi/management/commands/fobi_find_broken_entries.py b/src/fobi/management/commands/fobi_find_broken_entries.py index 32211affc..1c0c2b7b3 100644 --- a/src/fobi/management/commands/fobi_find_broken_entries.py +++ b/src/fobi/management/commands/fobi_find_broken_entries.py @@ -4,7 +4,7 @@ from fobi.base import ( get_registered_form_element_plugin_uids, - get_registered_form_handler_plugin_uids + get_registered_form_handler_plugin_uids, ) from fobi.models import FormElementEntry, FormHandlerEntry @@ -18,21 +18,27 @@ class Command(BaseCommand): def handle(self, *args, **options): """Handle.""" - form_element_entries = FormElementEntry._default_manager.all() \ - .only('id', 'plugin_uid', 'form_entry') \ - .values_list('id', 'plugin_uid', 'form_entry') - form_handler_entries = FormHandlerEntry._default_manager.all() \ - .only('id', 'plugin_uid', 'form_entry') \ - .values_list('id', 'plugin_uid', 'form_entry') + form_element_entries = ( + FormElementEntry._default_manager.all() + .only("id", "plugin_uid", "form_entry") + .values_list("id", "plugin_uid", "form_entry") + ) + form_handler_entries = ( + FormHandlerEntry._default_manager.all() + .only("id", "plugin_uid", "form_entry") + .values_list("id", "plugin_uid", "form_entry") + ) broken_form_element_entries = [] broken_form_handler_entries = [] - registered_form_element_plugin_uids = \ + registered_form_element_plugin_uids = ( get_registered_form_element_plugin_uids() + ) - registered_form_handler_plugin_uids = \ + registered_form_handler_plugin_uids = ( get_registered_form_handler_plugin_uids() + ) for entry_id, plugin_uid, form_entry_id in form_element_entries: if plugin_uid not in registered_form_element_plugin_uids: @@ -44,7 +50,7 @@ def handle(self, *args, **options): print( "Broken form element entries found (form ID, entry ID, " "plugin UID)!", - broken_form_element_entries + broken_form_element_entries, ) for entry_id, plugin_uid, form_entry_id in form_handler_entries: @@ -57,5 +63,5 @@ def handle(self, *args, **options): print( "Broken form handler entries found (form ID, entry ID, " "plugin UID)!", - broken_form_handler_entries + broken_form_handler_entries, ) diff --git a/src/fobi/management/commands/fobi_sync_plugins.py b/src/fobi/management/commands/fobi_sync_plugins.py index f56c3c0f7..32a6c5699 100644 --- a/src/fobi/management/commands/fobi_sync_plugins.py +++ b/src/fobi/management/commands/fobi_sync_plugins.py @@ -15,12 +15,12 @@ class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument( - '--noinput', - '--no-input', - action='store_false', - dest='interactive', - help='Tells Django to NOT prompt the user for input of any ' - 'kind.', + "--noinput", + "--no-input", + action="store_false", + dest="interactive", + help="Tells Django to NOT prompt the user for input of any " + "kind.", ) def handle(self, *args, **options): diff --git a/src/fobi/management/commands/fobi_update_plugin_data.py b/src/fobi/management/commands/fobi_update_plugin_data.py index f4b2fcec1..4755a59f3 100644 --- a/src/fobi/management/commands/fobi_update_plugin_data.py +++ b/src/fobi/management/commands/fobi_update_plugin_data.py @@ -3,9 +3,8 @@ from fobi.models import ( FormElementEntry, FormHandlerEntry, - FormWizardHandlerEntry + FormWizardHandlerEntry, ) - from fobi.utils import update_plugin_data_for_entries @@ -26,6 +25,7 @@ def handle(self, *args, **options): form_handler_entries = FormHandlerEntry._default_manager.all() update_plugin_data_for_entries(entries=form_handler_entries) - form_wizard_handler_entries = FormWizardHandlerEntry \ - ._default_manager.all() + form_wizard_handler_entries = ( + FormWizardHandlerEntry._default_manager.all() + ) update_plugin_data_for_entries(entries=form_wizard_handler_entries) diff --git a/src/fobi/models.py b/src/fobi/models.py index 16916fc42..a0c220e9c 100644 --- a/src/fobi/models.py +++ b/src/fobi/models.py @@ -3,14 +3,12 @@ import logging from autoslug import AutoSlugField - from django.conf import settings from django.contrib.auth.models import Group from django.db import models +from django.urls import reverse from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from django.urls import reverse - from six import python_2_unicode_compatible from .base import ( @@ -21,30 +19,29 @@ get_registered_form_handler_plugins, get_registered_form_wizard_handler_plugins, ) -from .constants import WIZARD_TYPES, DEFAULT_WIZARD_TYPE +from .constants import DEFAULT_WIZARD_TYPE, WIZARD_TYPES -__title__ = 'fobi.models' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.models" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( # Plugins - 'AbstractPluginModel', - 'FormElement', - 'FormHandler', - 'FormWizardHandler', - + "AbstractPluginModel", + "FormElement", + "FormHandler", + "FormWizardHandler", # Entries - 'AbstractFormWizardPluginEntry', - 'AbstractPluginEntry', - 'BaseAbstractPluginEntry', - 'FormElementEntry', - 'FormEntry', - 'FormFieldsetEntry', - 'FormHandlerEntry', - 'FormWizardEntry', - 'FormWizardFormEntry', - 'FormWizardHandlerEntry', + "AbstractFormWizardPluginEntry", + "AbstractPluginEntry", + "BaseAbstractPluginEntry", + "FormElementEntry", + "FormEntry", + "FormFieldsetEntry", + "FormHandlerEntry", + "FormWizardEntry", + "FormWizardFormEntry", + "FormWizardHandlerEntry", ) @@ -83,12 +80,14 @@ class AbstractPluginModel(models.Model): # plugin_uid = models.CharField(_("Plugin UID"), max_length=255, # unique=True, editable=False) - users = models.ManyToManyField(AUTH_USER_MODEL, verbose_name=_("User"), - blank=True) + users = models.ManyToManyField( + AUTH_USER_MODEL, verbose_name=_("User"), blank=True + ) groups = models.ManyToManyField(Group, verbose_name=_("Group"), blank=True) class Meta(object): """Meta class.""" + abstract = True # def __init__(self, *args, **kwargs): @@ -107,8 +106,8 @@ def get_registered_plugins(self): def __str__(self): return "{0} ({1})".format( - dict(self.get_registered_plugins()).get(self.plugin_uid, ''), - self.plugin_uid + dict(self.get_registered_plugins()).get(self.plugin_uid, ""), + self.plugin_uid, ) def plugin_uid_code(self): @@ -117,8 +116,9 @@ def plugin_uid_code(self): Mainly used in admin. """ return self.plugin_uid + plugin_uid_code.allow_tags = True - plugin_uid_code.short_description = _('UID') + plugin_uid_code.short_description = _("UID") def plugin_uid_admin(self): """Plugin uid admin. @@ -126,8 +126,9 @@ def plugin_uid_admin(self): Mainly used in admin. """ return self.__str__() + plugin_uid_admin.allow_tags = True - plugin_uid_admin.short_description = _('Plugin') + plugin_uid_admin.short_description = _("Plugin") def groups_list(self): """Groups list. @@ -137,9 +138,10 @@ def groups_list(self): :return string: """ - return ', '.join([g.name for g in self.groups.all()]) + return ", ".join([g.name for g in self.groups.all()]) + groups_list.allow_tags = True - groups_list.short_description = _('Groups') + groups_list.short_description = _("Groups") def users_list(self): """Users list. @@ -149,9 +151,10 @@ def users_list(self): :return string: """ - return ', '.join([u.get_username() for u in self.users.all()]) + return ", ".join([u.get_username() for u in self.users.all()]) + users_list.allow_tags = True - users_list.short_description = _('Users') + users_list.short_description = _("Users") class FormElement(AbstractPluginModel): @@ -168,14 +171,19 @@ class FormElement(AbstractPluginModel): - `groups` (django.contrib.auth.models.Group): White list of the user groups allowed to use the form element plugin. """ + plugin_uid = models.CharField( - _("Plugin UID"), max_length=255, unique=True, editable=False, + _("Plugin UID"), + max_length=255, + unique=True, + editable=False, # choices=get_registered_form_element_plugins() ) # objects = FormFieldPluginModelManager() class Meta(object): """Meta class.""" + abstract = False verbose_name = _("Form element plugin") verbose_name_plural = _("Form element plugins") @@ -198,14 +206,19 @@ class FormHandler(AbstractPluginModel): - `groups` (django.contrib.auth.models.Group): White list of the user groups allowed to use the form handler plugin. """ + plugin_uid = models.CharField( - _("Plugin UID"), max_length=255, unique=True, editable=False, + _("Plugin UID"), + max_length=255, + unique=True, + editable=False, # choices=get_registered_form_handler_plugins() ) # objects = FormHandlerPluginModelManager() class Meta(object): """Class meta.""" + abstract = False verbose_name = _("Form handler plugin") verbose_name_plural = _("Form handler plugins") @@ -228,8 +241,12 @@ class FormWizardHandler(AbstractPluginModel): - `groups` (django.contrib.auth.models.Group): White list of the user groups allowed to use the form handler plugin. """ + plugin_uid = models.CharField( - _("Plugin UID"), max_length=255, unique=True, editable=False, + _("Plugin UID"), + max_length=255, + unique=True, + editable=False, # choices=get_registered_form_handler_plugins() ) @@ -237,6 +254,7 @@ class FormWizardHandler(AbstractPluginModel): class Meta(object): """Class meta.""" + abstract = False verbose_name = _("Form wizard handler plugin") verbose_name_plural = _("Form wizard handler plugins") @@ -245,6 +263,7 @@ def get_registered_plugins(self): """Add choices.""" return get_registered_form_wizard_handler_plugins() + # ***************************************************************************** # ***************************************************************************** # ******************************** Entry models ******************************* @@ -257,9 +276,7 @@ class FormWizardEntry(models.Model): """Form wizard entry.""" user = models.ForeignKey( - AUTH_USER_MODEL, - verbose_name=_("User"), - on_delete=models.CASCADE + AUTH_USER_MODEL, verbose_name=_("User"), on_delete=models.CASCADE ) name = models.CharField(_("Name"), max_length=255) title = models.CharField( @@ -267,42 +284,42 @@ class FormWizardEntry(models.Model): max_length=255, null=True, blank=True, - help_text=_("Shown in templates if available.") + help_text=_("Shown in templates if available."), ) slug = AutoSlugField( - populate_from='name', - verbose_name=_("Slug"), - unique=True + populate_from="name", verbose_name=_("Slug"), unique=True ) is_public = models.BooleanField( _("Is public?"), default=False, - help_text=_("Makes your form wizard visible to the public.") + help_text=_("Makes your form wizard visible to the public."), ) is_cloneable = models.BooleanField( _("Is cloneable?"), default=False, - help_text=_("Makes your form wizard cloneable by other users.") + help_text=_("Makes your form wizard cloneable by other users."), ) success_page_title = models.CharField( _("Success page title"), max_length=255, null=True, blank=True, - help_text=_("Custom message title to display after valid form is " - "submitted") + help_text=_( + "Custom message title to display after valid form is " "submitted" + ), ) success_page_message = models.TextField( _("Success page body"), null=True, blank=True, - help_text=_("Custom message text to display after valid form is " - "submitted") + help_text=_( + "Custom message text to display after valid form is " "submitted" + ), ) show_all_navigation_buttons = models.BooleanField( _("Show all navigation buttons?"), default=False, - help_text=_("Show all navigation buttons.") + help_text=_("Show all navigation buttons."), ) # action = models.CharField( # _("Action"), max_length=255, null=True, blank=True, @@ -316,19 +333,13 @@ class FormWizardEntry(models.Model): blank=False, choices=WIZARD_TYPES, default=DEFAULT_WIZARD_TYPE, - help_text=_("Type of the form wizard.") + help_text=_("Type of the form wizard."), ) created = models.DateTimeField( - _("Created"), - null=True, - blank=True, - auto_now_add=True + _("Created"), null=True, blank=True, auto_now_add=True ) updated = models.DateTimeField( - _("Updated"), - null=True, - blank=True, - auto_now=True + _("Updated"), null=True, blank=True, auto_now=True ) class Meta(object): @@ -336,7 +347,10 @@ class Meta(object): verbose_name = _("Form wizard entry") verbose_name_plural = _("Form wizard entries") - unique_together = (('user', 'slug'), ('user', 'name'),) + unique_together = ( + ("user", "slug"), + ("user", "name"), + ) def __str__(self): return self.name @@ -349,8 +363,8 @@ def get_absolute_url(self): :return string: """ return reverse( - 'fobi.view_form_wizard_entry', - kwargs={'form_wizard_entry_slug': self.slug} + "fobi.view_form_wizard_entry", + kwargs={"form_wizard_entry_slug": self.slug}, ) @@ -359,9 +373,7 @@ class FormEntry(models.Model): """Form entry.""" user = models.ForeignKey( - AUTH_USER_MODEL, - verbose_name=_("User"), - on_delete=models.CASCADE + AUTH_USER_MODEL, verbose_name=_("User"), on_delete=models.CASCADE ) name = models.CharField(_("Name"), max_length=255) title = models.CharField( @@ -369,49 +381,53 @@ class FormEntry(models.Model): max_length=255, null=True, blank=True, - help_text=_("Shown in templates if available.") + help_text=_("Shown in templates if available."), ) slug = AutoSlugField( - populate_from='name', verbose_name=_("Slug"), unique=True + populate_from="name", verbose_name=_("Slug"), unique=True ) is_public = models.BooleanField( _("Public?"), default=False, - help_text=_("Makes your form visible to the public.") + help_text=_("Makes your form visible to the public."), ) active_date_from = models.DateTimeField( _("Active from"), null=True, blank=True, - help_text=_("Date and time when the form becomes active " - "in the format: 'YYYY-MM-DD HH:MM'. " - "Leave it blank to activate immediately.") + help_text=_( + "Date and time when the form becomes active " + "in the format: 'YYYY-MM-DD HH:MM'. " + "Leave it blank to activate immediately." + ), ) active_date_to = models.DateTimeField( _("Active until"), null=True, blank=True, - help_text=_("Date and time when the form becomes inactive " - "in the format: 'YYYY-MM-DD HH:MM'. " - "Leave it blank to keep active forever.") + help_text=_( + "Date and time when the form becomes inactive " + "in the format: 'YYYY-MM-DD HH:MM'. " + "Leave it blank to keep active forever." + ), ) inactive_page_title = models.CharField( _("Inactive form page title"), max_length=255, null=True, blank=True, - help_text=_("Custom message title to display if form is inactive.") + help_text=_("Custom message title to display if form is inactive."), ) inactive_page_message = models.TextField( _("Inactive form page body"), null=True, blank=True, - help_text=_("Custom message text to display if form is inactive.") + help_text=_("Custom message text to display if form is inactive."), ) is_cloneable = models.BooleanField( _("Cloneable?"), default=False, - help_text=_("Makes your form cloneable by other users.") + help_text=_("Makes your form cloneable by other users."), ) # position = models.PositiveIntegerField( # _("Position"), null=True, blank=True @@ -421,35 +437,33 @@ class FormEntry(models.Model): max_length=255, null=True, blank=True, - help_text=_("Custom message title to display after valid form is " - "submitted") + help_text=_( + "Custom message title to display after valid form is " "submitted" + ), ) success_page_message = models.TextField( _("Success page body"), null=True, blank=True, - help_text=_("Custom message text to display after valid form is " - "submitted") + help_text=_( + "Custom message text to display after valid form is " "submitted" + ), ) action = models.CharField( _("Action"), max_length=255, null=True, blank=True, - help_text=_("Custom form action; don't fill this field, unless really " - "necessary.") + help_text=_( + "Custom form action; don't fill this field, unless really " + "necessary." + ), ) created = models.DateTimeField( - _("Created"), - null=True, - blank=True, - auto_now_add=True + _("Created"), null=True, blank=True, auto_now_add=True ) updated = models.DateTimeField( - _("Updated"), - null=True, - blank=True, - auto_now=True + _("Updated"), null=True, blank=True, auto_now=True ) class Meta(object): @@ -457,7 +471,10 @@ class Meta(object): verbose_name = _("Form entry") verbose_name_plural = _("Form entries") - unique_together = (('user', 'slug'), ('user', 'name'),) + unique_together = ( + ("user", "slug"), + ("user", "name"), + ) def __str__(self): return self.name @@ -486,8 +503,7 @@ def get_absolute_url(self): :return string: """ return reverse( - 'fobi.view_form_entry', - kwargs={'form_entry_slug': self.slug} + "fobi.view_form_entry", kwargs={"form_entry_slug": self.slug} ) @@ -502,20 +518,16 @@ class FormWizardFormEntry(models.Model): verbose_name=_("Form wizard entry"), null=False, blank=False, - on_delete=models.CASCADE + on_delete=models.CASCADE, ) form_entry = models.ForeignKey( FormEntry, verbose_name=_("Form entry"), null=False, blank=False, - on_delete=models.CASCADE - ) - position = models.PositiveIntegerField( - _("Position"), - null=True, - blank=True + on_delete=models.CASCADE, ) + position = models.PositiveIntegerField(_("Position"), null=True, blank=True) class Meta(object): """Meta class.""" @@ -523,8 +535,8 @@ class Meta(object): abstract = False verbose_name = _("Form wizard form entry") verbose_name_plural = _("Form wizard form entries") - ordering = ['position'] - unique_together = (('form_wizard_entry', 'form_entry'),) + ordering = ["position"] + unique_together = (("form_wizard_entry", "form_entry"),) def __str__(self): return "{0} - {1}".format(self.form_wizard_entry, self.form_entry) @@ -539,13 +551,13 @@ class FormFieldsetEntry(models.Model): verbose_name=_("Form"), null=True, blank=True, - on_delete=models.CASCADE + on_delete=models.CASCADE, ) name = models.CharField(_("Name"), max_length=255) is_repeatable = models.BooleanField( _("Is repeatable?"), default=False, - help_text=_("Makes your form fieldset repeatable.") + help_text=_("Makes your form fieldset repeatable."), ) class Meta(object): @@ -553,7 +565,7 @@ class Meta(object): verbose_name = _("Form fieldset entry") verbose_name_plural = _("Form fieldset entries") - unique_together = (('form_entry', 'name'),) + unique_together = (("form_entry", "name"),) def __str__(self): return self.name @@ -569,9 +581,7 @@ class BaseAbstractPluginEntry(models.Model): """ plugin_data = models.TextField( - verbose_name=_("Plugin data"), - null=True, - blank=True + verbose_name=_("Plugin data"), null=True, blank=True ) class Meta(object): @@ -612,11 +622,11 @@ def plugin_uid_code(self): return self.plugin_uid plugin_uid_code.allow_tags = True - plugin_uid_code.short_description = _('UID') + plugin_uid_code.short_description = _("UID") def plugin_name(self): """Plugin name.""" - return dict(self.get_registered_plugins()).get(self.plugin_uid, '') + return dict(self.get_registered_plugins()).get(self.plugin_uid, "") def get_plugin(self, fetch_related_data=False, request=None): """Get plugin. @@ -665,9 +675,7 @@ class AbstractPluginEntry(BaseAbstractPluginEntry): """ form_entry = models.ForeignKey( - FormEntry, - verbose_name=_("Form"), - on_delete=models.CASCADE + FormEntry, verbose_name=_("Form"), on_delete=models.CASCADE ) class Meta(object): @@ -703,7 +711,8 @@ class FormElementEntry(AbstractPluginEntry): """ plugin_uid = models.CharField( - _("Plugin name"), max_length=255, + _("Plugin name"), + max_length=255, # choices=get_registered_form_element_plugins() ) form_fieldset_entry = models.ForeignKey( @@ -711,13 +720,9 @@ class FormElementEntry(AbstractPluginEntry): verbose_name=_("Form fieldset"), null=True, blank=True, - on_delete=models.CASCADE - ) - position = models.PositiveIntegerField( - _("Position"), - null=True, - blank=True + on_delete=models.CASCADE, ) + position = models.PositiveIntegerField(_("Position"), null=True, blank=True) class Meta(object): """Meta class.""" @@ -725,7 +730,7 @@ class Meta(object): abstract = False verbose_name = _("Form element entry") verbose_name_plural = _("Form element entries") - ordering = ['position'] + ordering = ["position"] def get_registered_plugins(self): """Gets registered plugins.""" @@ -781,9 +786,7 @@ class AbstractFormWizardPluginEntry(BaseAbstractPluginEntry): """ form_wizard_entry = models.ForeignKey( - FormWizardEntry, - verbose_name=_("Form wizard"), - on_delete=models.CASCADE + FormWizardEntry, verbose_name=_("Form wizard"), on_delete=models.CASCADE ) class Meta(object): diff --git a/src/fobi/permissions/default.py b/src/fobi/permissions/default.py index 42f16a2d1..d6d8cb684 100644 --- a/src/fobi/permissions/default.py +++ b/src/fobi/permissions/default.py @@ -19,7 +19,11 @@ edit_form_wizard_handler_entry_permission, wizards_dashboard_permissions, ) -from .generic import AllowAnyPermission, BasePermission, IsAuthenticatedPermission +from .generic import ( + AllowAnyPermission, + BasePermission, + IsAuthenticatedPermission, +) from .helpers import ( all_permissions_required_func, any_permission_required_func, diff --git a/src/fobi/pip_helpers.py b/src/fobi/pip_helpers.py index ebd5169bf..ab6403ebd 100644 --- a/src/fobi/pip_helpers.py +++ b/src/fobi/pip_helpers.py @@ -4,13 +4,13 @@ import subprocess import sys -__title__ = 'fobi.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'check_if_installed', - 'get_installed_packages', + "check_if_installed", + "get_installed_packages", ) @@ -22,11 +22,11 @@ def get_installed_packages(with_versions=False): :return: :rtype: list """ - reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) + reqs = subprocess.check_output([sys.executable, "-m", "pip", "freeze"]) if with_versions: - return set([r.decode().split('==') for r in reqs.split()]) + return set([r.decode().split("==") for r in reqs.split()]) else: - return set([r.decode().split('==')[0] for r in reqs.split()]) + return set([r.decode().split("==")[0] for r in reqs.split()]) def check_if_installed(package, installed_packages=None): diff --git a/src/fobi/reusable/markdown_widget/helpers.py b/src/fobi/reusable/markdown_widget/helpers.py index faaab5d0d..4a5ff4177 100644 --- a/src/fobi/reusable/markdown_widget/helpers.py +++ b/src/fobi/reusable/markdown_widget/helpers.py @@ -1,10 +1,10 @@ from markdown import markdown -__title__ = 'fobi.reusable.markdown_widget.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('convert_to_markdown',) +__title__ = "fobi.reusable.markdown_widget.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("convert_to_markdown",) def convert_to_markdown(content): @@ -16,7 +16,5 @@ def convert_to_markdown(content): :return: HTML encoded text. :rtype: str """ - md = markdown( - text=content - ) + md = markdown(text=content) return md diff --git a/src/fobi/reusable/markdown_widget/widgets.py b/src/fobi/reusable/markdown_widget/widgets.py index 768088baa..533b60a24 100644 --- a/src/fobi/reusable/markdown_widget/widgets.py +++ b/src/fobi/reusable/markdown_widget/widgets.py @@ -4,11 +4,11 @@ from fobi.helpers import safe_text -__title__ = 'fobi.reusable.markdown_widget.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('MarkdownWidget',) +__title__ = "fobi.reusable.markdown_widget.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("MarkdownWidget",) class MarkdownWidget(Textarea): @@ -16,31 +16,28 @@ class MarkdownWidget(Textarea): def render(self, name, value, attrs=None, **kwargs): if value is None: - value = '' + value = "" if not attrs: attrs = self.attrs else: attrs.update(self.attrs) - final_attrs = self.build_attrs( - attrs, - extra_attrs={'name': name} - ) + final_attrs = self.build_attrs(attrs, extra_attrs={"name": name}) return format_html( '
' - '\r\n{}' + "\r\n{}" '
Preview
' - '
', + "", flatatt(final_attrs), - safe_text(value) + safe_text(value), ) class Media(object): """Media options.""" js = [ - 'markdown_widget/remarkable.min.js', - 'content_markdown/fobi.plugin.content_markdown.js', + "markdown_widget/remarkable.min.js", + "content_markdown/fobi.plugin.content_markdown.js", ] diff --git a/src/fobi/settings.py b/src/fobi/settings.py index c1681a05f..02c07de57 100644 --- a/src/fobi/settings.py +++ b/src/fobi/settings.py @@ -19,41 +19,41 @@ from .conf import get_setting from .exceptions import NoDefaultThemeSet -__title__ = 'fobi.settings' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.settings" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'CUSTOM_THEME_DATA', - 'DEBUG', - 'DEFAULT_MAX_LENGTH', - 'DEFAULT_MIN_LENGTH', - 'DEFAULT_THEME', - 'DISPLAY_AUTH_LINK', - 'FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS', - 'FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS', - 'FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS', - 'FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS', - 'FAIL_ON_MISSING_FORM_HANDLER_PLUGINS', - 'FAIL_ON_MISSING_FORM_WIZARD_HANDLER_PLUGINS', - 'FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS', - 'FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS', - 'FORM_CALLBACKS_MODULE_NAME', - 'FORM_ELEMENT_PLUGINS_MODULE_NAME', - 'FORM_HANDLER_PLUGINS_EXECUTION_ORDER', - 'FORM_HANDLER_PLUGINS_MODULE_NAME', - 'SORT_PLUGINS_BY_VALUE', - 'FORM_IMPORTER_PLUGINS_MODULE_NAME', - 'FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER', - 'GET_PARAM_INITIAL_DATA', - 'INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME', - 'INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME', - 'RESTRICT_PLUGIN_ACCESS', - 'THEME_FOOTER_TEXT', - 'THEMES_MODULE_NAME', - 'WAIT_AT_TEST_END', - 'WAIT_BETWEEN_TEST_STEPS', - 'WIZARD_FILES_UPLOAD_DIR', + "CUSTOM_THEME_DATA", + "DEBUG", + "DEFAULT_MAX_LENGTH", + "DEFAULT_MIN_LENGTH", + "DEFAULT_THEME", + "DISPLAY_AUTH_LINK", + "FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS", + "FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS", + "FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS", + "FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS", + "FAIL_ON_MISSING_FORM_HANDLER_PLUGINS", + "FAIL_ON_MISSING_FORM_WIZARD_HANDLER_PLUGINS", + "FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS", + "FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS", + "FORM_CALLBACKS_MODULE_NAME", + "FORM_ELEMENT_PLUGINS_MODULE_NAME", + "FORM_HANDLER_PLUGINS_EXECUTION_ORDER", + "FORM_HANDLER_PLUGINS_MODULE_NAME", + "SORT_PLUGINS_BY_VALUE", + "FORM_IMPORTER_PLUGINS_MODULE_NAME", + "FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER", + "GET_PARAM_INITIAL_DATA", + "INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME", + "INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME", + "RESTRICT_PLUGIN_ACCESS", + "THEME_FOOTER_TEXT", + "THEMES_MODULE_NAME", + "WAIT_AT_TEST_END", + "WAIT_BETWEEN_TEST_STEPS", + "WIZARD_FILES_UPLOAD_DIR", ) # ************************************************************** @@ -62,37 +62,42 @@ # ************************************************************** # ************************************************************** -RESTRICT_PLUGIN_ACCESS = get_setting('RESTRICT_PLUGIN_ACCESS') +RESTRICT_PLUGIN_ACCESS = get_setting("RESTRICT_PLUGIN_ACCESS") -FORM_ELEMENT_PLUGINS_MODULE_NAME = \ - get_setting('FORM_ELEMENT_PLUGINS_MODULE_NAME') +FORM_ELEMENT_PLUGINS_MODULE_NAME = get_setting( + "FORM_ELEMENT_PLUGINS_MODULE_NAME" +) -FORM_HANDLER_PLUGINS_MODULE_NAME = \ - get_setting('FORM_HANDLER_PLUGINS_MODULE_NAME') +FORM_HANDLER_PLUGINS_MODULE_NAME = get_setting( + "FORM_HANDLER_PLUGINS_MODULE_NAME" +) -INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME = \ - get_setting('INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME') +INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME = get_setting( + "INTEGRATION_FORM_ELEMENT_PLUGINS_MODULE_NAME" +) -INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME = \ - get_setting('INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME') +INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME = get_setting( + "INTEGRATION_FORM_HANDLER_PLUGINS_MODULE_NAME" +) -FORM_IMPORTER_PLUGINS_MODULE_NAME = \ - get_setting('FORM_IMPORTER_PLUGINS_MODULE_NAME') +FORM_IMPORTER_PLUGINS_MODULE_NAME = get_setting( + "FORM_IMPORTER_PLUGINS_MODULE_NAME" +) -FORM_CALLBACKS_MODULE_NAME = get_setting('FORM_CALLBACKS_MODULE_NAME') +FORM_CALLBACKS_MODULE_NAME = get_setting("FORM_CALLBACKS_MODULE_NAME") -THEMES_MODULE_NAME = get_setting('THEMES_MODULE_NAME') +THEMES_MODULE_NAME = get_setting("THEMES_MODULE_NAME") -DEFAULT_THEME = get_setting('DEFAULT_THEME') +DEFAULT_THEME = get_setting("DEFAULT_THEME") -DISPLAY_AUTH_LINK = get_setting('DISPLAY_AUTH_LINK') +DISPLAY_AUTH_LINK = get_setting("DISPLAY_AUTH_LINK") -GET_PARAM_INITIAL_DATA = get_setting('GET_PARAM_INITIAL_DATA') +GET_PARAM_INITIAL_DATA = get_setting("GET_PARAM_INITIAL_DATA") if not DEFAULT_THEME: raise NoDefaultThemeSet("No default theme set!") -DEBUG = get_setting('DEBUG') +DEBUG = get_setting("DEBUG") # ************************************************************** # ************************************************************** @@ -100,8 +105,8 @@ # ************************************************************** # ************************************************************** -CUSTOM_THEME_DATA = get_setting('CUSTOM_THEME_DATA') -THEME_FOOTER_TEXT = get_setting('THEME_FOOTER_TEXT') +CUSTOM_THEME_DATA = get_setting("CUSTOM_THEME_DATA") +THEME_FOOTER_TEXT = get_setting("THEME_FOOTER_TEXT") # ************************************************************** # ************************************************************** @@ -109,39 +114,49 @@ # ************************************************************** # ************************************************************** -DEFAULT_MIN_LENGTH = get_setting('DEFAULT_MIN_LENGTH') -DEFAULT_MAX_LENGTH = get_setting('DEFAULT_MAX_LENGTH') -SORT_PLUGINS_BY_VALUE = get_setting('SORT_PLUGINS_BY_VALUE') +DEFAULT_MIN_LENGTH = get_setting("DEFAULT_MIN_LENGTH") +DEFAULT_MAX_LENGTH = get_setting("DEFAULT_MAX_LENGTH") +SORT_PLUGINS_BY_VALUE = get_setting("SORT_PLUGINS_BY_VALUE") -FORM_HANDLER_PLUGINS_EXECUTION_ORDER = \ - get_setting('FORM_HANDLER_PLUGINS_EXECUTION_ORDER') +FORM_HANDLER_PLUGINS_EXECUTION_ORDER = get_setting( + "FORM_HANDLER_PLUGINS_EXECUTION_ORDER" +) -FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER = \ - get_setting('FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER') +FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER = get_setting( + "FORM_WIZARD_HANDLER_PLUGINS_EXECUTION_ORDER" +) -FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS = \ - get_setting('FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS') +FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS = get_setting( + "FAIL_ON_MISSING_FORM_ELEMENT_PLUGINS" +) -FAIL_ON_MISSING_FORM_HANDLER_PLUGINS = \ - get_setting('FAIL_ON_MISSING_FORM_HANDLER_PLUGINS') +FAIL_ON_MISSING_FORM_HANDLER_PLUGINS = get_setting( + "FAIL_ON_MISSING_FORM_HANDLER_PLUGINS" +) -FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS = \ - get_setting('FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS') +FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS = get_setting( + "FAIL_ON_MISSING_INTEGRATION_FORM_ELEMENT_PLUGINS" +) -FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS = \ - get_setting('FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS') +FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS = get_setting( + "FAIL_ON_MISSING_INTEGRATION_FORM_HANDLER_PLUGINS" +) -FAIL_ON_MISSING_FORM_WIZARD_HANDLER_PLUGINS = \ - get_setting('FAIL_ON_MISSING_FORM_WIZARD_HANDLER_PLUGINS') +FAIL_ON_MISSING_FORM_WIZARD_HANDLER_PLUGINS = get_setting( + "FAIL_ON_MISSING_FORM_WIZARD_HANDLER_PLUGINS" +) -FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS = \ - get_setting('FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS') +FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS = get_setting( + "FAIL_ON_ERRORS_IN_FORM_ELEMENT_PLUGINS" +) -FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS = \ - get_setting('FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS') +FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS = get_setting( + "FAIL_ON_ERRORS_IN_FORM_HANDLER_PLUGINS" +) -FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS = \ - get_setting('FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS') +FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS = get_setting( + "FAIL_ON_ERRORS_IN_FORM_WIZARD_HANDLER_PLUGINS" +) # ************************************************************** # ************************************************************** @@ -149,12 +164,12 @@ # ************************************************************** # ************************************************************** -WIZARD_FILES_UPLOAD_DIR = get_setting('WIZARD_FILES_UPLOAD_DIR') +WIZARD_FILES_UPLOAD_DIR = get_setting("WIZARD_FILES_UPLOAD_DIR") # ************************************************************** # ************************************************************** # ************************ Tests related *********************** # ************************************************************** # ************************************************************** -WAIT_BETWEEN_TEST_STEPS = get_setting('WAIT_BETWEEN_TEST_STEPS') -WAIT_AT_TEST_END = get_setting('WAIT_AT_TEST_END') +WAIT_BETWEEN_TEST_STEPS = get_setting("WAIT_BETWEEN_TEST_STEPS") +WAIT_AT_TEST_END = get_setting("WAIT_AT_TEST_END") diff --git a/src/fobi/templatetags/fobi_tags.py b/src/fobi/templatetags/fobi_tags.py index 35900a211..04eb6fc9e 100644 --- a/src/fobi/templatetags/fobi_tags.py +++ b/src/fobi/templatetags/fobi_tags.py @@ -1,25 +1,25 @@ from django import forms from django.conf import settings from django.forms.utils import ErrorDict -from django.template import Library, TemplateSyntaxError, Node +from django.template import Library, Node, TemplateSyntaxError from django.utils.translation import gettext_lazy as _ from ..base import get_theme from ..settings import DISPLAY_AUTH_LINK -__title__ = 'fobi.templatetags.fobi_tags' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.templatetags.fobi_tags" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'get_fobi_form_handler_plugin_custom_actions', - 'get_fobi_form_wizard_handler_plugin_custom_actions', - 'get_fobi_plugin', - 'get_form_field_type', - 'get_form_hidden_fields_errors', - 'has_edit_form_entry_permissions', - 'render_auth_link', - 'render_fobi_forms_list', + "get_fobi_form_handler_plugin_custom_actions", + "get_fobi_form_wizard_handler_plugin_custom_actions", + "get_fobi_plugin", + "get_form_field_type", + "get_form_hidden_fields_errors", + "has_edit_form_entry_permissions", + "render_auth_link", + "render_fobi_forms_list", ) THEME = get_theme(request=None, as_instance=True) @@ -49,12 +49,12 @@ def __init__(self, entry, as_var=None): def render(self, context): """Render.""" - request = context['request'] + request = context["request"] entry = self.entry.resolve(context, True) plugin = entry.get_plugin(request=request) context[self.as_var] = plugin - return '' + return "" @register.tag @@ -78,12 +78,10 @@ def get_fobi_plugin(parser, token): bits = token.contents.split() if len(bits) == 4: - if bits[-2] != 'as': + if bits[-2] != "as": raise TemplateSyntaxError( "Invalid syntax for {0}. Incorrect number of " - "arguments.".format( - bits[0] - ) + "arguments.".format(bits[0]) ) as_var = bits[-1] else: @@ -96,6 +94,7 @@ def get_fobi_plugin(parser, token): return GetFobiPluginNode(entry=entry, as_var=as_var) + # ***************************************************************************** # ********************** Form handler plugin specific ************************* # ***************************************************************************** @@ -112,12 +111,12 @@ def __init__(self, plugin, form_entry, as_var=None): def render(self, context): """Render.""" - request = context['request'] + request = context["request"] plugin = self.plugin.resolve(context, True) form_entry = self.form_entry.resolve(context, True) context[self.as_var] = plugin.get_custom_actions(form_entry, request) - return '' + return "" @register.tag @@ -140,12 +139,10 @@ def get_fobi_form_handler_plugin_custom_actions(parser, token): bits = token.contents.split() if len(bits) == 5: - if bits[-2] != 'as': + if bits[-2] != "as": raise TemplateSyntaxError( "Invalid syntax for {0}. Incorrect number of " - "arguments.".format( - bits[0] - ) + "arguments.".format(bits[0]) ) as_var = bits[-1] else: @@ -161,6 +158,7 @@ def get_fobi_form_handler_plugin_custom_actions(parser, token): plugin=plugin, form_entry=form_entry, as_var=as_var ) + # ***************************************************************************** # ******************* Form wizard handler plugin specific ********************* # ***************************************************************************** @@ -177,13 +175,14 @@ def __init__(self, plugin, form_wizard_entry, as_var=None): def render(self, context): """Render.""" - request = context['request'] + request = context["request"] plugin = self.plugin.resolve(context, True) form_wizard_entry = self.form_wizard_entry.resolve(context, True) - context[self.as_var] = plugin.get_custom_actions(form_wizard_entry, - request) - return '' + context[self.as_var] = plugin.get_custom_actions( + form_wizard_entry, request + ) + return "" @register.tag @@ -207,12 +206,10 @@ def get_fobi_form_wizard_handler_plugin_custom_actions(parser, token): bits = token.contents.split() if len(bits) == 5: - if bits[-2] != 'as': + if bits[-2] != "as": raise TemplateSyntaxError( "Invalid syntax for {0}. Incorrect number of " - "arguments.".format( - bits[0] - ) + "arguments.".format(bits[0]) ) as_var = bits[-1] else: @@ -228,6 +225,7 @@ def get_fobi_form_wizard_handler_plugin_custom_actions(parser, token): plugin=plugin, form_wizard_entry=form_wizard_entry, as_var=as_var ) + # ***************************************************************************** # ***************************************************************************** # ***************************************************************************** @@ -242,37 +240,37 @@ def render_auth_link(context): if not DISPLAY_AUTH_LINK: return {} - request = context.get('request', None) + request = context.get("request", None) user_is_authenticated = request.user.is_authenticated if request and user_is_authenticated: try: auth_url = settings.LOGOUT_URL - auth_icon_class = 'icon-signout' - auth_link_text = _('Log out') + auth_icon_class = "icon-signout" + auth_link_text = _("Log out") except Exception: - auth_url = '' - auth_icon_class = '' - auth_link_text = '' + auth_url = "" + auth_icon_class = "" + auth_link_text = "" else: try: auth_url = settings.LOGIN_URL - auth_icon_class = 'icon-signin' - auth_link_text = _('Log in') + auth_icon_class = "icon-signin" + auth_link_text = _("Log in") except Exception: - auth_url = '' - auth_icon_class = '' - auth_link_text = '' + auth_url = "" + auth_icon_class = "" + auth_link_text = "" return { - 'auth_link': auth_url, - 'auth_icon_class': auth_icon_class, - 'auth_link_text': auth_link_text + "auth_link": auth_url, + "auth_icon_class": auth_icon_class, + "auth_link_text": auth_link_text, } register.inclusion_tag( - 'fobi/snippets/render_auth_link.html', takes_context=True + "fobi/snippets/render_auth_link.html", takes_context=True )(render_auth_link) @@ -292,17 +290,17 @@ def render_fobi_forms_list(context, queryset, *args, **kwargs): show_delete_link=False \ show_export_link=False %} """ - request = context.get('request', None) - show_edit_link = kwargs.get('edit_link', False) - show_delete_link = kwargs.get('delete_link', False) - show_export_link = kwargs.get('export_link', False) + request = context.get("request", None) + show_edit_link = kwargs.get("edit_link", False) + show_delete_link = kwargs.get("delete_link", False) + show_export_link = kwargs.get("export_link", False) return { - 'show_custom_actions': ( + "show_custom_actions": ( show_edit_link or show_delete_link or show_export_link ), - 'show_edit_link': show_edit_link, - 'show_delete_link': show_delete_link, - 'show_export_link': show_export_link, + "show_edit_link": show_edit_link, + "show_delete_link": show_delete_link, + "show_export_link": show_export_link, } @@ -325,39 +323,37 @@ def __init__(self, as_var=None): def render(self, context): """Render.""" try: - perms = context['perms'] + perms = context["perms"] except Exception as err: if self.as_var: context[self.as_var] = False - return '' + return "" else: return False perms_required = [ - 'fobi.add_formentry', - 'fobi.change_formentry', - 'fobi.delete_formentry', - - 'fobi.add_formelemententry', - 'fobi.change_formelemententry', - 'fobi.delete_formelemententry', - - 'fobi.add_formhandlerentry', - 'fobi.change_formhandlerentry', - 'fobi.delete_formhandlerentry', + "fobi.add_formentry", + "fobi.change_formentry", + "fobi.delete_formentry", + "fobi.add_formelemententry", + "fobi.change_formelemententry", + "fobi.delete_formelemententry", + "fobi.add_formhandlerentry", + "fobi.change_formhandlerentry", + "fobi.delete_formhandlerentry", ] for perm in perms_required: if perm in perms: if self.as_var: context[self.as_var] = True - return '' + return "" else: return True if self.as_var: context[self.as_var] = False - return '' + return "" else: return False @@ -395,6 +391,7 @@ def has_edit_form_entry_permissions(parser, token): return HasEditFormEntryPermissionsNode(as_var=as_var) + # ***************************************************************************** # ***************************************************************************** # ***************************************************************************** @@ -438,18 +435,18 @@ def render(self, context): properties = [] if isinstance(field.field.widget, forms.CheckboxInput): - properties.append('is_checkbox') + properties.append("is_checkbox") if isinstance(field.field.widget, forms.CheckboxSelectMultiple): - properties.append('is_checkbox_multiple') + properties.append("is_checkbox_multiple") if isinstance(field.field.widget, forms.RadioSelect): - properties.append('is_radio') + properties.append("is_radio") res = FormFieldType(properties) context[self.as_var] = res - return '' + return "" @register.tag @@ -470,12 +467,10 @@ def get_form_field_type(parser, token): bits = token.contents.split() if len(bits) == 4: - if bits[-2] != 'as': + if bits[-2] != "as": raise TemplateSyntaxError( "Invalid syntax for {0}. Incorrect number of " - "arguments.".format( - bits[0] - ) + "arguments.".format(bits[0]) ) as_var = bits[-1] else: @@ -508,7 +503,7 @@ def render(self, context): hidden_fields_errors.update({field.name: field.errors}) context[self.as_var] = hidden_fields_errors - return '' + return "" @register.tag @@ -527,12 +522,10 @@ def get_form_hidden_fields_errors(parser, token): bits = token.contents.split() if len(bits) == 4: - if bits[-2] != 'as': + if bits[-2] != "as": raise TemplateSyntaxError( "Invalid syntax for {0}. Incorrect number of " - "arguments.".format( - bits[0] - ) + "arguments.".format(bits[0]) ) as_var = bits[-1] else: diff --git a/src/fobi/templatetags/future_compat.py b/src/fobi/templatetags/future_compat.py index 2cc6750d1..f8e09808f 100644 --- a/src/fobi/templatetags/future_compat.py +++ b/src/fobi/templatetags/future_compat.py @@ -1,8 +1,8 @@ -__title__ = 'fobi.templatetags.future_compat' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('firstof',) +__title__ = "fobi.templatetags.future_compat" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("firstof",) try: # We're using the Django 1.6 admin templates, that make use of new @@ -12,7 +12,7 @@ from django.template.defaulttags import firstof register = Library() - register.tag('firstof', firstof) + register.tag("firstof", firstof) except ImportError: import warnings @@ -21,7 +21,7 @@ from django.utils.encoding import force_str from django.utils.formats import localize from django.utils.html import escape as html_escape - from django.utils.safestring import mark_safe, EscapeData, SafeData + from django.utils.safestring import EscapeData, SafeData, mark_safe from django.utils.timezone import template_localtime register = Library() @@ -36,8 +36,9 @@ def render_value_in_context(value, context): value = template_localtime(value, use_tz=context.use_tz) value = localize(value, use_l10n=context.use_l10n) value = force_str(value) - if ((context.autoescape and not isinstance(value, SafeData)) or - isinstance(value, EscapeData)): + if ( + context.autoescape and not isinstance(value, SafeData) + ) or isinstance(value, EscapeData): return html_escape(value) else: return value @@ -58,7 +59,7 @@ def render(self, context): if not self.escape: value = mark_safe(value) return render_value_in_context(value, context) - return '' + return "" @register.tag def firstof(parser, token, escape=False): @@ -102,11 +103,15 @@ def firstof(parser, token, escape=False): "arguments; the non-autoescaping version is deprecated. Load " "it from the `future` tag library to start using the new " "behavior.", - DeprecationWarning, stacklevel=2) + DeprecationWarning, + stacklevel=2, + ) bits = token.split_contents()[1:] if len(bits) < 1: - raise TemplateSyntaxError("'firstof' statement requires at least " - "one argument") - return FirstOfNode([parser.compile_filter(bit) for bit in bits], - escape=escape) + raise TemplateSyntaxError( + "'firstof' statement requires at least " "one argument" + ) + return FirstOfNode( + [parser.compile_filter(bit) for bit in bits], escape=escape + ) diff --git a/src/fobi/tests/__init__.py b/src/fobi/tests/__init__.py index 2af08f29e..470ab2888 100644 --- a/src/fobi/tests/__init__.py +++ b/src/fobi/tests/__init__.py @@ -3,14 +3,15 @@ import unittest from fobi.tests.test_browser_build_dynamic_forms import * + # from fobi.tests.test_core import * # from fobi.tests.test_dynamic_forms import * # from fobi.tests.test_sortable_dict import * -__title__ = 'fobi.tests' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.tests" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/tests/base.py b/src/fobi/tests/base.py index 8df068705..9c1af54d5 100644 --- a/src/fobi/tests/base.py +++ b/src/fobi/tests/base.py @@ -1,32 +1,25 @@ -import os import logging +import os from datetime import datetime +from django.conf import settings +from django.contrib.staticfiles.testing import StaticLiveServerTestCase +from django.core.management import call_command +from django.urls import reverse from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys from selenium.webdriver.firefox.firefox_binary import FirefoxBinary from selenium.webdriver.support.wait import WebDriverWait -from django.core.management import call_command -from django.urls import reverse -from django.conf import settings -from django.contrib.staticfiles.testing import StaticLiveServerTestCase - from . import constants -from .helpers import ( - setup_app, - get_or_create_admin_user, - phantom_js_clean_up, -) - -__title__ = 'fobi.tests.test_browser_build_dynamic_forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'BaseFobiBrowserBuldDynamicFormsTest', -) +from .helpers import get_or_create_admin_user, phantom_js_clean_up, setup_app + +__title__ = "fobi.tests.test_browser_build_dynamic_forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("BaseFobiBrowserBuldDynamicFormsTest",) logger = logging.getLogger(__name__) @@ -53,34 +46,30 @@ class BaseFobiBrowserBuldDynamicFormsTest(StaticLiveServerTestCase): def tearDown(self): """Tear down.""" super(BaseFobiBrowserBuldDynamicFormsTest, self).tearDown() - call_command('flush', - verbosity=0, - interactive=False, - reset_sequences=True, - allow_cascade=True, - inhibit_post_migrate=False) + call_command( + "flush", + verbosity=0, + interactive=False, + reset_sequences=True, + allow_cascade=True, + inhibit_post_migrate=False, + ) @classmethod def setUpClass(cls): """Set up class.""" chrome_driver_path = getattr( - settings, - 'CHROME_DRIVER_EXECUTABLE_PATH', - None - ) - chrome_driver_options = getattr( - settings, - 'CHROME_DRIVER_OPTIONS', - None + settings, "CHROME_DRIVER_EXECUTABLE_PATH", None ) - firefox_bin_path = getattr(settings, 'FIREFOX_BIN_PATH', None) + chrome_driver_options = getattr(settings, "CHROME_DRIVER_OPTIONS", None) + firefox_bin_path = getattr(settings, "FIREFOX_BIN_PATH", None) phantom_js_executable_path = getattr( - settings, 'PHANTOM_JS_EXECUTABLE_PATH', None + settings, "PHANTOM_JS_EXECUTABLE_PATH", None ) if chrome_driver_path is not None: cls.driver = webdriver.Chrome( executable_path=chrome_driver_path, - options=chrome_driver_options + options=chrome_driver_options, ) elif phantom_js_executable_path is not None: if phantom_js_executable_path: @@ -111,12 +100,14 @@ def tearDownClass(cls): print(err) super(BaseFobiBrowserBuldDynamicFormsTest, cls).tearDownClass() - call_command('flush', - verbosity=0, - interactive=False, - reset_sequences=True, - allow_cascade=True, - inhibit_post_migrate=False) + call_command( + "flush", + verbosity=0, + interactive=False, + reset_sequences=True, + allow_cascade=True, + inhibit_post_migrate=False, + ) # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -137,9 +128,11 @@ def _maximize_window(self): def _get_live_server_url(self): """Get live server URL.""" - return self.LIVE_SERVER_URL \ - if self.LIVE_SERVER_URL \ + return ( + self.LIVE_SERVER_URL + if self.LIVE_SERVER_URL else self.live_server_url + ) def _authenticate(self): """Authenticate.""" @@ -147,10 +140,7 @@ def _authenticate(self): user = get_or_create_admin_user() self.driver.get( - '{0}{1}'.format( - self._get_live_server_url(), - reverse('auth_login') - ) + "{0}{1}".format(self._get_live_server_url(), reverse("auth_login")) ) self._maximize_window() username_input = self.driver.find_element_by_name("username") @@ -178,7 +168,7 @@ def _click(self, element): def _aggressive_click(self, element): """Aggressive click.""" - link = element.get_attribute('href') + link = element.get_attribute("href") self.driver.get(link) def _scroll_to_element(self, form_element, simple=False): @@ -187,14 +177,10 @@ def _scroll_to_element(self, form_element, simple=False): if simple: return - x = coordinates.get('x', 0) - y = coordinates.get('y', 0) - self.driver.execute_script( - "window.scrollTo({0}, {1});".format(x, y) - ) - self.driver.execute_script( - "window.scrollBy({0}, {1});".format(0, -100) - ) + x = coordinates.get("x", 0) + y = coordinates.get("y", 0) + self.driver.execute_script("window.scrollTo({0}, {1});".format(x, y)) + self.driver.execute_script("window.scrollBy({0}, {1});".format(0, -100)) def _move_to_element(self, form_element, simple=False): """Move to element.""" @@ -202,32 +188,25 @@ def _move_to_element(self, form_element, simple=False): def _scroll_to(self, x, y): """Scroll to.""" - self.driver.execute_script( - "window.scrollTo({0}, {1});".format(x, y) - ) + self.driver.execute_script("window.scrollTo({0}, {1});".format(x, y)) def _scroll_by(self, x, y): """Scroll by.""" - self.driver.execute_script( - "window.scrollBy({0}, {1});".format(x, y) - ) + self.driver.execute_script("window.scrollBy({0}, {1});".format(x, y)) def _scroll_page_top(self): """Scroll to the page top.""" - html = self.driver.find_element_by_tag_name('html') + html = self.driver.find_element_by_tag_name("html") html.send_keys(Keys.HOME) def _scroll_page_bottom(self): """Scroll to the page bottom.""" - html = self.driver.find_element_by_tag_name('html') + html = self.driver.find_element_by_tag_name("html") html.send_keys(Keys.END) def take_screenshot(self, name="screenshot"): now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S") - filename = os.path.join( - settings.STATIC_ROOT, - f"{name}-{now}.png" - ) + filename = os.path.join(settings.STATIC_ROOT, f"{name}-{now}.png") self.driver.get_screenshot_as_file(filename) logger.debug(f"Screenshot saved in: {filename}") return filename diff --git a/src/fobi/tests/constants.py b/src/fobi/tests/constants.py index 9bb5b1080..a80ff25fe 100644 --- a/src/fobi/tests/constants.py +++ b/src/fobi/tests/constants.py @@ -1,15 +1,15 @@ -__title__ = 'fobi.tests.constants' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.tests.constants" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'FOBI_TEST_USER_USERNAME', - 'FOBI_TEST_USER_PASSWORD', - 'TEST_FORM_NAME', - 'TEST_FORM_SLUG', + "FOBI_TEST_USER_USERNAME", + "FOBI_TEST_USER_PASSWORD", + "TEST_FORM_NAME", + "TEST_FORM_SLUG", ) -FOBI_TEST_USER_USERNAME = 'test_admin' -FOBI_TEST_USER_PASSWORD = 'test' -TEST_FORM_NAME = 'Test form' -TEST_FORM_SLUG = 'test-form' +FOBI_TEST_USER_USERNAME = "test_admin" +FOBI_TEST_USER_PASSWORD = "test" +TEST_FORM_NAME = "Test form" +TEST_FORM_SLUG = "test-form" diff --git a/src/fobi/tests/core.py b/src/fobi/tests/core.py index 8018b0361..926b16930 100644 --- a/src/fobi/tests/core.py +++ b/src/fobi/tests/core.py @@ -2,17 +2,17 @@ from django.conf import settings -__title__ = 'fobi.tests.base' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.tests.base" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'PRINT_INFO', - 'print_info', - 'app_setup', - 'skip', - 'is_app_setup_completed', - 'mark_app_setup_as_completed', + "PRINT_INFO", + "print_info", + "app_setup", + "skip", + "is_app_setup_completed", + "mark_app_setup_as_completed", ) # **************************************************************************** @@ -36,16 +36,17 @@ def inner(self, *args, **kwargs): """Inner.""" result = func(self, *args, **kwargs) - print('\n{0}'.format(func.__name__)) - print('============================') + print("\n{0}".format(func.__name__)) + print("============================") if func.__doc__: print('""" {0} """'.format(func.__doc__.strip())) - print('----------------------------') + print("----------------------------") if result is not None: print(result) - print('\n') + print("\n") return result + return inner @@ -54,11 +55,13 @@ def inner(self, *args, **kwargs): def skip(func): """Simply skips the test.""" + def inner(self, *args, **kwargs): """Inner.""" if SKIP: return return func(self, *args, **kwargs) + return inner diff --git a/src/fobi/tests/data.py b/src/fobi/tests/data.py index 2d51691b4..51d63a4b5 100644 --- a/src/fobi/tests/data.py +++ b/src/fobi/tests/data.py @@ -1,144 +1,163 @@ import copy -from collections import OrderedDict import datetime import os -# from decimal import Decimal +from collections import OrderedDict from django.conf import settings from django.utils.encoding import force_str - from faker import Faker -from fobi.contrib.plugins.form_elements.content \ - .content_image.fobi_form_elements import ContentImagePlugin -from fobi.contrib.plugins.form_elements.content \ - .content_text.fobi_form_elements import ContentTextPlugin -# from fobi.contrib.plugins.form_elements.content \ -# .content_video.fobi_form_elements import ContentVideoPlugin - -from fobi.contrib.plugins.form_elements.fields \ - .boolean.fobi_form_elements import BooleanSelectPlugin -from fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple \ - .fobi_form_elements import CheckboxSelectMultipleInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .date.fobi_form_elements import DateInputPlugin +from fobi.contrib.plugins.form_elements.content.content_image.fobi_form_elements import ( + ContentImagePlugin, +) +from fobi.contrib.plugins.form_elements.content.content_text.fobi_form_elements import ( + ContentTextPlugin, +) +from fobi.contrib.plugins.form_elements.fields.boolean.fobi_form_elements import ( + BooleanSelectPlugin, +) +from fobi.contrib.plugins.form_elements.fields.checkbox_select_multiple.fobi_form_elements import ( + CheckboxSelectMultipleInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.date.fobi_form_elements import ( + DateInputPlugin, +) # from fobi.contrib.plugins.form_elements.fields \ # .date_drop_down.fobi_form_elements import DateDropDownInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .datetime.fobi_form_elements import DateTimeInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .decimal.fobi_form_elements import DecimalInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .email.fobi_form_elements import EmailInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .file.fobi_form_elements import FileInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .float.fobi_form_elements import FloatInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .hidden.fobi_form_elements import HiddenInputPlugin +from fobi.contrib.plugins.form_elements.fields.datetime.fobi_form_elements import ( + DateTimeInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.decimal.fobi_form_elements import ( + DecimalInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.email.fobi_form_elements import ( + EmailInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.file.fobi_form_elements import ( + FileInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.float.fobi_form_elements import ( + FloatInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.hidden.fobi_form_elements import ( + HiddenInputPlugin, +) # from fobi.contrib.plugins.form_elements.fields.hidden_model_object \ # .fobi_form_elements import HiddenModelObjectInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .integer.fobi_form_elements import IntegerInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .ip_address.fobi_form_elements import IPAddressInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .null_boolean.fobi_form_elements import NullBooleanSelectPlugin -from fobi.contrib.plugins.form_elements.fields \ - .select.fobi_form_elements import SelectInputPlugin -from fobi.contrib.plugins.form_elements.fields.select_model_object \ - .fobi_form_elements import SelectModelObjectInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .select_multiple.fobi_form_elements import SelectMultipleInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .select_multiple_with_max.fobi_form_elements \ - import SelectMultipleWithMaxInputPlugin -from fobi.contrib.plugins.form_elements.fields.slug \ - .fobi_form_elements import SlugInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .text.fobi_form_elements import TextInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .textarea.fobi_form_elements import TextareaPlugin -from fobi.contrib.plugins.form_elements.fields \ - .url.fobi_form_elements import URLInputPlugin +from fobi.contrib.plugins.form_elements.fields.integer.fobi_form_elements import ( + IntegerInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.ip_address.fobi_form_elements import ( + IPAddressInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.null_boolean.fobi_form_elements import ( + NullBooleanSelectPlugin, +) +from fobi.contrib.plugins.form_elements.fields.select.fobi_form_elements import ( + SelectInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.select_model_object.fobi_form_elements import ( + SelectModelObjectInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.select_multiple.fobi_form_elements import ( + SelectMultipleInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.select_multiple_with_max.fobi_form_elements import ( + SelectMultipleWithMaxInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.slug.fobi_form_elements import ( + SlugInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.text.fobi_form_elements import ( + TextInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.textarea.fobi_form_elements import ( + TextareaPlugin, +) +from fobi.contrib.plugins.form_elements.fields.url.fobi_form_elements import ( + URLInputPlugin, +) +from fobi.contrib.plugins.form_handlers.db_store.fobi_form_handlers import ( + DBStoreHandlerPlugin, +) +from fobi.contrib.plugins.form_handlers.http_repost.fobi_form_handlers import ( + HTTPRepostHandlerPlugin, +) +from fobi.contrib.plugins.form_handlers.mail.fobi_form_handlers import ( + MailHandlerPlugin, +) +from fobi.contrib.plugins.form_handlers.mail_sender.fobi_form_handlers import ( + MailSenderHandlerPlugin, +) + +# from decimal import Decimal + + +# from fobi.contrib.plugins.form_elements.content \ +# .content_video.fobi_form_elements import ContentVideoPlugin -from fobi.contrib.plugins.form_handlers \ - .db_store.fobi_form_handlers import DBStoreHandlerPlugin -from fobi.contrib.plugins.form_handlers \ - .mail.fobi_form_handlers import MailHandlerPlugin -from fobi.contrib.plugins.form_handlers \ - .mail_sender.fobi_form_handlers import MailSenderHandlerPlugin -from fobi.contrib.plugins.form_handlers \ - .http_repost.fobi_form_handlers import HTTPRepostHandlerPlugin -__title__ = 'fobi.tests.data' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.tests.data" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'TEST_DYNAMIC_FORMS_DEFINITION_DATA', - 'TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF', + "TEST_DYNAMIC_FORMS_DEFINITION_DATA", + "TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF", # 'TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF_NEGATIVE', - 'TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE', - 'TEST_DYNAMIC_FORMS_PUT_DATA', - 'TEST_DYNAMIC_FORMS_PUT_DATA_ALL', - 'TEST_FORM_ELEMENT_PLUGIN_DATA', - 'TEST_FORM_FIELD_DATA', - 'TEST_FORM_HANDLER_PLUGIN_DATA', - 'TEST_MAILCHIMP_IMPORTER_FORM_DATA', + "TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE", + "TEST_DYNAMIC_FORMS_PUT_DATA", + "TEST_DYNAMIC_FORMS_PUT_DATA_ALL", + "TEST_FORM_ELEMENT_PLUGIN_DATA", + "TEST_FORM_FIELD_DATA", + "TEST_FORM_HANDLER_PLUGIN_DATA", + "TEST_MAILCHIMP_IMPORTER_FORM_DATA", ) TEST_FORM_ELEMENT_PLUGIN_DATA = { # Add a "Boolean (checkbox)" plugin. force_str(BooleanSelectPlugin.name): { - 'label': "Test boolean", - 'help_text': "Lorem ipsum boolean", - 'required': False, + "label": "Test boolean", + "help_text": "Lorem ipsum boolean", + "required": False, }, - # Add a "Date" input form element force_str(DateInputPlugin.name): { - 'label': "Test date input", - 'help_text': "Lorem ipsum select multiple input", - 'required': False, + "label": "Test date input", + "help_text": "Lorem ipsum select multiple input", + "required": False, }, - # Add a "DateTime" input form element force_str(DateTimeInputPlugin.name): { - 'label': "Test datetime input", - 'help_text': "Lorem ipsum select multiple input", - 'required': False, + "label": "Test datetime input", + "help_text": "Lorem ipsum select multiple input", + "required": False, }, - # Add an decimal input plugin force_str(DecimalInputPlugin.name): { - 'label': "Test decimal input", - 'help_text': "Lorem ipsum email", - 'required': True, + "label": "Test decimal input", + "help_text": "Lorem ipsum email", + "required": True, }, - # Add an email input plugin force_str(EmailInputPlugin.name): { - 'label': "Test email input", - 'help_text': "Lorem ipsum email", - 'required': True, + "label": "Test email input", + "help_text": "Lorem ipsum email", + "required": True, }, - # Add a "File" (file) form element force_str(FileInputPlugin.name): { - 'label': "Test file input", + "label": "Test file input", # 'name': "test_file_input", - 'help_text': "Lorem ipsum file", - 'required': False, - }, - + "help_text": "Lorem ipsum file", + "required": False, + }, # Add an float input plugin force_str(FloatInputPlugin.name): { - 'label': "Test float input", - 'help_text': "Lorem ipsum email", - 'required': True, + "label": "Test float input", + "help_text": "Lorem ipsum email", + "required": True, }, - # TODO: Find out why selenium fails here! # Add a "Hidden" (boolean) form element # force_str(HiddenInputPlugin.name): { @@ -147,97 +166,84 @@ # 'help_text': "Lorem ipsum hidden", # 'required': True, # }, - # Add a "Integer" (text input) form element force_str(IntegerInputPlugin.name): { - 'label': "Test integer", - 'help_text': "Lorem ipsum text input", - 'required': True, + "label": "Test integer", + "help_text": "Lorem ipsum text input", + "required": True, }, - # Add a "IP address" (text input) form element force_str(IPAddressInputPlugin.name): { - 'label': "Test IP address", - 'help_text': "Lorem ipsum text input", - 'required': True, + "label": "Test IP address", + "help_text": "Lorem ipsum text input", + "required": True, }, - # Add a "null boolean" form element force_str(NullBooleanSelectPlugin.name): { - 'label': "Test null boolean", - 'help_text': "Lorem ipsum text input", - 'required': True, + "label": "Test null boolean", + "help_text": "Lorem ipsum text input", + "required": True, }, - # Add a "Select Input" (select input) form element force_str(SelectInputPlugin.name): { - 'label': "Test select", - 'help_text': "Lorem ipsum text input", - 'required': False, - 'choices': "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), + "label": "Test select", + "help_text": "Lorem ipsum text input", + "required": False, + "choices": "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), }, - # Add a "Select model object" (select input) form element force_str(SelectModelObjectInputPlugin.name): { - 'label': "Test select model object", - 'help_text': "Lorem ipsum select model object input", - 'required': False, + "label": "Test select model object", + "help_text": "Lorem ipsum select model object input", + "required": False, }, - # Add a "Select multiple" (select multiple input) form element force_str(SelectMultipleInputPlugin.name): { - 'label': "Test select multiple input", - 'help_text': "Lorem ipsum select multiple input", - 'required': False, - 'choices': "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), + "label": "Test select multiple input", + "help_text": "Lorem ipsum select multiple input", + "required": False, + "choices": "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), }, - # Add a "Select multiple with max" (select multiple with max input) form # element force_str(SelectMultipleWithMaxInputPlugin.name): { - 'label': "Test select multiple with max input", - 'help_text': "Lorem ipsum select multiple with max input", - 'required': False, - 'choices': "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), + "label": "Test select multiple with max input", + "help_text": "Lorem ipsum select multiple with max input", + "required": False, + "choices": "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), }, - # Add a "Checkbox select multiple" (checkbox select multiple input) form # element force_str(CheckboxSelectMultipleInputPlugin.name): { - 'label': "Test checkbox select multiple input", - 'help_text': "Lorem ipsum checkbox select multiple input", - 'required': False, - 'choices': "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), + "label": "Test checkbox select multiple input", + "help_text": "Lorem ipsum checkbox select multiple input", + "required": False, + "choices": "1{s}2{s}alpha, Alpha{s}beta".format(s=os.linesep), }, - # Add a "Slug" (slug input) form element force_str(SlugInputPlugin.name): { - 'label': "Test slug input", - 'help_text': "Lorem ipsum select multiple input", - 'required': False, + "label": "Test slug input", + "help_text": "Lorem ipsum select multiple input", + "required": False, }, - # Add a "Text" (text input) form element force_str(TextInputPlugin.name): { - 'label': "Test text", - 'help_text': "Lorem ipsum text input", - 'required': True, + "label": "Test text", + "help_text": "Lorem ipsum text input", + "required": True, }, - # Add a "Textarea" (text area) form element force_str(TextareaPlugin.name): { - 'label': "Test text area", - 'help_text': "Lorem ipsum text area", - 'required': True, + "label": "Test text area", + "help_text": "Lorem ipsum text area", + "required": True, }, - # Add a "URL input" form element force_str(URLInputPlugin.name): { - 'label': "Test URL input", - 'help_text': "Lorem ipsum text area", - 'required': True, + "label": "Test URL input", + "help_text": "Lorem ipsum text area", + "required": True, }, - # Add a "Text" (text input) form element # force_str(TextInputPlugin.name): { # 'label': u"Ô±Õ¶Õ¸Ö‚Õ¶", @@ -247,31 +253,31 @@ } TEST_FORM_FIELD_DATA = { - 'test_boolean': True, + "test_boolean": True, # 'test_checkbox_select_multiple_input': '', - 'test_date_input': datetime.date.today().strftime("%d-%m-%Y"), - 'test_datetime_input': datetime.datetime.now().strftime( + "test_date_input": datetime.date.today().strftime("%d-%m-%Y"), + "test_datetime_input": datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S" ), - 'test_decimal_input': '10.01', # Decimal(10.01), - 'test_email_input': 'john@doe.net', - 'test_file_input': os.path.join( + "test_decimal_input": "10.01", # Decimal(10.01), + "test_email_input": "john@doe.net", + "test_file_input": os.path.join( settings.MEDIA_ROOT, - 'testing', - 'delusional_insanity_-_karima_van_der_voort.jpg' + "testing", + "delusional_insanity_-_karima_van_der_voort.jpg", ), - 'test_float_input': '10.01', + "test_float_input": "10.01", # 'test_hidden_input': '', - 'test_integer': '2014', - 'test_null_boolean': False, - 'test_ip_address': '127.0.0.1', - 'test_select': '', - 'test_select_model_object': '', - 'test_select_multiple_input': '', - 'test_slug_input': 'lorem-ipsum', - 'test_text': 'Lorem ipsum', - 'test_text_area': 'Dolor sit amet', - 'test_url_input': 'http://dev.example.com', + "test_integer": "2014", + "test_null_boolean": False, + "test_ip_address": "127.0.0.1", + "test_select": "", + "test_select_model_object": "", + "test_select_multiple_input": "", + "test_slug_input": "lorem-ipsum", + "test_text": "Lorem ipsum", + "test_text_area": "Dolor sit amet", + "test_url_input": "http://dev.example.com", # 'test_unicode_text': u'Ô±Õ¶Õ¸Ö‚Õ¶', } @@ -280,377 +286,386 @@ # it may happen that the wrong plugin is detected (occasional on Python2). # Therefore, an ordered dict. Note that `MailSenderHandlerPlugin` shall # be placed before the `MailHandlerPlugin`. -TEST_FORM_HANDLER_PLUGIN_DATA = OrderedDict([ - (force_str(DBStoreHandlerPlugin.name), None), - (force_str(MailSenderHandlerPlugin.name), { - 'from_name': "From me", - 'from_email': "from@example.com", - 'to_name': "To you", - 'form_field_name_to_email': "test_email_input", - 'subject': "Test email subject", - 'body': "Test email body", - }), - (force_str(MailHandlerPlugin.name), { - 'from_name': "From me", - 'from_email': "from@example.com", - 'to_name': "To you", - 'to_email': "to@example.com", - 'subject': "Test email subject", - 'body': "Test email body", - }), - (force_str(HTTPRepostHandlerPlugin.name), { - 'endpoint_url': 'http://dev.example.com' - }), -]) +TEST_FORM_HANDLER_PLUGIN_DATA = OrderedDict( + [ + (force_str(DBStoreHandlerPlugin.name), None), + ( + force_str(MailSenderHandlerPlugin.name), + { + "from_name": "From me", + "from_email": "from@example.com", + "to_name": "To you", + "form_field_name_to_email": "test_email_input", + "subject": "Test email subject", + "body": "Test email body", + }, + ), + ( + force_str(MailHandlerPlugin.name), + { + "from_name": "From me", + "from_email": "from@example.com", + "to_name": "To you", + "to_email": "to@example.com", + "subject": "Test email subject", + "body": "Test email body", + }, + ), + ( + force_str(HTTPRepostHandlerPlugin.name), + {"endpoint_url": "http://dev.example.com"}, + ), + ] +) TEST_MAILCHIMP_IMPORTER_FORM_DATA = [ { - u'default': u'', - u'field_type': u'email', - u'helptext': u'', - u'id': 0, - u'name': u'Email Address', - u'order': u'1', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'EMAIL' + "default": "", + "field_type": "email", + "helptext": "", + "id": 0, + "name": "Email Address", + "order": "1", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "EMAIL", }, { - u'default': u'', - u'field_type': u'text', - u'helptext': u'', - u'id': 1, - u'name': u'First Name', - u'order': u'2', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'FNAME' + "default": "", + "field_type": "text", + "helptext": "", + "id": 1, + "name": "First Name", + "order": "2", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "FNAME", }, { - u'default': u'', - u'field_type': u'text', - u'helptext': u'', - u'id': 2, - u'name': u'Last Name', - u'order': u'3', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'LNAME' + "default": "", + "field_type": "text", + "helptext": "", + "id": 2, + "name": "Last Name", + "order": "3", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "LNAME", }, { - u'default': u'', - u'field_type': u'text', - u'helptext': u'', - u'id': 3, - u'name': u'Organisation', - u'order': u'4', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'ORG' + "default": "", + "field_type": "text", + "helptext": "", + "id": 3, + "name": "Organisation", + "order": "4", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "ORG", }, { - u'default': u'Type Text Default Value', - u'field_type': u'text', - u'helptext': u'Type Text Help Text', - u'id': 4, - u'name': u'type_text', - u'order': u'5', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_TEXT' + "default": "Type Text Default Value", + "field_type": "text", + "helptext": "Type Text Help Text", + "id": 4, + "name": "type_text", + "order": "5", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "TYPE_TEXT", }, { - u'default': u'1', - u'field_type': u'number', - u'helptext': u'Type Number Help Text', - u'id': 5, - u'name': u'type_number', - u'order': u'6', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_NUMBE' + "default": "1", + "field_type": "number", + "helptext": "Type Number Help Text", + "id": 5, + "name": "type_number", + "order": "6", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "TYPE_NUMBE", }, { - u'choices': [u'First Choice', u'Second Choice', u'Third Choice'], - u'default': u'Second Choice', - u'field_type': u'radio', - u'helptext': u'Type Radio Buttons Help Text', - u'id': 6, - u'name': u'type_radio_buttons', - u'order': u'7', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_RADIO' + "choices": ["First Choice", "Second Choice", "Third Choice"], + "default": "Second Choice", + "field_type": "radio", + "helptext": "Type Radio Buttons Help Text", + "id": 6, + "name": "type_radio_buttons", + "order": "7", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "TYPE_RADIO", }, { - u'choices': [u'First Choice', u'Second Choice', u'Third Choice'], - u'default': u'Third Choice', - u'field_type': u'dropdown', - u'helptext': u'Drop Down Help Text', - u'id': 7, - u'name': u'type_drop_down', - u'order': u'9', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_DROPD' + "choices": ["First Choice", "Second Choice", "Third Choice"], + "default": "Third Choice", + "field_type": "dropdown", + "helptext": "Drop Down Help Text", + "id": 7, + "name": "type_drop_down", + "order": "9", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "TYPE_DROPD", }, { - u'dateformat': u'MM/DD/YYYY', - u'default': u'', - u'field_type': u'date', - u'helptext': u'Type Date Help Text', - u'id': 8, - u'name': u'type_date', - u'order': u'10', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_DATE' + "dateformat": "MM/DD/YYYY", + "default": "", + "field_type": "date", + "helptext": "Type Date Help Text", + "id": 8, + "name": "type_date", + "order": "10", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "TYPE_DATE", }, { - u'dateformat': u'MM/DD', - u'default': u'', - u'field_type': u'birthday', - u'helptext': u'Type Birthday Help Text', - u'id': 9, - u'name': u'type_birthday', - u'order': u'11', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_BIRTH' + "dateformat": "MM/DD", + "default": "", + "field_type": "birthday", + "helptext": "Type Birthday Help Text", + "id": 9, + "name": "type_birthday", + "order": "11", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "TYPE_BIRTH", }, { - u'default': u'', - u'defaultcountry': u'109', - u'defaultcountry_cc': u'NL', - u'defaultcountry_name': u'Netherlands', - u'field_type': u'address', - u'helptext': u'Type Address Help Text', - u'id': 10, - u'name': u'type_address', - u'order': u'12', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_ADDRE' + "default": "", + "defaultcountry": "109", + "defaultcountry_cc": "NL", + "defaultcountry_name": "Netherlands", + "field_type": "address", + "helptext": "Type Address Help Text", + "id": 10, + "name": "type_address", + "order": "12", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "TYPE_ADDRE", }, { - u'default': u'', - u'field_type': u'zip', - u'helptext': u'Type Zip Code Help Text', - u'id': 11, - u'name': u'type_zip_code', - u'order': u'13', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_ZIP_C' + "default": "", + "field_type": "zip", + "helptext": "Type Zip Code Help Text", + "id": 11, + "name": "type_zip_code", + "order": "13", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "TYPE_ZIP_C", }, { - u'default': u'', - u'field_type': u'phone', - u'helptext': u'Type Phone Help Text', - u'id': 12, - u'name': u'type_phone', - u'order': u'14', - u'phoneformat': u'none', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_PHONE' + "default": "", + "field_type": "phone", + "helptext": "Type Phone Help Text", + "id": 12, + "name": "type_phone", + "order": "14", + "phoneformat": "none", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "TYPE_PHONE", }, { - u'default': u'', - u'field_type': u'url', - u'helptext': u'Type Website Help Text', - u'id': 13, - u'name': u'type_website', - u'order': u'15', - u'public': True, - u'req': True, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_WEBSI' + "default": "", + "field_type": "url", + "helptext": "Type Website Help Text", + "id": 13, + "name": "type_website", + "order": "15", + "public": True, + "req": True, + "show": True, + "size": "25", + "tag": "TYPE_WEBSI", }, { - u'default': u'', - u'field_type': u'imageurl', - u'helptext': u'Type Image Help Text', - u'id': 14, - u'name': u'type_image', - u'order': u'16', - u'public': True, - u'req': False, - u'show': True, - u'size': u'25', - u'tag': u'TYPE_IMAGE' - } + "default": "", + "field_type": "imageurl", + "helptext": "Type Image Help Text", + "id": 14, + "name": "type_image", + "order": "16", + "public": True, + "req": False, + "show": True, + "size": "25", + "tag": "TYPE_IMAGE", + }, ] -TEST_DYNAMIC_FORMS_DEFINITION_DATA = OrderedDict([ - ( - 'username', +TEST_DYNAMIC_FORMS_DEFINITION_DATA = OrderedDict( + [ ( - TextInputPlugin.uid, - '{' - '"name": "username", ' - '"required": true, ' - '"max_length": 200, ' - '"label": "Username", ' - '"placeholder": "delusionalinsanity"' - '}' - ) - ), - ( - 'email', + "username", + ( + TextInputPlugin.uid, + "{" + '"name": "username", ' + '"required": true, ' + '"max_length": 200, ' + '"label": "Username", ' + '"placeholder": "delusionalinsanity"' + "}", + ), + ), ( - EmailInputPlugin.uid, - '{' - '"name": "email", ' - '"required": true, ' - '"label": "E-mail"' - '}' - ) - ), - ( - 'age', + "email", + ( + EmailInputPlugin.uid, + "{" + '"name": "email", ' + '"required": true, ' + '"label": "E-mail"' + "}", + ), + ), ( - IntegerInputPlugin.uid, - '{' - '"name": "age", ' - '"required": true, ' - '"max_value": 200, ' - '"label": "Age"' - '}' - ) - ), - ( - 'drivers_license', + "age", + ( + IntegerInputPlugin.uid, + "{" + '"name": "age", ' + '"required": true, ' + '"max_value": 200, ' + '"label": "Age"' + "}", + ), + ), ( - BooleanSelectPlugin.uid, - '{' - '"name": "drivers_license", ' - '"required": false, ' - '"label": "Drivers license?"' - '}' - ) - ), - ( - 'special_fields', + "drivers_license", + ( + BooleanSelectPlugin.uid, + "{" + '"name": "drivers_license", ' + '"required": false, ' + '"label": "Drivers license?"' + "}", + ), + ), ( - HiddenInputPlugin.uid, - '{' - '"name": "special_fields", ' - '"required": false, ' - '"label": "Special fields"' - '}' - ) - ), - ( - 'ignore_01', + "special_fields", + ( + HiddenInputPlugin.uid, + "{" + '"name": "special_fields", ' + '"required": false, ' + '"label": "Special fields"' + "}", + ), + ), ( - ContentImagePlugin.uid, '{' - '"fit_method": "center", ' - '"file": "fobi_plugins/content_plugin_images/' - '04.jpg", ' - '"alt": "Cute girl"' - '}' - ) - ), - ( - 'number_of_children', + "ignore_01", + ( + ContentImagePlugin.uid, + "{" + '"fit_method": "center", ' + '"file": "fobi_plugins/content_plugin_images/' + '04.jpg", ' + '"alt": "Cute girl"' + "}", + ), + ), ( - IntegerInputPlugin.uid, - '{' - '"name": "number_of_children", ' - '"required": false, ' - '"label": "Number of children"' - '}' - ) - ), - # ( - # 'sample_decimal', - # ( - # DecimalInputPlugin.uid, - # '{' - # '"name": "sample_decimal", ' - # '"required": false, ' - # '"label": "Sample decimal"' - # '}' - # ) - # ), - ( - 'bio', + "number_of_children", + ( + IntegerInputPlugin.uid, + "{" + '"name": "number_of_children", ' + '"required": false, ' + '"label": "Number of children"' + "}", + ), + ), + # ( + # 'sample_decimal', + # ( + # DecimalInputPlugin.uid, + # '{' + # '"name": "sample_decimal", ' + # '"required": false, ' + # '"label": "Sample decimal"' + # '}' + # ) + # ), ( - TextareaPlugin.uid, - '{' - '"name": "bio", ' - '"required": true, ' - # '"max_length": null', - '"label": "Biography"' - '}' - ) - ), - ( - 'ignore_02', + "bio", + ( + TextareaPlugin.uid, + "{" '"name": "bio", ' '"required": true, ' + # '"max_length": null', + '"label": "Biography"' "}", + ), + ), ( - ContentTextPlugin.uid, - '{' - '"text": "Suspendisse potenti. Etiam in nunc ' - 'sodales, congue lectus ut, suscipit massa. In ' - 'commodo fringilla orci, in varius eros gravida ' - 'a! Aliquam erat volutpat. Donec sodales orci nec ' - 'massa aliquam bibendum. Aenean sed condimentum ' - 'velit. Mauris luctus bibendum nulla vel tempus. ' - 'Integer tempor condimentum ligula sed feugiat. ' - 'Aenean scelerisque ultricies vulputate. Donec ' - 'semper lorem rhoncus sem cras amet."' - '}' - ) - ), - # ( - # 'unicode_name', - # ( - # TextInputPlugin.uid, - # '{' - # '"name": "unicode_name", ' - # '"required": true, ' - # '"max_length": 200, ' - # '"label": u"Ô±Õ¶Õ¸Ö‚Õ¶", ' - # '"placeholder": u"Ô±Õ¶Õ¸Ö‚Õ¶"' - # '}' - # ) - # ), -]) + "ignore_02", + ( + ContentTextPlugin.uid, + "{" + '"text": "Suspendisse potenti. Etiam in nunc ' + "sodales, congue lectus ut, suscipit massa. In " + "commodo fringilla orci, in varius eros gravida " + "a! Aliquam erat volutpat. Donec sodales orci nec " + "massa aliquam bibendum. Aenean sed condimentum " + "velit. Mauris luctus bibendum nulla vel tempus. " + "Integer tempor condimentum ligula sed feugiat. " + "Aenean scelerisque ultricies vulputate. Donec " + 'semper lorem rhoncus sem cras amet."' + "}", + ), + ), + # ( + # 'unicode_name', + # ( + # TextInputPlugin.uid, + # '{' + # '"name": "unicode_name", ' + # '"required": true, ' + # '"max_length": 200, ' + # '"label": u"Ô±Õ¶Õ¸Ö‚Õ¶", ' + # '"placeholder": u"Ô±Õ¶Õ¸Ö‚Õ¶"' + # '}' + # ) + # ), + ] +) TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF = copy.deepcopy( TEST_DYNAMIC_FORMS_DEFINITION_DATA ) -TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop('ignore_01') -TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop('ignore_02') -TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop('special_fields') +TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop("ignore_01") +TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop("ignore_02") +TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF.pop("special_fields") # TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF_NEGATIVE = copy.copy( # TEST_DYNAMIC_FORMS_DEFINITION_DATA @@ -664,67 +679,111 @@ FAKER = Faker() TEST_DYNAMIC_FORMS_PUT_DATA_ALL = { - 'username': FAKER.user_name(), - 'email': FAKER.email(), - 'age': FAKER.random_int(min=0, max=200), - 'drivers_license': FAKER.pybool(), - 'special_fields': FAKER.pystr(), - 'number_of_children': FAKER.pyint(), + "username": FAKER.user_name(), + "email": FAKER.email(), + "age": FAKER.random_int(min=0, max=200), + "drivers_license": FAKER.pybool(), + "special_fields": FAKER.pystr(), + "number_of_children": FAKER.pyint(), # 'sample_decimal': "%.5f" % FAKER.pydecimal( # left_digits=3, # right_digits=5, # positive=True # ), - 'bio': FAKER.text(), + "bio": FAKER.text(), # 'unicode_name': u'Ô±Õ¶Õ¸Ö‚Õ¶', } TEST_DYNAMIC_FORMS_PUT_DATA = copy.copy(TEST_DYNAMIC_FORMS_PUT_DATA_ALL) -TEST_DYNAMIC_FORMS_PUT_DATA.pop('special_fields') +TEST_DYNAMIC_FORMS_PUT_DATA.pop("special_fields") -TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE = OrderedDict([ - (u'username', OrderedDict([(u'type', u'string'), - (u'required', True), - (u'read_only', False), - (u'label', u'Username'), - (u'max_length', 200), - (u'placeholder', 'delusionalinsanity')])), - (u'email', OrderedDict([(u'type', u'email'), - (u'required', True), - (u'read_only', False), - (u'label', u'E-mail'), - (u'max_length', 255)])), - (u'age', OrderedDict([(u'type', u'integer'), - (u'required', True), - (u'read_only', False), - (u'label', u'Age'), - ('max_value', 200)])), - (u'drivers_license', OrderedDict([(u'type', u'boolean'), - (u'required', False), - (u'read_only', False), - (u'label', u'Drivers license?')])), - # (u'special_fields', OrderedDict([(u'type', u'field'), - # (u'required', False), - # (u'read_only', False), - # (u'label', u'Special fields')])), - (u'number_of_children', OrderedDict([(u'type', u'integer'), - (u'required', False), - (u'read_only', False), - (u'label', u'Number of children')])), - # (u'sample_decimal', OrderedDict([(u'type', u'decimal'), - # (u'required', False), - # (u'read_only', False), - # (u'label', u'Sample decimal'), - # ('max_digits', 10), - # ('decimal_places', 5)])), - (u'bio', OrderedDict([(u'type', u'string'), - (u'required', True), - (u'read_only', False), - (u'label', u'Biography')])), - # (u'unicode_name', OrderedDict([(u'type', u'string'), - # (u'required', True), - # (u'read_only', False), - # (u'label', u'Ô±Õ¶Õ¸Ö‚Õ¶'), - # (u'max_length', 200), - # (u'placeholder', u'Ô±Õ¶Õ¸Ö‚Õ¶')])), -]) +TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE = OrderedDict( + [ + ( + "username", + OrderedDict( + [ + ("type", "string"), + ("required", True), + ("read_only", False), + ("label", "Username"), + ("max_length", 200), + ("placeholder", "delusionalinsanity"), + ] + ), + ), + ( + "email", + OrderedDict( + [ + ("type", "email"), + ("required", True), + ("read_only", False), + ("label", "E-mail"), + ("max_length", 255), + ] + ), + ), + ( + "age", + OrderedDict( + [ + ("type", "integer"), + ("required", True), + ("read_only", False), + ("label", "Age"), + ("max_value", 200), + ] + ), + ), + ( + "drivers_license", + OrderedDict( + [ + ("type", "boolean"), + ("required", False), + ("read_only", False), + ("label", "Drivers license?"), + ] + ), + ), + # (u'special_fields', OrderedDict([(u'type', u'field'), + # (u'required', False), + # (u'read_only', False), + # (u'label', u'Special fields')])), + ( + "number_of_children", + OrderedDict( + [ + ("type", "integer"), + ("required", False), + ("read_only", False), + ("label", "Number of children"), + ] + ), + ), + # (u'sample_decimal', OrderedDict([(u'type', u'decimal'), + # (u'required', False), + # (u'read_only', False), + # (u'label', u'Sample decimal'), + # ('max_digits', 10), + # ('decimal_places', 5)])), + ( + "bio", + OrderedDict( + [ + ("type", "string"), + ("required", True), + ("read_only", False), + ("label", "Biography"), + ] + ), + ), + # (u'unicode_name', OrderedDict([(u'type', u'string'), + # (u'required', True), + # (u'read_only', False), + # (u'label', u'Ô±Õ¶Õ¸Ö‚Õ¶'), + # (u'max_length', 200), + # (u'placeholder', u'Ô±Õ¶Õ¸Ö‚Õ¶')])), + ] +) diff --git a/src/fobi/tests/helpers.py b/src/fobi/tests/helpers.py index 4a6730a60..db47c43a3 100644 --- a/src/fobi/tests/helpers.py +++ b/src/fobi/tests/helpers.py @@ -7,52 +7,57 @@ from django.core.exceptions import ObjectDoesNotExist from django.core.management import call_command -from fobi.models import FormEntry, FormElementEntry, FormHandlerEntry -from fobi.contrib.plugins.form_elements.content \ - .content_text.fobi_form_elements import ContentTextPlugin -from fobi.contrib.plugins.form_elements.content \ - .content_image.fobi_form_elements import ContentImagePlugin - -from fobi.contrib.plugins.form_elements.fields \ - .boolean.fobi_form_elements import BooleanSelectPlugin -from fobi.contrib.plugins.form_elements.fields \ - .email.fobi_form_elements import EmailInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .hidden.fobi_form_elements import HiddenInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .integer.fobi_form_elements import IntegerInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .text.fobi_form_elements import TextInputPlugin -from fobi.contrib.plugins.form_elements.fields \ - .textarea.fobi_form_elements import TextareaPlugin - -from fobi.contrib.plugins.form_handlers \ - .db_store.fobi_form_handlers import DBStoreHandlerPlugin -from fobi.contrib.plugins.form_handlers \ - .mail.fobi_form_handlers import MailHandlerPlugin - -from .core import ( - is_app_setup_completed, - mark_app_setup_as_completed, -) from .constants import ( - FOBI_TEST_USER_USERNAME, FOBI_TEST_USER_PASSWORD, + FOBI_TEST_USER_USERNAME, TEST_FORM_NAME, TEST_FORM_SLUG, ) +from .core import is_app_setup_completed, mark_app_setup_as_completed + +from fobi.contrib.plugins.form_elements.content.content_image.fobi_form_elements import ( + ContentImagePlugin, +) +from fobi.contrib.plugins.form_elements.content.content_text.fobi_form_elements import ( + ContentTextPlugin, +) +from fobi.contrib.plugins.form_elements.fields.boolean.fobi_form_elements import ( + BooleanSelectPlugin, +) +from fobi.contrib.plugins.form_elements.fields.email.fobi_form_elements import ( + EmailInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.hidden.fobi_form_elements import ( + HiddenInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.integer.fobi_form_elements import ( + IntegerInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.text.fobi_form_elements import ( + TextInputPlugin, +) +from fobi.contrib.plugins.form_elements.fields.textarea.fobi_form_elements import ( + TextareaPlugin, +) +from fobi.contrib.plugins.form_handlers.db_store.fobi_form_handlers import ( + DBStoreHandlerPlugin, +) +from fobi.contrib.plugins.form_handlers.mail.fobi_form_handlers import ( + MailHandlerPlugin, +) +from fobi.models import FormElementEntry, FormEntry, FormHandlerEntry -__title__ = 'fobi.tests.helpers' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.tests.helpers" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'create_form_with_entries', - 'db_clean_up', - 'get_or_create_admin_user', - 'get_or_create_admin_user', - 'phantom_js_clean_up', - 'setup_app', + "create_form_with_entries", + "db_clean_up", + "get_or_create_admin_user", + "get_or_create_admin_user", + "phantom_js_clean_up", + "setup_app", ) # **************************************************************************** @@ -82,7 +87,7 @@ def get_or_create_admin_user(): u = User() setattr(u, User.USERNAME_FIELD, FOBI_TEST_USER_USERNAME) - u.email = 'admin@dev.django-fobi.example.com' + u.email = "admin@dev.django-fobi.example.com" u.is_superuser = True u.is_staff = True u.set_password(FOBI_TEST_USER_PASSWORD) @@ -100,20 +105,22 @@ def setup_app(collectstatic=False, fobi_sync_plugins=False): return False if collectstatic: - call_command('collectstatic', verbosity=3, interactive=False) + call_command("collectstatic", verbosity=3, interactive=False) if fobi_sync_plugins: - call_command('fobi_sync_plugins', verbosity=3, interactive=False) + call_command("fobi_sync_plugins", verbosity=3, interactive=False) # call_command('loaddata', 'dash', verbosity=3, interactive=False) mark_app_setup_as_completed() -def create_form_with_entries(user=None, - create_entries_if_form_exist=True, - data={}, - is_public=False, - name=TEST_FORM_NAME, - slug=TEST_FORM_SLUG): +def create_form_with_entries( + user=None, + create_entries_if_form_exist=True, + data={}, + is_public=False, + name=TEST_FORM_NAME, + slug=TEST_FORM_SLUG, +): """Create test form with entries. Fills the form with pre-defined plugins. @@ -154,7 +161,7 @@ def create_form_with_entries(user=None, form_entry=form_entry, plugin_uid=entry_data[0], plugin_data=entry_data[1], - position=position + position=position, ) form_element_entry.save() position += 1 @@ -167,7 +174,7 @@ def create_form_with_entries(user=None, form_handler_entry = FormHandlerEntry( form_entry=form_entry, plugin_uid=DBStoreHandlerPlugin.uid, - plugin_data='' + plugin_data="", ) form_handler_entry.save() @@ -175,13 +182,13 @@ def create_form_with_entries(user=None, form_handler_entry = FormHandlerEntry( form_entry=form_entry, plugin_uid=MailHandlerPlugin.uid, - plugin_data='{' - '"from_name": "Fobi administration", ' - '"from_email": "noreply@fobi.mail.example.com", ' - '"to_name": "Artur Barseghyan", ' - '"to_email": "artur.barseghyan@gmail.com", ' - '"subject": "Test mail", "body": "Test body"' - '}' + plugin_data="{" + '"from_name": "Fobi administration", ' + '"from_email": "noreply@fobi.mail.example.com", ' + '"to_name": "Artur Barseghyan", ' + '"to_email": "artur.barseghyan@gmail.com", ' + '"subject": "Test mail", "body": "Test body"' + "}", ) form_handler_entry.save() @@ -207,10 +214,10 @@ def phantom_js_clean_up(): Kills all phantomjs instances, disregard of their origin. """ - processes = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE) + processes = subprocess.Popen(["ps", "-A"], stdout=subprocess.PIPE) out, err = processes.communicate() for line in out.splitlines(): - if 'phantomjs' in line: + if "phantomjs" in line: pid = int(line.split(None, 1)[0]) os.kill(pid, signal.SIGKILL) diff --git a/src/fobi/tests/test_browser_build_dynamic_forms.py b/src/fobi/tests/test_browser_build_dynamic_forms.py index 5f689788c..38bcdd081 100644 --- a/src/fobi/tests/test_browser_build_dynamic_forms.py +++ b/src/fobi/tests/test_browser_build_dynamic_forms.py @@ -1,16 +1,13 @@ -import os import logging +import os import unittest from datetime import datetime -# from selenium.webdriver.common.keys import Keys -from selenium.webdriver.support.wait import WebDriverWait -from selenium.webdriver.common.action_chains import ActionChains - -from fobi.models import FormEntry - from django.conf import settings from django.urls import reverse +from selenium.webdriver.common.action_chains import ActionChains +# from selenium.webdriver.common.keys import Keys +from selenium.webdriver.support.wait import WebDriverWait from . import constants from .base import BaseFobiBrowserBuldDynamicFormsTest @@ -18,17 +15,17 @@ from .data import ( TEST_FORM_ELEMENT_PLUGIN_DATA, TEST_FORM_FIELD_DATA, - TEST_FORM_HANDLER_PLUGIN_DATA + TEST_FORM_HANDLER_PLUGIN_DATA, ) from .helpers import db_clean_up -__title__ = 'fobi.tests.test_browser_build_dynamic_forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'FobiBrowserBuldDynamicFormsTest', -) +from fobi.models import FormEntry + +__title__ = "fobi.tests.test_browser_build_dynamic_forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiBrowserBuldDynamicFormsTest",) logger = logging.getLogger(__name__) @@ -44,6 +41,7 @@ class FobiBrowserBuldDynamicFormsTest(BaseFobiBrowserBuldDynamicFormsTest): Backed up by selenium. This test is based on the bootstrap3 theme. """ + # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # ++++++++++++++++++++++ Form related +++++++++++++++++++++++++++ # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -54,8 +52,8 @@ def _go_to_dashboard(self, wait=WAIT_FOR): self._authenticate() # Open the dashboard. - url = reverse('fobi.dashboard') - self.driver.get('{0}{1}'.format(self._get_live_server_url(), url)) + url = reverse("fobi.dashboard") + self.driver.get("{0}{1}".format(self._get_live_server_url(), url)) # Wait until the edit widget form opens WebDriverWait(self.driver, timeout=TIMEOUT).until( @@ -86,12 +84,12 @@ def _test_add_form(self, wait=WAIT_FOR): ) form_data = { - 'name': constants.TEST_FORM_NAME, + "name": constants.TEST_FORM_NAME, # 'user': get_or_create_admin_user(), # 'slug': constants.TEST_FORM_SLUG, - 'is_public': True, - 'success_page_title': "Success page title", - 'success_page_message': "Success page message", + "is_public": True, + "success_page_title": "Success page title", + "success_page_message": "Success page message", } if form_data: @@ -131,8 +129,9 @@ def _get_form(self): # ++++++++++++++++++++ Form element specific ++++++++++++++++++++ # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - def _add_form_element(self, form_element_name, form_element_data, - wait=WAIT_FOR): + def _add_form_element( + self, form_element_name, form_element_data, wait=WAIT_FOR + ): """Add a single plugin to the form. At this stage we should be in the edit form entry interface. @@ -164,21 +163,23 @@ def _add_form_element(self, form_element_name, form_element_data, add_form_element_link.click() # Find the parent element - add_form_element_parent_container = \ - add_form_element_link.find_element_by_xpath('..') + add_form_element_parent_container = ( + add_form_element_link.find_element_by_xpath("..") + ) # Find the container of the available form elements - add_form_element_available_elements_container = \ + add_form_element_available_elements_container = ( add_form_element_parent_container.find_element_by_xpath( '//ul[contains(@class, "dropdown-menu")]' ) + ) # Click on the element we want - form_element_to_add = \ - add_form_element_available_elements_container \ - .find_element_by_xpath( + form_element_to_add = ( + add_form_element_available_elements_container.find_element_by_xpath( '//a[text()="{0}"]'.format(form_element_name) ) + ) # self._scroll_to_element(form_element_to_add, simple=True) # self._scroll_by(0, -150) @@ -197,9 +198,7 @@ def _add_form_element(self, form_element_name, form_element_data, WebDriverWait(self.driver, timeout=TIMEOUT).until( lambda driver: driver.find_element_by_xpath( """//h1[contains(text(), 'Add "{0}" element to """ - """the form')]""".format( - form_element_name - ) + """the form')]""".format(form_element_name) ) ) @@ -224,7 +223,7 @@ def _add_form_element(self, form_element_name, form_element_data, except Exception as err: pass - logger.debug('--------------------------------------') + logger.debug("--------------------------------------") logger.debug(form_element_name) # Wait until the fobi page opens with the form element in. @@ -272,8 +271,9 @@ def _test_add_form_elements(self, create_form=False): # Add form element to the form self._add_form_element(plugin_name, plugin_data) - def _remove_form_element(self, form_element_name, form_element_data, - wait=WAIT_FOR): + def _remove_form_element( + self, form_element_name, form_element_data, wait=WAIT_FOR + ): """Add a single plugin to the form. At this stage we should be in the edit form entry interface. @@ -288,16 +288,15 @@ def _remove_form_element(self, form_element_name, form_element_data, ) # Get the parent of the label - delete_form_element_label_parent_container = \ - delete_form_element_label.find_element_by_xpath('..') + delete_form_element_label_parent_container = ( + delete_form_element_label.find_element_by_xpath("..") + ) # Click the add form element button to add a new form element to the # form. - delete_form_element_link = \ - delete_form_element_label_parent_container \ - .find_element_by_partial_link_text( - 'Delete' - ) + delete_form_element_link = delete_form_element_label_parent_container.find_element_by_partial_link_text( + "Delete" + ) # delete_form_element_link.click() # self._click(delete_form_element_link) self._aggressive_click(delete_form_element_link) @@ -328,8 +327,9 @@ def _test_remove_form_elements(self): # ++++++++++++++++++++ Form handler specific ++++++++++++++++++++ # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - def _add_form_handler(self, form_handler_name, form_handler_data, - wait=WAIT_FOR): + def _add_form_handler( + self, form_handler_name, form_handler_data, wait=WAIT_FOR + ): """Add a single handler to the form. At this stage we should be in the edit form entry interface. @@ -352,21 +352,23 @@ def _add_form_handler(self, form_handler_name, form_handler_data, add_form_handler_link.click() # Find the parent element - add_form_handler_parent_container = \ - add_form_handler_link.find_element_by_xpath('..') + add_form_handler_parent_container = ( + add_form_handler_link.find_element_by_xpath("..") + ) # Find the container of the available form elements - add_form_handler_available_elements_container = \ + add_form_handler_available_elements_container = ( add_form_handler_parent_container.find_element_by_xpath( '//ul[contains(@class, "dropdown-menu")]' ) + ) # Click on the element we want - form_handler_to_add = \ - add_form_handler_available_elements_container \ - .find_element_by_xpath( + form_handler_to_add = ( + add_form_handler_available_elements_container.find_element_by_xpath( '//a[text()="{0}"]'.format(form_handler_name) ) + ) form_handler_to_add.click() # If has config, there's a need to perform some extra tests. @@ -375,9 +377,7 @@ def _add_form_handler(self, form_handler_name, form_handler_data, WebDriverWait(self.driver, timeout=TIMEOUT).until( lambda driver: driver.find_element_by_xpath( """//h1[contains(text(), 'Add "{0}" handler to """ - """the form')]""".format( - form_handler_name - ) + """the form')]""".format(form_handler_name) ) ) @@ -428,8 +428,9 @@ def _test_add_form_handlers(self, create_form=False): # Add form element to the form self._add_form_handler(plugin_name, plugin_data) - def _remove_form_handler(self, form_handler_name, form_handler_data, - wait=WAIT_FOR): + def _remove_form_handler( + self, form_handler_name, form_handler_data, wait=WAIT_FOR + ): """Remove a single handler from the form. At this stage we should be in the edit form entry interface. @@ -450,16 +451,15 @@ def _remove_form_handler(self, form_handler_name, form_handler_data, ) # Get the parent of the label - delete_form_handler_label_parent_container = \ - delete_form_handler_label.find_element_by_xpath('..') + delete_form_handler_label_parent_container = ( + delete_form_handler_label.find_element_by_xpath("..") + ) # Click the add form element button to add a new form element to the # form. - delete_form_handler_link = \ - delete_form_handler_label_parent_container \ - .find_element_by_partial_link_text( - 'Delete' - ) + delete_form_handler_link = delete_form_handler_label_parent_container.find_element_by_partial_link_text( + "Delete" + ) delete_form_handler_link.click() logger.debug(form_handler_name) @@ -501,15 +501,14 @@ def test_1001_open_dashboard(self): """Test open dashboard.""" self._go_to_dashboard() - -# class GeneralFobiBrowserBuldDynamicFormsTest( -# BaseFobiBrowserBuldDynamicFormsTest): -# """General tests.""" -# -# -# class FormSpecificFobiBrowserBuldDynamicFormsTest( -# BaseFobiBrowserBuldDynamicFormsTest): -# """Form specific tests.""" + # class GeneralFobiBrowserBuldDynamicFormsTest( + # BaseFobiBrowserBuldDynamicFormsTest): + # """General tests.""" + # + # + # class FormSpecificFobiBrowserBuldDynamicFormsTest( + # BaseFobiBrowserBuldDynamicFormsTest): + # """Form specific tests.""" # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # ++++++++++++++++++++++ Form specific ++++++++++++++++++++++++++ @@ -556,8 +555,8 @@ def test_2004_submit_form(self, wait=WAIT_FOR): form = self._get_form() # Getting the form URL - url = reverse('fobi.view_form_entry', args=[form.slug]) - self.driver.get('{0}{1}'.format(self._get_live_server_url(), url)) + url = reverse("fobi.view_form_entry", args=[form.slug]) + self.driver.get("{0}{1}".format(self._get_live_server_url(), url)) # Wait until the edit widget form opens WebDriverWait(self.driver, timeout=TIMEOUT).until( @@ -572,7 +571,7 @@ def test_2004_submit_form(self, wait=WAIT_FOR): self.take_screenshot("filled_form_page") self._sleep(2) - footer = self.driver.find_element_by_xpath('//footer') + footer = self.driver.find_element_by_xpath("//footer") footer.click() self._scroll_page_bottom() @@ -618,9 +617,9 @@ def test_2004_submit_form(self, wait=WAIT_FOR): self._sleep(wait) -# class FormElementSpecificFobiBrowserBuldDynamicFormsTest( -# BaseFobiBrowserBuldDynamicFormsTest): -# """Form element specific.""" + # class FormElementSpecificFobiBrowserBuldDynamicFormsTest( + # BaseFobiBrowserBuldDynamicFormsTest): + # """Form element specific.""" # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # ++++++++++++++++++++ Form element specific ++++++++++++++++++++ @@ -650,10 +649,9 @@ def test_3003_edit_form_elements(self): """Test edit form element.""" db_clean_up() # Clean up database - -# class FormHandlerSpecificFobiBrowserBuldDynamicFormsTest( -# BaseFobiBrowserBuldDynamicFormsTest): -# """Form handler specific.""" + # class FormHandlerSpecificFobiBrowserBuldDynamicFormsTest( + # BaseFobiBrowserBuldDynamicFormsTest): + # """Form handler specific.""" # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # ++++++++++++++++++++ Form handler specific ++++++++++++++++++++ @@ -685,5 +683,5 @@ def test_4003_edit_form_handlers(self): """Test edit form handler.""" -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/tests/test_core.py b/src/fobi/tests/test_core.py index 54956fdba..d935a3cc1 100644 --- a/src/fobi/tests/test_core.py +++ b/src/fobi/tests/test_core.py @@ -1,28 +1,28 @@ import datetime import unittest +from django.test import RequestFactory, TestCase from django.urls import reverse -from django.test import TestCase, RequestFactory from django.utils import timezone +from .constants import TEST_FORM_NAME, TEST_FORM_SLUG +from .core import print_info +from .helpers import get_or_create_admin_user, setup_app + from fobi.base import ( + get_registered_form_callbacks, get_registered_form_element_plugins, get_registered_form_handler_plugins, get_registered_themes, - get_registered_form_callbacks, ) -from fobi.models import FormEntry, FormWizardEntry from fobi.forms import FormEntryForm +from fobi.models import FormEntry, FormWizardEntry -from .core import print_info -from .constants import TEST_FORM_NAME, TEST_FORM_SLUG -from .helpers import setup_app, get_or_create_admin_user - -__title__ = 'fobi.tests.test_core' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiCoreTest',) +__title__ = "fobi.tests.test_core" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiCoreTest",) class FobiCoreTest(TestCase): @@ -76,20 +76,16 @@ def _test_form_action_url(self, form_entry, action_url): """Test form action URL.""" request_factory = RequestFactory() request = request_factory.post( - reverse('fobi.edit_form_entry', args=[form_entry.pk]), + reverse("fobi.edit_form_entry", args=[form_entry.pk]), data={ - 'name': "John Doe", - 'is_public': False, - 'success_page_title': '', - 'success_page_message': '', - 'action': action_url, - } - ) - form = FormEntryForm( - request.POST, - request=request, - instance=form_entry + "name": "John Doe", + "is_public": False, + "success_page_title": "", + "success_page_message": "", + "action": action_url, + }, ) + form = FormEntryForm(request.POST, request=request, instance=form_entry) saved = False try: @@ -108,9 +104,7 @@ def _create_form_entry(self): self.assertTrue(user is not None) form_entry = FormEntry( - name=TEST_FORM_NAME, - slug=TEST_FORM_SLUG, - user=user + name=TEST_FORM_NAME, slug=TEST_FORM_SLUG, user=user ) form_entry.save() return form_entry @@ -121,9 +115,7 @@ def _create_form_wizard_entry(self): self.assertTrue(user is not None) form_wizard_entry = FormWizardEntry( - name=TEST_FORM_NAME, - slug=TEST_FORM_SLUG, - user=user + name=TEST_FORM_NAME, slug=TEST_FORM_SLUG, user=user ) form_wizard_entry.save() return form_wizard_entry @@ -135,31 +127,29 @@ def test_05_action_url(self): # Local URL, OK test saved = self._test_form_action_url( - form_entry, reverse('fobi.edit_form_entry', args=[27]) + form_entry, reverse("fobi.edit_form_entry", args=[27]) ) self.assertTrue(saved) # Local URL, fail test - saved = self._test_form_action_url( - form_entry, '/en/idontexist/' - ) + saved = self._test_form_action_url(form_entry, "/en/idontexist/") self.assertTrue(not saved) # External URL, OK test saved = self._test_form_action_url( - form_entry, 'http://delusionalinsanity.com/portfolio/' + form_entry, "http://delusionalinsanity.com/portfolio/" ) self.assertTrue(saved) # External URL, fail test saved = self._test_form_action_url( - form_entry, 'http://delusionalinsanity.com2/portfolio/' + form_entry, "http://delusionalinsanity.com2/portfolio/" ) self.assertTrue(not saved) # External URL, fail test saved = self._test_form_action_url( - form_entry, 'http://delusionalinsanity2.com/portfolio/' + form_entry, "http://delusionalinsanity2.com/portfolio/" ) self.assertTrue(not saved) @@ -169,8 +159,7 @@ def test_06_form_entry_get_absolute_url(self): form_entry = self._create_form_entry() absolute_url = form_entry.get_absolute_url() self.assertTrue( - absolute_url, - '/en/fobi/view/{}/'.format(TEST_FORM_SLUG) + absolute_url, "/en/fobi/view/{}/".format(TEST_FORM_SLUG) ) @print_info @@ -179,8 +168,7 @@ def test_07_form_wizard_entry_get_absolute_url(self): form_wizard_entry = self._create_form_wizard_entry() absolute_url = form_wizard_entry.get_absolute_url() self.assertTrue( - absolute_url, - '/en/fobi/wizard-view/{}/'.format(TEST_FORM_SLUG) + absolute_url, "/en/fobi/wizard-view/{}/".format(TEST_FORM_SLUG) ) @print_info @@ -210,5 +198,5 @@ def test_08_form_entry_is_active(self): self.assertFalse(form_entry.is_active) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/tests/test_drf_integration.py b/src/fobi/tests/test_drf_integration.py index 6b8d29c4c..6f9381f0f 100644 --- a/src/fobi/tests/test_drf_integration.py +++ b/src/fobi/tests/test_drf_integration.py @@ -2,7 +2,7 @@ from rest_framework.reverse import reverse from rest_framework.test import APITestCase -from .constants import FOBI_TEST_USER_USERNAME, FOBI_TEST_USER_PASSWORD +from .constants import FOBI_TEST_USER_PASSWORD, FOBI_TEST_USER_USERNAME from .data import ( TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF, TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE, @@ -11,13 +11,11 @@ ) from .helpers import create_form_with_entries -__title__ = 'fobi.tests.test_drf_integration' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'FobiDjangoRestFrameworkIntegrationTests', -) +__title__ = "fobi.tests.test_drf_integration" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiDjangoRestFrameworkIntegrationTests",) class FobiDjangoRestFrameworkIntegrationTests(APITestCase): @@ -40,10 +38,10 @@ def setUpTestData(cls): cls.form_entry = create_form_with_entries( user=None, data=TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF, - is_public=True + is_public=True, ) cls.url = reverse( - 'fobi_form_entry-detail', + "fobi_form_entry-detail", args=[cls.form_entry.slug], # request=self.context['request'] ) @@ -53,11 +51,11 @@ def setUpTestData(cls): user=None, data=TEST_DYNAMIC_FORMS_DEFINITION_DATA_DRF, is_public=False, - name='Non public test form', - slug='non-public-test-form' + name="Non public test form", + slug="non-public-test-form", ) cls.non_public_url = reverse( - 'fobi_form_entry-detail', + "fobi_form_entry-detail", args=[cls.non_public_form_entry.slug], # request=self.context['request'] ) @@ -67,104 +65,105 @@ def test_01_options_action_public_form(self): # Testing OPTIONS action call options_response = self.client.options(self.url) self.assertEqual(options_response.status_code, status.HTTP_200_OK) - self.assertIn('actions', options_response.data) - self.assertIn('PUT', options_response.data['actions']) - self.assertEqual(options_response.data['actions']['PUT'], - TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE) + self.assertIn("actions", options_response.data) + self.assertIn("PUT", options_response.data["actions"]) + self.assertEqual( + options_response.data["actions"]["PUT"], + TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE, + ) def test_02_put_action_public_form(self): """Test PUT action call for public form.""" # Testing PUT action call put_response = self.client.put( - self.url, - TEST_DYNAMIC_FORMS_PUT_DATA, - format='json' + self.url, TEST_DYNAMIC_FORMS_PUT_DATA, format="json" ) self.assertEqual(put_response.status_code, status.HTTP_200_OK) - self.assertEqual(dict(put_response.data), - dict(TEST_DYNAMIC_FORMS_PUT_DATA)) + self.assertEqual( + dict(put_response.data), dict(TEST_DYNAMIC_FORMS_PUT_DATA) + ) def test_03_fail_put_action_public_form(self): """Test PUT action call fail test for public form.""" # Testing PUT action call put_response = self.client.put( - self.url, - TEST_DYNAMIC_FORMS_PUT_DATA_ALL, - format='json' + self.url, TEST_DYNAMIC_FORMS_PUT_DATA_ALL, format="json" ) self.assertEqual(put_response.status_code, status.HTTP_200_OK) - self.assertEqual(dict(put_response.data), - dict(TEST_DYNAMIC_FORMS_PUT_DATA)) + self.assertEqual( + dict(put_response.data), dict(TEST_DYNAMIC_FORMS_PUT_DATA) + ) def test_04_fail_options_action_non_public_form(self): """Test OPTIONS action call fail test for non-public form.""" # Testing OPTIONS action call options_response = self.client.options(self.non_public_url) - self.assertEqual(options_response.status_code, - status.HTTP_200_OK) - self.assertNotIn('actions', options_response.data) + self.assertEqual(options_response.status_code, status.HTTP_200_OK) + self.assertNotIn("actions", options_response.data) def test_05_fail_put_action(self): """Test PUT action call fail test for non-public form.""" # Testing PUT action call put_response = self.client.put( - self.non_public_url, - TEST_DYNAMIC_FORMS_PUT_DATA, - format='json' + self.non_public_url, TEST_DYNAMIC_FORMS_PUT_DATA, format="json" ) self.assertEqual(put_response.status_code, status.HTTP_404_NOT_FOUND) def test_06_options_action_non_public_form_auth_user(self): """Test OPTIONS action call for authorised user for non-public form.""" # Testing OPTIONS action call - self.client.login(username=FOBI_TEST_USER_USERNAME, - password=FOBI_TEST_USER_PASSWORD) + self.client.login( + username=FOBI_TEST_USER_USERNAME, password=FOBI_TEST_USER_PASSWORD + ) options_response = self.client.options(self.non_public_url) self.assertEqual(options_response.status_code, status.HTTP_200_OK) - self.assertIn('actions', options_response.data) - self.assertIn('PUT', options_response.data['actions']) - self.assertEqual(options_response.data['actions']['PUT'], - TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE) + self.assertIn("actions", options_response.data) + self.assertIn("PUT", options_response.data["actions"]) + self.assertEqual( + options_response.data["actions"]["PUT"], + TEST_DYNAMIC_FORMS_OPTIONS_RESPONSE, + ) def test_07_put_action_non_public_form_auth_user(self): """Test PUT action call for authorised user for non-public form.""" # Testing PUT action call - self.client.login(username=FOBI_TEST_USER_USERNAME, - password=FOBI_TEST_USER_PASSWORD) + self.client.login( + username=FOBI_TEST_USER_USERNAME, password=FOBI_TEST_USER_PASSWORD + ) put_response = self.client.put( - self.non_public_url, - TEST_DYNAMIC_FORMS_PUT_DATA, - format='json' + self.non_public_url, TEST_DYNAMIC_FORMS_PUT_DATA, format="json" ) self.assertEqual(put_response.status_code, status.HTTP_200_OK) - self.assertEqual(dict(put_response.data), - dict(TEST_DYNAMIC_FORMS_PUT_DATA)) + self.assertEqual( + dict(put_response.data), dict(TEST_DYNAMIC_FORMS_PUT_DATA) + ) def test_08_get_action_public_form(self): """Test OPTIONS action call for public form.""" # Testing GET action call get_response = self.client.get(self.url) self.assertEqual(get_response.status_code, status.HTTP_200_OK) - self.assertIn('url', get_response.data) - self.assertIn('id', get_response.data) - self.assertIn('slug', get_response.data) - self.assertEqual(get_response.data['id'], self.form_entry.pk) - self.assertEqual(get_response.data['slug'], self.form_entry.slug) + self.assertIn("url", get_response.data) + self.assertIn("id", get_response.data) + self.assertIn("slug", get_response.data) + self.assertEqual(get_response.data["id"], self.form_entry.pk) + self.assertEqual(get_response.data["slug"], self.form_entry.slug) def test_09_get_action_non_public_form_auth_user(self): """Test GET action call for authorised user for non-public form.""" # Testing GET action call - self.client.login(username=FOBI_TEST_USER_USERNAME, - password=FOBI_TEST_USER_PASSWORD) + self.client.login( + username=FOBI_TEST_USER_USERNAME, password=FOBI_TEST_USER_PASSWORD + ) get_response = self.client.get(self.non_public_url) self.assertEqual(get_response.status_code, status.HTTP_200_OK) - self.assertIn('url', get_response.data) - self.assertIn('id', get_response.data) - self.assertIn('slug', get_response.data) - self.assertEqual(get_response.data['id'], - self.non_public_form_entry.pk) - self.assertEqual(get_response.data['slug'], - self.non_public_form_entry.slug) + self.assertIn("url", get_response.data) + self.assertIn("id", get_response.data) + self.assertIn("slug", get_response.data) + self.assertEqual(get_response.data["id"], self.non_public_form_entry.pk) + self.assertEqual( + get_response.data["slug"], self.non_public_form_entry.slug + ) def test_10_fail_get_action_non_public_form(self): """Test GET action call fail test for non-public form.""" diff --git a/src/fobi/tests/test_dynamic_forms.py b/src/fobi/tests/test_dynamic_forms.py index f00c983d4..9a3159cf7 100644 --- a/src/fobi/tests/test_dynamic_forms.py +++ b/src/fobi/tests/test_dynamic_forms.py @@ -2,8 +2,6 @@ from django.test import TestCase -from fobi.dynamic import assemble_form_class - from .core import print_info from .data import TEST_DYNAMIC_FORMS_DEFINITION_DATA from .helpers import ( @@ -12,11 +10,13 @@ setup_app, ) -__title__ = 'fobi.tests.test_dynamic_forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiDynamicFormsTest',) +from fobi.dynamic import assemble_form_class + +__title__ = "fobi.tests.test_dynamic_forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiDynamicFormsTest",) class FobiDynamicFormsTest(TestCase): @@ -27,8 +27,7 @@ def setUp(self): setup_app(fobi_sync_plugins=True) self.user = get_or_create_admin_user() self.form_entry = create_form_with_entries( - self.user, - data=TEST_DYNAMIC_FORMS_DEFINITION_DATA + self.user, data=TEST_DYNAMIC_FORMS_DEFINITION_DATA ) @print_info @@ -54,5 +53,5 @@ def test_01_assemble_form_class_and_render_form(self): return flow -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/tests/test_feincms_integration.py b/src/fobi/tests/test_feincms_integration.py index eb5758c1e..94108cb71 100644 --- a/src/fobi/tests/test_feincms_integration.py +++ b/src/fobi/tests/test_feincms_integration.py @@ -1,19 +1,16 @@ import logging import unittest -from selenium.webdriver.support.wait import WebDriverWait - import factories +from selenium.webdriver.support.wait import WebDriverWait from .base import BaseFobiBrowserBuldDynamicFormsTest -__title__ = 'fobi.tests.test_browser_build_dynamic_forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ( - 'FeinCMSIntegrationTest', -) +__title__ = "fobi.tests.test_browser_build_dynamic_forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FeinCMSIntegrationTest",) logger = logging.getLogger(__name__) @@ -30,9 +27,8 @@ def setUp(self): super(FeinCMSIntegrationTest, self).setUp() self.fobi_form_page = factories.FobiFormPageFactory() - self.fobi_form_page_url = '{0}{1}'.format( - self._get_live_server_url(), - self.fobi_form_page.get_absolute_url() + self.fobi_form_page_url = "{0}{1}".format( + self._get_live_server_url(), self.fobi_form_page.get_absolute_url() ) def test_fobi_form_widget_public_form(self): @@ -58,5 +54,5 @@ def test_fobi_form_widget_public_form(self): # # TODO: -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/tests/test_form_importers_mailchimp.py b/src/fobi/tests/test_form_importers_mailchimp.py index e92e931e1..f9416bf48 100644 --- a/src/fobi/tests/test_form_importers_mailchimp.py +++ b/src/fobi/tests/test_form_importers_mailchimp.py @@ -3,19 +3,20 @@ # from django.contrib.auth import get_user_model from django.test import TestCase -from fobi.contrib.plugins.form_importers \ - .mailchimp_importer.fobi_form_importers import MailChimpImporter -from fobi.models import FormEntry, FormElementEntry - from .core import print_info from .data import TEST_MAILCHIMP_IMPORTER_FORM_DATA -from .helpers import setup_app, get_or_create_admin_user +from .helpers import get_or_create_admin_user, setup_app + +from fobi.contrib.plugins.form_importers.mailchimp_importer.fobi_form_importers import ( + MailChimpImporter, +) +from fobi.models import FormElementEntry, FormEntry -__title__ = 'fobi.tests.test_form_importers_mailchimp' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FormImportersMailchimpTest',) +__title__ = "fobi.tests.test_form_importers_mailchimp" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FormImportersMailchimpTest",) class FormImportersMailchimpTest(TestCase): @@ -30,19 +31,15 @@ def test_01_test_mailchimp_importer(self): """Test mailchimp importer.""" user = get_or_create_admin_user() - form_properties = { - 'name': 'Test mailchimp form', - 'user': user - } + form_properties = {"name": "Test mailchimp form", "user": user} importer = MailChimpImporter( - form_entry_cls=FormEntry, - form_element_entry_cls=FormElementEntry + form_entry_cls=FormEntry, form_element_entry_cls=FormElementEntry ) importer.import_data( form_properties=form_properties, - form_data=TEST_MAILCHIMP_IMPORTER_FORM_DATA + form_data=TEST_MAILCHIMP_IMPORTER_FORM_DATA, ) form_entry = FormEntry.objects.get(**form_properties) @@ -50,5 +47,5 @@ def test_01_test_mailchimp_importer(self): self.assertIsNotNone(form_entry.pk) -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/tests/test_sortable_dict.py b/src/fobi/tests/test_sortable_dict.py index 99fb5e542..9b3378526 100644 --- a/src/fobi/tests/test_sortable_dict.py +++ b/src/fobi/tests/test_sortable_dict.py @@ -1,18 +1,17 @@ import unittest - from copy import copy from django.test import TestCase -from fobi.data_structures import SortableDict - from .core import print_info -__title__ = 'fobi.tests.test_dynamic_forms' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('FobiDataStructuresTest',) +from fobi.data_structures import SortableDict + +__title__ = "fobi.tests.test_dynamic_forms" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("FobiDataStructuresTest",) class FobiDataStructuresTest(TestCase): @@ -22,16 +21,16 @@ def setUp(self): """Set up.""" self.initial = SortableDict( [ - ('b', 1), - ('a', 2), - ('c', 3), + ("b", 1), + ("a", 2), + ("c", 3), ] ) self.expected = SortableDict( [ - ('a', 2), - ('b', 1), - ('c', 3), + ("a", 2), + ("b", 1), + ("c", 3), ] ) @@ -43,7 +42,7 @@ def test_01_sortable_dict_move_before_key(self): flow.append(copy(self.initial)) # Expected: a, b, c - res = self.initial.move_before_key(source_key='a', target_key='b') + res = self.initial.move_before_key(source_key="a", target_key="b") self.assertTrue(res) flow.append(copy(self.initial)) @@ -59,7 +58,7 @@ def test_02_sortable_dict_move_after_key(self): flow.append(copy(self.initial)) # Expected: a, b, c - res = self.initial.move_after_key(source_key='b', target_key='a') + res = self.initial.move_after_key(source_key="b", target_key="a") self.assertTrue(res) flow.append(copy(self.initial)) @@ -68,5 +67,5 @@ def test_02_sortable_dict_move_after_key(self): return flow -if __name__ == '__main__': +if __name__ == "__main__": unittest.main() diff --git a/src/fobi/urls/class_based/edit.py b/src/fobi/urls/class_based/edit.py index 4aca25491..ef13545f9 100644 --- a/src/fobi/urls/class_based/edit.py +++ b/src/fobi/urls/class_based/edit.py @@ -31,13 +31,13 @@ AddFormElementEntryView, AddFormHandlerEntryView, CreateFormEntryView, + DashboardView, DeleteFormElementEntryView, DeleteFormEntryView, DeleteFormHandlerEntryView, EditFormElementEntryView, EditFormEntryView, EditFormHandlerEntryView, - DashboardView, ) __title__ = "fobi.urls.class_based.edit" @@ -235,7 +235,7 @@ _(r"^$"), # view=dashboard, view=DashboardView.as_view(), - name="fobi.dashboard" + name="fobi.dashboard", ), # Form wizards dashboard url( diff --git a/src/fobi/urls/edit.py b/src/fobi/urls/edit.py index 8ca19efc5..df5edd0a8 100644 --- a/src/fobi/urls/edit.py +++ b/src/fobi/urls/edit.py @@ -25,177 +25,197 @@ form_importer, form_wizards_dashboard, import_form_entry, - import_form_wizard_entry + import_form_wizard_entry, ) -__title__ = 'fobi.urls.edit' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('urlpatterns',) +__title__ = "fobi.urls.edit" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("urlpatterns",) urlpatterns = [ # *********************************************************************** # **************************** Form entry CUD *************************** # *********************************************************************** - # Create form entry - url(_(r'^forms/create/$'), + url( + _(r"^forms/create/$"), view=create_form_entry, - name='fobi.create_form_entry'), - + name="fobi.create_form_entry", + ), # Edit form entry - url(_(r'^forms/edit/(?P\d+)/$'), + url( + _(r"^forms/edit/(?P\d+)/$"), edit_form_entry, - name='fobi.edit_form_entry'), - + name="fobi.edit_form_entry", + ), # Delete form entry - url(_(r'^forms/delete/(?P\d+)/$'), + url( + _(r"^forms/delete/(?P\d+)/$"), delete_form_entry, - name='fobi.delete_form_entry'), - + name="fobi.delete_form_entry", + ), # *********************************************************************** # ************************ Form entry add-ons *************************** # *********************************************************************** - # Export form entry - url(_(r'^forms/export/(?P\d+)/$'), + url( + _(r"^forms/export/(?P\d+)/$"), export_form_entry, - name='fobi.export_form_entry'), - + name="fobi.export_form_entry", + ), # Import form entry - url(_(r'^forms/import/$'), - import_form_entry, - name='fobi.import_form_entry'), - + url( + _(r"^forms/import/$"), import_form_entry, name="fobi.import_form_entry" + ), # Form importers - url(_(r'^forms/importer/(?P[\w_\-]+)/$'), + url( + _(r"^forms/importer/(?P[\w_\-]+)/$"), form_importer, - name='fobi.form_importer'), - + name="fobi.form_importer", + ), # *********************************************************************** # *********************** Form element entry CUD ************************ # *********************************************************************** - # Add form element entry - url(_(r'^forms/elements/add/(?P\d+)/' - r'(?P[\w_\-]+)/$'), + url( + _( + r"^forms/elements/add/(?P\d+)/" + r"(?P[\w_\-]+)/$" + ), add_form_element_entry, - name='fobi.add_form_element_entry'), - + name="fobi.add_form_element_entry", + ), # Edit form element entry - url(_(r'^forms/elements/edit/(?P\d+)/$'), + url( + _(r"^forms/elements/edit/(?P\d+)/$"), edit_form_element_entry, - name='fobi.edit_form_element_entry'), - + name="fobi.edit_form_element_entry", + ), # Delete form element entry - url(_(r'^forms/elements/delete/(?P\d+)/$'), + url( + _(r"^forms/elements/delete/(?P\d+)/$"), delete_form_element_entry, - name='fobi.delete_form_element_entry'), - + name="fobi.delete_form_element_entry", + ), # *********************************************************************** # *********************** Form handler entry CUD ************************ # *********************************************************************** - # Add form handler entry - url(_(r'^forms/handlers/add/(?P\d+)/' - r'(?P[\w_\-]+)/$'), + url( + _( + r"^forms/handlers/add/(?P\d+)/" + r"(?P[\w_\-]+)/$" + ), add_form_handler_entry, - name='fobi.add_form_handler_entry'), - + name="fobi.add_form_handler_entry", + ), # Edit form handler entry - url(_(r'^forms/handlers/edit/(?P\d+)/$'), + url( + _(r"^forms/handlers/edit/(?P\d+)/$"), edit_form_handler_entry, - name='fobi.edit_form_handler_entry'), - + name="fobi.edit_form_handler_entry", + ), # Delete form handler entry - url(_(r'^forms/handlers/delete/(?P\d+)/$'), + url( + _(r"^forms/handlers/delete/(?P\d+)/$"), delete_form_handler_entry, - name='fobi.delete_form_handler_entry'), - + name="fobi.delete_form_handler_entry", + ), # *********************************************************************** # ************************ Form wizard entry CUD ************************ # *********************************************************************** - # Create form wizard entry - url(_(r'^wizard/create/$'), + url( + _(r"^wizard/create/$"), view=create_form_wizard_entry, - name='fobi.create_form_wizard_entry'), - + name="fobi.create_form_wizard_entry", + ), # Edit form wizard entry - url(_(r'^wizard/edit/(?P\d+)/$'), + url( + _(r"^wizard/edit/(?P\d+)/$"), edit_form_wizard_entry, - name='fobi.edit_form_wizard_entry'), - + name="fobi.edit_form_wizard_entry", + ), # Delete form wizard entry - url(_(r'^wizard/delete/(?P\d+)/$'), + url( + _(r"^wizard/delete/(?P\d+)/$"), delete_form_wizard_entry, - name='fobi.delete_form_wizard_entry'), - + name="fobi.delete_form_wizard_entry", + ), # *********************************************************************** # ******************** Form wizard form entry CUD *********************** # *********************************************************************** - # Add form wizard form entry - url(_(r'^wizard/forms/add/(?P\d+)/' - r'(?P[\w_\-]+)/$'), + url( + _( + r"^wizard/forms/add/(?P\d+)/" + r"(?P[\w_\-]+)/$" + ), add_form_wizard_form_entry, - name='fobi.add_form_wizard_form_entry'), - + name="fobi.add_form_wizard_form_entry", + ), # # Edit form wizard form entry # url(_(r'^wizard/forms/edit/(?P\d+)/$'), # edit_form_wizard_form_entry, # name='fobi.edit_form_wizard_form_entry'), # # Delete form wizard form entry - url(_(r'^wizard/elements/delete/(?P\d+)/$'), + url( + _(r"^wizard/elements/delete/(?P\d+)/$"), delete_form_wizard_form_entry, - name='fobi.delete_form_wizard_form_entry'), - + name="fobi.delete_form_wizard_form_entry", + ), # *********************************************************************** # ******************* Form wizard handler entry CUD ********************* # *********************************************************************** - # Add form wizard handler entry - url(_(r'^wizard/handlers/add/(?P\d+)/' - r'(?P[\w_\-]+)/$'), + url( + _( + r"^wizard/handlers/add/(?P\d+)/" + r"(?P[\w_\-]+)/$" + ), add_form_wizard_handler_entry, - name='fobi.add_form_wizard_handler_entry'), - + name="fobi.add_form_wizard_handler_entry", + ), # Edit form wizard handler entry - url(_(r'^wizard/handlers/edit/(?P\d+)/$'), + url( + _(r"^wizard/handlers/edit/(?P\d+)/$"), edit_form_wizard_handler_entry, - name='fobi.edit_form_wizard_handler_entry'), - + name="fobi.edit_form_wizard_handler_entry", + ), # Delete form wizard handler entry - url(_(r'^wizard/handlers/delete/(?P\d+)/$'), + url( + _(r"^wizard/handlers/delete/(?P\d+)/$"), delete_form_wizard_handler_entry, - name='fobi.delete_form_wizard_handler_entry'), - + name="fobi.delete_form_wizard_handler_entry", + ), # *********************************************************************** # *********************** Form wizard entry add-ons ********************* # *********************************************************************** - # Export form wizard entry - url(_(r'^wizard/export/(?P\d+)/$'), + url( + _(r"^wizard/export/(?P\d+)/$"), export_form_wizard_entry, - name='fobi.export_form_wizard_entry'), - + name="fobi.export_form_wizard_entry", + ), # Import form wizard entry - url(_(r'^wizard/import/$'), + url( + _(r"^wizard/import/$"), import_form_wizard_entry, - name='fobi.import_form_wizard_entry'), - + name="fobi.import_form_wizard_entry", + ), # *********************************************************************** # ****************************** Dashboard ****************************** # *********************************************************************** - # Forms dashboard - url(_(r'^$'), view=dashboard, name='fobi.dashboard'), - + url(_(r"^$"), view=dashboard, name="fobi.dashboard"), # Form wizards dashboard - url(_(r'^wizards/$'), + url( + _(r"^wizards/$"), view=form_wizards_dashboard, - name='fobi.form_wizards_dashboard'), + name="fobi.form_wizards_dashboard", + ), ] diff --git a/src/fobi/urls/view.py b/src/fobi/urls/view.py index 49f2a3a12..b3561dd4e 100644 --- a/src/fobi/urls/view.py +++ b/src/fobi/urls/view.py @@ -1,52 +1,60 @@ from django.urls import re_path as url from django.utils.translation import gettext_lazy as _ + from fobi.views import ( + FormWizardView, form_entry_submitted, - view_form_entry, form_wizard_entry_submitted, - FormWizardView + view_form_entry, ) -__title__ = 'fobi.urls.view' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('urlpatterns',) +__title__ = "fobi.urls.view" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("urlpatterns",) urlpatterns = [ # *********************************************************************** # ****************************** Form entry ***************************** # *********************************************************************** # Form submitted success page - url(_(r'^view/submitted/$'), + url( + _(r"^view/submitted/$"), view=form_entry_submitted, - name='fobi.form_entry_submitted'), - + name="fobi.form_entry_submitted", + ), # View form entry - url(_(r'^view/(?P[\w_\-]+)/$'), + url( + _(r"^view/(?P[\w_\-]+)/$"), view_form_entry, - name='fobi.view_form_entry'), - + name="fobi.view_form_entry", + ), # Form submitted success page - url(_(r'^view/(?P[\w_\-]+)/submitted/$'), + url( + _(r"^view/(?P[\w_\-]+)/submitted/$"), view=form_entry_submitted, - name='fobi.form_entry_submitted'), - + name="fobi.form_entry_submitted", + ), # *********************************************************************** # *************************** Form wizard entry ************************* # *********************************************************************** # Form wizard submitted success page - url(_(r'^wizard-view/submitted/$'), + url( + _(r"^wizard-view/submitted/$"), view=form_wizard_entry_submitted, - name='fobi.form_wizard_entry_submitted'), - + name="fobi.form_wizard_entry_submitted", + ), # View form wizard entry - url(_(r'^wizard-view/(?P[\w_\-]+)/$'), + url( + _(r"^wizard-view/(?P[\w_\-]+)/$"), FormWizardView.as_view(), - name='fobi.view_form_wizard_entry'), - + name="fobi.view_form_wizard_entry", + ), # Form wizard submitted success page - url(_(r'^wizard-view/(?P[\w_\-]+)/submitted/$'), + url( + _(r"^wizard-view/(?P[\w_\-]+)/submitted/$"), view=form_wizard_entry_submitted, - name='fobi.form_wizard_entry_submitted'), + name="fobi.form_wizard_entry_submitted", + ), ] diff --git a/src/fobi/utils.py b/src/fobi/utils.py index 87046ea6f..268f94de4 100644 --- a/src/fobi/utils.py +++ b/src/fobi/utils.py @@ -5,16 +5,14 @@ import datetime import logging import os - from collections import OrderedDict from django.conf import settings from django.contrib import messages from django.forms.widgets import TextInput +from django.urls import reverse from django.utils.encoding import force_str from django.utils.translation import gettext -from django.urls import reverse - from six import PY3 from .base import ( @@ -30,52 +28,51 @@ get_registered_form_wizard_handler_plugin_uids, get_registered_form_wizard_handler_plugins, get_theme, - ) from .dynamic import assemble_form_class -from .helpers import update_plugin_data, safe_text +from .helpers import safe_text, update_plugin_data from .models import ( - FormEntry, FormElement, FormElementEntry, + FormEntry, FormHandler, FormHandlerEntry, FormWizardHandler, ) from .settings import ( - RESTRICT_PLUGIN_ACCESS, DEBUG, - WIZARD_FILES_UPLOAD_DIR, + RESTRICT_PLUGIN_ACCESS, SORT_PLUGINS_BY_VALUE, + WIZARD_FILES_UPLOAD_DIR, ) -__title__ = 'fobi.utils' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.utils" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'append_edit_and_delete_links_to_field', - 'get_allowed_form_element_plugin_uids', - 'get_allowed_form_handler_plugin_uids', - 'get_allowed_form_wizard_handler_plugin_uids', - 'get_allowed_plugin_uids', - 'get_user_form_element_plugin_uids', - 'get_user_form_element_plugins', - 'get_user_form_element_plugins_grouped', - 'get_user_form_field_plugin_uids', - 'get_user_form_handler_plugin_uids', - 'get_user_form_handler_plugins', - 'get_user_form_handler_plugins_grouped', - 'get_user_form_wizard_handler_plugin_uids', - 'get_user_form_wizard_handler_plugins', - 'get_user_form_wizard_handler_plugins_grouped', - 'get_user_plugin_uids', - 'get_user_plugins', - 'get_user_plugins_grouped', - 'get_wizard_files_upload_dir', - 'perform_form_entry_import', - 'prepare_form_entry_export_data', - 'sync_plugins', + "append_edit_and_delete_links_to_field", + "get_allowed_form_element_plugin_uids", + "get_allowed_form_handler_plugin_uids", + "get_allowed_form_wizard_handler_plugin_uids", + "get_allowed_plugin_uids", + "get_user_form_element_plugin_uids", + "get_user_form_element_plugins", + "get_user_form_element_plugins_grouped", + "get_user_form_field_plugin_uids", + "get_user_form_handler_plugin_uids", + "get_user_form_handler_plugins", + "get_user_form_handler_plugins_grouped", + "get_user_form_wizard_handler_plugin_uids", + "get_user_form_wizard_handler_plugins", + "get_user_form_wizard_handler_plugins_grouped", + "get_user_plugin_uids", + "get_user_plugins", + "get_user_plugins_grouped", + "get_wizard_files_upload_dir", + "perform_form_entry_import", + "prepare_form_entry_export_data", + "sync_plugins", ) logger = logging.getLogger(__name__) @@ -108,8 +105,10 @@ def base_sync_plugins(get_plugin_uids_func, plugin_model_cls): registered_plugins = set(get_plugin_uids_func()) synced_plugins = set( - [p.plugin_uid for p in - plugin_model_cls._default_manager.only('plugin_uid')] + [ + p.plugin_uid + for p in plugin_model_cls._default_manager.only("plugin_uid") + ] ) non_synced_plugins = registered_plugins - synced_plugins @@ -126,8 +125,10 @@ def base_sync_plugins(get_plugin_uids_func, plugin_model_cls): base_sync_plugins(get_registered_form_element_plugin_uids, FormElement) base_sync_plugins(get_registered_form_handler_plugin_uids, FormHandler) - base_sync_plugins(get_registered_form_wizard_handler_plugin_uids, - FormWizardHandler) + base_sync_plugins( + get_registered_form_wizard_handler_plugin_uids, FormWizardHandler + ) + # **************************************************************************** # **************************************************************************** @@ -152,7 +153,7 @@ def get_allowed_plugin_uids(plugin_model_cls, user): users=user ).distinct() queryset = queryset_groups | queryset_users - queryset = queryset.only('plugin_uid') + queryset = queryset.only("plugin_uid") return [p.plugin_uid for p in queryset] except Exception as err: if DEBUG: @@ -160,10 +161,9 @@ def get_allowed_plugin_uids(plugin_model_cls, user): return [] -def get_user_plugins(get_allowed_plugin_uids_func, - get_registered_plugins_func, - registry, - user): +def get_user_plugins( + get_allowed_plugin_uids_func, get_registered_plugins_func, registry, user +): """Get user plugins. Gets a list of user plugins in a form if tuple (plugin name, plugin @@ -178,7 +178,7 @@ def get_user_plugins(get_allowed_plugin_uids_func, """ ensure_autodiscover() - if not RESTRICT_PLUGIN_ACCESS or getattr(user, 'is_superuser', False): + if not RESTRICT_PLUGIN_ACCESS or getattr(user, "is_superuser", False): return get_registered_plugins_func() registered_plugins = [] @@ -199,12 +199,14 @@ def get_user_plugins(get_allowed_plugin_uids_func, return registered_plugins -def get_user_plugins_grouped(get_allowed_plugin_uids_func, - get_registered_plugins_grouped_func, - registry, - user, - sort_items=True, - sort_by_value=False): +def get_user_plugins_grouped( + get_allowed_plugin_uids_func, + get_registered_plugins_grouped_func, + registry, + user, + sort_items=True, + sort_by_value=False, +): """Get user plugins grouped. :param get_allowed_plugin_uids_func: @@ -223,7 +225,7 @@ def get_user_plugins_grouped(get_allowed_plugin_uids_func, """ ensure_autodiscover() - if not RESTRICT_PLUGIN_ACCESS or getattr(user, 'is_superuser', False): + if not RESTRICT_PLUGIN_ACCESS or getattr(user, "is_superuser", False): return get_registered_plugins_grouped_func() registered_plugins = {} @@ -233,15 +235,15 @@ def get_user_plugins_grouped(get_allowed_plugin_uids_func, for uid, plugin in registry._registry.items(): if uid in allowed_plugin_uids: if PY3: - plugin_name = force_str(plugin.name, encoding='utf-8') - plugin_group = force_str(plugin.group, encoding='utf-8') + plugin_name = force_str(plugin.name, encoding="utf-8") + plugin_group = force_str(plugin.group, encoding="utf-8") else: - plugin_name = force_str( - plugin.name, encoding='utf-8' - ).encode('utf-8') - plugin_group = force_str( - plugin.group, encoding='utf-8' - ).encode('utf-8') + plugin_name = force_str(plugin.name, encoding="utf-8").encode( + "utf-8" + ) + plugin_group = force_str(plugin.group, encoding="utf-8").encode( + "utf-8" + ) if plugin_group not in registered_plugins: registered_plugins[plugin_group] = [] @@ -260,10 +262,12 @@ def get_user_plugins_grouped(get_allowed_plugin_uids_func, return ordered_registered_plugins -def get_user_plugin_uids(get_allowed_plugin_uids_func, - get_registered_plugin_uids_func, - registry, - user): +def get_user_plugin_uids( + get_allowed_plugin_uids_func, + get_registered_plugin_uids_func, + registry, + user, +): """Gets a list of user plugin uids as a list. If not yet auto-discovered, auto-discovers them. @@ -277,7 +281,7 @@ def get_user_plugin_uids(get_allowed_plugin_uids_func, """ ensure_autodiscover() - if not RESTRICT_PLUGIN_ACCESS or getattr(user, 'is_superuser', False): + if not RESTRICT_PLUGIN_ACCESS or getattr(user, "is_superuser", False): return get_registered_plugin_uids_func() registered_plugins = [] @@ -291,12 +295,14 @@ def get_user_plugin_uids(get_allowed_plugin_uids_func, return registered_plugins -def get_user_handler_plugins(get_allowed_handler_plugin_uids, - get_registered_handler_plugins, - handler_plugin_registry, - user, - exclude_used_singles=False, - used_handler_plugin_uids=[]): +def get_user_handler_plugins( + get_allowed_handler_plugin_uids, + get_registered_handler_plugins, + handler_plugin_registry, + user, + exclude_used_singles=False, + used_handler_plugin_uids=[], +): """Get list of plugins allowed for user. :param get_allowed_handler_plugin_uids: @@ -311,36 +317,37 @@ def get_user_handler_plugins(get_allowed_handler_plugin_uids, get_allowed_handler_plugin_uids, get_registered_handler_plugins, handler_plugin_registry, - user + user, ) - user_handler_plugin_uids = [plugin_uid - for (plugin_uid, plugin_name) - in user_handler_plugins] + user_handler_plugin_uids = [ + plugin_uid for (plugin_uid, plugin_name) in user_handler_plugins + ] if exclude_used_singles and used_handler_plugin_uids: # Get all registered form handler plugins (as instances) - registered_handler_plugins = \ - get_registered_handler_plugins(as_instances=True) + registered_handler_plugins = get_registered_handler_plugins( + as_instances=True + ) # Check if we need to reduce the list of allowed plugins if they have # been marked to be used once per form and have been used already in # the current form. - for plugin_uid, plugin \ - in registered_handler_plugins.items(): + for plugin_uid, plugin in registered_handler_plugins.items(): - if plugin.uid in user_handler_plugin_uids \ - and not plugin.allow_multiple \ - and plugin.uid in used_handler_plugin_uids: + if ( + plugin.uid in user_handler_plugin_uids + and not plugin.allow_multiple + and plugin.uid in used_handler_plugin_uids + ): # Remove the plugin so that we don't get links to add it # in the UI. plugin_name = safe_text(plugin.name) - user_handler_plugins.remove( - (plugin.uid, plugin_name) - ) + user_handler_plugins.remove((plugin.uid, plugin_name)) return user_handler_plugins + # **************************************************************************** # **************************************************************************** # **************************** Form field specific *************************** @@ -359,19 +366,20 @@ def get_user_form_element_plugins(user): get_allowed_form_element_plugin_uids, get_registered_form_element_plugins, form_element_plugin_registry, - user + user, ) -def get_user_form_element_plugins_grouped(user, - sort_by_value=SORT_PLUGINS_BY_VALUE): +def get_user_form_element_plugins_grouped( + user, sort_by_value=SORT_PLUGINS_BY_VALUE +): """Get user form element plugins grouped.""" return get_user_plugins_grouped( get_allowed_form_element_plugin_uids, get_registered_form_element_plugins_grouped, form_element_plugin_registry, user, - sort_by_value=sort_by_value + sort_by_value=sort_by_value, ) @@ -381,7 +389,7 @@ def get_user_form_element_plugin_uids(user): get_allowed_form_element_plugin_uids, get_registered_form_element_plugin_uids, form_element_plugin_registry, - user + user, ) @@ -401,9 +409,9 @@ def get_allowed_form_handler_plugin_uids(user): return get_allowed_plugin_uids(FormHandler, user) -def get_user_form_handler_plugins(user, - exclude_used_singles=False, - used_form_handler_plugin_uids=[]): +def get_user_form_handler_plugins( + user, exclude_used_singles=False, used_form_handler_plugin_uids=[] +): """Get list of plugins allowed for user. :param django.contrib.auth.models.User user: @@ -417,7 +425,7 @@ def get_user_form_handler_plugins(user, form_handler_plugin_registry, user, exclude_used_singles=exclude_used_singles, - used_handler_plugin_uids=used_form_handler_plugin_uids + used_handler_plugin_uids=used_form_handler_plugin_uids, ) @@ -466,15 +474,16 @@ def get_user_form_handler_plugins(user, # return user_form_handler_plugins -def get_user_form_handler_plugins_grouped(user, - sort_by_value=SORT_PLUGINS_BY_VALUE): +def get_user_form_handler_plugins_grouped( + user, sort_by_value=SORT_PLUGINS_BY_VALUE +): """Get user form handler plugins grouped.""" return get_user_plugins_grouped( get_allowed_form_handler_plugin_uids, get_registered_form_handler_plugins, form_handler_plugin_registry, user, - sort_by_value=sort_by_value + sort_by_value=sort_by_value, ) @@ -484,9 +493,10 @@ def get_user_form_handler_plugin_uids(user): get_allowed_form_handler_plugin_uids, get_registered_form_handler_plugin_uids, form_handler_plugin_registry, - user + user, ) + # **************************************************************************** # **************************************************************************** # ************************* Form wizard handler specific ********************* @@ -500,9 +510,8 @@ def get_allowed_form_wizard_handler_plugin_uids(user): def get_user_form_wizard_handler_plugins( - user, - exclude_used_singles=False, - used_form_wizard_handler_plugin_uids=[]): + user, exclude_used_singles=False, used_form_wizard_handler_plugin_uids=[] +): """Get list of plugins allowed for user. :param django.contrib.auth.models.User user: @@ -516,7 +525,7 @@ def get_user_form_wizard_handler_plugins( form_wizard_handler_plugin_registry, user, exclude_used_singles=exclude_used_singles, - used_handler_plugin_uids=used_form_wizard_handler_plugin_uids + used_handler_plugin_uids=used_form_wizard_handler_plugin_uids, ) @@ -526,7 +535,7 @@ def get_user_form_wizard_handler_plugins_grouped(user): get_allowed_form_wizard_handler_plugin_uids, get_registered_form_wizard_handler_plugins, form_wizard_handler_plugin_registry, - user + user, ) @@ -536,9 +545,10 @@ def get_user_form_wizard_handler_plugin_uids(user): get_allowed_form_wizard_handler_plugin_uids, get_registered_form_wizard_handler_plugin_uids, form_wizard_handler_plugin_registry, - user + user, ) + # **************************************************************************** # **************************************************************************** # *************************** Dynamic forms specific ************************* @@ -559,11 +569,13 @@ def get_assembled_form(form_entry, request=None): return form -def append_edit_and_delete_links_to_field(form_element_plugin, - form_element_entry, - origin=None, - extra={}, - widget_cls=None): +def append_edit_and_delete_links_to_field( + form_element_plugin, + form_element_entry, + origin=None, + extra={}, + widget_cls=None, +): """Append edit and delete links to the field. Should return dictionary, which would be used to update default kwargs @@ -576,10 +588,10 @@ def append_edit_and_delete_links_to_field(form_element_plugin, """ theme = get_theme(as_instance=True) plugin_form_cls = form_element_plugin.get_form() - counter = extra.get('counter') + counter = extra.get("counter") edit_url = reverse( - 'fobi.edit_form_element_entry', - kwargs={'form_element_entry_id': form_element_entry.pk} + "fobi.edit_form_element_entry", + kwargs={"form_element_entry_id": form_element_entry.pk}, ) edit_option_html = theme.edit_form_entry_edit_option_html().format( @@ -587,31 +599,30 @@ def append_edit_and_delete_links_to_field(form_element_plugin, edit_text=safe_text(gettext("Edit")), ) help_text_extra = theme.edit_form_entry_help_text_extra().format( - edit_option_html=edit_option_html if plugin_form_cls else '', + edit_option_html=edit_option_html if plugin_form_cls else "", delete_url=reverse( - 'fobi.delete_form_element_entry', - kwargs={'form_element_entry_id': form_element_entry.pk} + "fobi.delete_form_element_entry", + kwargs={"form_element_entry_id": form_element_entry.pk}, ), delete_text=safe_text(gettext("Delete")), form_element_pk=form_element_entry.pk, form_element_position=form_element_entry.position, - counter=counter + counter=counter, ) try: help_text = safe_text(form_element_plugin.data.help_text) except Exception: - help_text = '' + help_text = "" data_dict = { - 'help_text': u"{0} {1}".format(help_text, help_text_extra), + "help_text": "{0} {1}".format(help_text, help_text_extra), } - label = safe_text(getattr(form_element_plugin.data, 'label', '')) + label = safe_text(getattr(form_element_plugin.data, "label", "")) data_dict.update( { - 'label': u"{0} ({1})".format( - label, - safe_text(form_element_plugin.name) + "label": "{0} ({1})".format( + label, safe_text(form_element_plugin.name) ) } ) @@ -627,16 +638,16 @@ def append_edit_and_delete_links_to_field(form_element_plugin, if widget_cls: data_dict.update( { - 'widget': widget_cls( - attrs={'class': theme.form_element_html_class} + "widget": widget_cls( + attrs={"class": theme.form_element_html_class} ) } ) elif form_element_plugin.is_hidden: data_dict.update( { - 'widget': TextInput( - attrs={'class': theme.form_element_html_class} + "widget": TextInput( + attrs={"class": theme.form_element_html_class} ) } ) @@ -644,9 +655,9 @@ def append_edit_and_delete_links_to_field(form_element_plugin, return data_dict -def update_plugin_data_for_entries(entries=None, - request=None, - entry_model_cls=None): +def update_plugin_data_for_entries( + entries=None, request=None, entry_model_cls=None +): """Update plugin data for entries. Updates the plugin data for all entries of all users. Rules for update @@ -676,6 +687,7 @@ def update_plugin_data_for_entries(entries=None, # **************************************************************************** # **************************************************************************** + def get_wizard_files_upload_dir(): """Get absolute path to the upload directory of fobi form wizard files. @@ -691,6 +703,7 @@ def get_wizard_files_upload_dir(): os.path.join(settings.BASE_DIR, WIZARD_FILES_UPLOAD_DIR) ) + # ***************************************************************************** # ***************************************************************************** # ******************************** Export related ***************************** @@ -698,9 +711,9 @@ def get_wizard_files_upload_dir(): # ***************************************************************************** -def prepare_form_entry_export_data(form_entry, - form_element_entries=None, - form_handler_entries=None): +def prepare_form_entry_export_data( + form_entry, form_element_entries=None, form_handler_entries=None +): """Prepare form entry export data. :param fobi.modes.FormEntry form_entry: Instance of. @@ -711,20 +724,20 @@ def prepare_form_entry_export_data(form_entry, :return str: """ data = { - 'name': form_entry.name, - 'slug': form_entry.slug, - 'is_public': False, - 'active_date_from': form_entry.active_date_from, - 'active_date_to': form_entry.active_date_to, - 'inactive_page_title': form_entry.inactive_page_title, - 'inactive_page_message': form_entry.inactive_page_message, - 'is_cloneable': False, + "name": form_entry.name, + "slug": form_entry.slug, + "is_public": False, + "active_date_from": form_entry.active_date_from, + "active_date_to": form_entry.active_date_to, + "inactive_page_title": form_entry.inactive_page_title, + "inactive_page_message": form_entry.inactive_page_message, + "is_cloneable": False, # 'position': form_entry.position, - 'success_page_title': form_entry.success_page_title, - 'success_page_message': form_entry.success_page_message, - 'action': form_entry.action, - 'form_elements': [], - 'form_handlers': [], + "success_page_title": form_entry.success_page_title, + "success_page_message": form_entry.success_page_message, + "action": form_entry.action, + "form_elements": [], + "form_handlers": [], } if not form_element_entries: @@ -734,19 +747,19 @@ def prepare_form_entry_export_data(form_entry, form_handler_entries = form_entry.formhandlerentry_set.all()[:] for form_element_entry in form_element_entries: - data['form_elements'].append( + data["form_elements"].append( { - 'plugin_uid': form_element_entry.plugin_uid, - 'position': form_element_entry.position, - 'plugin_data': form_element_entry.plugin_data, + "plugin_uid": form_element_entry.plugin_uid, + "position": form_element_entry.position, + "plugin_data": form_element_entry.plugin_data, } ) for form_handler_entry in form_handler_entries: - data['form_handlers'].append( + data["form_handlers"].append( { - 'plugin_uid': form_handler_entry.plugin_uid, - 'plugin_data': form_handler_entry.plugin_data, + "plugin_uid": form_handler_entry.plugin_uid, + "plugin_data": form_handler_entry.plugin_data, } ) return data @@ -759,23 +772,23 @@ def perform_form_entry_import(request, form_data): :param dict form_data: :return :class:`fobi.modes.FormEntry: Instance of. """ - form_elements_data = form_data.pop('form_elements', []) - form_handlers_data = form_data.pop('form_handlers', []) + form_elements_data = form_data.pop("form_elements", []) + form_handlers_data = form_data.pop("form_handlers", []) form_data_keys_whitelist = ( - 'name', - 'title', - 'slug', - 'is_public', - 'active_date_from', - 'active_date_to', - 'inactive_page_title', - 'inactive_page_message', - 'is_cloneable', + "name", + "title", + "slug", + "is_public", + "active_date_from", + "active_date_to", + "inactive_page_title", + "inactive_page_message", + "is_cloneable", # 'position', - 'success_page_title', - 'success_page_message', - 'action', + "success_page_title", + "success_page_message", + "action", ) # In this way we keep possible trash out. @@ -784,7 +797,7 @@ def perform_form_entry_import(request, form_data): form_data.pop(key) # User information we always recreate! - form_data['user'] = request.user + form_data["user"] = request.user form_entry = FormEntry(**form_data) @@ -796,45 +809,50 @@ def perform_form_entry_import(request, form_data): # One by one, importing form element plugins. for form_element_data in form_elements_data: if form_element_plugin_registry.registry.get( - form_element_data.get('plugin_uid', None), None): + form_element_data.get("plugin_uid", None), None + ): form_element = FormElementEntry(**form_element_data) form_element.form_entry = form_entry form_element.save() else: - if form_element_data.get('plugin_uid', None): + if form_element_data.get("plugin_uid", None): messages.warning( request, - gettext('Plugin {0} is missing in the system.').format( - form_element_data.get('plugin_uid') - ) + gettext("Plugin {0} is missing in the system.").format( + form_element_data.get("plugin_uid") + ), ) else: messages.warning( request, - gettext('Some essential plugin data missing in the JSON ' - 'import.') + gettext( + "Some essential plugin data missing in the JSON " + "import." + ), ) # One by one, importing form handler plugins. for form_handler_data in form_handlers_data: if form_handler_plugin_registry.registry.get( - form_handler_data.get('plugin_uid', None), None): + form_handler_data.get("plugin_uid", None), None + ): form_handler = FormHandlerEntry(**form_handler_data) form_handler.form_entry = form_entry form_handler.save() else: - if form_handler_data.get('plugin_uid', None): + if form_handler_data.get("plugin_uid", None): messages.warning( request, - gettext('Plugin {0} is missing in the system.').format( - form_handler_data.get('plugin_uid') - ) + gettext("Plugin {0} is missing in the system.").format( + form_handler_data.get("plugin_uid") + ), ) else: messages.warning( request, - gettext('Some essential data missing in the JSON ' - 'import.') + gettext( + "Some essential data missing in the JSON " "import." + ), ) return form_entry diff --git a/src/fobi/validators.py b/src/fobi/validators.py index 939274504..ca6659e4f 100644 --- a/src/fobi/validators.py +++ b/src/fobi/validators.py @@ -1,21 +1,19 @@ -from django.urls import resolve, Resolver404 - import requests - +from django.urls import Resolver404, resolve from requests.exceptions import ( ConnectionError, ConnectTimeout, - ReadTimeout, - SSLError, ProxyError, + ReadTimeout, RetryError, + SSLError, ) -__title__ = 'fobi.validators' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2013-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' -__all__ = ('url_exists',) +__title__ = "fobi.validators" +__author__ = "Artur Barseghyan " +__copyright__ = "2013-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" +__all__ = ("url_exists",) def url_exists(url, local=False): @@ -29,8 +27,14 @@ def url_exists(url, local=False): try: r = requests.head(url) return r.status_code == requests.codes.ok - except (ConnectionError, ConnectTimeout, ReadTimeout, SSLError, - ProxyError, RetryError) as err: + except ( + ConnectionError, + ConnectTimeout, + ReadTimeout, + SSLError, + ProxyError, + RetryError, + ) as err: return False else: diff --git a/src/fobi/views/class_based.py b/src/fobi/views/class_based.py index 26a63f609..eab0a6348 100644 --- a/src/fobi/views/class_based.py +++ b/src/fobi/views/class_based.py @@ -33,6 +33,11 @@ CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) from ..dynamic import assemble_form_class +from ..form_importers import ( + ensure_autodiscover as ensure_importers_autodiscover, + form_importer_plugin_registry, + get_form_importer_plugin_urls, +) from ..forms import ( FormElementEntryFormSet, FormEntryForm, @@ -41,10 +46,6 @@ ImportFormEntryForm, ImportFormWizardEntryForm, ) -from ..form_importers import ( - ensure_autodiscover as ensure_importers_autodiscover, - form_importer_plugin_registry, get_form_importer_plugin_urls -) from ..models import ( FormElementEntry, FormEntry, @@ -63,8 +64,8 @@ EditFormElementEntryPermission, EditFormEntryPermission, EditFormHandlerEntryPermission, - ViewFormEntryPermission, ViewDashboardPermission, + ViewFormEntryPermission, ) from ..settings import DEBUG, GET_PARAM_INITIAL_DATA, SORT_PLUGINS_BY_VALUE from ..utils import ( @@ -226,6 +227,7 @@ def _run_after_plugin_entry_delete(self, request, form_entry_id): def run_after_plugin_entry_delete(self, request, form_entry_id): """Run after plugin entry has been deleted.""" + # ***************************************************************************** # ***************************************************************************** # ******************************** Dashboards ********************************* @@ -265,10 +267,12 @@ def get_queryset(self): def get_context_data(self, **kwargs): """Get context data.""" context = super(DashboardView, self).get_context_data(**kwargs) - context.update({ - "form_entries": self.get_queryset(), - 'form_importers': get_form_importer_plugin_urls(), - }) + context.update( + { + "form_entries": self.get_queryset(), + "form_importers": get_form_importer_plugin_urls(), + } + ) if not self.theme: theme = get_theme(request=self.request, as_instance=True) else: diff --git a/src/fobi/views/function_based.py b/src/fobi/views/function_based.py index ec2a9a251..e1ef77d88 100644 --- a/src/fobi/views/function_based.py +++ b/src/fobi/views/function_based.py @@ -2,154 +2,139 @@ Views. """ import datetime +import json import logging - from collections import OrderedDict -import json - -# from six import string_types - -from django.db import models, IntegrityError from django.contrib import messages from django.contrib.auth.decorators import login_required, permission_required from django.core.exceptions import ObjectDoesNotExist from django.core.files.storage import FileSystemStorage from django.core.serializers.json import DjangoJSONEncoder +from django.db import IntegrityError, models from django.forms import ValidationError from django.http import Http404, HttpResponseRedirect -from django.shortcuts import redirect +from django.shortcuts import redirect, render from django.template import RequestContext +from django.urls import reverse from django.utils.datastructures import MultiValueDictKeyError from django.utils.translation import gettext, gettext_lazy as _ -from django.shortcuts import render -from django.urls import reverse - -from formtools.wizard.forms import ManagementForm - from django_nine import versions +from formtools.wizard.forms import ManagementForm -from ..base import ( +from ..base import ( # get_registered_form_handler_plugins fire_form_callbacks, - run_form_handlers, - run_form_wizard_handlers, form_element_plugin_registry, form_handler_plugin_registry, form_wizard_handler_plugin_registry, - submit_plugin_form_data, get_theme, - # get_registered_form_handler_plugins + run_form_handlers, + run_form_wizard_handlers, + submit_plugin_form_data, ) from ..constants import ( CALLBACK_BEFORE_FORM_VALIDATION, - CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, + CALLBACK_FORM_INVALID, CALLBACK_FORM_VALID, CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, - CALLBACK_FORM_INVALID + CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) -from ..decorators import permissions_required, SATISFY_ALL, SATISFY_ANY +from ..decorators import SATISFY_ALL, SATISFY_ANY, permissions_required from ..dynamic import assemble_form_class from ..form_importers import ( ensure_autodiscover as ensure_importers_autodiscover, - form_importer_plugin_registry, get_form_importer_plugin_urls + form_importer_plugin_registry, + get_form_importer_plugin_urls, ) -from ..forms import ( - FormEntryForm, +from ..forms import ( # FormWizardFormEntry,; FormWizardFormEntryForm FormElementEntryFormSet, - ImportFormEntryForm, - ImportFormWizardEntryForm, + FormEntryForm, FormWizardEntryForm, - # FormWizardFormEntry, FormWizardFormEntryFormSet, - # FormWizardFormEntryForm + ImportFormEntryForm, + ImportFormWizardEntryForm, ) from ..helpers import JSONDataExporter from ..models import ( - FormEntry, FormElementEntry, + FormEntry, FormHandlerEntry, FormWizardEntry, FormWizardFormEntry, - FormWizardHandlerEntry + FormWizardHandlerEntry, ) from ..permissions.definitions import ( - dashboard_permissions, - wizards_dashboard_permissions, - create_form_entry_permissions, - edit_form_entry_permissions, - delete_form_entry_permissions, add_form_element_entry_permission, - edit_form_element_entry_permission, - delete_form_element_entry_permission, add_form_handler_entry_permission, - edit_form_handler_entry_permission, - delete_form_handler_entry_permission, + add_form_wizard_form_entry_permission, + add_form_wizard_handler_entry_permission, + create_form_entry_permissions, create_form_wizard_entry_permissions, - edit_form_wizard_entry_permissions, + dashboard_permissions, + delete_form_element_entry_permission, + delete_form_entry_permissions, + delete_form_handler_entry_permission, delete_form_wizard_entry_permissions, - add_form_wizard_form_entry_permission, delete_form_wizard_form_entry_permission, - add_form_wizard_handler_entry_permission, - edit_form_wizard_handler_entry_permission, delete_form_wizard_handler_entry_permission, + edit_form_element_entry_permission, + edit_form_entry_permissions, + edit_form_handler_entry_permission, + edit_form_wizard_entry_permissions, + edit_form_wizard_handler_entry_permission, + wizards_dashboard_permissions, ) -from ..settings import ( - GET_PARAM_INITIAL_DATA, - DEBUG, - SORT_PLUGINS_BY_VALUE, -) -from ..utils import ( +from ..settings import DEBUG, GET_PARAM_INITIAL_DATA, SORT_PLUGINS_BY_VALUE +from ..utils import ( # get_user_form_element_plugins,; get_user_form_handler_plugins_grouped, append_edit_and_delete_links_to_field, get_user_form_element_plugins_grouped, get_user_form_field_plugin_uids, - # get_user_form_element_plugins, - # get_user_form_handler_plugins_grouped, - get_user_form_handler_plugins, - get_user_form_wizard_handler_plugins, get_user_form_handler_plugin_uids, + get_user_form_handler_plugins, get_user_form_wizard_handler_plugin_uids, + get_user_form_wizard_handler_plugins, get_wizard_files_upload_dir, perform_form_entry_import, - prepare_form_entry_export_data -) -from ..wizard import ( - # DynamicCookieWizardView, - DynamicSessionWizardView, + prepare_form_entry_export_data, ) +from ..wizard import DynamicSessionWizardView # DynamicCookieWizardView, + +# from six import string_types + -__title__ = 'fobi.views.function_based' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2022 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' +__title__ = "fobi.views.function_based" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2022 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'add_form_element_entry', - 'add_form_handler_entry', - 'add_form_wizard_form_entry', - 'add_form_wizard_handler_entry', - 'create_form_entry', - 'create_form_wizard_entry', - 'dashboard', - 'delete_form_element_entry', - 'delete_form_entry', - 'delete_form_handler_entry', - 'delete_form_wizard_entry', - 'delete_form_wizard_form_entry', - 'delete_form_wizard_handler_entry', - 'edit_form_element_entry', - 'edit_form_entry', - 'edit_form_handler_entry', - 'edit_form_wizard_entry', - 'edit_form_wizard_handler_entry', - 'export_form_entry', - 'export_form_wizard_entry', - 'form_entry_submitted', - 'form_importer', - 'form_wizard_entry_submitted', - 'form_wizards_dashboard', - 'FormWizardView', - 'import_form_entry', - 'import_form_wizard_entry', - 'view_form_entry', + "add_form_element_entry", + "add_form_handler_entry", + "add_form_wizard_form_entry", + "add_form_wizard_handler_entry", + "create_form_entry", + "create_form_wizard_entry", + "dashboard", + "delete_form_element_entry", + "delete_form_entry", + "delete_form_handler_entry", + "delete_form_wizard_entry", + "delete_form_wizard_form_entry", + "delete_form_wizard_handler_entry", + "edit_form_element_entry", + "edit_form_entry", + "edit_form_handler_entry", + "edit_form_wizard_entry", + "edit_form_wizard_handler_entry", + "export_form_entry", + "export_form_wizard_entry", + "form_entry_submitted", + "form_importer", + "form_wizard_entry_submitted", + "form_wizards_dashboard", + "FormWizardView", + "import_form_entry", + "import_form_wizard_entry", + "view_form_entry", ) logger = logging.getLogger(__name__) @@ -162,12 +147,14 @@ # ***************************************************************************** -def _delete_plugin_entry(request, - entry_id, - entry_model_cls, - get_user_plugin_uids_func, - message, - html_anchor): +def _delete_plugin_entry( + request, + entry_id, + entry_model_cls, + get_user_plugin_uids_func, + message, + html_anchor, +): """Abstract delete entry. :param django.http.HttpRequest request: @@ -179,15 +166,12 @@ def _delete_plugin_entry(request, :return django.http.HttpResponse: """ try: - obj = entry_model_cls._default_manager \ - .select_related('form_entry') \ - .get(pk=entry_id, - form_entry__user__pk=request.user.pk) + obj = entry_model_cls._default_manager.select_related("form_entry").get( + pk=entry_id, form_entry__user__pk=request.user.pk + ) except ObjectDoesNotExist as err: raise Http404( - gettext("{0} not found.").format( - entry_model_cls._meta.verbose_name - ) + gettext("{0} not found.").format(entry_model_cls._meta.verbose_name) ) form_entry = obj.form_entry @@ -201,17 +185,19 @@ def _delete_plugin_entry(request, messages.info(request, message.format(plugin.name)) redirect_url = reverse( - 'fobi.edit_form_entry', kwargs={'form_entry_id': form_entry.pk} + "fobi.edit_form_entry", kwargs={"form_entry_id": form_entry.pk} ) return redirect("{0}{1}".format(redirect_url, html_anchor)) -def _delete_wizard_plugin_entry(request, - entry_id, - entry_model_cls, - get_user_plugin_uids_func, - message, - html_anchor): +def _delete_wizard_plugin_entry( + request, + entry_id, + entry_model_cls, + get_user_plugin_uids_func, + message, + html_anchor, +): """Abstract delete wizard entry. :param django.http.HttpRequest request: @@ -222,15 +208,12 @@ def _delete_wizard_plugin_entry(request, :return django.http.HttpResponse: """ try: - obj = entry_model_cls._default_manager \ - .select_related('form_wizard_entry') \ - .get(pk=entry_id, - form_wizard_entry__user__pk=request.user.pk) + obj = entry_model_cls._default_manager.select_related( + "form_wizard_entry" + ).get(pk=entry_id, form_wizard_entry__user__pk=request.user.pk) except ObjectDoesNotExist as err: raise Http404( - gettext("{0} not found.").format( - entry_model_cls._meta.verbose_name - ) + gettext("{0} not found.").format(entry_model_cls._meta.verbose_name) ) form_wizard_entry_id = obj.form_wizard_entry_id @@ -245,8 +228,8 @@ def _delete_wizard_plugin_entry(request, messages.info(request, message.format(plugin.name)) redirect_url = reverse( - 'fobi.edit_form_wizard_entry', - kwargs={'form_wizard_entry_id': form_wizard_entry_id} + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) return redirect("{0}{1}".format(redirect_url, html_anchor)) @@ -279,19 +262,19 @@ def dashboard(request, theme=None, template_name=None): :param string template_name: :return django.http.HttpResponse: """ - form_entries = FormEntry._default_manager \ - .filter(user__pk=request.user.pk) \ - .select_related('user') + form_entries = FormEntry._default_manager.filter( + user__pk=request.user.pk + ).select_related("user") context = { - 'form_entries': form_entries, - 'form_importers': get_form_importer_plugin_urls(), + "form_entries": form_entries, + "form_importers": get_form_importer_plugin_urls(), } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: theme = get_theme(request=request, as_instance=True) @@ -322,19 +305,19 @@ def form_wizards_dashboard(request, theme=None, template_name=None): :param string template_name: :return django.http.HttpResponse: """ - form_wizard_entries = FormWizardEntry._default_manager \ - .filter(user__pk=request.user.pk) \ - .select_related('user') + form_wizard_entries = FormWizardEntry._default_manager.filter( + user__pk=request.user.pk + ).select_related("user") context = { - 'form_wizard_entries': form_wizard_entries, + "form_wizard_entries": form_wizard_entries, # 'form_importers': get_form_importer_plugin_urls(), } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: theme = get_theme(request=request, as_instance=True) @@ -370,7 +353,7 @@ def create_form_entry(request, theme=None, template_name=None): :param str template_name: :return django.http.HttpResponse: """ - if request.method == 'POST': + if request.method == "POST": form = FormEntryForm(request.POST, request.FILES, request=request) if form.is_valid(): form_entry = form.save(commit=False) @@ -379,29 +362,30 @@ def create_form_entry(request, theme=None, template_name=None): form_entry.save() messages.info( request, - gettext('Form {0} was created successfully.').format( + gettext("Form {0} was created successfully.").format( form_entry.name - ) + ), ) return redirect( - 'fobi.edit_form_entry', form_entry_id=form_entry.pk + "fobi.edit_form_entry", form_entry_id=form_entry.pk ) except IntegrityError as err: messages.info( request, - gettext('Errors occurred while saving ' - 'the form: {0}.').format(str(err)) + gettext( + "Errors occurred while saving " "the form: {0}." + ).format(str(err)), ) else: form = FormEntryForm(request=request) - context = {'form': form} + context = {"form": form} # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -435,22 +419,24 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): :return django.http.HttpResponse: """ try: - form_entry = FormEntry._default_manager \ - .select_related('user') \ - .prefetch_related('formelemententry_set') \ - .get(pk=form_entry_id, user__pk=request.user.pk) + form_entry = ( + FormEntry._default_manager.select_related("user") + .prefetch_related("formelemententry_set") + .get(pk=form_entry_id, user__pk=request.user.pk) + ) # .prefetch_related('formhandlerentry_set') \ except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) - if request.method == 'POST': + if request.method == "POST": # The form entry form (does not contain form elements) - form = FormEntryForm(request.POST, request.FILES, instance=form_entry, - request=request) + form = FormEntryForm( + request.POST, request.FILES, instance=form_entry, request=request + ) # This is where we save ordering if it has been changed. # The `FormElementEntryFormSet` contain ids and positions only. - if 'ordering' in request.POST: + if "ordering" in request.POST: form_element_entry_formset = FormElementEntryFormSet( request.POST, request.FILES, @@ -465,22 +451,27 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): if form_element_entry_formset.is_valid(): form_element_entry_formset.save() messages.info( - request, - _("Elements ordering edited successfully.") + request, _("Elements ordering edited successfully.") ) return redirect( - reverse('fobi.edit_form_entry', - kwargs={'form_entry_id': form_entry_id}) + reverse( + "fobi.edit_form_entry", + kwargs={"form_entry_id": form_entry_id}, + ) ) except MultiValueDictKeyError as err: messages.error( request, - _("Errors occurred while trying to change the " - "elements ordering!") + _( + "Errors occurred while trying to change the " + "elements ordering!" + ), ) return redirect( - reverse('fobi.edit_form_entry', - kwargs={'form_entry_id': form_entry_id}) + reverse( + "fobi.edit_form_entry", + kwargs={"form_entry_id": form_entry_id}, + ) ) else: form_element_entry_formset = FormElementEntryFormSet( @@ -495,22 +486,22 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): obj.save() messages.info( request, - gettext('Form {0} was edited successfully.').format( + gettext("Form {0} was edited successfully.").format( form_entry.name - ) + ), ) return redirect( reverse( - 'fobi.edit_form_entry', - kwargs={'form_entry_id': form_entry_id} + "fobi.edit_form_entry", + kwargs={"form_entry_id": form_entry_id}, ) ) except IntegrityError as err: messages.info( request, gettext( - 'Errors occurred while saving the form: {0}.' - ).format(str(err)) + "Errors occurred while saving the form: {0}." + ).format(str(err)), ) else: # The form entry form (does not contain form elements) @@ -525,9 +516,9 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): # Thus, fetch only if needed. form_elements = form_entry.formelemententry_set.all() form_handlers = form_entry.formhandlerentry_set.all()[:] - used_form_handler_uids = [form_handler.plugin_uid - for form_handler - in form_handlers] + used_form_handler_uids = [ + form_handler.plugin_uid for form_handler in form_handlers + ] # The code below (two lines below) is not really used at the moment, # thus - comment out, but do not remove, as we might need it later on. @@ -537,22 +528,21 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): # List of form element plugins allowed to user user_form_element_plugins = get_user_form_element_plugins_grouped( - request.user, - sort_by_value=SORT_PLUGINS_BY_VALUE + request.user, sort_by_value=SORT_PLUGINS_BY_VALUE ) # List of form handler plugins allowed to user user_form_handler_plugins = get_user_form_handler_plugins( request.user, exclude_used_singles=True, - used_form_handler_plugin_uids=used_form_handler_uids + used_form_handler_plugin_uids=used_form_handler_uids, ) # Assembling the form for preview form_cls = assemble_form_class( form_entry, - origin='edit_form_entry', + origin="edit_form_entry", origin_kwargs_update_func=append_edit_and_delete_links_to_field, - request=request + request=request, ) assembled_form = form_cls() @@ -573,16 +563,16 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): theme.collect_plugin_media(form_elements) context = { - 'form': form, - 'form_entry': form_entry, - 'form_elements': form_elements, - 'form_handlers': form_handlers, + "form": form, + "form_entry": form_entry, + "form_elements": form_elements, + "form_handlers": form_handlers, # 'all_form_entries': all_form_entries, - 'user_form_element_plugins': user_form_element_plugins, - 'user_form_handler_plugins': user_form_handler_plugins, - 'assembled_form': assembled_form, - 'form_element_entry_formset': form_element_entry_formset, - 'fobi_theme': theme, + "user_form_element_plugins": user_form_element_plugins, + "user_form_handler_plugins": user_form_handler_plugins, + "assembled_form": assembled_form, + "form_element_entry_formset": form_element_entry_formset, + "fobi_theme": theme, } if not template_name: @@ -602,8 +592,7 @@ def edit_form_entry(request, form_entry_id, theme=None, template_name=None): @login_required -@permissions_required(satisfy=SATISFY_ALL, - perms=delete_form_entry_permissions) +@permissions_required(satisfy=SATISFY_ALL, perms=delete_form_entry_permissions) def delete_form_entry(request, form_entry_id, template_name=None): """Delete form entry. @@ -613,8 +602,9 @@ def delete_form_entry(request, form_entry_id, template_name=None): :return django.http.HttpResponse: """ try: - obj = FormEntry._default_manager \ - .get(pk=form_entry_id, user__pk=request.user.pk) + obj = FormEntry._default_manager.get( + pk=form_entry_id, user__pk=request.user.pk + ) except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) @@ -622,10 +612,11 @@ def delete_form_entry(request, form_entry_id, template_name=None): messages.info( request, - gettext('The form "{0}" was deleted successfully.').format(obj.name) + gettext('The form "{0}" was deleted successfully.').format(obj.name), ) - return redirect('fobi.dashboard') + return redirect("fobi.dashboard") + # ***************************************************************************** # **************************** Add form element entry ************************* @@ -634,11 +625,13 @@ def delete_form_entry(request, form_entry_id, template_name=None): # 'fobi.add_formelemententry' @login_required @permission_required(add_form_element_entry_permission) -def add_form_element_entry(request, - form_entry_id, - form_element_plugin_uid, - theme=None, - template_name=None): +def add_form_element_entry( + request, + form_entry_id, + form_element_plugin_uid, + theme=None, + template_name=None, +): """Add form element entry. :param django.http.HttpRequest request: @@ -649,9 +642,9 @@ def add_form_element_entry(request, :return django.http.HttpResponse: """ try: - form_entry = FormEntry._default_manager \ - .prefetch_related('formelemententry_set') \ - .get(pk=form_entry_id) + form_entry = FormEntry._default_manager.prefetch_related( + "formelemententry_set" + ).get(pk=form_entry_id) except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) @@ -662,8 +655,12 @@ def add_form_element_entry(request, ) if form_element_plugin_uid not in user_form_element_plugin_uids: - raise Http404(gettext("Plugin does not exist or you are not allowed " - "to use this plugin!")) + raise Http404( + gettext( + "Plugin does not exist or you are not allowed " + "to use this plugin!" + ) + ) form_element_plugin_cls = form_element_plugin_registry.get( form_element_plugin_uid @@ -686,11 +683,10 @@ def add_form_element_entry(request, save_object = True # If POST - elif request.method == 'POST': + elif request.method == "POST": # If element has a form form = form_element_plugin.get_initialised_create_form_or_404( - data=request.POST, - files=request.FILES + data=request.POST, files=request.FILES ) form.validate_plugin_data(form_elements, request=request) if form.is_valid(): @@ -709,11 +705,12 @@ def add_form_element_entry(request, if save_object: # Handling the position position = 1 - records = FormElementEntry.objects.filter(form_entry=form_entry) \ - .aggregate(models.Max('position')) + records = FormElementEntry.objects.filter( + form_entry=form_entry + ).aggregate(models.Max("position")) if records: try: - position = records['{0}__max'.format('position')] + 1 + position = records["{0}__max".format("position")] + 1 except TypeError as err: pass @@ -725,26 +722,29 @@ def add_form_element_entry(request, messages.info( request, - gettext('The form element plugin "{0}" was added ' - 'successfully.').format(form_element_plugin.name) + gettext( + 'The form element plugin "{0}" was added ' "successfully." + ).format(form_element_plugin.name), ) return redirect( "{0}?active_tab=tab-form-elements".format( - reverse('fobi.edit_form_entry', - kwargs={'form_entry_id': form_entry_id}) + reverse( + "fobi.edit_form_entry", + kwargs={"form_entry_id": form_entry_id}, + ) ) ) context = { - 'form': form, - 'form_entry': form_entry, - 'form_element_plugin': form_element_plugin, + "form": form, + "form_entry": form_entry, + "form_element_plugin": form_element_plugin, } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -753,18 +753,19 @@ def add_form_element_entry(request, return render(request, template_name, context) + # ***************************************************************************** # **************************** Edit form element entry ************************ # ***************************************************************************** # 'fobi.change_formelemententry' + @login_required @permission_required(edit_form_element_entry_permission) -def edit_form_element_entry(request, - form_element_entry_id, - theme=None, - template_name=None): +def edit_form_element_entry( + request, form_element_entry_id, theme=None, template_name=None +): """Edit form element entry. :param django.http.HttpRequest request: @@ -774,11 +775,9 @@ def edit_form_element_entry(request, :return django.http.HttpResponse: """ try: - obj = FormElementEntry._default_manager \ - .select_related('form_entry', - 'form_entry__user') \ - .get(pk=form_element_entry_id, - form_entry__user__pk=request.user.pk) + obj = FormElementEntry._default_manager.select_related( + "form_entry", "form_entry__user" + ).get(pk=form_element_entry_id, form_entry__user__pk=request.user.pk) except ObjectDoesNotExist as err: raise Http404(gettext("Form element entry not found.")) @@ -792,22 +791,24 @@ def edit_form_element_entry(request, if not form_element_plugin_form_cls: messages.info( request, - gettext('The form element plugin "{0}" ' - 'is not configurable!').format(form_element_plugin.name) + gettext( + 'The form element plugin "{0}" ' "is not configurable!" + ).format(form_element_plugin.name), ) - return redirect('fobi.edit_form_entry', form_entry_id=form_entry.pk) + return redirect("fobi.edit_form_entry", form_entry_id=form_entry.pk) - elif request.method == 'POST': + elif request.method == "POST": form = form_element_plugin.get_initialised_edit_form_or_404( - data=request.POST, - files=request.FILES + data=request.POST, files=request.FILES ) - form_elements = FormElementEntry._default_manager \ - .select_related('form_entry', - 'form_entry__user') \ - .exclude(pk=form_element_entry_id) \ - .filter(form_entry=form_entry) + form_elements = ( + FormElementEntry._default_manager.select_related( + "form_entry", "form_entry__user" + ) + .exclude(pk=form_element_entry_id) + .filter(form_entry=form_entry) + ) form.validate_plugin_data(form_elements, request=request) @@ -823,12 +824,12 @@ def edit_form_element_entry(request, messages.info( request, - gettext('The form element plugin "{0}" was edited ' - 'successfully.').format(form_element_plugin.name) + gettext( + 'The form element plugin "{0}" was edited ' "successfully." + ).format(form_element_plugin.name), ) - return redirect('fobi.edit_form_entry', - form_entry_id=form_entry.pk) + return redirect("fobi.edit_form_entry", form_entry_id=form_entry.pk) else: form = form_element_plugin.get_initialised_edit_form_or_404() @@ -839,15 +840,15 @@ def edit_form_element_entry(request, # form_element_plugin.request = request context = { - 'form': form, - 'form_entry': form_entry, - 'form_element_plugin': form_element_plugin, + "form": form, + "form_entry": form_entry, + "form_element_plugin": form_element_plugin, } # If given, pass to the template (and override the value set by # the context processor). if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -856,12 +857,14 @@ def edit_form_element_entry(request, return render(request, template_name, context) + # ***************************************************************************** # **************************** Delete form element entry ********************** # ***************************************************************************** # 'fobi.delete_formelemententry' + @login_required @permission_required(delete_form_element_entry_permission) def delete_form_element_entry(request, form_element_entry_id): @@ -879,22 +882,26 @@ def delete_form_element_entry(request, form_element_entry_id): message=gettext( 'The form element plugin "{0}" was deleted successfully.' ), - html_anchor='?active_tab=tab-form-elements' + html_anchor="?active_tab=tab-form-elements", ) + # ***************************************************************************** # **************************** Add form handler entry ************************* # ***************************************************************************** # 'fobi.add_formhandlerentry' + @login_required @permission_required(add_form_handler_entry_permission) -def add_form_handler_entry(request, - form_entry_id, - form_handler_plugin_uid, - theme=None, - template_name=None): +def add_form_handler_entry( + request, + form_entry_id, + form_handler_plugin_uid, + theme=None, + template_name=None, +): """Add form handler entry. :param django.http.HttpRequest request: @@ -914,8 +921,12 @@ def add_form_handler_entry(request, ) if form_handler_plugin_uid not in user_form_handler_plugin_uids: - raise Http404(gettext("Plugin does not exist or you are not allowed " - "to use this plugin!")) + raise Http404( + gettext( + "Plugin does not exist or you are not allowed " + "to use this plugin!" + ) + ) form_handler_plugin_cls = form_handler_plugin_registry.get( form_handler_plugin_uid @@ -925,14 +936,14 @@ def add_form_handler_entry(request, # used once. In that case, check if it has been used already in the current # form entry. if not form_handler_plugin_cls.allow_multiple: - times_used = FormHandlerEntry._default_manager \ - .filter(form_entry__id=form_entry_id, - plugin_uid=form_handler_plugin_cls.uid) \ - .count() + times_used = FormHandlerEntry._default_manager.filter( + form_entry__id=form_entry_id, plugin_uid=form_handler_plugin_cls.uid + ).count() if times_used > 0: raise Http404( - gettext("The {0} plugin can be used only once in a " - "form.").format(form_handler_plugin_cls.name) + gettext( + "The {0} plugin can be used only once in a " "form." + ).format(form_handler_plugin_cls.name) ) form_handler_plugin = form_handler_plugin_cls(user=request.user) @@ -951,10 +962,9 @@ def add_form_handler_entry(request, if not form_handler_plugin_form_cls: save_object = True - elif request.method == 'POST': + elif request.method == "POST": form = form_handler_plugin.get_initialised_create_form_or_404( - data=request.POST, - files=request.FILES + data=request.POST, files=request.FILES ) if form.is_valid(): # Saving the plugin form data. @@ -974,28 +984,29 @@ def add_form_handler_entry(request, messages.info( request, - gettext('The form handler plugin "{0}" was added ' - 'successfully.').format(form_handler_plugin.name) + gettext( + 'The form handler plugin "{0}" was added ' "successfully." + ).format(form_handler_plugin.name), ) return redirect( "{0}?active_tab=tab-form-handlers".format( reverse( - 'fobi.edit_form_entry', - kwargs={'form_entry_id': form_entry_id} + "fobi.edit_form_entry", + kwargs={"form_entry_id": form_entry_id}, ) ) ) context = { - 'form': form, - 'form_entry': form_entry, - 'form_handler_plugin': form_handler_plugin, + "form": form, + "form_entry": form_entry, + "form_handler_plugin": form_handler_plugin, } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -1004,18 +1015,19 @@ def add_form_handler_entry(request, return render(request, template_name, context) + # ***************************************************************************** # **************************** Edit form handler entry ************************ # ***************************************************************************** # 'fobi.change_formhandlerentry' + @login_required @permission_required(edit_form_handler_entry_permission) -def edit_form_handler_entry(request, - form_handler_entry_id, - theme=None, - template_name=None): +def edit_form_handler_entry( + request, form_handler_entry_id, theme=None, template_name=None +): """Edit form handler entry. :param django.http.HttpRequest request: @@ -1025,9 +1037,9 @@ def edit_form_handler_entry(request, :return django.http.HttpResponse: """ try: - obj = FormHandlerEntry._default_manager \ - .select_related('form_entry') \ - .get(pk=form_handler_entry_id) + obj = FormHandlerEntry._default_manager.select_related( + "form_entry" + ).get(pk=form_handler_entry_id) except ObjectDoesNotExist as err: raise Http404(gettext("Form handler entry not found.")) @@ -1041,15 +1053,15 @@ def edit_form_handler_entry(request, if not form_handler_plugin_form_cls: messages.info( request, - gettext('The form handler plugin "{0}" is not ' - 'configurable!').format(form_handler_plugin.name) + gettext( + 'The form handler plugin "{0}" is not ' "configurable!" + ).format(form_handler_plugin.name), ) - return redirect('fobi.edit_form_entry', form_entry_id=form_entry.pk) + return redirect("fobi.edit_form_entry", form_entry_id=form_entry.pk) - elif request.method == 'POST': + elif request.method == "POST": form = form_handler_plugin.get_initialised_edit_form_or_404( - data=request.POST, - files=request.FILES + data=request.POST, files=request.FILES ) if form.is_valid(): @@ -1064,14 +1076,15 @@ def edit_form_handler_entry(request, messages.info( request, - gettext('The form handler plugin "{0}" was edited ' - 'successfully.').format(form_handler_plugin.name) + gettext( + 'The form handler plugin "{0}" was edited ' "successfully." + ).format(form_handler_plugin.name), ) return redirect( "{0}?active_tab=tab-form-handlers".format( reverse( - 'fobi.edit_form_entry', + "fobi.edit_form_entry", kwargs={"form_entry_id": form_entry.pk}, ) ) @@ -1081,15 +1094,15 @@ def edit_form_handler_entry(request, form = form_handler_plugin.get_initialised_edit_form_or_404() context = { - 'form': form, - 'form_entry': form_entry, - 'form_handler_plugin': form_handler_plugin, + "form": form, + "form_entry": form_entry, + "form_handler_plugin": form_handler_plugin, } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -1098,12 +1111,14 @@ def edit_form_handler_entry(request, return render(request, template_name, context) + # ***************************************************************************** # **************************** Delete form handler entry ********************** # ***************************************************************************** # 'fobi.delete_formhandlerentry' + @login_required @permission_required(delete_form_handler_entry_permission) def delete_form_handler_entry(request, form_handler_entry_id): @@ -1121,7 +1136,7 @@ def delete_form_handler_entry(request, form_handler_entry_id): message=gettext( 'The form handler plugin "{0}" was deleted successfully.' ), - html_anchor='?active_tab=tab-form-handlers' + html_anchor="?active_tab=tab-form-handlers", ) @@ -1143,8 +1158,9 @@ def delete_form_handler_entry(request, form_handler_entry_id): @login_required -@permissions_required(satisfy=SATISFY_ALL, - perms=create_form_wizard_entry_permissions) +@permissions_required( + satisfy=SATISFY_ALL, perms=create_form_wizard_entry_permissions +) def create_form_wizard_entry(request, theme=None, template_name=None): """Create form wizard entry. @@ -1153,10 +1169,8 @@ def create_form_wizard_entry(request, theme=None, template_name=None): :param str template_name: :return django.http.HttpResponse: """ - if request.method == 'POST': - form = FormWizardEntryForm(request.POST, - request.FILES, - request=request) + if request.method == "POST": + form = FormWizardEntryForm(request.POST, request.FILES, request=request) if form.is_valid(): form_wizard_entry = form.save(commit=False) form_wizard_entry.user = request.user @@ -1164,29 +1178,31 @@ def create_form_wizard_entry(request, theme=None, template_name=None): form_wizard_entry.save() messages.info( request, - gettext('Form wizard {0} was created ' - 'successfully.').format(form_wizard_entry.name) + gettext( + "Form wizard {0} was created " "successfully." + ).format(form_wizard_entry.name), ) return redirect( - 'fobi.edit_form_wizard_entry', - form_wizard_entry_id=form_wizard_entry.pk + "fobi.edit_form_wizard_entry", + form_wizard_entry_id=form_wizard_entry.pk, ) except IntegrityError as err: messages.info( request, - gettext('Errors occurred while saving ' - 'the form wizard: {0}.').format(str(err)) + gettext( + "Errors occurred while saving " "the form wizard: {0}." + ).format(str(err)), ) else: form = FormWizardEntryForm(request=request) - context = {'form': form} + context = {"form": form} # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -1213,10 +1229,12 @@ def create_form_wizard_entry(request, theme=None, template_name=None): @login_required -@permissions_required(satisfy=SATISFY_ANY, - perms=edit_form_wizard_entry_permissions) -def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, - template_name=None): +@permissions_required( + satisfy=SATISFY_ANY, perms=edit_form_wizard_entry_permissions +) +def edit_form_wizard_entry( + request, form_wizard_entry_id, theme=None, template_name=None +): """Edit form wizard entry. :param django.http.HttpRequest request: @@ -1226,21 +1244,25 @@ def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, :return django.http.HttpResponse: """ try: - form_wizard_entry = FormWizardEntry._default_manager \ - .select_related('user') \ - .prefetch_related('formwizardformentry_set') \ + form_wizard_entry = ( + FormWizardEntry._default_manager.select_related("user") + .prefetch_related("formwizardformentry_set") .get(pk=form_wizard_entry_id, user__pk=request.user.pk) + ) # .prefetch_related('formhandlerentry_set') \ except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) - if request.method == 'POST': + if request.method == "POST": # The form entry form (does not contain form elements) - form = FormWizardEntryForm(request.POST, request.FILES, - instance=form_wizard_entry, - request=request) + form = FormWizardEntryForm( + request.POST, + request.FILES, + instance=form_wizard_entry, + request=request, + ) - if 'ordering' in request.POST: + if "ordering" in request.POST: form_wizard_form_entry_formset = FormWizardFormEntryFormSet( request.POST, request.FILES, @@ -1255,27 +1277,28 @@ def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, if form_wizard_form_entry_formset.is_valid(): form_wizard_form_entry_formset.save() messages.info( - request, - gettext("Forms ordering edited successfully.") + request, gettext("Forms ordering edited successfully.") ) return redirect( reverse( - 'fobi.edit_form_wizard_entry', + "fobi.edit_form_wizard_entry", kwargs={ - 'form_wizard_entry_id': form_wizard_entry_id - } + "form_wizard_entry_id": form_wizard_entry_id + }, ) ) except MultiValueDictKeyError as err: messages.error( request, - gettext("Errors occurred while trying to change the " - "forms ordering!") + gettext( + "Errors occurred while trying to change the " + "forms ordering!" + ), ) return redirect( reverse( - 'fobi.edit_form_wizard_entry', - kwargs={'form_wizard_entry_id': form_wizard_entry_id} + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) ) else: @@ -1291,27 +1314,26 @@ def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, obj.save() messages.info( request, - gettext('Form wizard {0} was edited ' - 'successfully.').format(form_wizard_entry.name) + gettext( + "Form wizard {0} was edited " "successfully." + ).format(form_wizard_entry.name), ) return redirect( reverse( - 'fobi.edit_form_wizard_entry', - kwargs={'form_wizard_entry_id': form_wizard_entry_id} + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) ) except IntegrityError as err: messages.info( request, - gettext('Errors occurred while saving ' - 'the form wizard: {0}.').format(str(err)) + gettext( + "Errors occurred while saving " "the form wizard: {0}." + ).format(str(err)), ) else: # The form wizard entry form (does not contain form elements) - form = FormWizardEntryForm( - instance=form_wizard_entry, - request=request - ) + form = FormWizardEntryForm(instance=form_wizard_entry, request=request) form_wizard_form_entry_formset = FormWizardFormEntryFormSet( queryset=form_wizard_entry.formwizardformentry_set.all(), @@ -1320,26 +1342,31 @@ def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, # In case of success, we don't need this (since redirect would happen). # Thus, fetch only if needed. - form_wizard_form_entries = form_wizard_entry.formwizardformentry_set \ - .all().select_related('form_entry').order_by('position')[:] - form_wizard_handlers = form_wizard_entry.formwizardhandlerentry_set \ - .all()[:] - used_form_wizard_handler_uids = [form_wizard_handler.plugin_uid - for form_wizard_handler - in form_wizard_handlers] - - form_wizard_form_entry_ids = [__f.form_entry_id - for __f - in form_wizard_form_entries] - all_form_entries = FormEntry._default_manager.only('id', 'name', 'slug') \ - .filter(user__pk=request.user.pk) \ + form_wizard_form_entries = ( + form_wizard_entry.formwizardformentry_set.all() + .select_related("form_entry") + .order_by("position")[:] + ) + form_wizard_handlers = form_wizard_entry.formwizardhandlerentry_set.all()[:] + used_form_wizard_handler_uids = [ + form_wizard_handler.plugin_uid + for form_wizard_handler in form_wizard_handlers + ] + + form_wizard_form_entry_ids = [ + __f.form_entry_id for __f in form_wizard_form_entries + ] + all_form_entries = ( + FormEntry._default_manager.only("id", "name", "slug") + .filter(user__pk=request.user.pk) .exclude(id__in=form_wizard_form_entry_ids) + ) # List of form handler plugins allowed to user user_form_wizard_handler_plugins = get_user_form_wizard_handler_plugins( request.user, exclude_used_singles=True, - used_form_wizard_handler_plugin_uids=used_form_wizard_handler_uids + used_form_wizard_handler_plugin_uids=used_form_wizard_handler_uids, ) # If no theme provided, pick a default one. @@ -1349,14 +1376,14 @@ def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, # theme.collect_plugin_media(form_elements) context = { - 'form': form, - 'form_wizard_entry': form_wizard_entry, - 'form_wizard_entry_forms': form_wizard_form_entries, - 'form_wizard_handlers': form_wizard_handlers, - 'all_form_entries': all_form_entries, - 'user_form_wizard_handler_plugins': user_form_wizard_handler_plugins, - 'form_wizard_form_entry_formset': form_wizard_form_entry_formset, - 'fobi_theme': theme, + "form": form, + "form_wizard_entry": form_wizard_entry, + "form_wizard_entry_forms": form_wizard_form_entries, + "form_wizard_handlers": form_wizard_handlers, + "all_form_entries": all_form_entries, + "user_form_wizard_handler_plugins": user_form_wizard_handler_plugins, + "form_wizard_form_entry_formset": form_wizard_form_entry_formset, + "fobi_theme": theme, } if not template_name: @@ -1377,10 +1404,10 @@ def edit_form_wizard_entry(request, form_wizard_entry_id, theme=None, @login_required -@permissions_required(satisfy=SATISFY_ALL, - perms=delete_form_wizard_entry_permissions) -def delete_form_wizard_entry(request, form_wizard_entry_id, - template_name=None): +@permissions_required( + satisfy=SATISFY_ALL, perms=delete_form_wizard_entry_permissions +) +def delete_form_wizard_entry(request, form_wizard_entry_id, template_name=None): """Delete form wizard entry. :param django.http.HttpRequest request: @@ -1389,8 +1416,9 @@ def delete_form_wizard_entry(request, form_wizard_entry_id, :return django.http.HttpResponse: """ try: - obj = FormWizardEntry._default_manager \ - .get(pk=form_wizard_entry_id, user__pk=request.user.pk) + obj = FormWizardEntry._default_manager.get( + pk=form_wizard_entry_id, user__pk=request.user.pk + ) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) @@ -1400,10 +1428,11 @@ def delete_form_wizard_entry(request, form_wizard_entry_id, request, gettext('The form wizard "{0}" was deleted successfully.').format( obj.name - ) + ), ) - return redirect('fobi.form_wizards_dashboard') + return redirect("fobi.form_wizards_dashboard") + # ***************************************************************************** # ************************ View form wizard entry ***************************** @@ -1413,9 +1442,7 @@ def delete_form_wizard_entry(request, form_wizard_entry_id, class FormWizardView(DynamicSessionWizardView): """Dynamic form wizard.""" - file_storage = FileSystemStorage( - location=get_wizard_files_upload_dir() - ) + file_storage = FileSystemStorage(location=get_wizard_files_upload_dir()) def get_context_data(self, form, **kwargs): """Get context data.""" @@ -1423,14 +1450,16 @@ def get_context_data(self, form, **kwargs): form=form, **kwargs ) form_entry = self.get_form_entry_for_step(self.steps.step0) - context_data.update({ - 'form_wizard_entry': self.form_wizard_entry, - 'form_wizard_mode': True, - 'fobi_theme': self.fobi_theme, - 'fobi_form_title': form_entry.title, - 'fobi_form_wizard_title': self.form_wizard_entry.title, - 'steps_range': range(1, self.steps.count + 1), - }) + context_data.update( + { + "form_wizard_entry": self.form_wizard_entry, + "form_wizard_mode": True, + "fobi_theme": self.fobi_theme, + "fobi_form_title": form_entry.title, + "fobi_form_wizard_title": self.form_wizard_entry.title, + "steps_range": range(1, self.steps.count + 1), + } + ) return context_data @@ -1443,21 +1472,20 @@ def get_initial_wizard_data(self, request, *args, **kwargs): """Get initial wizard data.""" user_is_authenticated = request.user.is_authenticated try: - qs_kwargs = {'slug': kwargs.get('form_wizard_entry_slug')} + qs_kwargs = {"slug": kwargs.get("form_wizard_entry_slug")} if not user_is_authenticated: - kwargs.update({'is_public': True}) - form_wizard_entry = FormWizardEntry.objects \ - .select_related('user') \ - .get(**qs_kwargs) + kwargs.update({"is_public": True}) + form_wizard_entry = FormWizardEntry.objects.select_related( + "user" + ).get(**qs_kwargs) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) form_entries = [ form_wizard_form_entry.form_entry - for form_wizard_form_entry - in form_wizard_entry.formwizardformentry_set - .all() - .select_related('form_entry') + for form_wizard_form_entry in form_wizard_entry.formwizardformentry_set.all().select_related( + "form_entry" + ) ] form_list = [] form_entry_mapping = {} @@ -1472,13 +1500,11 @@ def get_initial_wizard_data(self, request, *args, **kwargs): request=request, form_element_entries=form_element_entries, get_form_field_instances_kwargs={ - 'form_wizard_entry': form_wizard_entry, - } + "form_wizard_entry": form_wizard_entry, + }, ) - form_list.append( - (form_entry.slug, form_cls) - ) + form_list.append((form_entry.slug, form_cls)) form_entry_mapping[form_entry.slug] = form_entry form_element_entry_mapping[form_entry.slug] = form_element_entries @@ -1491,13 +1517,13 @@ def get_initial_wizard_data(self, request, *args, **kwargs): theme.collect_plugin_media(wizard_form_element_entries) return { - 'form_list': form_list, - 'template_name': theme.view_form_wizard_entry_template, - 'form_wizard_entry': form_wizard_entry, - 'wizard_form_element_entries': wizard_form_element_entries, - 'form_entry_mapping': form_entry_mapping, - 'form_element_entry_mapping': form_element_entry_mapping, - 'fobi_theme': theme, + "form_list": form_list, + "template_name": theme.view_form_wizard_entry_template, + "form_wizard_entry": form_wizard_entry, + "wizard_form_element_entries": wizard_form_element_entries, + "form_entry_mapping": form_entry_mapping, + "form_element_entry_mapping": form_element_entry_mapping, + "fobi_theme": theme, } def post(self, *args, **kwargs): @@ -1516,7 +1542,7 @@ def post(self, *args, **kwargs): # Look for a wizard_goto_step element in the posted data which # contains a valid step name. If one was found, render the requested # form. (This makes stepping back a lot easier). - wizard_goto_step = self.request.POST.get('wizard_goto_step', None) + wizard_goto_step = self.request.POST.get("wizard_goto_step", None) if wizard_goto_step and wizard_goto_step in self.get_form_list(): return self.render_goto_step(wizard_goto_step) @@ -1524,13 +1550,15 @@ def post(self, *args, **kwargs): management_form = ManagementForm(self.request.POST, prefix=self.prefix) if not management_form.is_valid(): raise ValidationError( - _('ManagementForm data is missing or has been tampered.'), - code='missing_management_form', + _("ManagementForm data is missing or has been tampered."), + code="missing_management_form", ) - form_current_step = management_form.cleaned_data['current_step'] - if (form_current_step != self.steps.current and - self.storage.current_step is not None): + form_current_step = management_form.cleaned_data["current_step"] + if ( + form_current_step != self.steps.current + and self.storage.current_step is not None + ): # form refreshed, change current step self.storage.current_step = form_current_step @@ -1542,15 +1570,16 @@ def post(self, *args, **kwargs): # Get current form entry form_entry = self.form_entry_mapping[self.steps.current] # Get form elements for the current form entry - form_element_entries = \ - self.form_element_entry_mapping[self.steps.current] + form_element_entries = self.form_element_entry_mapping[ + self.steps.current + ] # Fire plugin processors form = submit_plugin_form_data( form_entry=form_entry, request=self.request, form=form, form_element_entries=form_element_entries, - **{'form_wizard_entry': self.form_wizard_entry} + **{"form_wizard_entry": self.form_wizard_entry}, ) # Form wizards make use of form.data instead of form.cleaned_data. # Therefore, we update the form.data with values from @@ -1560,13 +1589,11 @@ def post(self, *args, **kwargs): # is, using `update` method. That's why we do it one by one. for field_key, field_value in form.cleaned_data.items(): wizard_form_key = wizard_field_pattern.format( - self.steps.current, - field_key + self.steps.current, field_key ) # Do not overwrite field data. Only empty or missing values. if not ( - wizard_form_key in form.data - and form.data[wizard_form_key] + wizard_form_key in form.data and form.data[wizard_form_key] ): form.data[wizard_form_key] = field_value @@ -1580,11 +1607,13 @@ def post(self, *args, **kwargs): del form.data[wizard_form_key] # if the form is valid, store the cleaned data and files. - self.storage.set_step_data(self.steps.current, - self.process_step(form)) + self.storage.set_step_data( + self.steps.current, self.process_step(form) + ) - self.storage.set_step_files(self.steps.current, - self.process_step_files(form)) + self.storage.set_step_files( + self.steps.current, self.process_step_files(form) + ) # check if the current step is the last step if self.steps.current == self.steps.last: @@ -1622,12 +1651,11 @@ def render_done(self, form, **kwargs): form_obj = self.get_form( step=form_key, data=self.storage.get_step_data(form_key), - files=self.storage.get_step_files(form_key) + files=self.storage.get_step_files(form_key), ) # Get form elements for the current form entry - form_element_entries = \ - self.form_element_entry_mapping[form_key] + form_element_entries = self.form_element_entry_mapping[form_key] ignorable_field_names = self.get_ignorable_field_names( form_element_entries @@ -1638,9 +1666,9 @@ def render_done(self, form, **kwargs): form_obj.fields.pop(ignorable_field_name) if not form_obj.is_valid(): - return self.render_revalidation_failure(form_key, - form_obj, - **kwargs) + return self.render_revalidation_failure( + form_key, form_obj, **kwargs + ) # Fire plugin processors # Get current form entry @@ -1651,7 +1679,7 @@ def render_done(self, form, **kwargs): request=self.request, form=form_obj, form_element_entries=form_element_entries, - **{'form_wizard_entry': self.form_wizard_entry} + **{"form_wizard_entry": self.form_wizard_entry}, ) final_forms[form_key] = form_obj @@ -1659,9 +1687,9 @@ def render_done(self, form, **kwargs): # render the done view and reset the wizard before returning the # response. This is needed to prevent from rendering done with the # same data twice. - done_response = self.done(final_forms.values(), - form_dict=final_forms, - **kwargs) + done_response = self.done( + final_forms.values(), form_dict=final_forms, **kwargs + ) self.storage.reset() return done_response @@ -1670,12 +1698,12 @@ def done(self, form_list, **kwargs): user_is_authenticated = self.request.user.is_authenticated try: - qs_kwargs = {'slug': kwargs.get('form_wizard_entry_slug')} + qs_kwargs = {"slug": kwargs.get("form_wizard_entry_slug")} if not user_is_authenticated: - kwargs.update({'is_public': True}) - form_wizard_entry = FormWizardEntry.objects \ - .select_related('user') \ - .get(**qs_kwargs) + kwargs.update({"is_public": True}) + form_wizard_entry = FormWizardEntry.objects.select_related( + "user" + ).get(**qs_kwargs) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) @@ -1685,21 +1713,24 @@ def done(self, form_list, **kwargs): request=self.request, form_list=form_list, form_wizard=self, - form_element_entries=self.wizard_form_element_entries + form_element_entries=self.wizard_form_element_entries, ) # do_something_with_the_form_data(form_list) - redirect_url = reverse('fobi.form_wizard_entry_submitted', - args=[form_wizard_entry.slug]) + redirect_url = reverse( + "fobi.form_wizard_entry_submitted", args=[form_wizard_entry.slug] + ) return HttpResponseRedirect(redirect_url) + # ***************************************************************************** # ************************** View form wizard entry success ******************* # ***************************************************************************** -def form_wizard_entry_submitted(request, form_wizard_entry_slug=None, - template_name=None): +def form_wizard_entry_submitted( + request, form_wizard_entry_slug=None, template_name=None +): """Form wizard entry submitted. :param django.http.HttpRequest request: @@ -1710,18 +1741,18 @@ def form_wizard_entry_submitted(request, form_wizard_entry_slug=None, user_is_authenticated = request.user.is_authenticated try: - kwargs = {'slug': form_wizard_entry_slug} + kwargs = {"slug": form_wizard_entry_slug} if not user_is_authenticated: - kwargs.update({'is_public': True}) - form_wizard_entry = FormWizardEntry._default_manager \ - .select_related('user') \ - .get(**kwargs) + kwargs.update({"is_public": True}) + form_wizard_entry = FormWizardEntry._default_manager.select_related( + "user" + ).get(**kwargs) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) context = { - 'form_wizard_entry_slug': form_wizard_entry_slug, - 'form_wizard_entry': form_wizard_entry + "form_wizard_entry_slug": form_wizard_entry_slug, + "form_wizard_entry": form_wizard_entry, } if not template_name: @@ -1730,6 +1761,7 @@ def form_wizard_entry_submitted(request, form_wizard_entry_slug=None, return render(request, template_name, context) + # ***************************************************************************** # ***************************************************************************** # **************************** Form wizard form entry ************************* @@ -1742,13 +1774,12 @@ def form_wizard_entry_submitted(request, form_wizard_entry_slug=None, # 'fobi.add_formwizardformentry' + @login_required @permission_required(add_form_wizard_form_entry_permission) -def add_form_wizard_form_entry(request, - form_wizard_entry_id, - form_entry_id, - theme=None, - template_name=None): +def add_form_wizard_form_entry( + request, form_wizard_entry_id, form_entry_id, theme=None, template_name=None +): """Add form wizard form entry. :param django.http.HttpRequest request: @@ -1760,24 +1791,19 @@ def add_form_wizard_form_entry(request, """ try: form_wizard_entry = FormWizardEntry.objects.get( - pk=form_wizard_entry_id, - user=request.user + pk=form_wizard_entry_id, user=request.user ) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) try: - form_entry = FormEntry.objects.get( - pk=form_entry_id, - user=request.user - ) + form_entry = FormEntry.objects.get(pk=form_entry_id, user=request.user) except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) try: obj = FormWizardFormEntry.objects.create( - form_wizard_entry=form_wizard_entry, - form_entry=form_entry + form_wizard_entry=form_wizard_entry, form_entry=form_entry ) except IntegrityError as err: messages.error( @@ -1785,15 +1811,13 @@ def add_form_wizard_form_entry(request, gettext( 'The form entry "{0}" could not be added to the ' 'wizard "{1}" due to the following error "{2}".' - ).format(form_entry.name, form_wizard_entry.name, str(err)) + ).format(form_entry.name, form_wizard_entry.name, str(err)), ) return redirect( "{0}?active_tab=tab-form-elements".format( reverse( - 'fobi.edit_form_wizard_entry', - kwargs={ - 'form_wizard_entry_id': form_wizard_entry_id - } + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) ) ) @@ -1803,10 +1827,10 @@ def add_form_wizard_form_entry(request, records = FormWizardFormEntry.objects.filter( form_wizard_entry_id=form_wizard_entry_id, # form_entry_id=form_entry_id - ).aggregate(models.Max('position')) + ).aggregate(models.Max("position")) if records: try: - position = records['{0}__max'.format('position')] + 1 + position = records["{0}__max".format("position")] + 1 except TypeError as err: pass @@ -1820,25 +1844,25 @@ def add_form_wizard_form_entry(request, request, gettext( 'The form entry "{0}" was added successfully to the wizard "{1}".' - ).format(form_entry.name, form_wizard_entry.name) + ).format(form_entry.name, form_wizard_entry.name), ) return redirect( "{0}?active_tab=tab-form-elements".format( reverse( - 'fobi.edit_form_wizard_entry', - kwargs={ - 'form_wizard_entry_id': form_wizard_entry_id - } + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) ) ) + # ***************************************************************************** # ************************** Delete form wizard form entry ******************** # ***************************************************************************** # 'fobi.delete_formwizardformentry' + @login_required @permission_required(delete_form_wizard_form_entry_permission) def delete_form_wizard_form_entry(request, form_wizard_form_entry_id): @@ -1849,11 +1873,12 @@ def delete_form_wizard_form_entry(request, form_wizard_form_entry_id): :return django.http.HttpResponse: """ try: - obj = FormWizardFormEntry \ - .objects \ - .select_related('form_wizard_entry') \ - .get(pk=form_wizard_form_entry_id, - form_wizard_entry__user__pk=request.user.pk) + obj = FormWizardFormEntry.objects.select_related( + "form_wizard_entry" + ).get( + pk=form_wizard_form_entry_id, + form_wizard_entry__user__pk=request.user.pk, + ) except ObjectDoesNotExist as err: raise Http404( gettext("{0} not found.").format( @@ -1868,17 +1893,18 @@ def delete_form_wizard_form_entry(request, form_wizard_form_entry_id): request, gettext( 'The form wizard form entry "{0}" was deleted successfully.' - ).format(obj.form_wizard_entry.name) + ).format(obj.form_wizard_entry.name), ) redirect_url = reverse( - 'fobi.edit_form_wizard_entry', - kwargs={'form_wizard_entry_id': form_wizard_entry_id} + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) return redirect( - "{0}{1}".format(redirect_url, '?active_tab=tab-form-elements') + "{0}{1}".format(redirect_url, "?active_tab=tab-form-elements") ) + # ***************************************************************************** # ***************************************************************************** # *************************** Form wizard form handler ************************ @@ -1891,13 +1917,16 @@ def delete_form_wizard_form_entry(request, form_wizard_form_entry_id): # 'fobi.add_formwizardhandlerentry' + @login_required @permission_required(add_form_wizard_handler_entry_permission) -def add_form_wizard_handler_entry(request, - form_wizard_entry_id, - form_wizard_handler_plugin_uid, - theme=None, - template_name=None): +def add_form_wizard_handler_entry( + request, + form_wizard_entry_id, + form_wizard_handler_plugin_uid, + theme=None, + template_name=None, +): """Add form handler entry. :param django.http.HttpRequest request: @@ -1914,15 +1943,20 @@ def add_form_wizard_handler_entry(request, except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) - user_form_wizard_handler_plugin_uids = \ - get_user_form_wizard_handler_plugin_uids( - request.user - ) + user_form_wizard_handler_plugin_uids = ( + get_user_form_wizard_handler_plugin_uids(request.user) + ) - if form_wizard_handler_plugin_uid not \ - in user_form_wizard_handler_plugin_uids: - raise Http404(gettext("Plugin does not exist or you are not allowed " - "to use this plugin!")) + if ( + form_wizard_handler_plugin_uid + not in user_form_wizard_handler_plugin_uids + ): + raise Http404( + gettext( + "Plugin does not exist or you are not allowed " + "to use this plugin!" + ) + ) form_wizard_handler_plugin_cls = form_wizard_handler_plugin_registry.get( form_wizard_handler_plugin_uid @@ -1932,14 +1966,15 @@ def add_form_wizard_handler_entry(request, # used once. In that case, check if it has been used already in the current # form entry. if not form_wizard_handler_plugin_cls.allow_multiple: - times_used = FormWizardHandlerEntry._default_manager \ - .filter(form_wizard_entry__id=form_wizard_entry_id, - plugin_uid=form_wizard_handler_plugin_cls.uid) \ - .count() + times_used = FormWizardHandlerEntry._default_manager.filter( + form_wizard_entry__id=form_wizard_entry_id, + plugin_uid=form_wizard_handler_plugin_cls.uid, + ).count() if times_used > 0: raise Http404( - gettext("The {0} plugin can be used only once in a " - "form.").format(form_wizard_handler_plugin_cls.name) + gettext( + "The {0} plugin can be used only once in a " "form." + ).format(form_wizard_handler_plugin_cls.name) ) form_wizard_handler_plugin = form_wizard_handler_plugin_cls( @@ -1960,10 +1995,9 @@ def add_form_wizard_handler_entry(request, if not form_wizard_handler_plugin_form_cls: save_object = True - elif request.method == 'POST': + elif request.method == "POST": form = form_wizard_handler_plugin.get_initialised_create_form_or_404( - data=request.POST, - files=request.FILES + data=request.POST, files=request.FILES ) if form.is_valid(): # Saving the plugin form data. @@ -1985,28 +2019,28 @@ def add_form_wizard_handler_entry(request, request, gettext( 'The form wizard handler plugin "{0}" was added ' - 'successfully.' - ).format(form_wizard_handler_plugin.name) + "successfully." + ).format(form_wizard_handler_plugin.name), ) return redirect( "{0}?active_tab=tab-form-handlers".format( reverse( - 'fobi.edit_form_wizard_entry', - kwargs={'form_wizard_entry_id': form_wizard_entry_id} + "fobi.edit_form_wizard_entry", + kwargs={"form_wizard_entry_id": form_wizard_entry_id}, ) ) ) context = { - 'form': form, - 'form_wizard_entry': form_wizard_entry, - 'form_wizard_handler_plugin': form_wizard_handler_plugin, + "form": form, + "form_wizard_entry": form_wizard_entry, + "form_wizard_handler_plugin": form_wizard_handler_plugin, } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -2015,18 +2049,19 @@ def add_form_wizard_handler_entry(request, return render(request, template_name, context) + # ***************************************************************************** # ************************ Edit form wizard handler entry ********************* # ***************************************************************************** # 'fobi.change_formwizardhandlerentry' + @login_required @permission_required(edit_form_wizard_handler_entry_permission) -def edit_form_wizard_handler_entry(request, - form_wizard_handler_entry_id, - theme=None, - template_name=None): +def edit_form_wizard_handler_entry( + request, form_wizard_handler_entry_id, theme=None, template_name=None +): """Edit form handler entry. :param django.http.HttpRequest request: @@ -2036,9 +2071,9 @@ def edit_form_wizard_handler_entry(request, :return django.http.HttpResponse: """ try: - obj = FormWizardHandlerEntry._default_manager \ - .select_related('form_wizard_entry') \ - .get(pk=form_wizard_handler_entry_id) + obj = FormWizardHandlerEntry._default_manager.select_related( + "form_wizard_entry" + ).get(pk=form_wizard_handler_entry_id) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard handler entry not found.")) @@ -2054,19 +2089,17 @@ def edit_form_wizard_handler_entry(request, messages.info( request, gettext( - 'The form wizard handler plugin "{0}" is not ' - 'configurable!' - ).format(form_wizard_handler_plugin.name) + 'The form wizard handler plugin "{0}" is not ' "configurable!" + ).format(form_wizard_handler_plugin.name), ) return redirect( - 'fobi.edit_form_wizard_entry', - form_wizard_entry_id=form_wizard_entry.pk + "fobi.edit_form_wizard_entry", + form_wizard_entry_id=form_wizard_entry.pk, ) - elif request.method == 'POST': + elif request.method == "POST": form = form_wizard_handler_plugin.get_initialised_edit_form_or_404( - data=request.POST, - files=request.FILES + data=request.POST, files=request.FILES ) if form.is_valid(): @@ -2083,26 +2116,28 @@ def edit_form_wizard_handler_entry(request, request, gettext( 'The form wizard handler plugin "{0}" was edited ' - 'successfully.' - ).format(form_wizard_handler_plugin.name) + "successfully." + ).format(form_wizard_handler_plugin.name), ) - return redirect('fobi.edit_form_wizard_entry', - form_wizard_entry_id=form_wizard_entry.pk) + return redirect( + "fobi.edit_form_wizard_entry", + form_wizard_entry_id=form_wizard_entry.pk, + ) else: form = form_wizard_handler_plugin.get_initialised_edit_form_or_404() context = { - 'form': form, - 'form_wizard_entry': form_wizard_entry, - 'form_wizard_handler_plugin': form_wizard_handler_plugin, + "form": form, + "form_wizard_entry": form_wizard_entry, + "form_wizard_handler_plugin": form_wizard_handler_plugin, } # If given, pass to the template (and override the value set by # the context processor. if theme: - context.update({'fobi_theme': theme}) + context.update({"fobi_theme": theme}) if not template_name: if not theme: @@ -2111,12 +2146,14 @@ def edit_form_wizard_handler_entry(request, return render(request, template_name, context) + # ***************************************************************************** # *********************** Delete form wizard handler entry ******************** # ***************************************************************************** # 'fobi.delete_formwizardhandlerentry' + @login_required @permission_required(delete_form_wizard_handler_entry_permission) def delete_form_wizard_handler_entry(request, form_wizard_handler_entry_id): @@ -2134,9 +2171,10 @@ def delete_form_wizard_handler_entry(request, form_wizard_handler_entry_id): message=gettext( 'The form wizard handler plugin "{0}" was deleted successfully.' ), - html_anchor='?active_tab=tab-form-handlers' + html_anchor="?active_tab=tab-form-handlers", ) + # ***************************************************************************** # ***************************************************************************** # ******************************** View form entry **************************** @@ -2160,20 +2198,23 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): user_is_authenticated = request.user.is_authenticated try: - kwargs = {'slug': form_entry_slug} + kwargs = {"slug": form_entry_slug} if not user_is_authenticated: - kwargs.update({'is_public': True}) - form_entry = FormEntry._default_manager.select_related('user') \ - .get(**kwargs) + kwargs.update({"is_public": True}) + form_entry = FormEntry._default_manager.select_related("user").get( + **kwargs + ) except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) if not form_entry.is_active: context = { - 'form_entry': form_entry, - 'page_header': (form_entry.inactive_page_title - or form_entry.title - or form_entry.name), + "form_entry": form_entry, + "page_header": ( + form_entry.inactive_page_title + or form_entry.title + or form_entry.name + ), } if not template_name: @@ -2187,17 +2228,19 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): # This is where the most of the magic happens. Our form is being built # dynamically. form_cls = assemble_form_class( - form_entry, - form_element_entries=form_element_entries, - request=request + form_entry, form_element_entries=form_element_entries, request=request ) - if request.method == 'POST': + if request.method == "POST": form = form_cls(request.POST, request.FILES) # Fire pre form validation callbacks - fire_form_callbacks(form_entry=form_entry, request=request, form=form, - stage=CALLBACK_BEFORE_FORM_VALIDATION) + fire_form_callbacks( + form_entry=form_entry, + request=request, + form=form, + stage=CALLBACK_BEFORE_FORM_VALIDATION, + ) if form.is_valid(): # Fire form valid callbacks, before handling submitted plugin @@ -2206,27 +2249,28 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): form_entry=form_entry, request=request, form=form, - stage=CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA + stage=CALLBACK_FORM_VALID_BEFORE_SUBMIT_PLUGIN_FORM_DATA, ) # Fire plugin processors form = submit_plugin_form_data( - form_entry=form_entry, - request=request, - form=form + form_entry=form_entry, request=request, form=form ) # Fire form valid callbacks - form = fire_form_callbacks(form_entry=form_entry, - request=request, form=form, - stage=CALLBACK_FORM_VALID) + form = fire_form_callbacks( + form_entry=form_entry, + request=request, + form=form, + stage=CALLBACK_FORM_VALID, + ) # Run all handlers handler_responses, handler_errors = run_form_handlers( form_entry=form_entry, request=request, form=form, - form_element_entries=form_element_entries + form_element_entries=form_element_entries, ) # Warning that not everything went ok. @@ -2234,7 +2278,7 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): for handler_error in handler_errors: messages.warning( request, - gettext("Error occurred: {0}.").format(handler_error) + gettext("Error occurred: {0}.").format(handler_error), ) # Fire post handler callbacks @@ -2242,22 +2286,26 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): form_entry=form_entry, request=request, form=form, - stage=CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS + stage=CALLBACK_FORM_VALID_AFTER_FORM_HANDLERS, ) messages.info( request, gettext("Form {0} was submitted successfully.").format( form_entry.name - ) + ), ) return redirect( - reverse('fobi.form_entry_submitted', args=[form_entry.slug]) + reverse("fobi.form_entry_submitted", args=[form_entry.slug]) ) else: # Fire post form validation callbacks - fire_form_callbacks(form_entry=form_entry, request=request, - form=form, stage=CALLBACK_FORM_INVALID) + fire_form_callbacks( + form_entry=form_entry, + request=request, + form=form, + stage=CALLBACK_FORM_INVALID, + ) else: # Providing initial form data by feeding entire GET dictionary @@ -2265,7 +2313,7 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): # GET. kwargs = {} if GET_PARAM_INITIAL_DATA in request.GET: - kwargs = {'initial': request.GET} + kwargs = {"initial": request.GET} form = form_cls(**kwargs) # In debug mode, try to identify possible problems. @@ -2281,10 +2329,10 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): theme.collect_plugin_media(form_element_entries) context = { - 'form': form, - 'form_entry': form_entry, - 'fobi_theme': theme, - 'fobi_form_title': form_entry.title, + "form": form, + "form_entry": form_entry, + "fobi_theme": theme, + "fobi_form_title": form_entry.title, } if not template_name: @@ -2292,6 +2340,7 @@ def view_form_entry(request, form_entry_slug, theme=None, template_name=None): return render(request, template_name, context) + # ***************************************************************************** # **************************** View form entry success ************************ # ***************************************************************************** @@ -2308,12 +2357,12 @@ def form_entry_submitted(request, form_entry_slug=None, template_name=None): user_is_authenticated = request.user.is_authenticated try: - kwargs = {'slug': form_entry_slug} + kwargs = {"slug": form_entry_slug} if not user_is_authenticated: - kwargs.update({'is_public': True}) - form_entry = FormEntry._default_manager \ - .select_related('user') \ - .get(**kwargs) + kwargs.update({"is_public": True}) + form_entry = FormEntry._default_manager.select_related("user").get( + **kwargs + ) except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) @@ -2323,10 +2372,7 @@ def form_entry_submitted(request, form_entry_slug=None, template_name=None): # except ObjectDoesNotExist as err: # raise Http404(gettext("Form entry not found.")) - context = { - 'form_entry_slug': form_entry_slug, - 'form_entry': form_entry - } + context = {"form_entry_slug": form_entry_slug, "form_entry": form_entry} if not template_name: theme = get_theme(request=request, as_instance=True) @@ -2334,6 +2380,7 @@ def form_entry_submitted(request, form_entry_slug=None, template_name=None): return render(request, template_name, context) + # ***************************************************************************** # ***************************************************************************** # **************************** Export form entry ****************************** @@ -2352,8 +2399,9 @@ def export_form_entry(request, form_entry_id, template_name=None): :return django.http.HttpResponse: """ try: - form_entry = FormEntry._default_manager \ - .get(pk=form_entry_id, user__pk=request.user.pk) + form_entry = FormEntry._default_manager.get( + pk=form_entry_id, user__pk=request.user.pk + ) except ObjectDoesNotExist as err: raise Http404(gettext("Form entry not found.")) @@ -2394,12 +2442,12 @@ def export_form_entry(request, form_entry_id, template_name=None): # ) data_exporter = JSONDataExporter( - json.dumps(data, cls=DjangoJSONEncoder), - form_entry.slug + json.dumps(data, cls=DjangoJSONEncoder), form_entry.slug ) return data_exporter.export() + # ***************************************************************************** # ***************************************************************************** # **************************** Import form entry ****************************** @@ -2416,12 +2464,12 @@ def import_form_entry(request, template_name=None): :param string template_name: :return django.http.HttpResponse: """ - if request.method == 'POST': + if request.method == "POST": form = ImportFormEntryForm(request.POST, request.FILES) if form.is_valid(): # Reading the contents of the file into JSON - json_file = form.cleaned_data['file'] + json_file = form.cleaned_data["file"] file_contents = json_file.read() # This is the form data which we are going to use when recreating @@ -2504,13 +2552,8 @@ def import_form_entry(request, template_name=None): # 'import.') # ) - messages.info( - request, - _('The form was imported successfully.') - ) - return redirect( - 'fobi.edit_form_entry', form_entry_id=form_entry.pk - ) + messages.info(request, _("The form was imported successfully.")) + return redirect("fobi.edit_form_entry", form_entry_id=form_entry.pk) else: form = ImportFormEntryForm() @@ -2528,7 +2571,7 @@ def import_form_entry(request, template_name=None): # continue, having the broken form element/handler entries not imported. context = { - 'form': form, + "form": form, # 'form_entry': form_entry } @@ -2538,6 +2581,7 @@ def import_form_entry(request, template_name=None): return render(request, template_name, context) + # ***************************************************************************** # ***************************************************************************** # ************************* Export form wizard entry ************************** @@ -2546,11 +2590,10 @@ def import_form_entry(request, template_name=None): @login_required -@permissions_required(satisfy=SATISFY_ALL, - perms=create_form_wizard_entry_permissions) -def export_form_wizard_entry(request, - form_wizard_entry_id, - template_name=None): +@permissions_required( + satisfy=SATISFY_ALL, perms=create_form_wizard_entry_permissions +) +def export_form_wizard_entry(request, form_wizard_entry_id, template_name=None): """Export form entry to JSON. :param django.http.HttpRequest request: @@ -2559,44 +2602,46 @@ def export_form_wizard_entry(request, :return django.http.HttpResponse: """ try: - form_wizard_entry = FormWizardEntry._default_manager \ - .get(pk=form_wizard_entry_id, user__pk=request.user.pk) + form_wizard_entry = FormWizardEntry._default_manager.get( + pk=form_wizard_entry_id, user__pk=request.user.pk + ) except ObjectDoesNotExist as err: raise Http404(gettext("Form wizard entry not found.")) data = { - 'name': form_wizard_entry.name, - 'slug': form_wizard_entry.slug, - 'is_public': False, - 'is_cloneable': False, - 'success_page_title': form_wizard_entry.success_page_title, - 'success_page_message': form_wizard_entry.success_page_message, - 'form_wizard_forms': [], - 'form_wizard_handlers': [], + "name": form_wizard_entry.name, + "slug": form_wizard_entry.slug, + "is_public": False, + "is_cloneable": False, + "success_page_title": form_wizard_entry.success_page_title, + "success_page_message": form_wizard_entry.success_page_message, + "form_wizard_forms": [], + "form_wizard_handlers": [], } - form_wizard_form_entries = \ - form_wizard_entry.formwizardformentry_set.all()[:] - form_wizard_handler_entries = \ + form_wizard_form_entries = form_wizard_entry.formwizardformentry_set.all()[ + : + ] + form_wizard_handler_entries = ( form_wizard_entry.formwizardhandlerentry_set.all()[:] + ) for wizard_form_entry in form_wizard_form_entries: - data['form_wizard_forms'].append( + data["form_wizard_forms"].append( prepare_form_entry_export_data(wizard_form_entry.form_entry) ) for wizard_handler_entry in form_wizard_handler_entries: - data['form_wizard_handlers'].append( + data["form_wizard_handlers"].append( { - 'plugin_uid': wizard_handler_entry.plugin_uid, - 'plugin_data': wizard_handler_entry.plugin_data, + "plugin_uid": wizard_handler_entry.plugin_uid, + "plugin_data": wizard_handler_entry.plugin_data, } ) data_exporter = JSONDataExporter( - json.dumps(data, cls=DjangoJSONEncoder), - form_wizard_entry.slug + json.dumps(data, cls=DjangoJSONEncoder), form_wizard_entry.slug ) return data_exporter.export() @@ -2610,8 +2655,9 @@ def export_form_wizard_entry(request, @login_required -@permissions_required(satisfy=SATISFY_ALL, - perms=create_form_wizard_entry_permissions) +@permissions_required( + satisfy=SATISFY_ALL, perms=create_form_wizard_entry_permissions +) def import_form_wizard_entry(request, template_name=None): """Import form wizard entry. @@ -2619,12 +2665,12 @@ def import_form_wizard_entry(request, template_name=None): :param string template_name: :return django.http.HttpResponse: """ - if request.method == 'POST': + if request.method == "POST": form = ImportFormWizardEntryForm(request.POST, request.FILES) if form.is_valid(): # Reading the contents of the file into JSON - json_file = form.cleaned_data['file'] + json_file = form.cleaned_data["file"] file_contents = json_file.read() # This is the form data which we are going to use when recreating @@ -2636,20 +2682,20 @@ def import_form_wizard_entry(request, template_name=None): # Furthermore, we will use the `form_element_data` and # `form_handler_data` for filling the missing plugin data. form_wizard_forms_data = form_wizard_data.pop( - 'form_wizard_forms', [] + "form_wizard_forms", [] ) form_wizard_handlers_data = form_wizard_data.pop( - 'form_wizard_handlers', [] + "form_wizard_handlers", [] ) form_wizard_data_keys_whitelist = ( - 'name', - 'slug', - 'is_public', - 'is_cloneable', - 'success_page_title', - 'success_page_message', - 'action', + "name", + "slug", + "is_public", + "is_cloneable", + "success_page_title", + "success_page_message", + "action", ) # In this way we keep possible trash out. @@ -2658,7 +2704,7 @@ def import_form_wizard_entry(request, template_name=None): form_wizard_data.pop(key) # User information we always recreate! - form_wizard_data['user'] = request.user + form_wizard_data["user"] = request.user form_wizard_entry = FormWizardEntry(**form_wizard_data) @@ -2668,22 +2714,17 @@ def import_form_wizard_entry(request, template_name=None): form_wizard_entry.save() # One by one, importing form element plugins. - for counter, form_entry_data \ - in enumerate(form_wizard_forms_data): - form_entry = perform_form_entry_import( - request, - form_entry_data - ) + for counter, form_entry_data in enumerate(form_wizard_forms_data): + form_entry = perform_form_entry_import(request, form_entry_data) FormWizardFormEntry.objects.create( form_wizard_entry=form_wizard_entry, form_entry=form_entry, - position=counter + position=counter, ) # One by one, importing form handler plugins. for form_wizard_handler_data in form_wizard_handlers_data: if form_wizard_handler_plugin_registry.registry.get( - form_wizard_handler_data.get('plugin_uid', None), - None + form_wizard_handler_data.get("plugin_uid", None), None ): form_wizard_handler = FormWizardHandlerEntry( **form_wizard_handler_data @@ -2691,29 +2732,30 @@ def import_form_wizard_entry(request, template_name=None): form_wizard_handler.form_wizard_entry = form_wizard_entry form_wizard_handler.save() else: - if form_wizard_handler_data.get('plugin_uid', None): + if form_wizard_handler_data.get("plugin_uid", None): messages.warning( request, gettext( - 'Plugin {0} is missing in the system.' + "Plugin {0} is missing in the system." ).format( - form_wizard_handler_data.get('plugin_uid') - ) + form_wizard_handler_data.get("plugin_uid") + ), ) else: messages.warning( request, - _('Some essential data missing in the JSON ' - 'import.') + _( + "Some essential data missing in the JSON " + "import." + ), ) messages.info( - request, - _('The form wizard was imported successfully.') + request, _("The form wizard was imported successfully.") ) return redirect( - 'fobi.edit_form_wizard_entry', - form_wizard_entry_id=form_wizard_entry.pk + "fobi.edit_form_wizard_entry", + form_wizard_entry_id=form_wizard_entry.pk, ) else: form = ImportFormWizardEntryForm() @@ -2732,7 +2774,7 @@ def import_form_wizard_entry(request, template_name=None): # continue, having the broken form element/handler entries not imported. context = { - 'form': form, + "form": form, # 'form_entry': form_entry } @@ -2752,11 +2794,9 @@ def import_form_wizard_entry(request, template_name=None): @login_required @permissions_required(satisfy=SATISFY_ALL, perms=create_form_entry_permissions) -def form_importer(request, - form_importer_plugin_uid, - template_name=None, - *args, - **kwargs): +def form_importer( + request, form_importer_plugin_uid, template_name=None, *args, **kwargs +): """Form importer. :param django.http.HttpRequest request: @@ -2768,8 +2808,7 @@ def form_importer(request, form_importer_plugin_uid ) _form_importer = form_importer_cls( - form_entry_cls=FormEntry, - form_element_entry_cls=FormElementEntry + form_entry_cls=FormEntry, form_element_entry_cls=FormElementEntry ) return _form_importer.get_wizard(request, *args, **kwargs) diff --git a/src/fobi/widgets.py b/src/fobi/widgets.py index 233b772ac..9fc99384c 100644 --- a/src/fobi/widgets.py +++ b/src/fobi/widgets.py @@ -12,24 +12,22 @@ class NumberInput(TextInput): """Number input.""" - input_type = 'number' + input_type = "number" -__title__ = 'fobi.widgets' -__author__ = 'Artur Barseghyan ' -__copyright__ = '2014-2019 Artur Barseghyan' -__license__ = 'GPL 2.0/LGPL 2.1' + +__title__ = "fobi.widgets" +__author__ = "Artur Barseghyan " +__copyright__ = "2014-2019 Artur Barseghyan" +__license__ = "GPL 2.0/LGPL 2.1" __all__ = ( - 'BooleanRadioSelect', - 'NumberInput', - 'RichSelect', - 'RichSelectInverseQuotes', + "BooleanRadioSelect", + "NumberInput", + "RichSelect", + "RichSelectInverseQuotes", ) -BOOLEAN_CHOICES = ( - (True, _("Yes")), - (False, _("No")) -) +BOOLEAN_CHOICES = ((True, _("Yes")), (False, _("No"))) class BooleanRadioSelect(RadioSelect): @@ -46,12 +44,12 @@ class BooleanRadioSelect(RadioSelect): def __init__(self, *args, **kwargs): """Constructor.""" # Override the default renderer if we were passed one. - renderer = kwargs.pop('renderer', None) + renderer = kwargs.pop("renderer", None) if renderer: self.renderer = renderer - if 'choices' not in kwargs: - kwargs['choices'] = BOOLEAN_CHOICES + if "choices" not in kwargs: + kwargs["choices"] = BOOLEAN_CHOICES super(BooleanRadioSelect, self).__init__(*args, **kwargs) @@ -62,8 +60,14 @@ class RichSelect(Select): Based on original Select widget and intended to be a drop-off replacement. """ - def __init__(self, attrs=None, choices=(), prepend_html=None, - append_html=None, override_name=None): + def __init__( + self, + attrs=None, + choices=(), + prepend_html=None, + append_html=None, + override_name=None, + ): """Constructor. :param dict attrs: @@ -74,9 +78,9 @@ def __init__(self, attrs=None, choices=(), prepend_html=None, """ self.prepend_html = prepend_html if prepend_html else "" self.append_html = append_html if append_html else "" - self.override_name = override_name \ - if override_name is not None \ - else None + self.override_name = ( + override_name if override_name is not None else None + ) super(RichSelect, self).__init__(attrs=attrs, choices=choices) def render(self, name, value, attrs=None, **kwargs): @@ -85,18 +89,17 @@ def render(self, name, value, attrs=None, **kwargs): name = self.override_name rendered_select = super(RichSelect, self).render( - name=name, - value=value, - attrs=attrs, - **kwargs + name=name, value=value, attrs=attrs, **kwargs ) return mark_safe( - '\n'.join([ - format_html(self.prepend_html), - rendered_select, - format_html(self.append_html) - ]) + "\n".join( + [ + format_html(self.prepend_html), + rendered_select, + format_html(self.append_html), + ] + ) ) @@ -105,6 +108,8 @@ class RichSelectInverseQuotes(RichSelect): Uses inverse quotes. """ - template_name = 'fobi/django/forms/widgets/rich_select_inverse.html' - option_template_name = 'fobi/django/forms/widgets/' \ - 'rich_select_inverse_option.html' + + template_name = "fobi/django/forms/widgets/rich_select_inverse.html" + option_template_name = ( + "fobi/django/forms/widgets/" "rich_select_inverse_option.html" + ) diff --git a/src/fobi/wizard/views/dynamic.py b/src/fobi/wizard/views/dynamic.py index 187052c0d..159c580a3 100644 --- a/src/fobi/wizard/views/dynamic.py +++ b/src/fobi/wizard/views/dynamic.py @@ -1,32 +1,29 @@ -from collections import OrderedDict import logging import re +from collections import OrderedDict +import six from django import forms +from django.forms import ValidationError, formsets from django.shortcuts import redirect -from django.forms import formsets, ValidationError -from django.views.generic import TemplateView +from django.urls import reverse from django.utils.decorators import classonlymethod from django.utils.translation import gettext as _ -from django.urls import reverse - -import six - +from django.views.generic import TemplateView from django_nine import versions - +from formtools.wizard.forms import ManagementForm from formtools.wizard.storage import get_storage from formtools.wizard.storage.exceptions import NoFileStorageConfigured -from formtools.wizard.forms import ManagementForm logger = logging.getLogger(__name__) __all__ = ( - 'DynamicWizardView', - 'DynamicSessionWizardView', - 'DynamicCookieWizardView', - 'DynamicNamedUrlWizardView', - 'DynamicNamedUrlSessionWizardView', - 'DynamicNamedUrlCookieWizardView', + "DynamicWizardView", + "DynamicSessionWizardView", + "DynamicCookieWizardView", + "DynamicNamedUrlWizardView", + "DynamicNamedUrlSessionWizardView", + "DynamicNamedUrlCookieWizardView", ) @@ -41,8 +38,8 @@ def normalize_name(name): 'four_five_six' """ - new = re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', '_\\1', name) - return new.lower().strip('_') + new = re.sub("(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))", "_\\1", name) + return new.lower().strip("_") class StepsHelper(object): @@ -58,7 +55,7 @@ def __len__(self): return self.count def __repr__(self): - return '' % (self._wizard, self.all) + return "" % (self._wizard, self.all) @property def all(self): @@ -150,10 +147,10 @@ class DynamicWizardView(TemplateView): initial_dict = None instance_dict = None condition_dict = None - template_name = 'formtools/wizard/wizard_form.html' + template_name = "formtools/wizard/wizard_form.html" def __repr__(self): - return '<%s: forms: %s>' % (self.__class__.__name__, self.form_list) + return "<%s: forms: %s>" % (self.__class__.__name__, self.form_list) @classonlymethod def as_view(cls, *args, **kwargs): @@ -167,9 +164,15 @@ def as_view(cls, *args, **kwargs): return super(DynamicWizardView, cls).as_view(**initkwargs) @classmethod - def get_initkwargs(cls, form_list=None, initial_dict=None, - instance_dict=None, condition_dict=None, - *args, **kwargs): + def get_initkwargs( + cls, + form_list=None, + initial_dict=None, + instance_dict=None, + condition_dict=None, + *args, + **kwargs, + ): """Create a dict with all needed parameters. For the form wizard instances. @@ -193,24 +196,25 @@ def get_initkwargs(cls, form_list=None, initial_dict=None, will be called with the wizardview instance as the only argument. If the return value is true, the step's form will be used. """ - kwargs.update({ - 'initial_dict': - initial_dict - or kwargs.pop('initial_dict', - getattr(cls, 'initial_dict', None)) + kwargs.update( + { + "initial_dict": initial_dict + or kwargs.pop( + "initial_dict", getattr(cls, "initial_dict", None) + ) or {}, - - 'instance_dict': - instance_dict - or kwargs.pop('instance_dict', - getattr(cls, 'instance_dict', None)) + "instance_dict": instance_dict + or kwargs.pop( + "instance_dict", getattr(cls, "instance_dict", None) + ) or {}, - 'condition_dict': - condition_dict - or kwargs.pop('condition_dict', - getattr(cls, 'condition_dict', None)) - or {} - }) + "condition_dict": condition_dict + or kwargs.pop( + "condition_dict", getattr(cls, "condition_dict", None) + ) + or {}, + } + ) return kwargs @@ -221,9 +225,11 @@ def get_prefix(self, request, *args, **kwargs): def compute_form_list(self, form_list=None, *args, **kwargs): """Compute the forms list.""" - form_list = form_list or kwargs.pop('form_list', - getattr(self, 'form_list', - None)) or [] + form_list = ( + form_list + or kwargs.pop("form_list", getattr(self, "form_list", None)) + or [] + ) computed_form_list = OrderedDict() @@ -246,11 +252,13 @@ def compute_form_list(self, form_list=None, *args, **kwargs): # check if any form contains a FileField, if yes, we need a # file_storage added to the wizardview (by subclassing). for field in six.itervalues(form.base_fields): - if (isinstance(field, forms.FileField) and - not hasattr(self, 'file_storage')): + if isinstance(field, forms.FileField) and not hasattr( + self, "file_storage" + ): raise NoFileStorageConfigured( "You need to define 'file_storage' in your " - "wizard view in order to handle file uploads.") + "wizard view in order to handle file uploads." + ) return computed_form_list @@ -268,7 +276,8 @@ def get_form_list(self): """ form_list = OrderedDict() for form_key, form_class in six.iteritems( - self.compute_form_list(self.form_list)): + self.compute_form_list(self.form_list) + ): # try to fetch the value from condition list, by default, the form # gets passed to the new list. condition = self.condition_dict.get(form_key, True) @@ -307,7 +316,7 @@ def dispatch(self, request, *args, **kwargs): self.storage_name, self.prefix, request, - getattr(self, 'file_storage', None) + getattr(self, "file_storage", None), ) self._form_list = [] @@ -357,7 +366,7 @@ def post(self, *args, **kwargs): # Look for a wizard_goto_step element in the posted data which # contains a valid step name. If one was found, render the requested # form. (This makes stepping back a lot easier). - wizard_goto_step = self.request.POST.get('wizard_goto_step', None) + wizard_goto_step = self.request.POST.get("wizard_goto_step", None) if wizard_goto_step and wizard_goto_step in self.get_form_list(): return self.render_goto_step(wizard_goto_step) @@ -365,13 +374,15 @@ def post(self, *args, **kwargs): management_form = ManagementForm(self.request.POST, prefix=self.prefix) if not management_form.is_valid(): raise ValidationError( - _('ManagementForm data is missing or has been tampered.'), - code='missing_management_form', + _("ManagementForm data is missing or has been tampered."), + code="missing_management_form", ) - form_current_step = management_form.cleaned_data['current_step'] - if (form_current_step != self.steps.current and - self.storage.current_step is not None): + form_current_step = management_form.cleaned_data["current_step"] + if ( + form_current_step != self.steps.current + and self.storage.current_step is not None + ): # form refreshed, change current step self.storage.current_step = form_current_step @@ -381,11 +392,13 @@ def post(self, *args, **kwargs): # and try to validate if form.is_valid(): # if the form is valid, store the cleaned data and files. - self.storage.set_step_data(self.steps.current, - self.process_step(form)) + self.storage.set_step_data( + self.steps.current, self.process_step(form) + ) - self.storage.set_step_files(self.steps.current, - self.process_step_files(form)) + self.storage.set_step_files( + self.steps.current, self.process_step_files(form) + ) # check if the current step is the last step if self.steps.current == self.steps.last: @@ -408,7 +421,7 @@ def render_next_step(self, form, **kwargs): new_form = self.get_form( next_step, data=self.storage.get_step_data(next_step), - files=self.storage.get_step_files(next_step) + files=self.storage.get_step_files(next_step), ) # change the stored current step @@ -424,7 +437,8 @@ def render_goto_step(self, goto_step, **kwargs): self.storage.current_step = goto_step form = self.get_form( data=self.storage.get_step_data(self.steps.current), - files=self.storage.get_step_files(self.steps.current)) + files=self.storage.get_step_files(self.steps.current), + ) return self.render(form) def render_done(self, form, **kwargs): @@ -441,21 +455,21 @@ def render_done(self, form, **kwargs): form_obj = self.get_form( step=form_key, data=self.storage.get_step_data(form_key), - files=self.storage.get_step_files(form_key) + files=self.storage.get_step_files(form_key), ) if not form_obj.is_valid(): - return self.render_revalidation_failure(form_key, - form_obj, - **kwargs) + return self.render_revalidation_failure( + form_key, form_obj, **kwargs + ) final_forms[form_key] = form_obj # render the done view and reset the wizard before returning the # response. This is needed to prevent from rendering done with the # same data twice. - done_response = self.done(final_forms.values(), - form_dict=final_forms, - **kwargs) + done_response = self.done( + final_forms.values(), form_dict=final_forms, **kwargs + ) self.storage.reset() return done_response @@ -514,21 +528,24 @@ def get_form(self, step=None, data=None, files=None): form_class = self.compute_form_list(self.form_list)[step] # prepare the kwargs for the form instance. kwargs = self.get_form_kwargs(step) - kwargs.update({ - 'data': data, - 'files': files, - 'prefix': self.get_form_prefix(step, form_class), - 'initial': self.get_form_initial(step), - }) - if issubclass(form_class, (forms.ModelForm, - forms.models.BaseInlineFormSet)): + kwargs.update( + { + "data": data, + "files": files, + "prefix": self.get_form_prefix(step, form_class), + "initial": self.get_form_initial(step), + } + ) + if issubclass( + form_class, (forms.ModelForm, forms.models.BaseInlineFormSet) + ): # If the form is based on ModelForm or InlineFormSet, # add instance if available and not previously set. - kwargs.setdefault('instance', self.get_form_instance(step)) + kwargs.setdefault("instance", self.get_form_instance(step)) elif issubclass(form_class, forms.models.BaseModelFormSet): # If the form is based on ModelFormSet, add queryset if available # and not previous set. - kwargs.setdefault('queryset', self.get_form_instance(step)) + kwargs.setdefault("queryset", self.get_form_instance(step)) return form_class(**kwargs) def process_step(self, form): @@ -585,13 +602,13 @@ def get_all_cleaned_data(self): form_obj = self.get_form( step=form_key, data=self.storage.get_step_data(form_key), - files=self.storage.get_step_files(form_key) + files=self.storage.get_step_files(form_key), ) if form_obj.is_valid(): if isinstance(form_obj.cleaned_data, (tuple, list)): - cleaned_data.update({ - 'formset-%s' % form_key: form_obj.cleaned_data - }) + cleaned_data.update( + {"formset-%s" % form_key: form_obj.cleaned_data} + ) else: cleaned_data.update(form_obj.cleaned_data) return cleaned_data @@ -607,7 +624,7 @@ def get_cleaned_data_for_step(self, step): form_obj = self.get_form( step=step, data=self.storage.get_step_data(step), - files=self.storage.get_step_files(step) + files=self.storage.get_step_files(step), ) if form_obj.is_valid(): return form_obj.cleaned_data @@ -680,12 +697,15 @@ def get_context_data(self, form, **kwargs): form=form, **kwargs ) context.update(self.storage.extra_data) - context['wizard'] = { - 'form': form, - 'steps': self.steps, - 'management_form': ManagementForm(prefix=self.prefix, initial={ - 'current_step': self.steps.current, - }), + context["wizard"] = { + "form": form, + "steps": self.steps, + "management_form": ManagementForm( + prefix=self.prefix, + initial={ + "current_step": self.steps.current, + }, + ), } return context @@ -713,13 +733,13 @@ def done(self, form_list, **kwargs): class DynamicSessionWizardView(DynamicWizardView): """A WizardView with pre-configured SessionStorage backend.""" - storage_name = 'formtools.wizard.storage.session.SessionStorage' + storage_name = "formtools.wizard.storage.session.SessionStorage" class DynamicCookieWizardView(DynamicWizardView): """A WizardView with pre-configured CookieStorage backend.""" - storage_name = 'formtools.wizard.storage.cookie.CookieStorage' + storage_name = "formtools.wizard.storage.cookie.CookieStorage" class DynamicNamedUrlWizardView(DynamicWizardView): @@ -735,42 +755,45 @@ def get_initkwargs(cls, *args, **kwargs): We require a url_name to reverse URLs later. Additionally users can pass a done_step_name to change the URL name of the "done" view. """ - assert 'url_name' in kwargs, \ - 'URL name is needed to resolve correct wizard URLs' + assert ( + "url_name" in kwargs + ), "URL name is needed to resolve correct wizard URLs" extra_kwargs = { - 'done_step_name': kwargs.pop('done_step_name', 'done'), - 'url_name': kwargs.pop('url_name'), + "done_step_name": kwargs.pop("done_step_name", "done"), + "url_name": kwargs.pop("url_name"), } initkwargs = super(DynamicNamedUrlWizardView, cls).get_initkwargs( *args, **kwargs ) initkwargs.update(extra_kwargs) - assert initkwargs['done_step_name'] not in initkwargs['form_list'], \ - 'step name "%s" is reserved for "done" view' % \ - initkwargs['done_step_name'] + assert initkwargs["done_step_name"] not in initkwargs["form_list"], ( + 'step name "%s" is reserved for "done" view' + % initkwargs["done_step_name"] + ) return initkwargs def get_step_url(self, step): """Get step URL.""" - return reverse(self.url_name, kwargs={'step': step}) + return reverse(self.url_name, kwargs={"step": step}) def get(self, *args, **kwargs): """GET request. This renders the form or, if needed, does the http redirects. """ - step_url = kwargs.get('step', None) + step_url = kwargs.get("step", None) if step_url is None: - if 'reset' in self.request.GET: + if "reset" in self.request.GET: self.storage.reset() self.storage.current_step = self.steps.first if self.request.GET: query_string = "?%s" % self.request.GET.urlencode() else: query_string = "" - return redirect(self.get_step_url(self.steps.current) + - query_string) + return redirect( + self.get_step_url(self.steps.current) + query_string + ) # is the current step the "done" name/view? elif step_url == self.done_step_name: @@ -779,26 +802,32 @@ def get(self, *args, **kwargs): self.get_form( step=last_step, data=self.storage.get_step_data(last_step), - files=self.storage.get_step_files(last_step) + files=self.storage.get_step_files(last_step), ), - **kwargs + **kwargs, ) # is the url step name not equal to the step in the storage? # if yes, change the step in the storage (if name exists) elif step_url == self.steps.current: # URL step name and storage step name are equal, render! - return self.render(self.get_form( - data=self.storage.current_step_data, - files=self.storage.current_step_files, - ), **kwargs) + return self.render( + self.get_form( + data=self.storage.current_step_data, + files=self.storage.current_step_files, + ), + **kwargs, + ) elif step_url in self.get_form_list(): self.storage.current_step = step_url - return self.render(self.get_form( - data=self.storage.current_step_data, - files=self.storage.current_step_files, - ), **kwargs) + return self.render( + self.get_form( + data=self.storage.current_step_data, + files=self.storage.current_step_files, + ), + **kwargs, + ) # invalid step name, reset to first and redirect. else: @@ -811,7 +840,7 @@ def post(self, *args, **kwargs): Do a redirect if user presses the prev. step button. The rest of this is super'd from WizardView. """ - wizard_goto_step = self.request.POST.get('wizard_goto_step', None) + wizard_goto_step = self.request.POST.get("wizard_goto_step", None) if wizard_goto_step and wizard_goto_step in self.get_form_list(): return self.render_goto_step(wizard_goto_step) return super(DynamicNamedUrlWizardView, self).post(*args, **kwargs) @@ -823,10 +852,9 @@ def get_context_data(self, form, **kwargs): dict `wizard`. """ context = super(DynamicNamedUrlWizardView, self).get_context_data( - form=form, - **kwargs + form=form, **kwargs ) - context['wizard']['url_name'] = self.url_name + context["wizard"]["url_name"] = self.url_name return context def render_next_step(self, form, **kwargs): @@ -863,7 +891,7 @@ def render_done(self, form, **kwargs): When rendering the done view, we have to redirect first (if the URL name doesn't fit). """ - if kwargs.get('step', None) != self.done_step_name: + if kwargs.get("step", None) != self.done_step_name: return redirect(self.get_step_url(self.done_step_name)) return super(DynamicNamedUrlWizardView, self).render_done( form, **kwargs @@ -873,10 +901,10 @@ def render_done(self, form, **kwargs): class DynamicNamedUrlSessionWizardView(DynamicNamedUrlWizardView): """A NamedUrlWizardView with pre-configured SessionStorage backend.""" - storage_name = 'formtools.wizard.storage.session.SessionStorage' + storage_name = "formtools.wizard.storage.session.SessionStorage" class DynamicNamedUrlCookieWizardView(DynamicNamedUrlWizardView): """A NamedUrlFormWizard with pre-configured CookieStorageBackend.""" - storage_name = 'formtools.wizard.storage.cookie.CookieStorage' + storage_name = "formtools.wizard.storage.cookie.CookieStorage" diff --git a/src/fobi/wizard/views/views.py b/src/fobi/wizard/views/views.py index d7a8dbfa3..0a4d45e9b 100644 --- a/src/fobi/wizard/views/views.py +++ b/src/fobi/wizard/views/views.py @@ -1,14 +1,13 @@ from formtools.wizard.views import ( - WizardView as OriginalWizardView, - SessionWizardView as OriginalSessionWizardView, CookieWizardView as OriginalCookieWizardView, - + SessionWizardView as OriginalSessionWizardView, + WizardView as OriginalWizardView, ) __all__ = ( - 'WizardView', - 'SessionWizardView', - 'CookieWizardView', + "WizardView", + "SessionWizardView", + "CookieWizardView", )