from django.contrib.sitemaps import Sitemap
from django.urls import reverse
from django.utils import timezone
from news.models import Article
from events.models import Event
from publications.models import Publication

class StaticViewSitemap(Sitemap):
    priority = 0.5
    changefreq = 'daily'

    def items(self):
        return ['home', 'about:about', 'programs', 'volunteer', 'membership:membership', 
                'contact:contact', 'faq', 'donate:donate', 'publications:publication_list']

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

class NewsSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.6

    def items(self):
        return Article.objects.filter(status='published')

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

class EventSitemap(Sitemap):
    changefreq = "weekly"
    priority = 0.6

    def items(self):
        # Return future events
        return Event.objects.filter(date__gte=timezone.now().date())

class PublicationSitemap(Sitemap):
    changefreq = "monthly"
    priority = 0.7

    def items(self):
        return Publication.objects.filter(status='active')

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

    def location(self, obj):
        return reverse('publications:publication_detail', args=[obj.slug])