From bf084c2085734f4c4a98a0337bfb8835287ab3b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9DNyymix=E2=80=9D?= Date: Sun, 4 May 2025 20:19:32 +0300 Subject: [PATCH] Update Canonical_url --- gallery/models/photo.py | 3 ++ .../templates/gallery/photo_slideshow.html | 3 ++ gallery/views/album.py | 32 +++++++++++++------ gallery/views/photo.py | 29 +++++++++++------ 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/gallery/models/photo.py b/gallery/models/photo.py index 9c34cce..4db757b 100644 --- a/gallery/models/photo.py +++ b/gallery/models/photo.py @@ -66,6 +66,9 @@ class Photo(models.Model): def get_absolute_url(self): return reverse('gallery:photo_url', kwargs={'album_slug': self.album.slug, 'photo_slug': self.slug}) + def get_slideshow_url(self): + return reverse('gallery:photo_slideshow_url', kwargs={'album_slug': self.album.slug, 'photo_slug': self.slug}) + class Meta: unique_together = ('album', "slug") verbose_name_plural = "Photos" diff --git a/gallery/templates/gallery/photo_slideshow.html b/gallery/templates/gallery/photo_slideshow.html index b967909..3797e82 100644 --- a/gallery/templates/gallery/photo_slideshow.html +++ b/gallery/templates/gallery/photo_slideshow.html @@ -7,6 +7,9 @@ {% trans "Slideshow" %} : {{ photo.album.name }} - {% trans "Gallery" %} + {% if canonical_url %} + + {% endif %} {% if next_photo %} {% endif %} diff --git a/gallery/views/album.py b/gallery/views/album.py index 8cbca2e..fcb09ce 100644 --- a/gallery/views/album.py +++ b/gallery/views/album.py @@ -38,14 +38,17 @@ class AlbumsList(ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - page = int(self.request.GET.get('page', 1)) # Canonical_url - canonical_url = self.request.build_absolute_uri(reverse('gallery:albums_url')) - if page > 1: - canonical_url += f'?page={page}' - context['canonical_url'] = canonical_url + page = self.request.GET.get('page') + if page and page != '1': + canonical_url = f"{self.request.build_absolute_uri(reverse('gallery:albums_url'))}?page={page}" + else: + canonical_url = self.request.build_absolute_uri(reverse('gallery:albums_url')) + context.update({ + 'canonical_url': canonical_url, + }) return context @@ -66,10 +69,11 @@ class AlbumDetail(DetailView): page_obj = paginator.get_page(self.request.GET.get('page')) # Canonical_url - page = int(self.request.GET.get('page', 1)) - canonical_url = self.request.build_absolute_uri(self.object.get_absolute_url()) - if page > 1: - canonical_url += f'?page={page}' + page = self.request.GET.get('page') + if page and page != '1': + canonical_url = f"{self.request.build_absolute_uri(self.object.get_absolute_url())}?page={page}" + else: + canonical_url = self.request.build_absolute_uri(self.object.get_absolute_url()) context.update({ 'photos': page_obj.object_list, @@ -100,11 +104,19 @@ class AlbumSearch(TemplateView): paginator = Paginator(results, 30) page_obj = paginator.get_page(self.request.GET.get('page')) + # Canonical URL + page = self.request.GET.get('page') + base_url = self.request.build_absolute_uri(reverse('gallery:search_url')) + if page and page != '1': + canonical_url = f"{base_url}?page={page}" + else: + canonical_url = base_url + context.update({ 'results': page_obj.object_list, 'page_obj': page_obj, 'paginator': paginator, 'is_paginated': page_obj.has_other_pages(), - 'canonical_url': self.request.build_absolute_uri(reverse('gallery:search_url')) + 'canonical_url': canonical_url }) return context diff --git a/gallery/views/photo.py b/gallery/views/photo.py index c431e3a..0beeacf 100644 --- a/gallery/views/photo.py +++ b/gallery/views/photo.py @@ -29,8 +29,18 @@ class PhotosList(ListView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context['order'] = self.request.GET.get('order', 'latest') - context['canonical_url'] = self.request.build_absolute_uri(reverse('gallery:photos_url')) + + # Canonical_url + page = self.request.GET.get('page') + if page and page != '1': + canonical_url = f"{self.request.build_absolute_uri(reverse('gallery:photos_url'))}?page={page}" + else: + canonical_url = self.request.build_absolute_uri(reverse('gallery:photos_url')) + + context.update({ + 'order': self.request.GET.get('order', 'latest'), + 'canonical_url': canonical_url, + }) return context @@ -54,10 +64,10 @@ class PhotoDetail(DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({ - "next": self.object.get_next(), - "prev": self.object.get_prev(), - "canonical_url": self.request.build_absolute_uri(self.object.get_absolute_url()), - "liked": self.request.session.get(f"liked_{self.object.slug}", False) + 'next': self.object.get_next(), + 'prev': self.object.get_prev(), + 'canonical_url': self.request.build_absolute_uri(self.object.get_absolute_url()), + 'liked': self.request.session.get(f"liked_{self.object.slug}", False) }) return context @@ -114,14 +124,15 @@ class PhotoSlideshow(DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) current_photo = self.object - next_photo = current_photo.get_next() if not next_photo: next_photo = Photo.objects.filter(album=current_photo.album).order_by('taken_at').first() context.update({ - "next_photo": next_photo, - "liked": self.request.session.get(f"liked_{current_photo.slug}", False) + 'next_photo': next_photo, + 'liked': self.request.session.get(f"liked_{current_photo.slug}", False), + 'canonical_url': self.request.build_absolute_uri(current_photo.get_slideshow_url()), }) + return context