Add function to build canonical url

This commit is contained in:
Nyymix 2025-08-05 20:40:03 +03:00
parent e8d73b9909
commit b59377471a
6 changed files with 87 additions and 41 deletions

View file

@ -3,13 +3,14 @@ from django.core.cache import cache
from django.core.paginator import Paginator
from django.db.models import Count, F, Q, Sum
from django.http import JsonResponse
from django.shortcuts import get_object_or_404, redirect
from django.shortcuts import get_object_or_404
from django.urls import reverse
from django.views import View
from django.views.generic import DetailView, ListView, TemplateView
from config.cache_durations import *
from gallery.cache import cached_or_set
from gallery.utils import build_canonical_url
from ..models import Album, Photo, Redir
@ -45,11 +46,11 @@ class AlbumsList(ListView):
context = super().get_context_data(**kwargs)
page_obj = context.get('page_obj')
page = self.request.GET.get('page')
if page_obj.number > 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'))
canonical_url = build_canonical_url(
self.request,
reverse('gallery:albums_url'),
params={'page': page_obj.number}
)
context.update({
'canonical_url': canonical_url,
@ -75,10 +76,11 @@ class AlbumDetail(DetailView):
page_obj = paginator.get_page(self.request.GET.get('page'))
# Canonical_url
if page_obj.number > 1:
canonical_url = f"{self.request.build_absolute_uri(self.object.get_absolute_url())}?page={page_obj.number}"
else:
canonical_url = self.request.build_absolute_uri(self.object.get_absolute_url())
canonical_url = build_canonical_url(
self.request,
self.object.get_absolute_url(),
params={'page': page_obj.number}
)
context.update({
'photos': page_obj.object_list,
@ -110,12 +112,11 @@ class AlbumSearch(TemplateView):
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_obj.number > 1:
canonical_url = f"{base_url}?page={page}"
else:
canonical_url = base_url
canonical_url = build_canonical_url(
self.request,
reverse('gallery:search_url'),
params={'page': page_obj.number, 'q': query}
)
context.update({
'results': page_obj.object_list,
@ -124,4 +125,5 @@ class AlbumSearch(TemplateView):
'is_paginated': page_obj.has_other_pages(),
'canonical_url': canonical_url
})
return context