from django.contrib.sitemaps import Sitemap
from django.urls import reverse

from apps.editorial.models import Annonce, Article
from apps.taxonomy.models import Category

from .models import Page


class ArticleSitemap(Sitemap):
    changefreq = "daily"
    priority = 0.8
    limit = 5000

    def items(self):
        return Article.objects.published().only("slug", "updated_at")

    def lastmod(self, obj):
        return obj.updated_at


class AnnonceSitemap(ArticleSitemap):
    priority = 0.5

    def items(self):
        return Annonce.objects.published().only("slug", "updated_at")


class CategorySitemap(Sitemap):
    changefreq = "daily"
    priority = 0.6

    def items(self):
        return Category.objects.all()


class StaticSitemap(Sitemap):
    priority = 0.5

    def items(self):
        return ["public:home", "public:articles", "public:annonces", "public:services", "public:contact"]

    def location(self, item):
        return reverse(item)


class PageSitemap(Sitemap):
    priority = 0.3

    def items(self):
        return Page.objects.filter(est_publiee=True)

    def lastmod(self, obj):
        return obj.updated_at


SITEMAPS = {
    "static": StaticSitemap,
    "articles": ArticleSitemap,
    "annonces": AnnonceSitemap,
    "rubriques": CategorySitemap,
    "pages": PageSitemap,
}
