kopia lustrzana https://github.com/wagtail/wagtail
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
rodzic
e0f9e802de
commit
11ecb3bb4f
wagtail/contrib/simple_translation
|
@ -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
|
||||
|
|
|
@ -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=[
|
||||
|
|
Ładowanie…
Reference in New Issue