from django.views.generic.dates import YearArchiveView, MonthArchiveView
from django.views.generic.detail import DetailView

from utils.views import PaginatedListView

from notes.models import Note


class NoteList(PaginatedListView):
    """
    Return a list of Notes in reverse chronological order
    """
    queryset = Note.objects.all().order_by('-pub_date')
    template_name = "archives/notes.html"


class NoteDetailView(DetailView):
    model = Note
    template_name = "details/note.html"
    slug_field = "slug"


class NoteDetailViewTXT(NoteDetailView):
    template_name = "details/entry.txt"


class NoteYearArchiveView(YearArchiveView):
    queryset = Note.objects.all()
    date_field = "pub_date"
    make_object_list = True
    allow_future = True
    template_name = "archives/notes_date.html"


class NoteMonthArchiveView(MonthArchiveView):
    queryset = Note.objects.all()
    date_field = "pub_date"
    allow_future = True
    template_name = "archives/notes_date.html"