Commit 092261dc by Waheed Ahmed

Course detail page scope.

ECOM-6048
parent 3e98296b
......@@ -1388,3 +1388,49 @@ class CourseListViewTests(TestCase):
if course_count > 0:
self.assertContains(response, self.course.title)
self.assertContains(response, 'Edit')
class CourseDetailViewTests(TestCase):
""" Tests for the course detail view. """
def setUp(self):
super(CourseDetailViewTests, self).setUp()
self.course = factories.CourseFactory()
self.user = UserFactory()
self.client.login(username=self.user.username, password=USER_PASSWORD)
self.organization_extension = factories.OrganizationExtensionFactory()
self.course.organizations.add(self.organization_extension.organization)
self.detail_page_url = reverse('publisher:publisher_course_detail', args=[self.course.id])
def test_detail_page_without_permission(self):
"""
Verify that user cannot access course detail page without view permission.
"""
response = self.client.get(self.detail_page_url)
self.assertEqual(response.status_code, 403)
def test_detail_page_with_permission(self):
"""
Verify that user can access course detail page with view permission.
"""
assign_perm(OrganizationExtension.VIEW_COURSE, self.user, self.organization_extension)
response = self.client.get(self.detail_page_url)
self.assertEqual(response.status_code, 200)
def test_detail_page_with_internal_user(self):
"""
Verify that internal user can access course detail page.
"""
self.user.groups.add(Group.objects.get(name=INTERNAL_USER_GROUP_NAME))
response = self.client.get(self.detail_page_url)
self.assertEqual(response.status_code, 200)
def test_detail_page_with_admin(self):
"""
Verify that publisher admin can access course detail page.
"""
self.user.groups.add(Group.objects.get(name=ADMIN_GROUP_NAME))
response = self.client.get(self.detail_page_url)
self.assertEqual(response.status_code, 200)
......@@ -10,7 +10,7 @@ urlpatterns = [
url(r'^api/', include('course_discovery.apps.publisher.api.urls', namespace='api')),
url(r'^courses/$', views.CourseListView.as_view(), name='publisher_courses'),
url(r'^courses/new/$', views.CreateCourseView.as_view(), name='publisher_courses_new'),
url(r'^courses/(?P<pk>\d+)/view/$', views.ReadOnlyView.as_view(), name='publisher_courses_readonly'),
url(r'^courses/(?P<pk>\d+)/$', views.CourseDetailView.as_view(), name='publisher_course_detail'),
url(r'^courses/(?P<pk>\d+)/edit/$', views.UpdateCourseView.as_view(), name='publisher_courses_edit'),
url(
r'^courses/(?P<parent_course_id>\d+)/course_runs/new/$',
......
......@@ -253,13 +253,13 @@ class UpdateCourseView(mixins.LoginRequiredMixin, mixins.ViewPermissionMixin, mi
return context
class ReadOnlyView(mixins.LoginRequiredMixin, mixins.ViewPermissionMixin, DetailView):
""" Course Run Detail View."""
class CourseDetailView(mixins.LoginRequiredMixin, mixins.ViewPermissionMixin, DetailView):
""" Course Detail View."""
model = Course
template_name = 'publisher/view_course_form.html'
def get_context_data(self, **kwargs):
context = super(ReadOnlyView, self).get_context_data(**kwargs)
context = super(CourseDetailView, self).get_context_data(**kwargs)
context['comment_object'] = self
return context
......
......@@ -11,7 +11,7 @@
<h1 class="hd-1 emphasized">{% trans "New Course Run" %}</h1>
<div class="copy-base">
<p>
{% url 'publisher:publisher_courses_readonly' parent_course.id as course_url %}
{% url 'publisher:publisher_course_detail' parent_course.id as course_url %}
{% with link_start='<a href="' link_middle='">' link_end='</a>' %}
{% blocktrans %}
The fields below will only affect this new course run. If you feel the need edit information from the parent course then you may do so on the {{ link_start }}{{ course_url }}{{ link_middle }}parent course for this run{{ link_end }}.
......
......@@ -33,7 +33,7 @@
{% for course in object_list %}
<tr>
<td>
<a href="{% url 'publisher:publisher_courses_readonly' course.id %}">{{ course.title }}</a>
<a href="{% url 'publisher:publisher_course_detail' course.id %}">{{ course.title }}</a>
</td>
<td>
{% if course.organizations.first %}{{ course.organizations.first.name }}{% endif %}
......
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