Refactor email/external link chooser views (no functional changes)

pull/2474/merge
Matt Westcott 2016-09-29 12:55:48 +01:00
rodzic f45181764b
commit 239145290f
3 zmienionych plików z 36 dodań i 26 usunięć

Wyświetl plik

@ -1,7 +1,4 @@
function(modal) {
modal.respond('pageChosen', {
'url': '{{ url|escapejs }}',
'title': '{{ link_text|escapejs }}'
});
modal.respond('pageChosen', {{ result_json|safe }});
modal.close();
}

Wyświetl plik

@ -319,15 +319,15 @@ class TestChooserExternalLink(TestCase, WagtailTestUtils):
response = self.post({'url': 'http://www.example.com/', 'link_text': 'example'})
self.assertEqual(response.status_code, 200)
self.assertContains(response, "'onload'") # indicates success / post back to calling page
self.assertContains(response, "'url': 'http://www.example.com/'")
self.assertContains(response, "'title': 'example'") # When link text is given, it is used
self.assertContains(response, '"url": "http://www.example.com/"')
self.assertContains(response, '"title": "example"') # When link text is given, it is used
def test_create_link_without_text(self):
response = self.post({'url': 'http://www.example.com/'})
self.assertEqual(response.status_code, 200)
self.assertContains(response, "'onload'") # indicates success / post back to calling page
self.assertContains(response, "'url': 'http://www.example.com/'")
self.assertContains(response, "'title': 'http://www.example.com/'") # When no text is given, it uses the url
self.assertContains(response, '"url": "http://www.example.com/"')
self.assertContains(response, '"title": "http://www.example.com/"') # When no text is given, it uses the url
def test_invalid_url(self):
response = self.post({'url': 'ntp://www.example.com', 'link_text': 'example'})
@ -339,8 +339,8 @@ class TestChooserExternalLink(TestCase, WagtailTestUtils):
response = self.post({'url': '/admin/', 'link_text': 'admin'})
self.assertEqual(response.status_code, 200)
self.assertContains(response, "'onload'") # indicates success / post back to calling page
self.assertContains(response, "'url': '/admin/',")
self.assertContains(response, "'title': 'admin'")
self.assertContains(response, '"url": "/admin/"')
self.assertContains(response, '"title": "admin"')
class TestChooserEmailLink(TestCase, WagtailTestUtils):
@ -363,10 +363,10 @@ class TestChooserEmailLink(TestCase, WagtailTestUtils):
def test_create_link(self):
request = self.post({'email_address': 'example@example.com', 'link_text': 'contact'})
self.assertContains(request, "'url': 'mailto:example@example.com',")
self.assertContains(request, "'title': 'contact'") # When link text is given, it is used
self.assertContains(request, '"url": "mailto:example@example.com"')
self.assertContains(request, '"title": "contact"') # When link text is given, it is used
def test_create_link_without_text(self):
request = self.post({'email_address': 'example@example.com'})
self.assertContains(request, "'url': 'mailto:example@example.com',")
self.assertContains(request, "'title': 'example@example.com'") # When no link text is given, it uses the email
self.assertContains(request, '"url": "mailto:example@example.com"')
self.assertContains(request, '"title": "example@example.com"') # When no link text is given, it uses the email

Wyświetl plik

@ -1,5 +1,7 @@
from __future__ import absolute_import, unicode_literals
import json
from django.http import Http404
from django.shortcuts import get_object_or_404, render
@ -149,23 +151,29 @@ def search(request, parent_page_id=None):
def external_link(request):
link_text = request.GET.get('link_text', '')
link_url = request.GET.get('link_url', '')
initial_data = {
'url': request.GET.get('link_url', ''),
'link_text': request.GET.get('link_text', ''),
}
if request.method == 'POST':
form = ExternalLinkChooserForm(request.POST)
form = ExternalLinkChooserForm(request.POST, initial=initial_data)
if form.is_valid():
result = {
'url': form.cleaned_data['url'],
'title': form.cleaned_data['link_text'].strip() or form.cleaned_data['url'],
}
return render_modal_workflow(
request,
None, 'wagtailadmin/chooser/external_link_chosen.js',
{
'url': form.cleaned_data['url'],
'link_text': form.cleaned_data['link_text'].strip() or form.cleaned_data['url']
'result_json': json.dumps(result),
}
)
else:
form = ExternalLinkChooserForm(initial={'url': link_url, 'link_text': link_text})
form = ExternalLinkChooserForm(initial=initial_data)
return render_modal_workflow(
request,
@ -177,23 +185,28 @@ def external_link(request):
def email_link(request):
link_text = request.GET.get('link_text', '')
link_url = request.GET.get('link_url', '')
initial_data = {
'link_text': request.GET.get('link_text', ''),
'email_address': request.GET.get('link_url', ''),
}
if request.method == 'POST':
form = EmailLinkChooserForm(request.POST)
form = EmailLinkChooserForm(request.POST, initial=initial_data)
if form.is_valid():
result = {
'url': 'mailto:' + form.cleaned_data['email_address'],
'title': form.cleaned_data['link_text'].strip() or form.cleaned_data['email_address'],
}
return render_modal_workflow(
request,
None, 'wagtailadmin/chooser/external_link_chosen.js',
{
'url': 'mailto:' + form.cleaned_data['email_address'],
'link_text': form.cleaned_data['link_text'].strip() or form.cleaned_data['email_address']
'result_json': json.dumps(result),
}
)
else:
form = EmailLinkChooserForm(initial={'email_address': link_url, 'link_text': link_text})
form = EmailLinkChooserForm(initial=initial_data)
return render_modal_workflow(
request,