"""To geneate a Sitemap with all events."""
from datetime import date

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

from events.models import Event
from kasu.sitemaps import GenericSitemap
from .models import SeasonRanking


class EventRankingSitemap(GenericSitemap):
    @staticmethod
    def items():
        """add all upcoming and archived events to the sitemap."""
        return Event.objects.all().exclude(eventranking=None)

    @staticmethod
    def location(event):
        return reverse('event-ranking', kwargs={'event': event.id})


class EventHanchanSitemap(GenericSitemap):
    @staticmethod
    def items():
        """add all upcoming and archived events to the sitemap."""
        return Event.objects.all().exclude(eventranking=None)

    @staticmethod
    def location(event):
        return reverse('event-hanchan-list', kwargs={'event': event.id})


class MajongSeasonSitemap(Sitemap):
    priority = 0.5

    @staticmethod
    def items():
        seasons = SeasonRanking.objects.all().distinct('season').order_by(
            'season')
        seasons = seasons.values_list('season', flat=True)
        return seasons

    @staticmethod
    def location(season):
        return reverse('mahjong-ladder', kwargs={'season': season})

    @staticmethod
    def changefreq(season):
        if season == date.today().year:
            return 'weekly'
        else:
            return 'never'
