Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
course-discovery
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
course-discovery
Commits
4048e383
Commit
4048e383
authored
Jan 05, 2017
by
Waheed Ahmed
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Course edit button permission.
ECOM-6045
parent
092261dc
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
2 deletions
+56
-2
course_discovery/apps/publisher/migrations/0024_auto_20170105_1626.py
+19
-0
course_discovery/apps/publisher/models.py
+4
-2
course_discovery/apps/publisher/tests/test_views.py
+18
-0
course_discovery/apps/publisher/views.py
+6
-0
course_discovery/templates/publisher/view_course_form.html
+9
-0
No files found.
course_discovery/apps/publisher/migrations/0024_auto_20170105_1626.py
0 → 100644
View file @
4048e383
# -*- coding: utf-8 -*-
# Generated by Django 1.9.11 on 2017-01-05 16:26
from
__future__
import
unicode_literals
from
django.db
import
migrations
class
Migration
(
migrations
.
Migration
):
dependencies
=
[
(
'publisher'
,
'0023_auto_20161228_1350'
),
]
operations
=
[
migrations
.
AlterModelOptions
(
name
=
'organizationextension'
,
options
=
{
'get_latest_by'
:
'modified'
,
'ordering'
:
(
'-modified'
,
'-created'
),
'permissions'
:
((
'publisher_edit_course'
,
'Can edit course'
),
(
'publisher_edit_course_run'
,
'Can edit course run'
),
(
'publisher_view_course'
,
'Can view course'
),
(
'publisher_view_course_run'
,
'Can view the course run'
))},
),
]
course_discovery/apps/publisher/models.py
View file @
4048e383
...
@@ -428,7 +428,8 @@ class CourseUserRole(TimeStampedModel, ChangedByMixin):
...
@@ -428,7 +428,8 @@ class CourseUserRole(TimeStampedModel, ChangedByMixin):
class
OrganizationExtension
(
TimeStampedModel
):
class
OrganizationExtension
(
TimeStampedModel
):
""" Organization-Extension relation model. """
""" Organization-Extension relation model. """
EDIT_COURSE_RUN
=
'edit_course_run'
EDIT_COURSE
=
'publisher_edit_course'
EDIT_COURSE_RUN
=
'publisher_edit_course_run'
VIEW_COURSE
=
'publisher_view_course'
VIEW_COURSE
=
'publisher_view_course'
VIEW_COURSE_RUN
=
'publisher_view_course_run'
VIEW_COURSE_RUN
=
'publisher_view_course_run'
...
@@ -439,7 +440,8 @@ class OrganizationExtension(TimeStampedModel):
...
@@ -439,7 +440,8 @@ class OrganizationExtension(TimeStampedModel):
class
Meta
(
TimeStampedModel
.
Meta
):
class
Meta
(
TimeStampedModel
.
Meta
):
permissions
=
(
permissions
=
(
(
'edit_course_run'
,
'Can edit course run'
),
(
'publisher_edit_course'
,
'Can edit course'
),
(
'publisher_edit_course_run'
,
'Can edit course run'
),
(
'publisher_view_course'
,
'Can view course'
),
(
'publisher_view_course'
,
'Can view course'
),
(
'publisher_view_course_run'
,
'Can view the course run'
),
(
'publisher_view_course_run'
,
'Can view the course run'
),
)
)
...
...
course_discovery/apps/publisher/tests/test_views.py
View file @
4048e383
...
@@ -1434,3 +1434,21 @@ class CourseDetailViewTests(TestCase):
...
@@ -1434,3 +1434,21 @@ class CourseDetailViewTests(TestCase):
self
.
user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
ADMIN_GROUP_NAME
))
self
.
user
.
groups
.
add
(
Group
.
objects
.
get
(
name
=
ADMIN_GROUP_NAME
))
response
=
self
.
client
.
get
(
self
.
detail_page_url
)
response
=
self
.
client
.
get
(
self
.
detail_page_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
status_code
,
200
)
def
test_details_page_with_edit_permission
(
self
):
""" Test that user can see edit button on course detail page. """
assign_perm
(
OrganizationExtension
.
VIEW_COURSE
,
self
.
user
,
self
.
organization_extension
)
# Verify that user cannot see edit button without edit permission.
self
.
assert_can_edit_permission
(
can_edit
=
False
)
assign_perm
(
OrganizationExtension
.
EDIT_COURSE
,
self
.
user
,
self
.
organization_extension
)
# Verify that user can see edit button with edit permission.
self
.
assert_can_edit_permission
(
can_edit
=
True
)
def
assert_can_edit_permission
(
self
,
can_edit
):
""" Dry method to assert can_edit permission. """
response
=
self
.
client
.
get
(
self
.
detail_page_url
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
context
[
'can_edit'
],
can_edit
)
course_discovery/apps/publisher/views.py
View file @
4048e383
...
@@ -260,7 +260,13 @@ class CourseDetailView(mixins.LoginRequiredMixin, mixins.ViewPermissionMixin, De
...
@@ -260,7 +260,13 @@ class CourseDetailView(mixins.LoginRequiredMixin, mixins.ViewPermissionMixin, De
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
CourseDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
context
=
super
(
CourseDetailView
,
self
)
.
get_context_data
(
**
kwargs
)
user
=
self
.
request
.
user
context
[
'comment_object'
]
=
self
context
[
'comment_object'
]
=
self
context
[
'can_edit'
]
=
any
(
[
user
.
has_perm
(
OrganizationExtension
.
EDIT_COURSE
,
org
.
organization_extension
)
for
org
in
self
.
object
.
organizations
.
all
()]
)
return
context
return
context
...
...
course_discovery/templates/publisher/view_course_form.html
View file @
4048e383
...
@@ -11,6 +11,15 @@
...
@@ -11,6 +11,15 @@
<a
href=
"{% url 'publisher:publisher_courses' %}"
>
{% trans "Courses" %}
</a>
>
<span>
{{ object.title }}
</span>
<a
href=
"{% url 'publisher:publisher_courses' %}"
>
{% trans "Courses" %}
</a>
>
<span>
{{ object.title }}
</span>
</div>
</div>
<div
class=
"approval-widget"
>
{% if can_edit %}
<a
href=
"{% url 'publisher:publisher_courses_edit' pk=object.id %}"
class=
"btn btn-neutral btn-course-edit"
>
{% trans "EDIT" %}
</a>
<div
class=
"clearfix"
></div>
{% endif %}
</div>
<div
class=
"layout-full publisher-layout layout"
>
<div
class=
"layout-full publisher-layout layout"
>
<h2
class=
"layout-title"
>
{% trans "Base information" %}
</h2>
<h2
class=
"layout-title"
>
{% trans "Base information" %}
</h2>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment