From 7c0d9ff15677a9bf3caaffb40c81d7721171fb3f Mon Sep 17 00:00:00 2001 From: John Jarvis Date: Wed, 27 Feb 2013 14:55:17 -0500 Subject: [PATCH] Creating group for organization staff access --- lms/djangoapps/courseware/access.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lms/djangoapps/courseware/access.py b/lms/djangoapps/courseware/access.py index b41d231011..a9fd799793 100644 --- a/lms/djangoapps/courseware/access.py +++ b/lms/djangoapps/courseware/access.py @@ -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)