Commit 30d58503 by Clinton Blackburn

Merge pull request #66 from edx/404-alternative-master

Improved 404 Handling
parents 603c1c27 6fa23b7f
......@@ -129,19 +129,17 @@ class CourseViewTestCaseMixin(DemoCourseMixin):
raise NotImplementedError
def assertIntervalFilteringWorks(self, expected_response, start_date, end_date):
# If start date is after date of existing data, no data should be returned
# If start date is after date of existing data, return a 404
date = (start_date + datetime.timedelta(days=30)).strftime(settings.DATE_FORMAT)
response = self.authenticated_get(
'%scourses/%s%s?start_date=%s' % (self.api_root_path, self.course_id, self.path, date))
self.assertEquals(response.status_code, 200)
self.assertListEqual([], response.data)
self.assertEquals(response.status_code, 404)
# If end date is before date of existing data, no data should be returned
# If end date is before date of existing data, return a 404
date = (start_date - datetime.timedelta(days=30)).strftime(settings.DATE_FORMAT)
response = self.authenticated_get(
'%scourses/%s%s?end_date=%s' % (self.api_root_path, self.course_id, self.path, date))
self.assertEquals(response.status_code, 200)
self.assertListEqual([], response.data)
self.assertEquals(response.status_code, 404)
# If data falls in date range, data should be returned
start_date = start_date.strftime(settings.DATE_FORMAT)
......
......@@ -21,6 +21,7 @@ class BaseCourseView(generics.ListAPIView):
end_date = None
course_id = None
slug = None
allow_empty = False
def get(self, request, *args, **kwargs):
self.course_id = self.kwargs.get('course_id')
......@@ -41,17 +42,10 @@ class BaseCourseView(generics.ListAPIView):
return super(BaseCourseView, self).get(request, *args, **kwargs)
def verify_course_exists_or_404(self, course_id):
if self.model.objects.filter(course_id=course_id).exists():
return True
raise Http404
def apply_date_filtering(self, queryset):
raise NotImplementedError
def get_queryset(self):
self.verify_course_exists_or_404(self.course_id)
queryset = self.model.objects.filter(course_id=self.course_id)
queryset = self.apply_date_filtering(queryset)
return queryset
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment