def get_group(group_name, parent=None): if get_sheetid(group_name) == -1: return None values = get_values(group_name) SID_index = values[0].index('SID') role_index = values[0].index('Role') subgroup_index = values[0].index("Subgroups") parent_index = values[0].index("Parent") persons = {} subgroups = set() for row in range(1, len(values)): sid = values[row][SID_index] role = values[row][role_index] subgroup = "" if len(values[row]) > 2: subgroup = str(values[row][subgroup_index]) if subgroup: subgroups.add(subgroup) if sid: persons[sid] = role if group_name == ROOT_GROUP: group = Group(group_name, persons, subgroups, True, None, drive.get_group_id(group_name)) else: parent_name = values[1][parent_index] if parent and isinstance(parent, Group): group = Group(group_name, persons, subgroups, True, parent, drive.get_group_id(group_name, parent.drive_id)) else: par = get_group(parent_name) group = Group(group_name, persons, subgroups, True, par, drive.get_group_id(group_name, par.drive_id)) return group
def create_group(group_name, parent_name='ulab'): parent = get_group(parent_name) name = parent_name + '-' + group_name new_group = get_group(name) if new_group: print("A group with this name already exists.") return False if not parent: print( "Please specify a valid parent for this new group. To create astro under the physics group, call create_group('astro', 'ulab-physics')." ) return False if parent.hasPeople(): print( "{} is a leaf group and has people. Please remove these people and then create subgroups for {}" .format(parent_name, parent_name)) return False if not parent.drive_id: print( "{} does not have a valid corresponding drive folder. Please check with an admin." ) return False # Need to get the group's id after successfully creating the corresponding drive folder. drive.create_new_directory(name, parent.drive_id) group_id = drive.get_group_id(name, parent.drive_id) drive.create_new_directory('Content', group_id) new_group = Group(name=name, parent=parent, drive_id=group_id) new_group.save_group() # Parent got a new subgroup, so we need to save this as well. parent.save_group() return True
def add_person_to_mainroster(fields): # Checks to make sure we have the required fields. person_fields = fields.copy() if not check_fields(person_fields): print("Fields are not inputted properly. Make sure to input fields as a dictionary of values with keys like Person.SID. Required fields are SID, first name, last name, and email.") return False # get_person takes in an integer SID. new_person = get_person(int(person_fields[Person.SID])) if new_person: print("This person already exists in the main roster.") return False new_person = Person(person_fields) new_person.save_person() drive.add_permissions(new_person.get_email(), 'Content', drive.get_group_id(ROOT_GROUP)) return True