Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
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
edx-platform
Commits
3f83904c
Commit
3f83904c
authored
Aug 04, 2012
by
ichuang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
if AUTH_REQUIRE_STAFF_FOR_COURSE then course list = those accessible
parent
c20ebd13
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
32 additions
and
23 deletions
+32
-23
common/djangoapps/student/views.py
+5
-9
lms/djangoapps/courseware/courses.py
+22
-1
lms/djangoapps/courseware/views.py
+5
-13
No files found.
common/djangoapps/student/views.py
View file @
3f83904c
...
@@ -8,7 +8,6 @@ import uuid
...
@@ -8,7 +8,6 @@ import uuid
import
feedparser
import
feedparser
import
urllib
import
urllib
import
itertools
import
itertools
from
collections
import
defaultdict
from
django.conf
import
settings
from
django.conf
import
settings
from
django.contrib.auth
import
logout
,
authenticate
,
login
from
django.contrib.auth
import
logout
,
authenticate
,
login
...
@@ -37,7 +36,7 @@ from xmodule.modulestore.exceptions import ItemNotFoundError
...
@@ -37,7 +36,7 @@ from xmodule.modulestore.exceptions import ItemNotFoundError
from
models
import
Registration
,
UserProfile
,
PendingNameChange
,
PendingEmailChange
,
CourseEnrollment
from
models
import
Registration
,
UserProfile
,
PendingNameChange
,
PendingEmailChange
,
CourseEnrollment
from
datetime
import
date
from
datetime
import
date
from
collections
import
namedtuple
from
collections
import
namedtuple
from
courseware.courses
import
course_staff_group_name
,
has_staff_access_to_course
from
courseware.courses
import
course_staff_group_name
,
has_staff_access_to_course
,
get_courses_by_university
log
=
logging
.
getLogger
(
"mitx.student"
)
log
=
logging
.
getLogger
(
"mitx.student"
)
Article
=
namedtuple
(
'Article'
,
'title url author image deck publication publish_date'
)
Article
=
namedtuple
(
'Article'
,
'title url author image deck publication publish_date'
)
...
@@ -65,9 +64,9 @@ def index(request):
...
@@ -65,9 +64,9 @@ def index(request):
from
external_auth.views
import
edXauth_ssl_login
from
external_auth.views
import
edXauth_ssl_login
return
edXauth_ssl_login
(
request
)
return
edXauth_ssl_login
(
request
)
return
main_index
()
return
main_index
(
user
=
request
.
user
)
def
main_index
(
extra_context
=
{}):
def
main_index
(
extra_context
=
{}
,
user
=
None
):
'''
'''
Render the edX main page.
Render the edX main page.
...
@@ -89,11 +88,8 @@ def main_index(extra_context = {}):
...
@@ -89,11 +88,8 @@ def main_index(extra_context = {}):
entry
.
image
=
soup
.
img
[
'src'
]
if
soup
.
img
else
None
entry
.
image
=
soup
.
img
[
'src'
]
if
soup
.
img
else
None
entry
.
summary
=
soup
.
getText
()
entry
.
summary
=
soup
.
getText
()
universities
=
defaultdict
(
list
)
# The course selection work is done in courseware.courses.
courses
=
sorted
(
modulestore
()
.
get_courses
(),
key
=
lambda
course
:
course
.
number
)
universities
=
get_courses_by_university
(
None
)
for
course
in
courses
:
universities
[
course
.
org
]
.
append
(
course
)
context
=
{
'universities'
:
universities
,
'entries'
:
entries
}
context
=
{
'universities'
:
universities
,
'entries'
:
entries
}
context
.
update
(
extra_context
)
context
.
update
(
extra_context
)
return
render_to_response
(
'index.html'
,
context
)
return
render_to_response
(
'index.html'
,
context
)
...
...
lms/djangoapps/courseware/courses.py
View file @
3f83904c
from
collections
import
defaultdict
from
fs.errors
import
ResourceNotFoundError
from
fs.errors
import
ResourceNotFoundError
from
functools
import
wraps
from
functools
import
wraps
import
logging
import
logging
...
@@ -123,6 +124,8 @@ def has_staff_access_to_course(user,course):
...
@@ -123,6 +124,8 @@ def has_staff_access_to_course(user,course):
Returns True if the given user has staff access to the course.
Returns True if the given user has staff access to the course.
This means that user is in the staff_* group, or is an overall admin.
This means that user is in the staff_* group, or is an overall admin.
'''
'''
if
user
is
None
or
(
not
user
.
is_authenticated
())
or
course
is
None
:
return
False
if
user
.
is_staff
:
if
user
.
is_staff
:
return
True
return
True
user_groups
=
[
x
[
1
]
for
x
in
user
.
groups
.
values_list
()]
# note this is the Auth group, not UserTestGroup
user_groups
=
[
x
[
1
]
for
x
in
user
.
groups
.
values_list
()]
# note this is the Auth group, not UserTestGroup
...
@@ -132,5 +135,23 @@ def has_staff_access_to_course(user,course):
...
@@ -132,5 +135,23 @@ def has_staff_access_to_course(user,course):
return
True
return
True
return
False
return
False
def
get_courses_by_university
(
user
):
'''
Returns dict of lists of courses available, keyed by course.org (ie university).
Courses are sorted by course.number.
if ACCESS_REQUIRE_STAFF_FOR_COURSE then list only includes those accessible to user.
'''
# TODO: Clean up how 'error' is done.
# filter out any courses that errored.
courses
=
[
c
for
c
in
modulestore
()
.
get_courses
()
if
isinstance
(
c
,
CourseDescriptor
)]
courses
=
sorted
(
courses
,
key
=
lambda
course
:
course
.
number
)
universities
=
defaultdict
(
list
)
for
course
in
courses
:
if
settings
.
MITX_FEATURES
.
get
(
'ENABLE_LMS_MIGRATION'
):
if
not
has_staff_access_to_course
(
user
,
course
):
continue
universities
[
course
.
org
]
.
append
(
course
)
return
universities
lms/djangoapps/courseware/views.py
View file @
3f83904c
from
collections
import
defaultdict
import
json
import
json
import
logging
import
logging
import
urllib
import
urllib
...
@@ -28,7 +27,7 @@ from xmodule.course_module import CourseDescriptor
...
@@ -28,7 +27,7 @@ from xmodule.course_module import CourseDescriptor
from
util.cache
import
cache
,
cache_if_anonymous
from
util.cache
import
cache
,
cache_if_anonymous
from
student.models
import
UserTestGroup
,
CourseEnrollment
from
student.models
import
UserTestGroup
,
CourseEnrollment
from
courseware
import
grades
from
courseware
import
grades
from
courseware.courses
import
check_course
from
courseware.courses
import
check_course
,
get_courses_by_university
log
=
logging
.
getLogger
(
"mitx.courseware"
)
log
=
logging
.
getLogger
(
"mitx.courseware"
)
...
@@ -58,19 +57,12 @@ def user_groups(user):
...
@@ -58,19 +57,12 @@ def user_groups(user):
@ensure_csrf_cookie
@ensure_csrf_cookie
@cache_if_anonymous
@cache_if_anonymous
def
courses
(
request
):
def
courses
(
request
):
# TODO: Clean up how 'error' is done.
'''
Render "find courses" page. The course selection work is done in courseware.courses.
# filter out any courses that errored.
'''
courses
=
[
c
for
c
in
modulestore
()
.
get_courses
()
universities
=
get_courses_by_university
(
request
.
user
)
if
isinstance
(
c
,
CourseDescriptor
)]
courses
=
sorted
(
courses
,
key
=
lambda
course
:
course
.
number
)
universities
=
defaultdict
(
list
)
for
course
in
courses
:
universities
[
course
.
org
]
.
append
(
course
)
return
render_to_response
(
"courses.html"
,
{
'universities'
:
universities
})
return
render_to_response
(
"courses.html"
,
{
'universities'
:
universities
})
@cache_control
(
no_cache
=
True
,
no_store
=
True
,
must_revalidate
=
True
)
@cache_control
(
no_cache
=
True
,
no_store
=
True
,
must_revalidate
=
True
)
def
gradebook
(
request
,
course_id
):
def
gradebook
(
request
,
course_id
):
if
'course_admin'
not
in
user_groups
(
request
.
user
):
if
'course_admin'
not
in
user_groups
(
request
.
user
):
...
...
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