summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-11-23 01:46:48 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-11-23 01:46:48 +0000
commit2efb4757af8c6d6a757779e68671c1455dde95b6 (patch)
treeae12750e96967241a5edb9cfe65f764c556c3ccd
parent3498849532151f618ff36eea4bd315de6f500687 (diff)
Fixed #14752 -- Corrected date parsing in WeekArchiveView when using %W as a week format. Thanks to msundstr for the report and patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14684 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/views/generic/dates.py9
-rw-r--r--tests/regressiontests/generic_views/dates.py11
-rw-r--r--tests/regressiontests/generic_views/tests.py2
-rw-r--r--tests/regressiontests/generic_views/urls.py2
4 files changed, 20 insertions, 4 deletions
diff --git a/django/views/generic/dates.py b/django/views/generic/dates.py
index cbc7bfc065..8c95249593 100644
--- a/django/views/generic/dates.py
+++ b/django/views/generic/dates.py
@@ -348,9 +348,14 @@ class BaseWeekArchiveView(YearMixin, WeekMixin, BaseDateListView):
week = self.get_week()
date_field = self.get_date_field()
+ week_format = self.get_week_format()
+ week_start = {
+ '%W': '1',
+ '%U': '0',
+ }[week_format]
date = _date_from_string(year, self.get_year_format(),
- '0', '%w',
- week, self.get_week_format())
+ week_start, '%w',
+ week, week_format)
# Construct a date-range lookup.
first_day = date
diff --git a/tests/regressiontests/generic_views/dates.py b/tests/regressiontests/generic_views/dates.py
index c730c763b9..c583d0ba60 100644
--- a/tests/regressiontests/generic_views/dates.py
+++ b/tests/regressiontests/generic_views/dates.py
@@ -232,6 +232,16 @@ class WeekArchiveViewTests(TestCase):
res = self.client.get('/dates/books/2007/week/no_week/')
self.assertEqual(res.status_code, 404)
+ def test_week_start_Monday(self):
+ # Regression for #14752
+ res = self.client.get('/dates/books/2008/week/39/')
+ self.assertEqual(res.status_code, 200)
+ self.assertEqual(res.context['week'], datetime.date(2008, 9, 28))
+
+ res = self.client.get('/dates/books/2008/week/39/monday/')
+ self.assertEqual(res.status_code, 200)
+ self.assertEqual(res.context['week'], datetime.date(2008, 9, 29))
+
class DayArchiveViewTests(TestCase):
fixtures = ['generic-views-test-data.json']
urls = 'regressiontests.generic_views.urls'
@@ -349,4 +359,3 @@ class DateDetailViewTests(TestCase):
def test_invalid_url(self):
self.assertRaises(AttributeError, self.client.get, "/dates/books/2008/oct/01/nopk/")
-
diff --git a/tests/regressiontests/generic_views/tests.py b/tests/regressiontests/generic_views/tests.py
index 40eec72b25..843cabad15 100644
--- a/tests/regressiontests/generic_views/tests.py
+++ b/tests/regressiontests/generic_views/tests.py
@@ -2,4 +2,4 @@ from regressiontests.generic_views.base import ViewTest, TemplateViewTest, Redir
from regressiontests.generic_views.dates import ArchiveIndexViewTests, YearArchiveViewTests, MonthArchiveViewTests, WeekArchiveViewTests, DayArchiveViewTests, DateDetailViewTests
from regressiontests.generic_views.detail import DetailViewTest
from regressiontests.generic_views.edit import CreateViewTests, UpdateViewTests, DeleteViewTests
-from regressiontests.generic_views.list import ListViewTests \ No newline at end of file
+from regressiontests.generic_views.list import ListViewTests
diff --git a/tests/regressiontests/generic_views/urls.py b/tests/regressiontests/generic_views/urls.py
index 548d10d164..61f0387331 100644
--- a/tests/regressiontests/generic_views/urls.py
+++ b/tests/regressiontests/generic_views/urls.py
@@ -149,6 +149,8 @@ urlpatterns = patterns('',
views.BookWeekArchive.as_view(allow_future=True)),
(r'^dates/books/(?P<year>\d{4})/week/no_week/$',
views.BookWeekArchive.as_view()),
+ (r'^dates/books/(?P<year>\d{4})/week/(?P<week>\d{1,2})/monday/$',
+ views.BookWeekArchive.as_view(week_format='%W')),
# DayArchiveView
(r'^dates/books/(?P<year>\d{4})/(?P<month>[a-z]{3})/(?P<day>\d{1,2})/$',