def datasets_access(auth, project_id, dataset_id, role='READER', emails=[], groups=[], views=[]): if emails or groups or views: access = API_BigQuery(auth).datasets().get(projectId=project_id, datasetId=dataset_id).execute()["access"] # if emails for email in emails: access.append({ "userByEmail": email, "role": role, }) # if groups for group in groups: access.append({ "groupByEmail": group, "role": role, }) for view in views: access.append({ "view": { "projectId": project_id, "datasetId": view['dataset'], "tableId": view['view'] } }) API_BigQuery(auth).datasets().patch(projectId=project_id, datasetId=dataset_id, body={'access': access}).execute()
def datasets_access(config, auth, project_id, dataset_id, role='READER', emails=[], groups=[], views=[]): if emails or groups or views: access = API_BigQuery(config, auth).datasets().get( projectId=project_id, datasetId=dataset_id).execute()['access'] # if emails for email in emails: access.append({ 'userByEmail': email, 'role': role, }) # if groups for group in groups: access.append({ 'groupByEmail': group, 'role': role, }) for view in views: access.append({ 'view': { 'projectId': project_id, 'datasetId': view['dataset'], 'tableId': view['view'] } }) API_BigQuery(config, auth).datasets().patch(projectId=project_id, datasetId=dataset_id, body={ 'access': access }).execute()