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
import
feedparser
import
urllib
import
itertools
from
collections
import
defaultdict
from
django.conf
import
settings
from
django.contrib.auth
import
logout
,
authenticate
,
login
...
...
@@ -37,7 +36,7 @@ from xmodule.modulestore.exceptions import ItemNotFoundError
from
models
import
Registration
,
UserProfile
,
PendingNameChange
,
PendingEmailChange
,
CourseEnrollment
from
datetime
import
date
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"
)
Article
=
namedtuple
(
'Article'
,
'title url author image deck publication publish_date'
)
...
...
@@ -65,9 +64,9 @@ def index(request):
from
external_auth.views
import
edXauth_ssl_login
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.
...
...
@@ -89,11 +88,8 @@ def main_index(extra_context = {}):
entry
.
image
=
soup
.
img
[
'src'
]
if
soup
.
img
else
None
entry
.
summary
=
soup
.
getText
()
universities
=
defaultdict
(
list
)
courses
=
sorted
(
modulestore
()
.
get_courses
(),
key
=
lambda
course
:
course
.
number
)
for
course
in
courses
:
universities
[
course
.
org
]
.
append
(
course
)
# The course selection work is done in courseware.courses.
universities
=
get_courses_by_university
(
None
)
context
=
{
'universities'
:
universities
,
'entries'
:
entries
}
context
.
update
(
extra_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
functools
import
wraps
import
logging
...
...
@@ -123,6 +124,8 @@ def has_staff_access_to_course(user,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.
'''
if
user
is
None
or
(
not
user
.
is_authenticated
())
or
course
is
None
:
return
False
if
user
.
is_staff
:
return
True
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):
return
True
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
logging
import
urllib
...
...
@@ -28,7 +27,7 @@ from xmodule.course_module import CourseDescriptor
from
util.cache
import
cache
,
cache_if_anonymous
from
student.models
import
UserTestGroup
,
CourseEnrollment
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"
)
...
...
@@ -58,19 +57,12 @@ def user_groups(user):
@ensure_csrf_cookie
@cache_if_anonymous
def
courses
(
request
):
# 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
:
universities
[
course
.
org
]
.
append
(
course
)
'''
Render "find courses" page. The course selection work is done in courseware.courses.
'''
universities
=
get_courses_by_university
(
request
.
user
)
return
render_to_response
(
"courses.html"
,
{
'universities'
:
universities
})
@cache_control
(
no_cache
=
True
,
no_store
=
True
,
must_revalidate
=
True
)
def
gradebook
(
request
,
course_id
):
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