コード例 #1
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def find_files_from_name(name,
                         drive_id=None,
                         parent_folder_id=None,
                         service_account_string=None):
    query = "name = '{}' and trashed = false".format(name)
    if parent_folder_id:
        query = "{} and parents = '{}'".format(query, parent_folder_id)

    drive_id_kwargs = {}
    if drive_id:
        drive_id_kwargs = {
            "corpora": 'drive',
            "driveId": drive_id,
            "includeItemsFromAllDrives": True,
            "supportsAllDrives": True
        }

    response = create_google_service('drive', service_account_string).files() \
                .list(
                    fields='files(id,modifiedTime,name,parents)',
                    q=query,
                    spaces='drive',
                    **drive_id_kwargs) \
                .execute()

    return response['files']
コード例 #2
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def delete_file_or_folder(file_or_folder_id, service_account_string=None):
    body = {'trashed': True}
    return create_google_service('drive', service_account_string).files() \
            .update(
                body=body,
                fileId=file_or_folder_id,
                supportsAllDrives=True) \
            .execute()
コード例 #3
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def get_file_media(file_id, service_account_string=None):
    request = create_google_service('drive', service_account_string).files() \
                .get_media(fileId=file_id)
    file_media = BytesIO()
    media_request = MediaIoBaseDownload(file_media, request)
    is_done = False
    while is_done is False:
        status, is_done = media_request.next_chunk()
    file_media.seek(0)
    return file_media
コード例 #4
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def touch(file_id, date=None, service_account_string=None):
    if date is None:
        date = datetime.utcnow()

    return create_google_service('drive', service_account_string).files() \
            .update(
                body={
                    "modifiedTime": strftime(date)
                },
                fileId=file_id,
                supportsAllDrives=True) \
            .execute()
コード例 #5
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def modify_file(file_media,
                drive_id=None,
                parent_folder_id=None,
                service_account_string=None):
    filename = secure_filename(file_media.filename)
    media_body = MediaIoBaseUpload(file_media, mimetype=file_media.mimetype)

    return create_google_service('drive', service_account_string).files() \
                .update(
                    body={
                        "mimeType": file_media.mimetype,
                        "name": filename,
                    },
                    fileId=file.get('id'),
                    media_body=media_body) \
                .execute()
コード例 #6
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def create_file(file_media,
                drive_id=None,
                parent_folder_id=None,
                service_account_string=None):
    if not parent_folder_id:
        parent_folder_id = drive_id

    filename = secure_filename(file_media.filename)
    media_body = MediaIoBaseUpload(file_media, mimetype=file_media.mimetype)

    return create_google_service('drive', service_account_string).files() \
                .create(
                    body={
                        "mimeType": file_media.mimetype,
                        "name": filename,
                        'parents': [parent_folder_id]
                    },
                    media_body=media_body,
                    supportsAllDrives=True) \
                .execute()
コード例 #7
0
ファイル: drive.py プロジェクト: pombredanne/feedback-main
def _find_folder_from_name(name,
                           drive_id=None,
                           force_create=False,
                           parent_folder_id=None,
                           service_account_string=None):
    body = {'mimeType': 'application/vnd.google-apps.folder', 'name': name}

    if not parent_folder_id:
        parent_folder_id = drive_id

    body['parents'] = [parent_folder_id]

    folders = find_folders_from_name(
        name,
        drive_id=drive_id,
        parent_folder_id=parent_folder_id,
        service_account_string=service_account_string)

    folders_count = len(folders)
    if folders_count == 1:
        return folders[0]

    if folders_count > 1:
        errors = ApiErrors()
        errors.add_error('name', 'Found several folders for this name')
        raise errors

    if force_create:
        return create_google_service('drive', service_account_string).files() \
                .create(
                    body=body,
                    fields='id',
                    supportsAllDrives=True) \
                .execute()

    errors = ApiErrors()
    errors.add_error('folder', '{} folder was not found.'.format(name))
    raise errors