Skip to content

Commit

Permalink
Make safe admin_links for Django 2.
Browse files Browse the repository at this point in the history
  • Loading branch information
zbohm committed Aug 9, 2019
1 parent 4931027 commit ac45208
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 6 deletions.
1 change: 1 addition & 0 deletions forms_builder/example_project/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
'django.contrib.messages',
'forms_builder.forms',
)

Expand Down
10 changes: 4 additions & 6 deletions forms_builder/forms/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from django import VERSION as DJANGO_VERSION
from django.contrib.sites.models import Site
from django.utils.html import format_html_join

try:
from django.urls import reverse
Expand Down Expand Up @@ -142,16 +143,13 @@ def get_absolute_url(self):
return reverse("form_detail", kwargs={"slug": self.slug})

def admin_links(self):
kw = {"args": (self.id,)}
links = [
kw = {"args": (self.id, )}
return format_html_join("\n", "<div><a href='{1}'>{0}</a></div>", (
(_("View form on site"), self.get_absolute_url()),
(_("Filter entries"), reverse("admin:form_entries", **kw)),
(_("View all entries"), reverse("admin:form_entries_show", **kw)),
(_("Export all entries"), reverse("admin:form_entries_export", **kw)),
]
for i, (text, url) in enumerate(links):
links[i] = "<a href='%s'>%s</a>" % (url, ugettext(text))
return "<br>".join(links)
))
admin_links.allow_tags = True
admin_links.short_description = ""

Expand Down
12 changes: 12 additions & 0 deletions forms_builder/forms/tests.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from __future__ import unicode_literals

from django.utils.safestring import SafeText
from django.conf import settings
from django.contrib.auth.models import User, AnonymousUser
from django.contrib.sites.models import Site
Expand Down Expand Up @@ -239,3 +240,14 @@ def test_input_dropdown_required_with_default(self):
<option value="two" selected>two</option>
<option value="three">three</option>
</select>""", html=True)

def test_admin_link(self):
form = Form.objects.create(title="Test")
content = form.admin_links()
self.assertIsInstance(content, SafeText)
self.assertInHTML(content, """
<div><a href='/forms/test/'>View form on site</a></div>
<div><a href='/admin/forms/form/1/entries/'>Filter entries</a></div>
<div><a href='/admin/forms/form/1/entries/show/'>View all entries</a></div>
<div><a href='/admin/forms/form/1/entries/export/'>Export all entries</a></div>
""")

0 comments on commit ac45208

Please sign in to comment.