Skip to content

Commit

Permalink
PR from mishbahr#85
Browse files Browse the repository at this point in the history
  • Loading branch information
victorhos committed May 31, 2020
1 parent 91221fc commit 0c0a103
Show file tree
Hide file tree
Showing 31 changed files with 116 additions and 143 deletions.
3 changes: 1 addition & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,4 @@ release: clean

sdist: clean
python setup.py sdist
ls -l dist

ls -l dist
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.0'

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
44 changes: 2 additions & 42 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 @@ -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')
10 changes: 6 additions & 4 deletions djangocms_forms/forms.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# -*- 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
Expand All @@ -16,7 +16,9 @@
from ipware.ip import 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
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']
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
Loading

0 comments on commit 0c0a103

Please sign in to comment.