Creating group for organization staff access
This commit is contained in:
@@ -341,6 +341,26 @@ def _dispatch(table, action, user, obj):
|
||||
def _does_course_group_name_exist(name):
|
||||
return len(Group.objects.filter(name=name)) > 0
|
||||
|
||||
def _course_org_staff_group_name(location, course_context=None):
|
||||
"""
|
||||
Get the name of the staff group for an organization which corresponds
|
||||
to the organization in the course id.
|
||||
|
||||
location: something that can passed to Location
|
||||
course_context: A course_id that specifies the course run in which
|
||||
the location occurs.
|
||||
Required if location doesn't have category 'course'
|
||||
|
||||
"""
|
||||
loc = Location(location)
|
||||
if loc.category == 'course':
|
||||
course_id = loc.course_id
|
||||
else:
|
||||
if course_context is None:
|
||||
raise CourseContextRequired()
|
||||
course_id = course_context
|
||||
return 'staff_%s' % course_id.split('/')[0]
|
||||
|
||||
|
||||
def _course_staff_group_name(location, course_context=None):
|
||||
"""
|
||||
@@ -499,7 +519,9 @@ def _has_access_to_location(user, location, access_level, course_context):
|
||||
|
||||
if access_level == 'staff':
|
||||
staff_group = _course_staff_group_name(location, course_context)
|
||||
if staff_group in user_groups:
|
||||
# org_staff_group is a group for an entire organization
|
||||
org_staff_group = _course_org_staff_group_name(location, course_context)
|
||||
if staff_group in user_groups or org_staff_group in user_groups:
|
||||
debug("Allow: user in group %s", staff_group)
|
||||
return True
|
||||
debug("Deny: user not in group %s", staff_group)
|
||||
|
||||
Reference in New Issue
Block a user