Skip to content
This repository has been archived by the owner on Jun 10, 2024. It is now read-only.

Update to Django 2.2 #85

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions aldryn_config.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals



from aldryn_client import forms

Expand Down
2 changes: 1 addition & 1 deletion djangocms_forms/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
__version__ = '0.2.5'
__version__ = '0.3.1'

default_app_config = 'djangocms_forms.apps.DjangoCMSFormsConfig'
6 changes: 3 additions & 3 deletions djangocms_forms/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



import datetime
from functools import update_wrapper
Expand Down Expand Up @@ -213,7 +213,7 @@ def humanize(field):
if label in headers:
row[headers.index(label)] = humanize(field)

row[-4] = force_text(submission.created_by or _('Unknown'))
row[-4] = force_text(submission.created_by or _('Unknown'))
row[-3] = submission.creation_date.strftime(
settings.DJANGOCMS_FORMS_DATETIME_FORMAT)
row[-2] = submission.ip
Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/apps.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
Expand Down
2 changes: 1 addition & 1 deletion djangocms_forms/cms_app.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-

from __future__ import absolute_import

from .cms_apps import * # NOQA
4 changes: 2 additions & 2 deletions djangocms_forms/cms_apps.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



from django.utils.translation import ugettext_lazy as _

Expand Down
8 changes: 4 additions & 4 deletions djangocms_forms/cms_plugins.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



from django import forms
from django.contrib import admin
Expand Down Expand Up @@ -31,8 +31,8 @@ class FormFieldInline(admin.StackedInline):
def get_fieldsets(self, request, obj=None):
fields = (
('label', 'field_type', 'required'),
'initial', 'placeholder_text', 'help_text',
'choice_values', 'position',
'initial', 'placeholder_text', 'help_text',
'choice_values', 'position',
)

if settings.DJANGOCMS_FORMS_ALLOW_CUSTOM_FIELD_NAME:
Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/compat.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



import json

Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/conf.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



from django.conf import settings # noqa
from django.utils.translation import ugettext_lazy as _
Expand Down
46 changes: 3 additions & 43 deletions djangocms_forms/fields.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



import logging
import os
Expand All @@ -15,7 +15,6 @@
from django.utils.translation import ugettext_lazy as _

from .conf import settings
from .widgets import ReCaptchaWidget

logger = logging.getLogger('djangocms_forms')

Expand Down Expand Up @@ -64,7 +63,7 @@ def __init__(self, *args, **kwargs):
super(PluginReferenceField, self).__init__(*args, **kwargs)

def _create(self, model_instance):
return self.rel.to._default_manager.create(name=model_instance.name)
return self.remote_field.model._default_manager.create(name=model_instance.name)

def pre_save(self, model_instance, add):
if not model_instance.pk and add:
Expand Down Expand Up @@ -108,42 +107,3 @@ def __init__(self, *args, **kwargs):
def validate(self, value):
if value:
raise forms.ValidationError(_('Doh! You are a robot!'))


class ReCaptchaField(forms.CharField):
widget = ReCaptchaWidget
default_error_messages = {
'invalid': _('Error verifying input, please try again.'),
'recaptcha_error': _('Connection to reCaptcha server failed.'),
}
recaptcha_api = 'https://www.google.com/recaptcha/api/siteverify'

def __init__(self, *args, **kwargs):
super(ReCaptchaField, self).__init__(*args, **kwargs)

def clean(self, values):
super(ReCaptchaField, self).clean(values[0])
response_token = values[0]

try:
params = {
'secret': settings.DJANGOCMS_FORMS_RECAPTCHA_SECRET_KEY,
'response': response_token
}
r = requests.post(self.recaptcha_api, params=params, timeout=5)
r.raise_for_status()
except requests.RequestException as e:
logger.exception(e)
raise ValidationError(self.error_messages['recaptcha_error'])

data = r.json()

if bool(data['success']):
return values[0]
else:
if any(code in data.get('error-codes', {})
for code in ('missing-input-secret', 'invalid-input-secret', )):
logger.exception('Invalid reCaptcha secret key.')
raise ValidationError(self.error_messages['recaptcha_error'])
else:
raise ValidationError(self.error_messages['invalid'], code='invalid')
24 changes: 17 additions & 7 deletions djangocms_forms/forms.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,28 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



