Skip to content

Commit 6415c5c

Browse files
committed
Fix get_view_url() for {% get_translated_url %} in category listing
The category was not properly translated.
1 parent f10f293 commit 6415c5c

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

fluent_blogs/views/entries.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ def get_view_url(self):
7979
view_url_name = self.view_url_name
8080

8181
# Make sure the slug is replaced with a translated version of the current language.
82-
kwargs = self.kwargs
82+
kwargs = self._get_translated_kwargs(self.kwargs)
83+
return mixed_reverse(
84+
view_url_name, args=self.args, kwargs=kwargs, current_page=self.get_current_page()
85+
)
86+
87+
def _get_translated_kwargs(self, kwargs):
8388
if (
8489
hasattr(self, "object")
8590
and isinstance(self.object, TranslatableModel)
@@ -88,10 +93,7 @@ def get_view_url(self):
8893
kwargs = kwargs.copy()
8994
with switch_language(self.object, translation.get_language()):
9095
kwargs[self.slug_url_kwarg] = getattr(self.object, self.slug_field)
91-
92-
return mixed_reverse(
93-
view_url_name, args=self.args, kwargs=kwargs, current_page=self.get_current_page()
94-
)
96+
return kwargs
9597

9698

9799
class BaseArchiveMixin(BaseBlogMixin):
@@ -245,6 +247,16 @@ def get_category(self, slug):
245247
except ObjectDoesNotExist as e:
246248
raise Http404(str(e))
247249

250+
def _get_translated_kwargs(self, kwargs):
251+
# ListView does not combine with SingleObjectMixin logic.
252+
# Hence, this variation needs custom handling for get_view_url()
253+
if isinstance(self.category, TranslatableModel):
254+
kwargs = kwargs.copy()
255+
with switch_language(self.category, translation.get_language()):
256+
kwargs['slug'] = self.category.slug
257+
258+
return kwargs
259+
248260

249261
class EntryAuthorArchive(BaseArchiveMixin, ArchiveIndexView):
250262
"""

0 commit comments

Comments
 (0)