Skip to content
This repository has been archived by the owner on Sep 3, 2019. It is now read-only.

Commit

Permalink
Working on the week views.
Browse files Browse the repository at this point in the history
  • Loading branch information
myles committed Jan 21, 2013
1 parent bd64ce7 commit c955e82
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 1 deletion.
4 changes: 4 additions & 0 deletions blog/managers.py
Expand Up @@ -45,6 +45,10 @@ def archive_month(self, date, **kwargs):
"""Returns a list of blog posts for a given month."""
return self.public(published__month=date.month, published__year=date.year)

def archive_week(self, first_day, last_day, **kwargs):
"""Returns a list of blog post for a given week."""
return self.public(published__gte=first_day, published__lt=last_day)

def archive_day(self, date, **kwargs):
"""Returns a list of blog posts for a given day."""
return self.public(published__day=date.day, published__month=date.month, published__year=date.year)
Expand Down
13 changes: 13 additions & 0 deletions blog/templates/blog/archive/week.html
@@ -0,0 +1,13 @@
{% extends "blog/base_blog_archive.html" %}

{% block title %}{{ block.super }}: Blog Archive for {{ this_week|date:"Y" }} week {{ this_week|date:"W" }}{% endblock %}

{% block content_title %}
<h2>Blog Archive for {{ this_week|date:"Y" }} week {{ this_week|date:"W" }}</h2>
{% endblock %}

{% block content %}
<div id="blog_posts">
{% for post in post_list %}{% include "blog/_post.html" %}{% endfor %}
</div>
{% endblock %}
8 changes: 8 additions & 0 deletions blog/urls.py
Expand Up @@ -19,6 +19,14 @@
view = views.BlogPostMonthArchiveView.as_view(),
name = 'blog_archive_month',
),
url(r'^(?P<year>\d{4})/(?P<week>\w{1,2})/(?P<weekday>[a-z]{3})/$',
view = views.BlogPostWeekDayArchiveView.as_view(),
name = 'blog_archvie_weekday',
),
url(r'^(?P<year>\d{4})/(?P<week>\w{1,2})/$',
view = views.BlogPostWeekArchiveView.as_view(),
name = 'blog_archvie_week',
),
url(r'^(?P<year>\d{4})/$',
view = views.BlogPostYearArchiveView.as_view(),
name = 'blog_archive_year',
Expand Down
4 changes: 3 additions & 1 deletion blog/views/__init__.py
Expand Up @@ -5,7 +5,7 @@
from blog.models import Post
from blog.settings import BLOG_PAGINATE_BY
from blog.views.category import BlogCategoryDetailView, BlogCategoryListView
from blog.views.archive import BlogPostYearArchiveView, BlogPostMonthArchiveView, BlogPostDayArchiveView, BlogPostUpdatedArchiveView, BlogPostArchiveView
from blog.views.archive import BlogPostYearArchiveView, BlogPostMonthArchiveView, BlogPostWeekArchiveView, BlogPostWeekDayArchiveView, BlogPostDayArchiveView, BlogPostUpdatedArchiveView, BlogPostArchiveView
from blog.views.search import BlogPostSearchFormListView

__all__ = [
Expand All @@ -15,6 +15,8 @@
'BlogCategoryDetailView',
'BlogPostYearArchiveView',
'BlogPostMonthArchiveView',
'BlogPostWeekArchiveView',
'BlogPostWeekDayArchiveView',
'BlogPostDayArchiveView',
'BlogPostUpdatedArchiveView',
'BlogPostArchiveView',
Expand Down
44 changes: 44 additions & 0 deletions blog/views/archive.py
Expand Up @@ -63,6 +63,50 @@ def get_queryset(self):

return Post.objects.archive_month(self.this_month).select_related()

class BlogPostWeekArchiveView(ListView):

context_object_name = "post_list"
template_name = "blog/archive/week.html"
paginate_by = BLOG_PAGINATE_BY

def get_context_data(self, **kwargs):
context = super(BlogPostWeekArchiveView, self).get_context_data(**kwargs)
context['this_week'] = self.this_week
context['next_week'] = self.this_week + datetime.timedelta(days=8)
context['prev_week'] = self.this_week - datetime.timedelta(days=-8)
return context

def get_queryset(self):
try:
tt = time.strptime(self.kwargs['year']+'-0-'+self.kwargs['week'], '%Y-%W-%U')
self.this_week = datetime.date(*tt[:3])
except ValueError:
raise Http404

first_day = self.this_week
last_day = first_day + datetime.timedelta(days=7)

return Post.objects.archive_week(first_day, last_day).select_related()

class BlogPostWeekDayArchiveView(ListView):

context_object_name = "post_list"
template_name = "blog/archive/day.html"
paginate_by = BLOG_PAGINATE_BY

def get_context_data(self, **kwargs):
context = super(BlogPostWeekDayArchiveView, self).get_context_data(**kwargs)

return context

def get_queryset(self):
try:
self.this_day = datetime.date(*time.strptime("%s-%s-%s" % (self.kwargs['year'], self.kwargs['week'], self.kwargs['weekday']), '%Y-%U-%a')[:3])
except ValueError:
raise Http404

return Post.objects.archive_day(self.this_day).select_related()

class BlogPostDayArchiveView(ListView):
context_object_name = "post_list"
template_name = "blog/archive/day.html"
Expand Down

0 comments on commit c955e82

Please sign in to comment.