initial work on django 2.0 compatibility

This commit is contained in:
Artur Barseghyan 2017-12-21 16:15:06 +01:00
parent c8fe8c8d96
commit c0acaf1d43
13 changed files with 354 additions and 122 deletions

View file

@ -1,18 +1,19 @@
-r common.txt
-r test.txt
-r style_checkers.txt
-r djangorestframework.txt
#-r djangorestframework.txt
Django>=2.0,<2.1
django-admin-tools>=0.8.0
django-autoslug-iplweb
django-ckeditor>=5.4.0
django-debug-toolbar>=1.6
django-formtools>=2.0
django-registration-redux>=1.4
django-simple-captcha>=0.5.5
djangorestframework==3.7.7
easy-thumbnails>=2.4.1
sqlparse>=0.2.2
https://github.com/neithere/django-autoslug/archive/master.zip
# django-formtools, compatible with Django 1.11
#https://github.com/django/django-formtools/archive/master.tar.gz

View file

@ -21,54 +21,77 @@ __all__ = ('FobiFormWidget',)
class FobiFormWidget(CMSPlugin):
"""Plugin for storing ``django-fobi`` form reference."""
form_entry = models.ForeignKey('fobi.FormEntry', verbose_name=_("Form"))
form_entry = models.ForeignKey(
'fobi.FormEntry',
verbose_name=_("Form"),
on_delete=models.CASCADE
)
form_template_name = models.CharField(
_("Form template name"), max_length=255, null=True, blank=True,
_("Form template name"),
max_length=255,
null=True,
blank=True,
choices=get_form_template_choices(),
help_text=_("Template to render the form with.")
)
hide_form_title = models.BooleanField(
_("Hide form title"), default=False,
_("Hide form title"),
default=False,
help_text=_("If checked, no form title is shown.")
)
form_title = models.CharField(
_("Form title"), max_length=255, null=True, blank=True,
_("Form title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form title.")
)
form_submit_button_text = models.CharField(
_("Submit button text"), max_length=255, null=True, blank=True,
_("Submit button text"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form submit button text.")
)
success_page_template_name = models.CharField(
_("Success page template name"), max_length=255, null=True, blank=True,
_("Success page template name"),
max_length=255,
null=True,
blank=True,
choices=get_success_page_template_choices(),
help_text=_("Template to render the success page with.")
)
hide_success_page_title = models.BooleanField(
_("Hide success page title"), default=False,
_("Hide success page title"),
default=False,
help_text=_("If checked, no success page title is shown.")
)
success_page_title = models.CharField(
_("Succes page title"), max_length=255, null=True, blank=True,
_("Succes page title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default success page title.")
)
success_page_text = models.TextField(
_("Succes page text"), null=True, blank=True,
_("Succes page text"),
null=True,
blank=True,
help_text=_("Overrides the default success page text.")
)
search_fields = ('form_entry__name',)
class Meta(object):
"""Meta class."""
"""Meta options."""
app_label = 'cms'
if CMS_VERSION_GT_3_0:

View file

@ -30,52 +30,76 @@ class FobiFormWidget(models.Model, IntegrationProcessor):
can_redirect = True
# The configuration fields
form_entry = models.ForeignKey('fobi.FormEntry', verbose_name=_("Form"))
form_entry = models.ForeignKey(
'fobi.FormEntry',
verbose_name=_("Form"),
on_delete=models.CASCADE
)
form_template_name = models.CharField(
_("Form template name"), max_length=255, null=True, blank=True,
_("Form template name"),
max_length=255,
null=True,
blank=True,
choices=get_form_template_choices(),
help_text=_("Template to render the form with.")
)
hide_form_title = models.BooleanField(
_("Hide form title"), default=False,
_("Hide form title"),
default=False,
help_text=_("If checked, no form title is shown.")
)
form_title = models.CharField(
_("Form title"), max_length=255, null=True, blank=True,
_("Form title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form title.")
)
form_submit_button_text = models.CharField(
_("Submit button text"), max_length=255, null=True, blank=True,
_("Submit button text"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form submit button text.")
)
success_page_template_name = models.CharField(
_("Success page template name"), max_length=255, null=True, blank=True,
_("Success page template name"),
max_length=255,
null=True,
blank=True,
choices=get_success_page_template_choices(),
help_text=_("Template to render the success page with.")
)
hide_success_page_title = models.BooleanField(
_("Hide success page title"), default=False,
_("Hide success page title"),
default=False,
help_text=_("If checked, no success page title is shown.")
)
success_page_title = models.CharField(
_("Succes page title"), max_length=255, null=True, blank=True,
_("Succes page title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default success page title.")
)
success_page_text = models.TextField(
_("Succes page text"), null=True, blank=True,
_("Succes page text"),
null=True,
blank=True,
help_text=_("Overrides the default success page text.")
)
class Meta:
"""Meta class."""
class Meta(object):
"""Meta options."""
abstract = True
app_label = 'fobi'
# db_table = 'page_page_fobiformwidget'

View file

@ -26,52 +26,75 @@ class FobiFormPage(Page, RichText):
:property str template: If given used for rendering the form.
"""
form_entry = models.ForeignKey('fobi.FormEntry', verbose_name=_("Form"))
form_entry = models.ForeignKey(
'fobi.FormEntry',
verbose_name=_("Form"),
on_delete=models.CASCADE
)
form_template_name = models.CharField(
_("Form template name"), max_length=255, null=True, blank=True,
_("Form template name"),
max_length=255,
null=True,
blank=True,
choices=get_form_template_choices(),
help_text=_("Template to render the form with.")
)
hide_form_title = models.BooleanField(
_("Hide form title"), default=False,
_("Hide form title"),
default=False,
help_text=_("If checked, no form title is shown.")
)
form_title = models.CharField(
_("Form title"), max_length=255, null=True, blank=True,
_("Form title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form title.")
)
form_submit_button_text = models.CharField(
_("Submit button text"), max_length=255, null=True, blank=True,
_("Submit button text"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form submit button text.")
)
success_page_template_name = models.CharField(
_("Success page template name"), max_length=255, null=True, blank=True,
_("Success page template name"),
max_length=255,
null=True,
blank=True,
choices=get_success_page_template_choices(),
help_text=_("Template to render the success page with.")
)
hide_success_page_title = models.BooleanField(
_("Hide success page title"), default=False,
_("Hide success page title"),
default=False,
help_text=_("If checked, no success page title is shown.")
)
success_page_title = models.CharField(
_("Succes page title"), max_length=255, null=True, blank=True,
_("Succes page title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default success page title.")
)
success_page_text = models.TextField(
_("Succes page text"), null=True, blank=True,
_("Succes page text"),
null=True,
blank=True,
help_text=_("Overrides the default success page text.")
)
class Meta(object):
"""Meta class."""
"""Meta options."""
app_label = 'fobi'
verbose_name = _("Fobi form")

View file

@ -77,11 +77,17 @@ class AbstractFobiFormPage(Page):
:property fobi.models.FormEntry form_entry: Form entry to be rendered.
"""
form_entry = models.ForeignKey('fobi.FormEntry', verbose_name=_("Form"),
on_delete=models.PROTECT)
form_entry = models.ForeignKey(
'fobi.FormEntry',
verbose_name=_("Form"),
on_delete=models.PROTECT
)
form_template_name = models.CharField(
_("Form template name"), max_length=255, null=True, blank=True,
_("Form template name"),
max_length=255,
null=True,
blank=True,
choices=get_form_template_choices(),
help_text=_(
"Choose an alternative template to render the form with. Leave "
@ -91,22 +97,32 @@ class AbstractFobiFormPage(Page):
)
hide_form_title = models.BooleanField(
_("Hide form title"), default=False,
_("Hide form title"),
default=False,
help_text=_("If checked, no form title is shown.")
)
form_title = models.CharField(
_("Form title"), max_length=255, null=True, blank=True,
_("Form title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form title.")
)
form_submit_button_text = models.CharField(
_("Submit button text"), max_length=255, null=True, blank=True,
_("Submit button text"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default form submit button text.")
)
success_page_template_name = models.CharField(
_("Success page template name"), max_length=255, null=True, blank=True,
_("Success page template name"),
max_length=255,
null=True,
blank=True,
choices=get_success_page_template_choices(),
help_text=_(
"Choose an alternative template to render the success page with. "
@ -116,17 +132,23 @@ class AbstractFobiFormPage(Page):
)
hide_success_page_title = models.BooleanField(
_("Hide success page title"), default=False,
_("Hide success page title"),
default=False,
help_text=_("If checked, no success page title is shown.")
)
success_page_title = models.CharField(
_("Success page title"), max_length=255, null=True, blank=True,
_("Success page title"),
max_length=255,
null=True,
blank=True,
help_text=_("Overrides the default success page title.")
)
success_page_text = models.TextField(
_("Success page text"), null=True, blank=True,
_("Success page text"),
null=True,
blank=True,
help_text=_("Overrides the default success page text.")
)
@ -160,7 +182,7 @@ class AbstractFobiFormPage(Page):
]
class Meta(object):
"""Meta class."""
"""Meta options."""
verbose_name = _('Fobi form page')
verbose_name_plural = _('Fobi form pages')
@ -223,5 +245,7 @@ class AbstractFobiFormPage(Page):
fobi_form_processor.show_thanks_page(request, self)
)
else:
return super(AbstractFobiFormPage, self).serve_preview(request,
mode)
return super(AbstractFobiFormPage, self).serve_preview(
request,
mode
)

View file

@ -1,14 +1,20 @@
from __future__ import absolute_import
from django.forms.extras.widgets import SelectDateWidget
from django.forms.fields import DateField
from django.utils.translation import ugettext_lazy as _
from nine import versions
from fobi.base import FormFieldPlugin, get_theme
from . import UID
from .forms import DateDropDownInputForm
if versions.DJANGO_LTE_1_11:
from django.forms.extras.widgets import SelectDateWidget
else:
from django.forms.widgets import SelectDateWidget
__title__ = 'fobi.contrib.plugins.form_elements.fields.' \
'date_drop_down.base'
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'

View file

@ -27,10 +27,12 @@ class Migration(migrations.Migration):
('form_entry', models.ForeignKey(verbose_name='Form',
blank=True,
to='fobi.FormEntry',
null=True)),
null=True,
on_delete=models.CASCADE)),
('user', models.ForeignKey(verbose_name='User', blank=True,
to=settings.AUTH_USER_MODEL,
null=True)),
null=True,
on_delete=models.CASCADE)),
],
options={
'verbose_name': 'Saved form data entry',

View file

@ -31,15 +31,23 @@ AUTH_USER_MODEL = settings.AUTH_USER_MODEL
class AbstractSavedFormDataEntry(models.Model):
"""Abstract saved form data entry."""
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_("User"),
null=True, blank=True)
form_data_headers = models.TextField(_("Form data headers"), null=True,
blank=True)
user = models.ForeignKey(
AUTH_USER_MODEL,
verbose_name=_("User"),
null=True,
blank=True,
on_delete=models.CASCADE
)
form_data_headers = models.TextField(
_("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)
class Meta(object):
"""Meta class."""
"""Meta options."""
abstract = True
@ -72,11 +80,16 @@ class AbstractSavedFormDataEntry(models.Model):
class SavedFormDataEntry(AbstractSavedFormDataEntry):
"""Saved form data."""
form_entry = models.ForeignKey('fobi.FormEntry', verbose_name=_("Form"),
null=True, blank=True)
form_entry = models.ForeignKey(
'fobi.FormEntry',
verbose_name=_("Form"),
null=True,
blank=True,
on_delete=models.CASCADE
)
class Meta(object):
"""Meta class."""
"""Meta options."""
abstract = False
verbose_name = _("Saved form data entry")
@ -92,11 +105,15 @@ class SavedFormWizardDataEntry(AbstractSavedFormDataEntry):
"""Saved form data."""
form_wizard_entry = models.ForeignKey(
'fobi.FormWizardEntry', verbose_name=_("Form"), null=True, blank=True
'fobi.FormWizardEntry',
verbose_name=_("Form"),
null=True,
blank=True,
on_delete=models.CASCADE
)
class Meta(object):
"""Meta class."""
"""Meta options."""
abstract = False
verbose_name = _("Saved form wizard data entry")

View file

@ -1,5 +1,7 @@
from django.core.management.base import BaseCommand
from nine import versions
from fobi.utils import sync_plugins
@ -13,6 +15,17 @@ class Command(BaseCommand):
- ``fobi.models.FormHandlerPlugin``
"""
if versions.DJANGO_GTE_2_0:
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.',
)
def handle(self, *args, **options):
"""Handle."""
sync_plugins()

View file

@ -70,7 +70,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('name', models.CharField(max_length=255, verbose_name='Name')),
('is_repeatable', models.BooleanField(default=False, help_text='Makes your form fieldset repeatable.', verbose_name='Is repeatable?')),
('form_entry', models.ForeignKey(verbose_name='Form', blank=True, to='fobi.FormEntry', null=True)),
('form_entry', models.ForeignKey(verbose_name='Form', blank=True, to='fobi.FormEntry', null=True, on_delete=models.CASCADE)),
],
options={
'verbose_name': 'Form fieldset entry',
@ -97,7 +97,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('plugin_data', models.TextField(null=True, verbose_name='Plugin data', blank=True)),
('plugin_uid', models.CharField(max_length=255, verbose_name='Plugin name', choices=[(b'db_store', b'DB store'), (b'mail', b'Mail'), (b'http_repost', b'HTTP Repost')])),
('form_entry', models.ForeignKey(verbose_name='Form', to='fobi.FormEntry')),
('form_entry', models.ForeignKey(verbose_name='Form', to='fobi.FormEntry', on_delete=models.CASCADE)),
],
options={
'abstract': False,
@ -113,7 +113,7 @@ class Migration(migrations.Migration):
('slug', autoslug.fields.AutoSlugField(verbose_name='Slug', unique=True, editable=False)),
('is_public', models.BooleanField(default=False, help_text='Makes your form wizard visible to the public.', verbose_name='Is public?')),
('is_cloneable', models.BooleanField(default=False, help_text='Makes your form wizard cloneable by other users.', verbose_name='Is cloneable?')),
('user', models.ForeignKey(verbose_name='User', to=settings.AUTH_USER_MODEL)),
('user', models.ForeignKey(verbose_name='User', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
],
options={
'verbose_name': 'Form wizard entry',
@ -123,22 +123,22 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='formentry',
name='form_wizard_entry',
field=models.ForeignKey(verbose_name='Form wizard', blank=True, to='fobi.FormWizardEntry', null=True),
field=models.ForeignKey(verbose_name='Form wizard', blank=True, to='fobi.FormWizardEntry', null=True, on_delete=models.CASCADE),
),
migrations.AddField(
model_name='formentry',
name='user',
field=models.ForeignKey(verbose_name='User', to=settings.AUTH_USER_MODEL),
field=models.ForeignKey(verbose_name='User', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
),
migrations.AddField(
model_name='formelemententry',
name='form_entry',
field=models.ForeignKey(verbose_name='Form', to='fobi.FormEntry'),
field=models.ForeignKey(verbose_name='Form', to='fobi.FormEntry', on_delete=models.CASCADE),
),
migrations.AddField(
model_name='formelemententry',
name='form_fieldset_entry',
field=models.ForeignKey(verbose_name='Form fieldset', blank=True, to='fobi.FormFieldsetEntry', null=True),
field=models.ForeignKey(verbose_name='Form fieldset', blank=True, to='fobi.FormFieldsetEntry', null=True, on_delete=models.CASCADE),
),
migrations.AlterUniqueTogether(
name='formwizardentry',

View file

@ -260,33 +260,52 @@ class FormWizardHandler(AbstractPluginModel):
class FormWizardEntry(models.Model):
"""Form wizard entry."""
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_("User"))
user = models.ForeignKey(
AUTH_USER_MODEL,
verbose_name=_("User"),
on_delete=models.CASCADE
)
name = models.CharField(_("Name"), max_length=255)
title = models.CharField(_("Title"), max_length=255, null=True,
blank=True, help_text=_("Shown in templates if "
"available."))
slug = AutoSlugField(populate_from='name', verbose_name=_("Slug"),
unique=True)
title = models.CharField(
_("Title"),
max_length=255,
null=True,
blank=True,
help_text=_("Shown in templates if available.")
)
slug = AutoSlugField(
populate_from='name',
verbose_name=_("Slug"),
unique=True
)
is_public = models.BooleanField(
_("Is public?"), default=False,
_("Is public?"),
default=False,
help_text=_("Makes your form wizard visible to the public.")
)
is_cloneable = models.BooleanField(
_("Is cloneable?"), default=False,
_("Is cloneable?"),
default=False,
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,
_("Success page title"),
max_length=255,
null=True,
blank=True,
help_text=_("Custom message title to display after valid form is "
"submitted")
)
success_page_message = models.TextField(
_("Success page body"), null=True, blank=True,
_("Success page body"),
null=True,
blank=True,
help_text=_("Custom message text to display after valid form is "
"submitted")
)
show_all_navigation_buttons = models.BooleanField(
_("Show all navigation buttons?"), default=False,
_("Show all navigation buttons?"),
default=False,
help_text=_("Show all navigation buttons.")
)
# action = models.CharField(
@ -295,14 +314,26 @@ class FormWizardEntry(models.Model):
# "really necessary.")
# )
wizard_type = models.CharField(
_("Type"), max_length=255, null=False, blank=False,
choices=WIZARD_TYPES, default=DEFAULT_WIZARD_TYPE,
_("Type"),
max_length=255,
null=False,
blank=False,
choices=WIZARD_TYPES,
default=DEFAULT_WIZARD_TYPE,
help_text=_("Type of the form wizard.")
)
created = models.DateTimeField(_("Created"), null=True, blank=True,
auto_now_add=True)
updated = models.DateTimeField(_("Updated"), null=True, blank=True,
auto_now=True)
created = models.DateTimeField(
_("Created"),
null=True,
blank=True,
auto_now_add=True
)
updated = models.DateTimeField(
_("Updated"),
null=True,
blank=True,
auto_now=True
)
class Meta(object):
"""Meta class."""
@ -343,44 +374,70 @@ class FormEntry(models.Model):
- `position` (int): Ordering position in the wizard.
"""
user = models.ForeignKey(AUTH_USER_MODEL, verbose_name=_("User"))
user = models.ForeignKey(
AUTH_USER_MODEL,
verbose_name=_("User"),
on_delete=models.CASCADE
)
name = models.CharField(_("Name"), max_length=255)
title = models.CharField(_("Title"), max_length=255, null=True,
blank=True, help_text=_("Shown in templates if "
"available."))
title = models.CharField(
_("Title"),
max_length=255,
null=True,
blank=True,
help_text=_("Shown in templates if available.")
)
slug = AutoSlugField(
populate_from='name', verbose_name=_("Slug"), unique=True
)
is_public = models.BooleanField(
_("Public?"), default=False,
_("Public?"),
default=False,
help_text=_("Makes your form visible to the public.")
)
is_cloneable = models.BooleanField(
_("Cloneable?"), default=False,
_("Cloneable?"),
default=False,
help_text=_("Makes your form cloneable by other users.")
)
# position = models.PositiveIntegerField(
# _("Position"), null=True, blank=True
# )
success_page_title = models.CharField(
_("Success page title"), max_length=255, null=True, blank=True,
_("Success page title"),
max_length=255,
null=True,
blank=True,
help_text=_("Custom message title to display after valid form is "
"submitted")
)
success_page_message = models.TextField(
_("Success page body"), null=True, blank=True,
_("Success page body"),
null=True,
blank=True,
help_text=_("Custom message text to display after valid form is "
"submitted")
)
action = models.CharField(
_("Action"), max_length=255, null=True, blank=True,
_("Action"),
max_length=255,
null=True,
blank=True,
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)
updated = models.DateTimeField(_("Updated"), null=True, blank=True,
auto_now=True)
created = models.DateTimeField(
_("Created"),
null=True,
blank=True,
auto_now_add=True
)
updated = models.DateTimeField(
_("Updated"),
null=True,
blank=True,
auto_now=True
)
class Meta(object):
"""Meta class."""
@ -411,14 +468,25 @@ class FormWizardFormEntry(models.Model):
A coupling point between `FormWizardEntry` and `FormEntry`."""
form_wizard_entry = models.ForeignKey(FormWizardEntry,
verbose_name=_("Form wizard entry"),
null=False, blank=False)
form_entry = models.ForeignKey(FormEntry,
verbose_name=_("Form entry"),
null=False, blank=False)
position = models.PositiveIntegerField(_("Position"), null=True,
blank=True)
form_wizard_entry = models.ForeignKey(
FormWizardEntry,
verbose_name=_("Form wizard entry"),
null=False,
blank=False,
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
)
class Meta(object):
"""Meta class."""
@ -437,11 +505,17 @@ class FormWizardFormEntry(models.Model):
class FormFieldsetEntry(models.Model):
"""Form fieldset entry."""
form_entry = models.ForeignKey(FormEntry, verbose_name=_("Form"),
null=True, blank=True)
form_entry = models.ForeignKey(
FormEntry,
verbose_name=_("Form"),
null=True,
blank=True,
on_delete=models.CASCADE
)
name = models.CharField(_("Name"), max_length=255)
is_repeatable = models.BooleanField(
_("Is repeatable?"), default=False,
_("Is repeatable?"),
default=False,
help_text=_("Makes your form fieldset repeatable.")
)
@ -465,8 +539,11 @@ class BaseAbstractPluginEntry(models.Model):
- `plugin_data` (str): JSON formatted string with plugin data.
"""
plugin_data = models.TextField(verbose_name=_("Plugin data"), null=True,
blank=True)
plugin_data = models.TextField(
verbose_name=_("Plugin data"),
null=True,
blank=True
)
class Meta(object):
"""Meta class."""
@ -558,7 +635,11 @@ class AbstractPluginEntry(BaseAbstractPluginEntry):
- `plugin_data` (str): JSON formatted string with plugin data.
"""
form_entry = models.ForeignKey(FormEntry, verbose_name=_("Form"))
form_entry = models.ForeignKey(
FormEntry,
verbose_name=_("Form"),
on_delete=models.CASCADE
)
class Meta(object):
"""Meta class."""
@ -596,11 +677,18 @@ class FormElementEntry(AbstractPluginEntry):
_("Plugin name"), max_length=255,
# choices=get_registered_form_element_plugins()
)
form_fieldset_entry = models.ForeignKey(FormFieldsetEntry,
verbose_name=_("Form fieldset"),
null=True, blank=True)
position = models.PositiveIntegerField(_("Position"), null=True,
blank=True)
form_fieldset_entry = models.ForeignKey(
FormFieldsetEntry,
verbose_name=_("Form fieldset"),
null=True,
blank=True,
on_delete=models.CASCADE
)
position = models.PositiveIntegerField(
_("Position"),
null=True,
blank=True
)
class Meta(object):
"""Meta class."""
@ -631,7 +719,8 @@ class FormHandlerEntry(AbstractPluginEntry):
"""
plugin_uid = models.CharField(
_("Plugin name"), max_length=255,
_("Plugin name"),
max_length=255,
# choices=get_registered_form_handler_plugins()
)
@ -662,8 +751,11 @@ class AbstractFormWizardPluginEntry(BaseAbstractPluginEntry):
- `plugin_data` (str): JSON formatted string with plugin data.
"""
form_wizard_entry = models.ForeignKey(FormWizardEntry,
verbose_name=_("Form wizard"))
form_wizard_entry = models.ForeignKey(
FormWizardEntry,
verbose_name=_("Form wizard"),
on_delete=models.CASCADE
)
class Meta(object):
"""Meta class."""
@ -688,7 +780,8 @@ class FormWizardHandlerEntry(AbstractFormWizardPluginEntry):
"""
plugin_uid = models.CharField(
_("Plugin name"), max_length=255,
_("Plugin name"),
max_length=255,
# choices=get_registered_form_handler_plugins()
)

View file

@ -3,7 +3,7 @@ from collections import OrderedDict
import datetime
# from decimal import Decimal
from django.utils.text import force_text
from django.utils.encoding import force_text
from faker import Faker

View file

@ -1,3 +1,7 @@
from django.conf import settings
from nine import versions
import requests
from requests.exceptions import (
@ -9,8 +13,10 @@ from requests.exceptions import (
RetryError
)
from django.conf import settings
from django.core.urlresolvers import resolve, Resolver404
if versions.DJANGO_LTE_1_11:
from django.core.urlresolvers import resolve, Resolver404
else:
from django.urls import resolve, Resolver404
try:
from localeurl.utils import strip_path