From bb7cd3da9cf0f9cd177a91767cadfc52e16ce0ce Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Tue, 4 Jun 2019 14:52:16 -0500 Subject: [PATCH 01/38] Update views.py --- forms_builder/forms/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index ac484f45..a04213d6 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -10,7 +10,7 @@ # For Django 1.8 compatibility from django.core.urlresolvers import reverse from django.http import HttpResponse, HttpResponseBadRequest -from django.shortcuts import get_object_or_404, redirect, render_to_response +from django.shortcuts import get_object_or_404, redirect, render_to_response, render from django.template import RequestContext from django.utils.http import urlquote from django.views.generic.base import TemplateView @@ -120,4 +120,4 @@ def form_sent(request, slug, template="forms/form_sent.html"): """ published = Form.objects.published(for_user=request.user) context = {"form": get_object_or_404(published, slug=slug)} - return render_to_response(template, context, RequestContext(request)) + return render(request, template, context=context) From c820fdf4cfac1f0d7c8fff3e1f5aa9d29908d86e Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Wed, 24 Jul 2019 14:16:37 -0500 Subject: [PATCH 02/38] Resolve context attribute error 'context has no attribute request' --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index a04213d6..e630d70f 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -119,5 +119,5 @@ def form_sent(request, slug, template="forms/form_sent.html"): Show the response message. """ published = Form.objects.published(for_user=request.user) - context = {"form": get_object_or_404(published, slug=slug)} + context = {request, "form": get_object_or_404(published, slug=slug)} return render(request, template, context=context) From e7b913cb6a3d8a3bdb94544d3b98905f6b905f98 Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Wed, 24 Jul 2019 14:40:12 -0500 Subject: [PATCH 03/38] Using RequestContext class instance --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index e630d70f..41f11ccc 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -119,5 +119,5 @@ def form_sent(request, slug, template="forms/form_sent.html"): Show the response message. """ published = Form.objects.published(for_user=request.user) - context = {request, "form": get_object_or_404(published, slug=slug)} + context = RequestContext(request, {"form": get_object_or_404(published, slug=slug)}) return render(request, template, context=context) From cefb9a981ef3cde0c203a055a619cf311d384800 Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Wed, 24 Jul 2019 14:45:09 -0500 Subject: [PATCH 04/38] revert to last useable version --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 41f11ccc..00e29414 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -119,5 +119,5 @@ def form_sent(request, slug, template="forms/form_sent.html"): Show the response message. """ published = Form.objects.published(for_user=request.user) - context = RequestContext(request, {"form": get_object_or_404(published, slug=slug)}) + context = {"form": get_object_or_404(published, slug=slug)}) return render(request, template, context=context) From 780ccb3a6a311c205fcb00e8956bf85fa1729ae2 Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:10:28 -0500 Subject: [PATCH 05/38] remove vagrant parenth --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 00e29414..a04213d6 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -119,5 +119,5 @@ def form_sent(request, slug, template="forms/form_sent.html"): Show the response message. """ published = Form.objects.published(for_user=request.user) - context = {"form": get_object_or_404(published, slug=slug)}) + context = {"form": get_object_or_404(published, slug=slug)} return render(request, template, context=context) From 835cede8a736409f54403eeadd2dca3709ed47e2 Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:17:28 -0500 Subject: [PATCH 06/38] fixing context error with Requestcontext --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index a04213d6..a0544c5b 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -119,5 +119,5 @@ def form_sent(request, slug, template="forms/form_sent.html"): Show the response message. """ published = Form.objects.published(for_user=request.user) - context = {"form": get_object_or_404(published, slug=slug)} + context = RequestContext(request, {"form": form}) return render(request, template, context=context) From ee3edf3834ee5bb764e3e7948daa1955d8d4fc5a Mon Sep 17 00:00:00 2001 From: annabrodersen <36651859+annabrodersen@users.noreply.github.com> Date: Wed, 24 Jul 2019 15:44:46 -0500 Subject: [PATCH 07/38] revert to original --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index a0544c5b..a04213d6 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -119,5 +119,5 @@ def form_sent(request, slug, template="forms/form_sent.html"): Show the response message. """ published = Form.objects.published(for_user=request.user) - context = RequestContext(request, {"form": form}) + context = {"form": get_object_or_404(published, slug=slug)} return render(request, template, context=context) From 68f3b766f710bd9c003090f5bc8e2865e9c79d6e Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Fri, 12 Feb 2021 16:23:33 -0600 Subject: [PATCH 08/38] changed djang dependency from <2.2 to <3.0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 43d9bc11..9151e49d 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ "sphinx-me >= 0.1.2", "unidecode", "django-email-extras >= 0.2", - "django >= 1.8, < 2.2", + "django >= 1.8, <3.0", "future <= 0.15.0", ], classifiers = [ From b311dedf04478e86f37f1dcd311a4b3f037f212f Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Fri, 12 Feb 2021 17:04:50 -0600 Subject: [PATCH 09/38] Added app_labels in all Meta classes --- forms_builder/forms/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 73c6ae3b..16c7831f 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -97,6 +97,7 @@ class Meta: verbose_name = _("Form") verbose_name_plural = _("Forms") abstract = True + app_label = _("Form") def __str__(self): return str(self.title) @@ -193,6 +194,7 @@ class Meta: verbose_name = _("Field") verbose_name_plural = _("Fields") abstract = True + app_label = _("Field") def __str__(self): return str(self.label) @@ -239,6 +241,7 @@ class Meta: verbose_name = _("Form entry") verbose_name_plural = _("Form entries") abstract = True + app_label = _("Form entry") class AbstractFieldEntry(models.Model): @@ -254,6 +257,7 @@ class Meta: verbose_name = _("Form field entry") verbose_name_plural = _("Form field entries") abstract = True + app_label = _("Form field entry") ################################################### From c081e4dc3068f554616ceeb897da33e73a64319b Mon Sep 17 00:00:00 2001 From: John-Hugh Hedrick Date: Fri, 12 Feb 2021 17:10:05 -0600 Subject: [PATCH 10/38] Fixed reverses and added app_name --- forms_builder/forms/models.py | 2 +- forms_builder/forms/urls.py | 1 + forms_builder/forms/views.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 73c6ae3b..8388e32a 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -139,7 +139,7 @@ def total_entries(self): total_entries.admin_order_field = "total_entries" def get_absolute_url(self): - return reverse("form_detail", kwargs={"slug": self.slug}) + return reverse("forms:form_detail", kwargs={"slug": self.slug}) def admin_links(self): kw = {"args": (self.id,)} diff --git a/forms_builder/forms/urls.py b/forms_builder/forms/urls.py index 6cc93d95..717f5a31 100644 --- a/forms_builder/forms/urls.py +++ b/forms_builder/forms/urls.py @@ -7,6 +7,7 @@ from forms_builder.forms import views +app_name="forms" urlpatterns = [ re_path(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index a04213d6..5b3563c5 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -62,7 +62,7 @@ def post(self, request, *args, **kwargs): self.send_emails(request, form_for_form, form, entry, attachments) if not self.request.is_ajax(): return redirect(form.redirect_url or - reverse("form_sent", kwargs={"slug": form.slug})) + reverse("forms:form_sent", kwargs={"slug": form.slug})) context = {"form": form, "form_for_form": form_for_form} return self.render_to_response(context) From 2825de546285aa26db5e851f715d87946c37c46b Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Fri, 12 Feb 2021 17:28:18 -0600 Subject: [PATCH 11/38] changed instance type of app_label --- forms_builder/forms/models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index a0f9c719..ed86793d 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -97,7 +97,7 @@ class Meta: verbose_name = _("Form") verbose_name_plural = _("Forms") abstract = True - app_label = _("Form") + app_label = "Form" def __str__(self): return str(self.title) @@ -194,7 +194,7 @@ class Meta: verbose_name = _("Field") verbose_name_plural = _("Fields") abstract = True - app_label = _("Field") + app_label = "Field" def __str__(self): return str(self.label) @@ -241,7 +241,7 @@ class Meta: verbose_name = _("Form entry") verbose_name_plural = _("Form entries") abstract = True - app_label = _("Form entry") + app_label = "Form entry" class AbstractFieldEntry(models.Model): @@ -257,7 +257,7 @@ class Meta: verbose_name = _("Form field entry") verbose_name_plural = _("Form field entries") abstract = True - app_label = _("Form field entry") + app_label = "Form field entry" ################################################### From 066ad21e6477fa1715afdf1cb40382676f75568f Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Fri, 12 Feb 2021 17:35:08 -0600 Subject: [PATCH 12/38] Correct value for app_label --- forms_builder/forms/models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index ed86793d..faed0895 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -97,7 +97,7 @@ class Meta: verbose_name = _("Form") verbose_name_plural = _("Forms") abstract = True - app_label = "Form" + app_label = "forms" def __str__(self): return str(self.title) @@ -194,7 +194,7 @@ class Meta: verbose_name = _("Field") verbose_name_plural = _("Fields") abstract = True - app_label = "Field" + app_label = "forms" def __str__(self): return str(self.label) @@ -241,7 +241,7 @@ class Meta: verbose_name = _("Form entry") verbose_name_plural = _("Form entries") abstract = True - app_label = "Form entry" + app_label = "forms" class AbstractFieldEntry(models.Model): @@ -257,7 +257,7 @@ class Meta: verbose_name = _("Form field entry") verbose_name_plural = _("Form field entries") abstract = True - app_label = "Form field entry" + app_label = "forms" ################################################### From fb501d8ef46fd7a3628ce4aa64eb583f4370b3f9 Mon Sep 17 00:00:00 2001 From: John-Hugh Hedrick Date: Fri, 12 Feb 2021 17:40:36 -0600 Subject: [PATCH 13/38] Updated reverse namespace reference --- forms_builder/forms/models.py | 2 +- forms_builder/forms/urls.py | 11 ++++------- forms_builder/forms/views.py | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index faed0895..08dc7403 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -140,7 +140,7 @@ def total_entries(self): total_entries.admin_order_field = "total_entries" def get_absolute_url(self): - return reverse("forms:form_detail", kwargs={"slug": self.slug}) + return reverse("form_detail", kwargs={"slug": self.slug}) def admin_links(self): kw = {"args": (self.id,)} diff --git a/forms_builder/forms/urls.py b/forms_builder/forms/urls.py index 717f5a31..c52013ad 100644 --- a/forms_builder/forms/urls.py +++ b/forms_builder/forms/urls.py @@ -1,15 +1,12 @@ from __future__ import unicode_literals -try: - from django.urls import re_path -except ImportError: - # For Django 1.8 compatibility - from django.conf.urls import url as re_path + +from django.conf.urls import url from forms_builder.forms import views app_name="forms" urlpatterns = [ - re_path(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), - re_path(r"(?P.*)/$", views.form_detail, name="form_detail"), + url(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), + url(r"(?P.*)/$", views.form_detail, name="form_detail"), ] diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 5b3563c5..1c9c0931 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -62,7 +62,7 @@ def post(self, request, *args, **kwargs): self.send_emails(request, form_for_form, form, entry, attachments) if not self.request.is_ajax(): return redirect(form.redirect_url or - reverse("forms:form_sent", kwargs={"slug": form.slug})) + reverse("form_sent", kwargs={"slug": form.slug})) context = {"form": form, "form_for_form": form_for_form} return self.render_to_response(context) From 2b3d85e6608b8795fd9e20e18350ffb05b76e368 Mon Sep 17 00:00:00 2001 From: John-Hugh Hedrick Date: Fri, 12 Feb 2021 17:42:51 -0600 Subject: [PATCH 14/38] Revert "Updated reverse namespace reference" This reverts commit fb501d8ef46fd7a3628ce4aa64eb583f4370b3f9. --- forms_builder/forms/models.py | 2 +- forms_builder/forms/urls.py | 11 +++++++---- forms_builder/forms/views.py | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 08dc7403..faed0895 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -140,7 +140,7 @@ def total_entries(self): total_entries.admin_order_field = "total_entries" def get_absolute_url(self): - return reverse("form_detail", kwargs={"slug": self.slug}) + return reverse("forms:form_detail", kwargs={"slug": self.slug}) def admin_links(self): kw = {"args": (self.id,)} diff --git a/forms_builder/forms/urls.py b/forms_builder/forms/urls.py index c52013ad..717f5a31 100644 --- a/forms_builder/forms/urls.py +++ b/forms_builder/forms/urls.py @@ -1,12 +1,15 @@ from __future__ import unicode_literals - -from django.conf.urls import url +try: + from django.urls import re_path +except ImportError: + # For Django 1.8 compatibility + from django.conf.urls import url as re_path from forms_builder.forms import views app_name="forms" urlpatterns = [ - url(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), - url(r"(?P.*)/$", views.form_detail, name="form_detail"), + re_path(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), + re_path(r"(?P.*)/$", views.form_detail, name="form_detail"), ] diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 1c9c0931..5b3563c5 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -62,7 +62,7 @@ def post(self, request, *args, **kwargs): self.send_emails(request, form_for_form, form, entry, attachments) if not self.request.is_ajax(): return redirect(form.redirect_url or - reverse("form_sent", kwargs={"slug": form.slug})) + reverse("forms:form_sent", kwargs={"slug": form.slug})) context = {"form": form, "form_for_form": form_for_form} return self.render_to_response(context) From 807d965f68bb41adaf6a434f441d1cf7acf791d9 Mon Sep 17 00:00:00 2001 From: John-Hugh Hedrick Date: Fri, 12 Feb 2021 17:43:36 -0600 Subject: [PATCH 15/38] Changed re_path reference to url --- forms_builder/forms/urls.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/forms_builder/forms/urls.py b/forms_builder/forms/urls.py index 717f5a31..c52013ad 100644 --- a/forms_builder/forms/urls.py +++ b/forms_builder/forms/urls.py @@ -1,15 +1,12 @@ from __future__ import unicode_literals -try: - from django.urls import re_path -except ImportError: - # For Django 1.8 compatibility - from django.conf.urls import url as re_path + +from django.conf.urls import url from forms_builder.forms import views app_name="forms" urlpatterns = [ - re_path(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), - re_path(r"(?P.*)/$", views.form_detail, name="form_detail"), + url(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), + url(r"(?P.*)/$", views.form_detail, name="form_detail"), ] From d67b34dfbbf58f30d3c57dedc9ed118408257530 Mon Sep 17 00:00:00 2001 From: johnhh2 Date: Mon, 15 Feb 2021 18:32:00 -0600 Subject: [PATCH 16/38] Replaced deprecated allow_tags w/ formathtml --- forms_builder/forms/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index faed0895..f617ef95 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -13,6 +13,7 @@ from django.db.models import Q from django.utils.encoding import python_2_unicode_compatible from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.html import format_html from future.builtins import str from forms_builder.forms import fields @@ -152,8 +153,7 @@ def admin_links(self): ] for i, (text, url) in enumerate(links): links[i] = "%s" % (url, ugettext(text)) - return "
".join(links) - admin_links.allow_tags = True + return format_html("
".join(links)) admin_links.short_description = "" From 9b0abf982db91f67c670023c9d1356771e5cdeb7 Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Thu, 25 Feb 2021 16:51:35 -0600 Subject: [PATCH 17/38] Updated django dependency 1.8 => 1.9 --- forms_builder/example_project/settings.py | 2 -- forms_builder/example_project/urls.py | 6 +----- forms_builder/forms/admin.py | 7 +------ forms_builder/forms/fields.py | 6 +----- forms_builder/forms/forms.py | 12 ++---------- forms_builder/forms/models.py | 10 +--------- forms_builder/forms/views.py | 6 +----- setup.py | 2 +- 8 files changed, 8 insertions(+), 43 deletions(-) diff --git a/forms_builder/example_project/settings.py b/forms_builder/example_project/settings.py index 27190666..cd309b9f 100644 --- a/forms_builder/example_project/settings.py +++ b/forms_builder/example_project/settings.py @@ -58,8 +58,6 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', ) -# For Django 1.8 compatibility -MIDDLEWARE_CLASSES = MIDDLEWARE TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", diff --git a/forms_builder/example_project/urls.py b/forms_builder/example_project/urls.py index 78627dd9..990950f8 100644 --- a/forms_builder/example_project/urls.py +++ b/forms_builder/example_project/urls.py @@ -1,10 +1,6 @@ from __future__ import unicode_literals -try: - from django.urls import re_path, include -except ImportError: - # For Django 1.8 compatibility - from django.conf.urls import url as re_path, include +from django.urls import re_path, include from django.contrib import admin from django.shortcuts import render diff --git a/forms_builder/forms/admin.py b/forms_builder/forms/admin.py index ed6fee4e..744061e4 100644 --- a/forms_builder/forms/admin.py +++ b/forms_builder/forms/admin.py @@ -9,12 +9,7 @@ from django.contrib import admin from django.core.files.storage import FileSystemStorage -try: - from django.urls import reverse, re_path -except ImportError: - # For django 1.8 compatiblity - from django.conf.urls import url as re_path - from django.core.urlresolvers import reverse +from django.urls import reverse, re_path from django.db.models import Count from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 diff --git a/forms_builder/forms/fields.py b/forms_builder/forms/fields.py index 23d58765..2e796288 100644 --- a/forms_builder/forms/fields.py +++ b/forms_builder/forms/fields.py @@ -2,11 +2,7 @@ from django.core.exceptions import ImproperlyConfigured from django import forms -try: - from django.forms import SelectDateWidget -except ImportError: - # For Django 1.8 compatibility - from django.forms.extras import SelectDateWidget +from django.forms import SelectDateWidget from django.utils.translation import ugettext_lazy as _ from forms_builder.forms.settings import USE_HTML5, EXTRA_FIELDS, EXTRA_WIDGETS diff --git a/forms_builder/forms/forms.py b/forms_builder/forms/forms.py index b8e3ae53..c9145715 100644 --- a/forms_builder/forms/forms.py +++ b/forms_builder/forms/forms.py @@ -7,17 +7,9 @@ import django from django import forms -try: - from django.forms import SelectDateWidget -except ImportError: - # For Django 1.8 compatibility - from django.forms.extras import SelectDateWidget +from django.forms import SelectDateWidget from django.core.files.storage import default_storage -try: - from django.urls import reverse -except ImportError: - # For Django 1.8 compatibility - from django.core.urlresolvers import reverse +from django.urls import reverse from django.template import Template from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index faed0895..d2a069b4 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -1,13 +1,8 @@ from __future__ import unicode_literals -from django import VERSION as DJANGO_VERSION from django.contrib.sites.models import Site -try: - from django.urls import reverse -except ImportError: - # For Django 1.8 compatibility - from django.core.urlresolvers import reverse +from django.urls import reverse from django.db import models from django.db.models import Q @@ -125,9 +120,6 @@ def published(self, for_user=None): publish_date = self.publish_date is None or self.publish_date <= now() expiry_date = self.expiry_date is None or self.expiry_date >= now() authenticated = for_user is not None and for_user.is_authenticated - if DJANGO_VERSION <= (1, 9): - # Django 1.8 compatibility, is_authenticated has to be called as a method. - authenticated = for_user is not None and for_user.is_authenticated() login_required = (not self.login_required or authenticated) return status and publish_date and expiry_date and login_required diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 5b3563c5..337a19c1 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -4,11 +4,7 @@ from django.conf import settings from django.contrib.auth import REDIRECT_FIELD_NAME -try: - from django.urls import reverse -except ImportError: - # For Django 1.8 compatibility - from django.core.urlresolvers import reverse +from django.urls import reverse from django.http import HttpResponse, HttpResponseBadRequest from django.shortcuts import get_object_or_404, redirect, render_to_response, render from django.template import RequestContext diff --git a/setup.py b/setup.py index 9151e49d..f7723a68 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ "sphinx-me >= 0.1.2", "unidecode", "django-email-extras >= 0.2", - "django >= 1.8, <3.0", + "django >= 1.9, <3.0", "future <= 0.15.0", ], classifiers = [ From 478ac5b38e3fe17be947081b5674d5825aa07bde Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Thu, 25 Feb 2021 16:54:35 -0600 Subject: [PATCH 18/38] Corrected update to django 1.9 --- forms_builder/example_project/urls.py | 8 ++++---- forms_builder/forms/admin.py | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/forms_builder/example_project/urls.py b/forms_builder/example_project/urls.py index 990950f8..cf0b025d 100644 --- a/forms_builder/example_project/urls.py +++ b/forms_builder/example_project/urls.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django.urls import re_path, include +from django.urls import url, include from django.contrib import admin from django.shortcuts import render @@ -11,8 +11,8 @@ admin.autodiscover() urlpatterns = [ - re_path(r'^admin/', admin.site.urls), - re_path(r'^forms/', include(form_urls)), - re_path(r'^$', lambda request: render(request, "index.html", + url(r'^admin/', admin.site.urls), + url(r'^forms/', include(form_urls)), + url(r'^$', lambda request: render(request, "index.html", {"forms": Form.objects.all()})), ] diff --git a/forms_builder/forms/admin.py b/forms_builder/forms/admin.py index 744061e4..8985ecd8 100644 --- a/forms_builder/forms/admin.py +++ b/forms_builder/forms/admin.py @@ -9,7 +9,7 @@ from django.contrib import admin from django.core.files.storage import FileSystemStorage -from django.urls import reverse, re_path +from django.urls import reverse, url from django.db.models import Count from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 @@ -83,16 +83,16 @@ def get_urls(self): """ urls = super(FormAdmin, self).get_urls() extra_urls = [ - re_path("^(?P\d+)/entries/$", + url("^(?P\d+)/entries/$", self.admin_site.admin_view(self.entries_view), name="form_entries"), - re_path("^(?P\d+)/entries/show/$", + url("^(?P\d+)/entries/show/$", self.admin_site.admin_view(self.entries_view), {"show": True}, name="form_entries_show"), - re_path("^(?P\d+)/entries/export/$", + url("^(?P\d+)/entries/export/$", self.admin_site.admin_view(self.entries_view), {"export": True}, name="form_entries_export"), - re_path("^file/(?P\d+)/$", + url("^file/(?P\d+)/$", self.admin_site.admin_view(self.file_view), name="form_file"), ] From 1409706b528a71b1e1eec43653ea5687c9637ab9 Mon Sep 17 00:00:00 2001 From: Matthew Purnell Date: Thu, 25 Feb 2021 17:09:54 -0600 Subject: [PATCH 19/38] Final fix for django 1.9 update --- forms_builder/example_project/urls.py | 3 ++- forms_builder/forms/admin.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/forms_builder/example_project/urls.py b/forms_builder/example_project/urls.py index cf0b025d..4520699d 100644 --- a/forms_builder/example_project/urls.py +++ b/forms_builder/example_project/urls.py @@ -1,8 +1,9 @@ from __future__ import unicode_literals -from django.urls import url, include +from django.conf.urls import url from django.contrib import admin from django.shortcuts import render +from django.urls import include from forms_builder.forms.models import Form from forms_builder.forms import urls as form_urls diff --git a/forms_builder/forms/admin.py b/forms_builder/forms/admin.py index 8985ecd8..ad60234a 100644 --- a/forms_builder/forms/admin.py +++ b/forms_builder/forms/admin.py @@ -9,11 +9,12 @@ from django.contrib import admin from django.core.files.storage import FileSystemStorage -from django.urls import reverse, url +from django.conf.urls import url from django.db.models import Count from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 from django.utils.translation import ungettext, ugettext_lazy as _ +from django.urls import reverse from forms_builder.forms.forms import EntriesForm from forms_builder.forms.models import Form, Field, FormEntry, FieldEntry From eecb07ff61fc027c00fb6018017bf130a0e6c242 Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Mon, 22 Mar 2021 02:57:48 -0500 Subject: [PATCH 20/38] First try at fixing failing tests --- forms_builder/example_project/settings.py | 2 ++ forms_builder/example_project/urls.py | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/forms_builder/example_project/settings.py b/forms_builder/example_project/settings.py index cd309b9f..27190666 100644 --- a/forms_builder/example_project/settings.py +++ b/forms_builder/example_project/settings.py @@ -58,6 +58,8 @@ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', ) +# For Django 1.8 compatibility +MIDDLEWARE_CLASSES = MIDDLEWARE TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", diff --git a/forms_builder/example_project/urls.py b/forms_builder/example_project/urls.py index 4520699d..610b3648 100644 --- a/forms_builder/example_project/urls.py +++ b/forms_builder/example_project/urls.py @@ -3,7 +3,11 @@ from django.conf.urls import url from django.contrib import admin from django.shortcuts import render -from django.urls import include +try: + from django.urls import include +except ImportError: + # For Django 1.8 compatibility + from django.conf.urls import include from forms_builder.forms.models import Form from forms_builder.forms import urls as form_urls From a7e9ce186ff35532baa19f084969b5e5bfa670ba Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Mon, 22 Mar 2021 03:05:57 -0500 Subject: [PATCH 21/38] More fixes for failing tests --- forms_builder/forms/models.py | 13 +++++++++++-- forms_builder/forms/views.py | 6 +++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 12c5105a..11c95ca0 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -1,8 +1,13 @@ from __future__ import unicode_literals +from django import version as DJANGO_VERSION from django.contrib.sites.models import Site -from django.urls import reverse +try: + from django.urls import reverse +except ImportError: + # For Django 1.8 compatibility + from django.core.urlresolvers import reverse from django.db import models from django.db.models import Q @@ -120,7 +125,11 @@ def published(self, for_user=None): status = self.status == STATUS_PUBLISHED publish_date = self.publish_date is None or self.publish_date <= now() expiry_date = self.expiry_date is None or self.expiry_date >= now() - authenticated = for_user is not None and for_user.is_authenticated + if DJANGO_VERSION >= (1, 9): + authenticated = for_user is not None and for_user.is_authenticated + else: + # Django 1.8 compatibility, is_authenticated has to be called as a method. + authenticated = for_user is not None and for_user.is_authenticated() login_required = (not self.login_required or authenticated) return status and publish_date and expiry_date and login_required diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 337a19c1..5b3563c5 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -4,7 +4,11 @@ from django.conf import settings from django.contrib.auth import REDIRECT_FIELD_NAME -from django.urls import reverse +try: + from django.urls import reverse +except ImportError: + # For Django 1.8 compatibility + from django.core.urlresolvers import reverse from django.http import HttpResponse, HttpResponseBadRequest from django.shortcuts import get_object_or_404, redirect, render_to_response, render from django.template import RequestContext From 1445321b123aa521dd1e425b9ba95fa14a13909d Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Mon, 22 Mar 2021 03:08:26 -0500 Subject: [PATCH 22/38] Corrected import --- forms_builder/forms/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 11c95ca0..408a2dfa 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals -from django import version as DJANGO_VERSION +from django import VERSION as DJANGO_VERSION from django.contrib.sites.models import Site try: From 86ab918b2773898657e9c59fbc7998f7079ee7b3 Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Mon, 22 Mar 2021 03:15:27 -0500 Subject: [PATCH 23/38] More test fixes --- forms_builder/forms/admin.py | 7 +++++-- forms_builder/forms/forms.py | 12 ++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/forms_builder/forms/admin.py b/forms_builder/forms/admin.py index ad60234a..a77959ae 100644 --- a/forms_builder/forms/admin.py +++ b/forms_builder/forms/admin.py @@ -14,8 +14,11 @@ from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 from django.utils.translation import ungettext, ugettext_lazy as _ -from django.urls import reverse - +try: + from django.urls import reverse +except ImportError: + # For Django 1.8 compatibility + from django.core.urlresolvers import reverse from forms_builder.forms.forms import EntriesForm from forms_builder.forms.models import Form, Field, FormEntry, FieldEntry from forms_builder.forms.settings import CSV_DELIMITER, UPLOAD_ROOT diff --git a/forms_builder/forms/forms.py b/forms_builder/forms/forms.py index c9145715..b8e3ae53 100644 --- a/forms_builder/forms/forms.py +++ b/forms_builder/forms/forms.py @@ -7,9 +7,17 @@ import django from django import forms -from django.forms import SelectDateWidget +try: + from django.forms import SelectDateWidget +except ImportError: + # For Django 1.8 compatibility + from django.forms.extras import SelectDateWidget from django.core.files.storage import default_storage -from django.urls import reverse +try: + from django.urls import reverse +except ImportError: + # For Django 1.8 compatibility + from django.core.urlresolvers import reverse from django.template import Template from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ From c57105d6bbd4e956433a0ffd000871a3b10fb42c Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Sun, 21 Mar 2021 22:26:06 -0500 Subject: [PATCH 24/38] Last few fixes for tests --- forms_builder/example_project/settings.py | 1 + forms_builder/example_project/urls.py | 6 +++--- forms_builder/forms/fields.py | 6 +++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/forms_builder/example_project/settings.py b/forms_builder/example_project/settings.py index 27190666..96b33b1b 100644 --- a/forms_builder/example_project/settings.py +++ b/forms_builder/example_project/settings.py @@ -75,6 +75,7 @@ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', + 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.staticfiles', diff --git a/forms_builder/example_project/urls.py b/forms_builder/example_project/urls.py index 610b3648..9862edca 100644 --- a/forms_builder/example_project/urls.py +++ b/forms_builder/example_project/urls.py @@ -1,13 +1,13 @@ from __future__ import unicode_literals -from django.conf.urls import url -from django.contrib import admin -from django.shortcuts import render try: from django.urls import include except ImportError: # For Django 1.8 compatibility from django.conf.urls import include +from django.conf.urls import url +from django.contrib import admin +from django.shortcuts import render from forms_builder.forms.models import Form from forms_builder.forms import urls as form_urls diff --git a/forms_builder/forms/fields.py b/forms_builder/forms/fields.py index 2e796288..23d58765 100644 --- a/forms_builder/forms/fields.py +++ b/forms_builder/forms/fields.py @@ -2,7 +2,11 @@ from django.core.exceptions import ImproperlyConfigured from django import forms -from django.forms import SelectDateWidget +try: + from django.forms import SelectDateWidget +except ImportError: + # For Django 1.8 compatibility + from django.forms.extras import SelectDateWidget from django.utils.translation import ugettext_lazy as _ from forms_builder.forms.settings import USE_HTML5, EXTRA_FIELDS, EXTRA_WIDGETS From 6166363c4de29c2c97ee890c0db394a7a51dc82f Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Sun, 21 Mar 2021 22:34:45 -0500 Subject: [PATCH 25/38] Added testing for django 2.2 --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index 4bf3634e..32ad431d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,7 @@ env: - DJANGO_VERSION=https://github.com/django/django/archive/stable/1.11.x.zip - DJANGO_VERSION=https://github.com/django/django/archive/stable/2.0.x.zip - DJANGO_VERSION=https://github.com/django/django/archive/stable/2.1.x.zip + - DJANGO_VERSION=https://github.com/django/django/archive/stable/2.2.x.zip python: - "2.7" - "3.4" @@ -17,8 +18,12 @@ matrix: env: DJANGO_VERSION=https://github.com/django/django/archive/stable/2.0.x.zip - python: "2.7" env: DJANGO_VERSION=https://github.com/django/django/archive/stable/2.1.x.zip + - python: "2.7" + env: DJANGO_VERSION=https://github.com/django/django/archive/stable/2.2.x.zip - python: "3.4" env: DJANGO_VERSION=https://github.com/django/django/archive/stable/2.1.x.zip + - python: "3.4" + env: DJANGO_VERSION=https://github.com/django/django/archive/stable/2.2.x.zip install: - pip install $DJANGO_VERSION - pip install . From 930cf66e8eb82b6eef3b895d27ff3dda3de3c187 Mon Sep 17 00:00:00 2001 From: AidanKneller Date: Tue, 1 Feb 2022 16:31:56 -0600 Subject: [PATCH 26/38] Updated django dependency 3.0 to 4.0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f7723a68..c3cb9fa5 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ "sphinx-me >= 0.1.2", "unidecode", "django-email-extras >= 0.2", - "django >= 1.9, <3.0", + "django >= 1.9, <4.0", "future <= 0.15.0", ], classifiers = [ From 66fd8540baffd20f704f6b59fae9608c6c5115cc Mon Sep 17 00:00:00 2001 From: AidanKneller Date: Tue, 1 Feb 2022 18:12:06 -0600 Subject: [PATCH 27/38] Updated to be Django 3.0 compatible --- forms_builder/forms/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 408a2dfa..ff2439be 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -11,7 +11,7 @@ from django.db import models from django.db.models import Q -from django.utils.encoding import python_2_unicode_compatible +from six import python_2_unicode_compatible from django.utils.translation import ugettext, ugettext_lazy as _ from django.utils.html import format_html from future.builtins import str From e80f5be8511f52cb63f392df1b0db08680a4c345 Mon Sep 17 00:00:00 2001 From: AidanKneller Date: Tue, 1 Feb 2022 18:39:45 -0600 Subject: [PATCH 28/38] Replaced render_to_response with render for Django 3 --- forms_builder/forms/views.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 5b3563c5..d5e2429c 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -10,7 +10,7 @@ # For Django 1.8 compatibility from django.core.urlresolvers import reverse from django.http import HttpResponse, HttpResponseBadRequest -from django.shortcuts import get_object_or_404, redirect, render_to_response, render +from django.shortcuts import get_object_or_404, redirect, render from django.template import RequestContext from django.utils.http import urlquote from django.views.generic.base import TemplateView @@ -40,7 +40,7 @@ def get(self, request, *args, **kwargs): path = urlquote(request.get_full_path()) bits = (settings.LOGIN_URL, REDIRECT_FIELD_NAME, path) return redirect("%s?%s=%s" % bits) - return self.render_to_response(context) + return self.render(request, context) def post(self, request, *args, **kwargs): published = Form.objects.published(for_user=request.user) @@ -64,9 +64,9 @@ def post(self, request, *args, **kwargs): return redirect(form.redirect_url or reverse("forms:form_sent", kwargs={"slug": form.slug})) context = {"form": form, "form_for_form": form_for_form} - return self.render_to_response(context) + return self.render(request, context) - def render_to_response(self, context, **kwargs): + def render(self, request, context, **kwargs): if self.request.method == "POST" and self.request.is_ajax(): json_context = json.dumps({ "errors": context["form_for_form"].errors, @@ -77,7 +77,7 @@ def render_to_response(self, context, **kwargs): return HttpResponseBadRequest(json_context, content_type="application/json") return HttpResponse(json_context, content_type="application/json") - return super(FormDetail, self).render_to_response(context, **kwargs) + return super(FormDetail, self).render(request, context, **kwargs) def send_emails(self, request, form_for_form, form, entry, attachments): subject = form.email_subject From 8aa9f4672ebc627a755ab1da7e56b98f7696b76f Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Sun, 27 Feb 2022 02:11:24 -0600 Subject: [PATCH 29/38] Change one instance of render back to render_to_response --- forms_builder/forms/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index d5e2429c..4e974017 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -77,7 +77,7 @@ def render(self, request, context, **kwargs): return HttpResponseBadRequest(json_context, content_type="application/json") return HttpResponse(json_context, content_type="application/json") - return super(FormDetail, self).render(request, context, **kwargs) + return super(FormDetail, self).render_to_response(context, **kwargs) def send_emails(self, request, form_for_form, form, entry, attachments): subject = form.email_subject From 53c81e1a6b191aefde4b43146e029d883535bd79 Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Tue, 17 May 2022 07:50:38 -0500 Subject: [PATCH 30/38] Add tests for django 3.0-3.2 --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 32ad431d..6676fc36 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,9 @@ env: - DJANGO_VERSION=https://github.com/django/django/archive/stable/2.0.x.zip - DJANGO_VERSION=https://github.com/django/django/archive/stable/2.1.x.zip - DJANGO_VERSION=https://github.com/django/django/archive/stable/2.2.x.zip + - DJANGO_VERSION=https://github.com/django/django/archive/stable/3.0.x.zip + - DJANGO_VERSION=https://github.com/django/django/archive/stable/3.1.x.zip + - DJANGO_VERSION=https://github.com/django/django/archive/stable/3.2.x.zip python: - "2.7" - "3.4" From 263199f1e04d4edee93fc97600767b5db3e6a92a Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Tue, 18 Jul 2023 14:44:38 -0500 Subject: [PATCH 31/38] Update django dependency >4.0 to >4.2 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c3cb9fa5..1f7367ca 100644 --- a/setup.py +++ b/setup.py @@ -50,7 +50,7 @@ "sphinx-me >= 0.1.2", "unidecode", "django-email-extras >= 0.2", - "django >= 1.9, <4.0", + "django >= 1.9, <4.2", "future <= 0.15.0", ], classifiers = [ From 78e6d565956d6be60292f8b465f0eed51125207a Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Tue, 18 Jul 2023 16:34:26 -0500 Subject: [PATCH 32/38] Remove deprecated kwargs --- forms_builder/forms/signals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forms_builder/forms/signals.py b/forms_builder/forms/signals.py index 7da541e0..e179f1ac 100644 --- a/forms_builder/forms/signals.py +++ b/forms_builder/forms/signals.py @@ -2,5 +2,5 @@ from django.dispatch import Signal -form_invalid = Signal(providing_args=["form"]) -form_valid = Signal(providing_args=["form", "entry"]) +form_invalid = Signal() +form_valid = Signal() From 51bf0613081c8951fe59f7d4a95610bc98c1f3cc Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Tue, 18 Jul 2023 17:36:54 -0500 Subject: [PATCH 33/38] Change name of deprecated functions for Django 4.1 compatibility --- forms_builder/forms/admin.py | 4 ++-- forms_builder/forms/fields.py | 2 +- forms_builder/forms/forms.py | 6 +++--- forms_builder/forms/models.py | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/forms_builder/forms/admin.py b/forms_builder/forms/admin.py index a77959ae..9253fac7 100644 --- a/forms_builder/forms/admin.py +++ b/forms_builder/forms/admin.py @@ -13,7 +13,7 @@ from django.db.models import Count from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 -from django.utils.translation import ungettext, ugettext_lazy as _ +from django.utils.translation import ngettext, gettext_lazy as _ try: from django.urls import reverse except ImportError: @@ -176,7 +176,7 @@ def info(request, message, fail_silently=True): count = entries.count() if count > 0: entries.delete() - message = ungettext("1 entry deleted", + message = ngettext("1 entry deleted", "%(count)s entries deleted", count) info(request, message % {"count": count}) template = "admin/forms/entries.html" diff --git a/forms_builder/forms/fields.py b/forms_builder/forms/fields.py index 23d58765..9291c873 100644 --- a/forms_builder/forms/fields.py +++ b/forms_builder/forms/fields.py @@ -7,7 +7,7 @@ except ImportError: # For Django 1.8 compatibility from django.forms.extras import SelectDateWidget -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from forms_builder.forms.settings import USE_HTML5, EXTRA_FIELDS, EXTRA_WIDGETS from forms_builder.forms.utils import html5_field, import_attr diff --git a/forms_builder/forms/forms.py b/forms_builder/forms/forms.py index b8e3ae53..d04de067 100644 --- a/forms_builder/forms/forms.py +++ b/forms_builder/forms/forms.py @@ -20,7 +20,7 @@ from django.core.urlresolvers import reverse from django.template import Template from django.utils.safestring import mark_safe -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from forms_builder.forms import fields from forms_builder.forms.models import FormEntry, FieldEntry @@ -202,9 +202,9 @@ def __init__(self, form, context, *args, **kwargs): # Add identifying CSS classes to the field. css_class = field_class.__name__.lower() - # Do not add the 'required' field to the CheckboxSelectMultiple because it will + # Do not add the 'required' field to the CheckboxSelectMultiple because it will # mean that all checkboxes have to be checked instead of the usual use case of - # "at least one". + # "at least one". if field.required and (field_widget != forms.CheckboxSelectMultiple): css_class += " required" if settings.USE_HTML5: diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index ff2439be..c2600630 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -12,7 +12,7 @@ from django.db import models from django.db.models import Q from six import python_2_unicode_compatible -from django.utils.translation import ugettext, ugettext_lazy as _ +from django.utils.translation import gettext, gettext_lazy as _ from django.utils.html import format_html from future.builtins import str @@ -153,7 +153,7 @@ def admin_links(self): (_("Export all entries"), reverse("admin:form_entries_export", **kw)), ] for i, (text, url) in enumerate(links): - links[i] = "%s" % (url, ugettext(text)) + links[i] = "%s" % (url, gettext(text)) return format_html("
".join(links)) admin_links.short_description = "" From 63c78af6c388271cc99382baa733a35dbbc0e29a Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Tue, 18 Jul 2023 18:40:22 -0500 Subject: [PATCH 34/38] Replace deprecated functions with correct ones --- forms_builder/forms/admin.py | 10 +++++----- forms_builder/forms/urls.py | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/forms_builder/forms/admin.py b/forms_builder/forms/admin.py index 9253fac7..95c0817c 100644 --- a/forms_builder/forms/admin.py +++ b/forms_builder/forms/admin.py @@ -9,7 +9,7 @@ from django.contrib import admin from django.core.files.storage import FileSystemStorage -from django.conf.urls import url +from django.urls import re_path from django.db.models import Count from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, get_object_or_404 @@ -87,16 +87,16 @@ def get_urls(self): """ urls = super(FormAdmin, self).get_urls() extra_urls = [ - url("^(?P\d+)/entries/$", + re_path("^(?P\d+)/entries/$", self.admin_site.admin_view(self.entries_view), name="form_entries"), - url("^(?P\d+)/entries/show/$", + re_path("^(?P\d+)/entries/show/$", self.admin_site.admin_view(self.entries_view), {"show": True}, name="form_entries_show"), - url("^(?P\d+)/entries/export/$", + re_path("^(?P\d+)/entries/export/$", self.admin_site.admin_view(self.entries_view), {"export": True}, name="form_entries_export"), - url("^file/(?P\d+)/$", + re_path("^file/(?P\d+)/$", self.admin_site.admin_view(self.file_view), name="form_file"), ] diff --git a/forms_builder/forms/urls.py b/forms_builder/forms/urls.py index c52013ad..6adcf482 100644 --- a/forms_builder/forms/urls.py +++ b/forms_builder/forms/urls.py @@ -1,12 +1,12 @@ from __future__ import unicode_literals -from django.conf.urls import url +from django.urls import re_path from forms_builder.forms import views app_name="forms" urlpatterns = [ - url(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), - url(r"(?P.*)/$", views.form_detail, name="form_detail"), + re_path(r"(?P.*)/sent/$", views.form_sent, name="form_sent"), + re_path(r"(?P.*)/$", views.form_detail, name="form_detail"), ] From 4c5c856730f0bb4fe3ed25618641b4a83c609351 Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Tue, 18 Jul 2023 19:00:18 -0500 Subject: [PATCH 35/38] Replace another deprecated function with the new one --- forms_builder/forms/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index 4e974017..e94d0328 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -12,9 +12,9 @@ from django.http import HttpResponse, HttpResponseBadRequest from django.shortcuts import get_object_or_404, redirect, render from django.template import RequestContext -from django.utils.http import urlquote from django.views.generic.base import TemplateView from email_extras.utils import send_mail_template +from urllib.parse import quote from forms_builder.forms.forms import FormForForm from forms_builder.forms.models import Form @@ -37,7 +37,7 @@ def get(self, request, *args, **kwargs): context = self.get_context_data(**kwargs) login_required = context["form"].login_required if login_required and not request.user.is_authenticated: - path = urlquote(request.get_full_path()) + path = quote(request.get_full_path()) bits = (settings.LOGIN_URL, REDIRECT_FIELD_NAME, path) return redirect("%s?%s=%s" % bits) return self.render(request, context) From 515e5eab8c1b6e812e0e31fa467db601ff8ccaa1 Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Fri, 21 Jul 2023 15:15:45 -0500 Subject: [PATCH 36/38] Update version of future --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 1f7367ca..ca1ffefb 100644 --- a/setup.py +++ b/setup.py @@ -51,7 +51,7 @@ "unidecode", "django-email-extras >= 0.2", "django >= 1.9, <4.2", - "future <= 0.15.0", + "future >= 0.18.3", ], classifiers = [ "Development Status :: 5 - Production/Stable", From 484886f3bbaafb28d4fe1709a6cd1604ca6ce69c Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Fri, 28 Jul 2023 13:06:43 -0500 Subject: [PATCH 37/38] Revert "Update version of future" This reverts commit 515e5eab8c1b6e812e0e31fa467db601ff8ccaa1. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index ca1ffefb..1f7367ca 100644 --- a/setup.py +++ b/setup.py @@ -51,7 +51,7 @@ "unidecode", "django-email-extras >= 0.2", "django >= 1.9, <4.2", - "future >= 0.18.3", + "future <= 0.15.0", ], classifiers = [ "Development Status :: 5 - Production/Stable", From 3218bde4ba91be25afb9001d399434dde80e9aed Mon Sep 17 00:00:00 2001 From: Matt Purnell Date: Thu, 16 May 2024 10:25:28 -0500 Subject: [PATCH 38/38] Fix code broken by Django 3.1 update --- forms_builder/forms/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forms_builder/forms/views.py b/forms_builder/forms/views.py index e94d0328..2a04810f 100644 --- a/forms_builder/forms/views.py +++ b/forms_builder/forms/views.py @@ -60,14 +60,14 @@ def post(self, request, *args, **kwargs): entry = form_for_form.save() form_valid.send(sender=request, form=form_for_form, entry=entry) self.send_emails(request, form_for_form, form, entry, attachments) - if not self.request.is_ajax(): + if not self.request.headers.get("x-requested-with") == "XMLHttpRequest": # is_ajax return redirect(form.redirect_url or reverse("forms:form_sent", kwargs={"slug": form.slug})) context = {"form": form, "form_for_form": form_for_form} return self.render(request, context) def render(self, request, context, **kwargs): - if self.request.method == "POST" and self.request.is_ajax(): + if self.request.method == "POST" and self.request.headers.get("x-requested-with") == "XMLHttpRequest": # is_ajax json_context = json.dumps({ "errors": context["form_for_form"].errors, "form": context["form_for_form"].as_p(),