Skip to content

Commit d465df6

Browse files
committed
Feat:
Make project django 2.2 compatible stephenmcd#247
1 parent 89fe031 commit d465df6

File tree

4 files changed

+39
-8
lines changed

4 files changed

+39
-8
lines changed

forms_builder/forms/models.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from django import VERSION as DJANGO_VERSION
44
from django.contrib.sites.models import Site
5+
from django.utils.html import format_html_join
56

67
try:
78
from django.urls import reverse
@@ -142,16 +143,14 @@ def get_absolute_url(self):
142143
return reverse("form_detail", kwargs={"slug": self.slug})
143144

144145
def admin_links(self):
145-
kw = {"args": (self.id,)}
146-
links = [
146+
kw = {"args": (self.id, )}
147+
148+
return format_html_join("\n", "<div><a href='{1}'>{0}</a></div>", (
147149
(_("View form on site"), self.get_absolute_url()),
148150
(_("Filter entries"), reverse("admin:form_entries", **kw)),
149151
(_("View all entries"), reverse("admin:form_entries_show", **kw)),
150152
(_("Export all entries"), reverse("admin:form_entries_export", **kw)),
151-
]
152-
for i, (text, url) in enumerate(links):
153-
links[i] = "<a href='%s'>%s</a>" % (url, ugettext(text))
154-
return "<br>".join(links)
153+
))
155154
admin_links.allow_tags = True
156155
admin_links.short_description = ""
157156

forms_builder/forms/tests.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import unicode_literals
22

3+
from django.utils.safestring import SafeText
34
from django.conf import settings
45
from django.contrib.auth.models import User, AnonymousUser
56
from django.contrib.sites.models import Site
@@ -239,3 +240,14 @@ def test_input_dropdown_required_with_default(self):
239240
<option value="two" selected>two</option>
240241
<option value="three">three</option>
241242
</select>""", html=True)
243+
244+
def test_admin_link(self):
245+
form = Form.objects.create(title="Test")
246+
content = form.admin_links()
247+
self.assertIsInstance(content, SafeText)
248+
self.assertInHTML(content, """
249+
<div><a href='/forms/test/'>View form on site</a></div>
250+
<div><a href='/admin/forms/form/1/entries/'>Filter entries</a></div>
251+
<div><a href='/admin/forms/form/1/entries/show/'>View all entries</a></div>
252+
<div><a href='/admin/forms/form/1/entries/export/'>Export all entries</a></div>
253+
""")

forms_builder/forms/utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,29 @@
11
from __future__ import unicode_literals
22

3+
import utils.logging as logging
4+
35
from django.template.defaultfilters import slugify as django_slugify
46
from importlib import import_module
57
from unidecode import unidecode
68

9+
logger = logging.getLogger(__name__)
10+
11+
12+
def copy_form(form, name):
13+
""" Creates a deep copy of form and fields """
14+
fields = form.fields.all()
15+
new_form = form
16+
new_form.pk = None
17+
new_form.title = name
18+
new_form.slug = slugify(new_form.title)
19+
new_form.save()
20+
for field in fields:
21+
new_field = field
22+
new_field.pk = None
23+
new_field.form = new_form
24+
new_field.save()
25+
return new_form
26+
727

828
# Timezone support with fallback.
929
try:

setup.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
"sphinx-me >= 0.1.2",
5151
"unidecode",
5252
"django-email-extras >= 0.2",
53-
"django >= 1.8, < 2.2",
54-
"future <= 0.15.0",
53+
"django >= 1.8, < 2.2.999",
54+
"future <= 0.18.999",
5555
],
5656
classifiers = [
5757
"Development Status :: 5 - Production/Stable",

0 commit comments

Comments
 (0)