diff --git a/forms_builder/example_project/settings.py b/forms_builder/example_project/settings.py index 27190666..767f6515 100644 --- a/forms_builder/example_project/settings.py +++ b/forms_builder/example_project/settings.py @@ -78,6 +78,7 @@ 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.staticfiles', + 'django.contrib.messages', 'forms_builder.forms', ) diff --git a/forms_builder/forms/models.py b/forms_builder/forms/models.py index 73c6ae3b..59b6d6bf 100644 --- a/forms_builder/forms/models.py +++ b/forms_builder/forms/models.py @@ -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 @@ -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", "
{0}
", ( (_("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] = "%s" % (url, ugettext(text)) - return "
".join(links) + )) admin_links.allow_tags = True admin_links.short_description = "" diff --git a/forms_builder/forms/tests.py b/forms_builder/forms/tests.py index ace512b0..817f1179 100644 --- a/forms_builder/forms/tests.py +++ b/forms_builder/forms/tests.py @@ -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 @@ -239,3 +240,14 @@ def test_input_dropdown_required_with_default(self): """, html=True) + + def test_admin_link(self): + form = Form.objects.create(title="Test") + content = form.admin_links() + self.assertIsInstance(content, SafeText) + self.assertInHTML(content, """ +
View form on site
+
Filter entries
+
View all entries
+
Export all entries
+ """)