from django.contrib.sitemaps import Sitemap from django.urls import reverse from blog.models import Article from .models import Solution, Competence, Recall class HttpsSitemap(Sitemap): """Base class that forces https on all sitemap URLs.""" protocol = 'https' class StaticViewSitemap(HttpsSitemap): priority = 1.0 changefreq = 'monthly' def items(self): return ['home', 'about', 'solution', 'blog:article_list', 'recall'] def location(self, item): return reverse(item) class SolutionSitemap(HttpsSitemap): changefreq = 'weekly' priority = 0.9 def items(self): return Solution.objects.filter(is_published=True) def lastmod(self, obj): return obj.time_update class CompetenceSitemap(HttpsSitemap): changefreq = 'monthly' priority = 0.8 def items(self): return Competence.objects.filter(is_published=True) def lastmod(self, obj): return obj.time_update class RecallSitemap(HttpsSitemap): changefreq = 'monthly' priority = 0.7 def items(self): return Recall.objects.filter(is_published=True) def lastmod(self, obj): return obj.time_update class BlogSitemap(HttpsSitemap): changefreq = 'weekly' priority = 0.9 def items(self): return Article.objects.filter(is_published=True).select_related('category') def lastmod(self, obj): return obj.time_update # Упрощаем sitemaps - убираем HomeSitemap если он дублирует главную sitemaps = { 'static': StaticViewSitemap, 'solutions': SolutionSitemap, 'blog': BlogSitemap, # 'competence': CompetenceSitemap, 'recall': RecallSitemap, }