Example #1
0
 def __authorize__(self):
     try:
         authorizer = Auth(Flow.__SCOPES, *Flow.__required_folders)
         service = authorizer.authorize()
         self.service = service
     except Exception as e:
         print(str(e))
         sys.exit(-1)
def grant_permission(file_id, email):
    authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds'))
    service = authorizer.authorize()
 
    request_body = {
        'type': 'user',
        'role': 'reader',
        'emailAddress': email
    }
    
    results = service.permissions().create(fileId=file_id, body=request_body, fields='emailAddress,id').execute()
    print(results)
Example #3
0
def main():
    authorizer = Auth(SCOPES,
                      os.path.join(os.path.abspath('.'), './credentials'),
                      os.path.join(os.path.abspath('.'), './pickled_creds'))
    service = authorizer.authorize()

    # Call the Drive v3 API
    results = service.files().list(
        fields="nextPageToken, files(id, name)").execute()

    items = results.get('files', [])

    if not items:
        print('No files found.')
    else:
        print('Files:')
        for item in items:
            print(u'{0} ({1})'.format(item['name'], item['id']))
def main():
    parent_folder = get_folder_id_by_name(get_id_only=False)
    
    authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds'))
    service = authorizer.authorize()
    
    with open(os.path.join(os.path.abspath('.'), './student_ids/students.json'), 'r') as students_id_file:
        # get the student ids
        student_ids = json.load(students_id_file)
        
        folder_prefix = input("Enter folder prefix: ")
        
        if folder_prefix != '':
            lower_limit = input("Are there existing folders? If so, enter the value of suffix to start from: ")
            if lower_limit != '':                
                create_nested_folder_structure(service, parent_folder, folder_prefix, student_ids, folder_suffix_lower_limit=int(lower_limit))
            else:
                create_nested_folder_structure(service, parent_folder, folder_prefix, student_ids)
        else:
            create_student_folders(service, student_ids, parent_folder)
Example #5
0
def get_folder_id_by_name(get_id_only=False):
	# get authorization if not authorized
	authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'), './credentials'), os.path.join(os.path.abspath('.'), './pickled_creds'))
	service = authorizer.authorize()

	folder_name = input("Please enter the folder name to search for: ")

	response = service.files().list(q=f"mimeType='application/vnd.google-apps.folder' and name='{folder_name}'",
										spaces='drive',
										fields='nextPageToken, files(id, name)').execute()

	items = response.get('files', [])

	if not items:
		print('No files found.')
		return None
	else:
		item = items[0]
		if get_id_only:
			folder_id = f"'{item['id']}'"
			return folder_id
		else:
			return item
Example #6
0
def get_child_folders():
    """
		This is a function that takes the name of the folder as input, and then finds the subfolders under that folder
	"""
    authorizer = Auth(SCOPES,
                      os.path.join(os.path.abspath('.'), './credentials'),
                      os.path.join(os.path.abspath('.'), './pickled_creds'))
    service = authorizer.authorize()

    folder_id = get_folder_id_by_name(get_id_only=True)

    if folder_id:
        print(folder_id)

        child_folders = service.files().list(
            q=
            f"mimeType='application/vnd.google-apps.folder' and {folder_id} in parents",
            fields='nextPageToken, files(id, name)').execute()

        pprint(child_folders)
        return child_folders

    return None
Example #7
0
def main():
    """
        This script deals with creating a nested folder structure
        
        Parent Folder
        |_ <Prefix> #1
        |_ Student ID #1
        |_ Student ID #2
        |_ Student ID #3
        |_ ...
        |_ <Prefix> #2
        |_ Student ID #1
        |_ Student ID #2
        |_ Student ID #3
        |_ ...
        |_ ...
        
        if prefix is not specified, it will create a folder structure like this
        
        Parent Folder
        |_ Student ID #1
        |_ Student ID #2
        |_ Student ID #3
        |_ ...
    """
    # potential issue if the user doesn't have these folders
    create_necessary_folders([
        os.path.join(os.path.abspath('.'), 'credentials'),
        os.path.join(os.path.abspath('.'), 'pickled_creds')
    ])

    # get authorization if not authorized
    authorizer = Auth(SCOPES, os.path.join(os.path.abspath('.'),
                                           'credentials'),
                      os.path.join(os.path.abspath('.'), 'pickled_creds'))
    service = authorizer.authorize()

    parent_folder_name = input("Enter parent folder name: ")

    # creates one folder with the given name
    parent_metadata = {
        'name': parent_folder_name,
        'mimeType': 'application/vnd.google-apps.folder'
    }
    parent_folder = service.files().create(body=parent_metadata,
                                           fields='id').execute()

    print(
        f"Parent folder {parent_folder_name} created with id={parent_folder.get('id')}"
    )

    # read json file, where student ids are stored in an array form
    try:
        with open(
                os.path.join(os.path.abspath('.'),
                             'student_ids/students.json'),
                'r') as students_id_file:
            # get the student ids
            student_ids = json.load(students_id_file)

            folder_prefix = input("Enter folder prefix: ")

            if folder_prefix != '':
                create_nested_folder_structure(service, parent_folder,
                                               folder_prefix, student_ids)
            else:
                create_student_folders(service, student_ids, parent_folder)
    except FileNotFoundError:
        print(
            "Please prepare a students.json file under the student_ids folder."
        )