diff --git a/blog/urls.py b/blog/urls.py index e008755..c93531e 100644 --- a/blog/urls.py +++ b/blog/urls.py @@ -2,11 +2,13 @@ from django.conf.urls import patterns, url from blog import views urlpatterns = patterns('', - url(r'^$', views.index, name='index'), - url(r'^page/(?P\d+)$', views.indexpage, name='indexpage'), - url(r'^tag/(?P[^/]+)$', views.taglist, name='taglist'), - url(r'^tag/(?P[^/]+)/page/(?P\d+)$', views.tagpage, name='tagpage'), - url(r'^(?P\d+)/(?P\d+)/(?P\d+)/(?P[^/]+)$', views.read, name='read'), - url(r'^code-chunk/(?P[^/]+)/(?P[^/]+)$', views.codechunk, name='codechunk'), - url(r'^feed$', views.feed, name='feed'), + url(r'^$', views.index, name = 'index'), + url(r'^page/(?P\d+)$', views.indexpage, name = 'indexpage'), + url(r'^tag/(?P[^/]+)$', views.taglist, name = 'taglist'), + url(r'^tag/(?P[^/]+)/page/(?P\d+)$', views.tagpage, name = 'tagpage'), + url(r'^(?P\d+)/(?P\d+)/(?P\d+)/?$', views.datelist, name = 'datelist'), + url(r'^(?P\d+)/(?P\d+)/(?P\d+)/page/(?P\d+)$', views.datepage, name = 'datepage'), + url(r'^(?P\d+)/(?P\d+)/(?P\d+)/(?P[^/]+)$', views.read, name = 'read'), + url(r'^code-chunk/(?P[^/]+)/(?P[^/]+)$', views.codechunk, name = 'codechunk'), + url(r'^feed$', views.feed, name = 'feed'), ) diff --git a/blog/views.py b/blog/views.py index 19d4885..a24e508 100644 --- a/blog/views.py +++ b/blog/views.py @@ -7,14 +7,27 @@ def mainpage(request): last_posts = Post.objects.filter(draft = False).order_by('-created_at')[:5] return render(request, 'blog/listing.html', {'posts': last_posts}) -def listing(request, tag, page): +def listing(request, tag, year, month, day, page): + kwargs = {} + kwargs['draft'] = False + + view = index if (tag == None): - post_list = Post.objects.filter(draft = False) view = "index" else: - post_list = Post.objects.filter(tags__slug = tag, draft = False) - view = "tag" + kwargs['tags__slug'] = tag + view = "tagpage" + if (year != None): + kwargs['created_at__year'] = year + + if (month != None): + kwargs['created_at__month'] = month + + if (day != None): + kwargs['created_at__day'] = day + + post_list = Post.objects.filter(**kwargs) paginator = Paginator(post_list.order_by('-created_at'), 10) try: @@ -27,16 +40,22 @@ def listing(request, tag, page): return render(request, 'blog/listing.html', { 'posts': posts, 'view': "blog:" + view }) def index(request): - return listing(request, None, 1) + return listing(request, None, None, None, None, 1) def indexpage(request, page): - return listing(request, None, page) + return listing(request, None, None, None, None, page) def taglist(request, tag): - return listing(request, tag, 1) + return listing(request, tag, None, None, None, 1) def tagpage(request, tag, page): - return listing(request, tag, page) + return listing(request, tag, None, None, None, page) + +def datelist(request, year, month, day): + return listing(request, None, year, month, day, 1) + +def datepage(request, year, month, day, page): + return listing(request, None, year, month, day, page) def read(request, year, month, day, slug): post = get_object_or_404(Post, created_at__year=int(year), created_at__month=int(month), created_at__day=int(day), slug=slug, draft=False)