Redirect to page edit view when submitting for a single locale

When an editor decides to submit a page for translation and only chooses
one locale, they are redirected to the new translated page's edit view.
pull/7933/head
Mitchel Cabuloy 2022-02-09 16:36:07 +08:00 zatwierdzone przez LB (Ben Johnston)
rodzic e0f9e802de
commit 11ecb3bb4f
2 zmienionych plików z 55 dodań i 11 usunięć
wagtail/contrib/simple_translation

Wyświetl plik

@ -167,15 +167,17 @@ class TestSubmitPageTranslationView(WagtailTestUtils, TestCase):
de = Locale.objects.get(language_code="de").id
data = {"locales": [de], "include_subtree": True}
self.login()
response = self.client.post(url, data)
response = self.client.post(url, data, follow=True)
assert response.status_code == 302
assert response.url == f"/admin/pages/{self.en_blog_index.get_parent().id}/"
translated_page = self.en_blog_index.get_translation(de)
self.assertRedirects(
response, reverse("wagtailadmin_pages:edit", args=[translated_page.pk])
)
response = self.client.get(response.url) # follow the redirect
assert [msg.message for msg in response.context["messages"]] == [
"The page 'Blog' was successfully created in German"
]
self.assertIn(
"The page 'Blog' was successfully created in German",
[msg.message for msg in response.context["messages"]],
)
def test_submit_page_translation_view_test_post_multiple_locales(self):
# Needs an extra page to hit recursive function
@ -262,6 +264,27 @@ class TestSubmitSnippetTranslationView(WagtailTestUtils, TestCase):
view.get_success_url(), "/admin/snippets/some_app/some_model/edit/99/"
)
def test_get_success_url_for_single_locale(self):
view = SubmitSnippetTranslationView()
view.object = self.en_snippet
view.kwargs = {
"app_label": "some_app",
"model_name": "some_model",
"pk": 99,
}
self.assertEqual(
view.get_success_url(view.object),
reverse(
"wagtailsnippets:edit",
args=[
"some_app",
"some_model",
view.object.pk,
],
),
)
def test_get_success_message(self):
view = SubmitSnippetTranslationView()
view.object = self.en_snippet

Wyświetl plik

@ -32,7 +32,7 @@ class SubmitTranslationView(SingleObjectMixin, TemplateView):
return SubmitTranslationForm(self.object, self.request.POST)
return SubmitTranslationForm(self.object)
def get_success_url(self):
def get_success_url(self, translated_object=None):
raise NotImplementedError
def get_context_data(self, **kwargs):
@ -67,15 +67,19 @@ class SubmitTranslationView(SingleObjectMixin, TemplateView):
locale
).save() # pragma: no cover
single_translated_object = None
if len(form.cleaned_data["locales"]) == 1:
locales = form.cleaned_data["locales"][0].get_display_name()
single_translated_object = self.object.get_translation(
form.cleaned_data["locales"][0]
)
else:
# Note: always plural
locales = _("{} locales").format(len(form.cleaned_data["locales"]))
messages.success(self.request, self.get_success_message(locales))
return redirect(self.get_success_url())
return redirect(self.get_success_url(single_translated_object))
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
@ -103,7 +107,12 @@ class SubmitPageTranslationView(SubmitTranslationView):
return page
def get_success_url(self):
def get_success_url(self, translated_page=None):
if translated_page:
# If the editor chose a single locale to translate to, redirect to
# the newly translated page's edit view.
return reverse("wagtailadmin_pages:edit", args=[translated_page.id])
return reverse("wagtailadmin_explore", args=[self.get_object().get_parent().id])
def get_success_message(self, locales):
@ -128,7 +137,19 @@ class SubmitSnippetTranslationView(SubmitTranslationView):
return get_object_or_404(model, pk=unquote(self.kwargs["pk"]))
def get_success_url(self):
def get_success_url(self, translated_snippet=None):
if translated_snippet:
# If the editor chose a single locale to translate to, redirect to
# the newly translated snippet's edit view.
return reverse(
"wagtailsnippets:edit",
args=[
self.kwargs["app_label"],
self.kwargs["model_name"],
translated_snippet.pk,
],
)
return reverse(
"wagtailsnippets:edit",
args=[