import re

from django import forms
from django.contrib.admin.widgets import AdminDateWidget, FilteredSelectMultiple
from django.core.mail import EmailMultiAlternatives
from django.core.urlresolvers import reverse
from django.urls import reverse
from django.template import TemplateDoesNotExist
from django.template.defaultfilters import slugify
from django.template.loader import get_template, render_to_string
from django.utils.translation import ugettext_lazy as _

from ipware.ip import get_ip
try:
from ipware.ip import get_ip as get_ip
except:
from ipware.ip import get_client_ip as get_ip

from unidecode import unidecode

from .fields import FormBuilderFileField, HoneyPotField, MultipleChoiceAutoCompleteField, ReCaptchaField
from captcha.fields import ReCaptchaField

from .fields import FormBuilderFileField, HoneyPotField, MultipleChoiceAutoCompleteField
from .models import Form, FormDefinition, FormField, FormSubmission
from .utils import int_to_hashid
from .widgets import DateInput, TelephoneInput, TimeInput
Expand Down Expand Up @@ -330,10 +336,14 @@ def save(self, request):
self.email_submission(form_data, request=request, referrer=referrer)

def save_to_db(self, form_data, request, referrer):
user = request.user if request.user.is_authenticated() else None
user = request.user if request.user.is_authenticated else None
try:
user_ip, _ignore = get_ip(request)
except:
user_ip = get_ip(request)
FormSubmission.objects.create(
plugin=self.form_definition.plugin_reference,
ip=get_ip(request),
ip=user_ip,
referrer=referrer,
form_data=form_data,
created_by=user)
Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/managers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



from django.db import models
from django.db.models import Count
Expand Down
12 changes: 6 additions & 6 deletions djangocms_forms/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals



