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