Merge pull request #16202 from edx/waheed/LEARNER-2769-course-dates-web-fragment
Course dates web fragment for mobile apps.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Tests for course dates fragment.
|
||||
"""
|
||||
from datetime import timedelta, datetime
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore import ModuleStoreEnum
|
||||
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory, ItemFactory
|
||||
|
||||
|
||||
TEST_PASSWORD = 'test'
|
||||
|
||||
|
||||
class TestCourseDatesFragmentView(ModuleStoreTestCase):
|
||||
"""Tests for the course dates fragment view."""
|
||||
|
||||
def setUp(self):
|
||||
super(TestCourseDatesFragmentView, self).setUp()
|
||||
with self.store.default_store(ModuleStoreEnum.Type.split):
|
||||
self.course = CourseFactory.create(
|
||||
org='edX',
|
||||
number='test',
|
||||
display_name='Test Course',
|
||||
start=datetime.now() - timedelta(days=30),
|
||||
end=datetime.now() + timedelta(days=30),
|
||||
)
|
||||
self.user = UserFactory(password=TEST_PASSWORD)
|
||||
self.client.login(username=self.user.username, password=TEST_PASSWORD)
|
||||
|
||||
self.dates_fragment_url = reverse(
|
||||
'openedx.course_experience.mobile_dates_fragment_view',
|
||||
kwargs={
|
||||
'course_id': unicode(self.course.id)
|
||||
}
|
||||
)
|
||||
|
||||
def test_course_dates_fragment(self):
|
||||
response = self.client.get(self.dates_fragment_url)
|
||||
self.assertContains(response, 'Important Course Dates')
|
||||
self.assertContains(response, 'Today is')
|
||||
self.assertContains(response, 'Course End')
|
||||
|
||||
self.client.logout()
|
||||
response = self.client.get(self.dates_fragment_url)
|
||||
self.assertEqual(response.status_code, 404)
|
||||
@@ -4,6 +4,7 @@ Defines URLs for the course experience.
|
||||
|
||||
from django.conf.urls import url
|
||||
|
||||
from views.course_dates import CourseDatesFragmentMobileView
|
||||
from views.course_home import CourseHomeFragmentView, CourseHomeView
|
||||
from views.course_outline import CourseOutlineFragmentView
|
||||
from views.course_reviews import CourseReviewsView
|
||||
@@ -63,4 +64,9 @@ urlpatterns = [
|
||||
dismiss_welcome_message,
|
||||
name='openedx.course_experience.dismiss_welcome_message',
|
||||
),
|
||||
url(
|
||||
r'^mobile_dates_fragment',
|
||||
CourseDatesFragmentMobileView.as_view(),
|
||||
name='openedx.course_experience.mobile_dates_fragment_view',
|
||||
),
|
||||
]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
"""
|
||||
Fragment for rendering the course dates sidebar.
|
||||
"""
|
||||
from django.http import Http404
|
||||
from django.template.loader import render_to_string
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from web_fragments.fragment import Fragment
|
||||
@@ -26,3 +27,20 @@ class CourseDatesFragmentView(EdxFragmentView):
|
||||
}
|
||||
html = render_to_string('course_experience/course-dates-fragment.html', context)
|
||||
return Fragment(html)
|
||||
|
||||
|
||||
class CourseDatesFragmentMobileView(CourseDatesFragmentView):
|
||||
"""
|
||||
A course dates fragment to show dates on mobile apps.
|
||||
|
||||
Mobile apps uses WebKit mobile client to create and maintain a session with
|
||||
the server for authenticated requests, and it hasn't exposed any way to find
|
||||
out either session was created with the server or not so mobile app uses a
|
||||
mechanism to automatically create/recreate session with the server for all
|
||||
authenticated requests if the server returns 404.
|
||||
"""
|
||||
def get(self, request, *args, **kwargs):
|
||||
if not request.user.is_authenticated():
|
||||
raise Http404
|
||||
|
||||
return super(CourseDatesFragmentMobileView, self).get(request, *args, **kwargs)
|
||||
|
||||
Reference in New Issue
Block a user