from django.db import models, migrations
import jsonfield.fields
Expand Down Expand Up @@ -32,7 +32,7 @@ class Migration(migrations.Migration):
migrations.CreateModel(
name='FormDefinition',
fields=[
('cmsplugin_ptr', models.OneToOneField(parent_link=True, auto_created=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
('cmsplugin_ptr', models.OneToOneField(on_delete=models.deletion.CASCADE, parent_link=True, auto_created=True, primary_key=True, serialize=False, to='cms.CMSPlugin')),
('name', models.CharField(max_length=255, verbose_name='Form Name')),
('title', models.CharField(max_length=150, verbose_name='Title', blank=True)),
('description', models.TextField(verbose_name='Description', blank=True)),
Expand Down Expand Up @@ -68,7 +68,7 @@ class Migration(migrations.Migration):
('initial', models.CharField(max_length=255, verbose_name='Default Value', blank=True)),
('choice_values', models.TextField(help_text='Enter options one per line. For "File Upload" field type, enter allowed filetype (e.g .pdf) one per line.', verbose_name='Choices', blank=True)),
('position', models.PositiveIntegerField(null=True, verbose_name='Position', blank=True)),
('form', models.ForeignKey(related_name='fields', to='djangocms_forms.FormDefinition')),
('form', models.ForeignKey(on_delete=models.deletion.CASCADE, related_name='fields', to='djangocms_forms.FormDefinition')),
],
options={
'ordering': ('position',),
Expand All @@ -84,8 +84,8 @@ class Migration(migrations.Migration):
('creation_date', models.DateTimeField(auto_now=True, verbose_name='Date')),
('ip', models.GenericIPAddressField(null=True, verbose_name=b'IP', blank=True)),
('form_data', jsonfield.fields.JSONField(verbose_name='Form Data')),
('created_by', models.ForeignKey(editable=False, to=settings.AUTH_USER_MODEL, null=True, verbose_name='User')),
('plugin', models.ForeignKey(related_name='submissions', editable=False, to='djangocms_forms.Form', verbose_name='Form')),
('created_by', models.ForeignKey(on_delete=models.deletion.CASCADE, editable=False, to=settings.AUTH_USER_MODEL, null=True, verbose_name='User')),
('plugin', models.ForeignKey(on_delete=models.deletion.CASCADE, related_name='submissions', editable=False, to='djangocms_forms.Form', verbose_name='Form')),
],
options={
'ordering': ('-creation_date',),
Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/migrations/0002_alter_model_options.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals



from django.db import models, migrations

Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/migrations/0003_add_referrer_field.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals



from django.db import models, migrations

Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/migrations/0004_redirect_delay.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals



from django.db import models, migrations

Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/migrations/0005_formfield_field_name.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals



from django.db import migrations, models

Expand Down
40 changes: 40 additions & 0 deletions djangocms_forms/migrations/0006_auto_20200521_2007.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 2.2.12 on 2020-05-21 20:07

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('djangocms_forms', '0005_formfield_field_name'),
]

operations = [
migrations.AlterField(
model_name='formdefinition',
name='cmsplugin_ptr',
field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, related_name='djangocms_forms_formdefinition', serialize=False, to='cms.CMSPlugin'),
),
migrations.AlterField(
model_name='formdefinition',
name='form_template',
field=models.CharField(blank=True, choices=[('djangocms_forms/form_template/bootstrap.html', 'Bootstrap'), ('djangocms_forms/form_template/default.html', 'Default')], default='djangocms_forms/form_template/bootstrap.html', max_length=150, verbose_name='Form Template'),
),
migrations.AlterField(
model_name='formfield',
name='field_type',
field=models.CharField(choices=[('text', 'Text'), ('textarea', 'Text Area'), ('email', 'Email'), ('number', 'Number'), ('phone', 'Phone'), ('url', 'URL'), ('checkbox', 'Checkbox'), ('checkbox_multiple', 'Multi Checkbox'), ('select', 'Drop down'), ('radio', 'Radio'), ('file', 'File Upload'), ('date', 'Date'), ('time', 'Time'), ('password', 'Password'), ('hidden', 'Hidden')], default='text', max_length=100, verbose_name='Field Type'),
),
migrations.AlterField(
model_name='formsubmission',
name='created_by',
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='User'),
),
migrations.AlterField(
model_name='formsubmission',
name='ip',
field=models.GenericIPAddressField(blank=True, null=True, verbose_name='IP'),
),
]
10 changes: 5 additions & 5 deletions djangocms_forms/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



import re

Expand Down Expand Up @@ -128,7 +128,7 @@ def copy_relations(self, oldinstance):

@python_2_unicode_compatible
class FormField(models.Model):
form = models.ForeignKey(FormDefinition, related_name='fields')
form = models.ForeignKey(FormDefinition, related_name='fields', on_delete=models.CASCADE)
field_type = models.CharField(
_('Field Type'), max_length=100,
choices=settings.DJANGOCMS_FORMS_FIELD_TYPES,
Expand Down Expand Up @@ -223,10 +223,10 @@ def get_choices(self):
@python_2_unicode_compatible
class FormSubmission(models.Model):
plugin = models.ForeignKey(
Form, verbose_name=_('Form'), editable=False, related_name='submissions')
Form, verbose_name=_('Form'), editable=False, related_name='submissions', on_delete=models.CASCADE)
creation_date = models.DateTimeField(_('Date'), auto_now=True)
created_by = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=_('User'), editable=False, null=True)
settings.AUTH_USER_MODEL, verbose_name=_('User'), editable=False, null=True, on_delete=models.SET_NULL)
ip = models.GenericIPAddressField(verbose_name='IP', blank=True, null=True)
referrer = models.CharField(_('Referrer URL'), max_length=150, blank=True)

Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/signals.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

from __future__ import unicode_literals



from django.dispatch import Signal

Expand Down
4 changes: 2 additions & 2 deletions djangocms_forms/south_migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-

from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
Expand Down Expand Up @@ -223,4 +223,4 @@ def backwards(self, orm):
}
}

complete_apps = ['djangocms_forms']
complete_apps = ['djangocms_forms']
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-

from south.utils import datetime_utils as datetime
from south.db import db
from south.v2 import SchemaMigration
Expand Down Expand Up @@ -165,4 +165,4 @@ def backwards(self, orm):
}
}

complete_apps = ['djangocms_forms']
complete_apps = ['djangocms_forms']
Loading