#
# Further reading:
# Template builtins: http://docs.djangoproject.com/en/1.1/ref/templates/builtins/
# Generic view reference: http://docs.djangoproject.com/en/1.1/ref/generic-views/
#


#### entries/urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('yabl.entries.views',
    url(r'^$',         'index'),
    url(r'^past/',     'past'),
    url(r'^future/',   'future'),

    url('^(\d{4})/$',           'year'),    # 2009/
    url('^(\d{4})/(\d{2})/$',   'month'),   # 2009/04

    url(r'^([\w-]+)/', 'detail', name="entry_detail"),
)

#### entries/views.py

import datetime
from django.shortcuts import render_to_response, get_object_or_404
from yabl.entries.models import Entry
from django.views.generic import date_based

def year(request, year):
    return date_based.archive_year(request,
        year = year,
        queryset = Entry.objects.all(),
        date_field = 'pub_date',
        template_name = 'entries/year.html',
        allow_empty = True,
    )

def month(request, year, month):
    return date_based.archive_month(request,
        year = year,
        month = month,
        queryset = Entry.objects.all(),
        date_field = 'pub_date',
        template_name = 'entries/month.html',
        allow_empty = True,
        month_format = "%m",
    )

def index(request):
    return render_to_response('entries/index.html', {
        'entries': Entry.objects.all(),
        'title': 'Entry list',
    })
    
def detail(request, slug):
    return render_to_response('entries/detail.html', {
        'entry': get_object_or_404(Entry, slug=slug),
    })
    
def future(request):
    return render_to_response('entries/index.html', {
        'entries': Entry.objects.future(),
        'title': 'Future entries',
    })
    
def past(request):
    return render_to_response('entries/index.html', {
        'entries': Entry.objects.past(),
        'title': 'Past entries',
    })
    
##### templates/entries/year.html

{% extends "base.html" %}

{% block title %}{{ year }} archive | {{ block.super }}{% endblock %}

{% block content %}
  {% for d in date_list %}
    <li>{{ d|date:"F" }}</li>
  {% endfor %}
{% endblock content %}

#### templates/entries/month.html

{% extends "base.html" %}

{% block title %}{{ month }} archive | {{ block.super }}{% endblock %}

{% block content %}
  <ul>
  {% for o in object_list %}
    <li>{{ o }}</li>
  {% endfor %}
  </ul>
  
  <a href="/entries/{{ previous_month.year }}/{{ previous_month|date:"m" }}/">prev</a>
  {% if next_month %}
    <a href="/entries/{{ next_month.year }}/{{ next_month|date:"m" }}/">next</a>
  {% endif %}
  
{% endblock content %}