--- /dev/null
+{% extends "note_base.html" %}
+
+{% block title %}Archive – Notes{% endblock %}
+
+{% block content %}
+<h2>Archive</h2>
+
+{% if years %}
+<ul>
+ {% for year in years %}
+ <li><a href="{{ year }}/">{{ year }}</a></li>
+ {% endfor %}
+</ul>
+{% else %}
+<p>No notes</p>
+{% endif %}
+{% endblock %}
\ No newline at end of file
path('', views.note_list, name='note_list'),
re_path('^notes/?$', views.note_redirect, name='note_redirect'),
path('notes/<slug:note_slug>', views.note_detail, name='note_detail'),
+ path('archive/', views.archive_main, name='archive_main'),
+ path('archive/<int:archive_year>/', views.archive_year, name='archive_year'),
+ path('archive/<int:archive_year>/<int:archive_month>/', views.archive_month, name='archive_month'),
]
\ No newline at end of file
from django.shortcuts import render, get_object_or_404, redirect
from django.core.paginator import Paginator
+from django.db.models.functions import ExtractYear
from pcdenotes.settings import NOTES_PER_PAGE
from .models import Note
def note_detail(request, note_slug):
note = get_object_or_404(Note, slug=note_slug) if request.user.is_staff else get_object_or_404(Note, slug=note_slug, status=1)
- return render(request, 'note_detail.html', {'note': note})
\ No newline at end of file
+ return render(request, 'note_detail.html', {'note': note})
+
+def archive_main(request):
+ notes_years = Note.objects.all().annotate(created_year=ExtractYear('created_at')).values_list('created_year', flat=True).distinct().order_by('created_year')
+ return render(request, 'archive_main.html', {'years': notes_years})
+
+def archive_year(request, archive_year):
+ return render(request, 'archive_year.html', {'year': archive_year})
+
+def archive_month(request, archive_year, archive_month):
+ return render(request, 'archive_month.html', {'year': archive_year, 'month': archive_month})
\ No newline at end of file