mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-09 14:13:35 +00:00
Merge branch 'main' of https://github.com/jay0lee/GAM into main
This commit is contained in:
@ -685,7 +685,7 @@ Specify a collection of Users by directly specifying them or by specifiying item
|
|||||||
(name <String>)
|
(name <String>)
|
||||||
|
|
||||||
<DriveFileAddAttribute> ::=
|
<DriveFileAddAttribute> ::=
|
||||||
(localfile <FileName>)|
|
(localfile <FileName>|-)|
|
||||||
(convert)|(ocr)|(ocrlanguage <Language>)|
|
(convert)|(ocr)|(ocrlanguage <Language>)|
|
||||||
(restricted|restrict)|(starred|star)|(trashed|trash)|(viewed|view)|
|
(restricted|restrict)|(starred|star)|(trashed|trash)|(viewed|view)|
|
||||||
(contentrestrictions readonly false)|
|
(contentrestrictions readonly false)|
|
||||||
@ -695,7 +695,7 @@ Specify a collection of Users by directly specifying them or by specifiying item
|
|||||||
(parentid <DriveFolderID>)|(parentname <DriveFolderName>)|(anyownerparentname <DriveFolderName>)|writerscantshare|writerscanshare
|
(parentid <DriveFolderID>)|(parentname <DriveFolderName>)|(anyownerparentname <DriveFolderName>)|writerscantshare|writerscanshare
|
||||||
(shortcut <DriveFileID>)
|
(shortcut <DriveFileID>)
|
||||||
<DriveFileUpdateAttribute> ::=
|
<DriveFileUpdateAttribute> ::=
|
||||||
(localfile <FileName>)|
|
(localfile <FileName>|-)|
|
||||||
(convert)|(ocr)|(ocrlanguage <Language>)|
|
(convert)|(ocr)|(ocrlanguage <Language>)|
|
||||||
(restricted|restrict <Boolean>)|(starred|star <Boolean>)|(trashed|trash <Boolean>)|(viewed|view <Boolean>)|
|
(restricted|restrict <Boolean>)|(starred|star <Boolean>)|(trashed|trash <Boolean>)|(viewed|view <Boolean>)|
|
||||||
(contentrestrictions readonly false)|
|
(contentrestrictions readonly false)|
|
||||||
|
@ -6,6 +6,7 @@ import configparser
|
|||||||
import csv
|
import csv
|
||||||
import datetime
|
import datetime
|
||||||
from email import message_from_string
|
from email import message_from_string
|
||||||
|
import io
|
||||||
import json
|
import json
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import os
|
import os
|
||||||
@ -3571,14 +3572,19 @@ def getDriveFileAttribute(i, body, parameters, myarg, update=False):
|
|||||||
operation = 'update' if update else 'add'
|
operation = 'update' if update else 'add'
|
||||||
if myarg == 'localfile':
|
if myarg == 'localfile':
|
||||||
parameters[DFA_LOCALFILEPATH] = sys.argv[i + 1]
|
parameters[DFA_LOCALFILEPATH] = sys.argv[i + 1]
|
||||||
parameters[DFA_LOCALFILENAME] = os.path.basename(
|
if parameters[DFA_LOCALFILEPATH] != '-':
|
||||||
parameters[DFA_LOCALFILEPATH])
|
parameters[DFA_LOCALFILENAME] = os.path.basename(
|
||||||
body.setdefault('title', parameters[DFA_LOCALFILENAME])
|
parameters[DFA_LOCALFILEPATH])
|
||||||
body['mimeType'] = mimetypes.guess_type(
|
body.setdefault('title', parameters[DFA_LOCALFILENAME])
|
||||||
parameters[DFA_LOCALFILEPATH])[0]
|
body['mimeType'] = mimetypes.guess_type(
|
||||||
if body['mimeType'] is None:
|
parameters[DFA_LOCALFILEPATH])[0]
|
||||||
body['mimeType'] = 'application/octet-stream'
|
if body['mimeType'] is None:
|
||||||
parameters[DFA_LOCALMIMETYPE] = body['mimeType']
|
body['mimeType'] = 'application/octet-stream'
|
||||||
|
parameters[DFA_LOCALMIMETYPE] = body['mimeType']
|
||||||
|
else:
|
||||||
|
parameters[DFA_LOCALFILENAME] = '-'
|
||||||
|
if body.get('mimeType') is None:
|
||||||
|
body['mimeType'] = 'application/octet-stream'
|
||||||
i += 2
|
i += 2
|
||||||
elif myarg == 'convert':
|
elif myarg == 'convert':
|
||||||
parameters[DFA_CONVERT] = True
|
parameters[DFA_CONVERT] = True
|
||||||
@ -3674,6 +3680,22 @@ def getDriveFileAttribute(i, body, parameters, myarg, update=False):
|
|||||||
return i
|
return i
|
||||||
|
|
||||||
|
|
||||||
|
def get_media_body(parameters, body):
|
||||||
|
if parameters[DFA_LOCALFILEPATH] != '-':
|
||||||
|
media_body = googleapiclient.http.MediaFileUpload(parameters[DFA_LOCALFILEPATH], mimetype=parameters[DFA_LOCALMIMETYPE], resumable=True)
|
||||||
|
else:
|
||||||
|
if body['mimeType'] == MIMETYPE_GA_SPREADSHEET:
|
||||||
|
mimetype = 'text/csv'
|
||||||
|
elif body['mimeType'] == MIMETYPE_GA_DOCUMENT:
|
||||||
|
mimetype = 'text/plain'
|
||||||
|
else:
|
||||||
|
mimetype = 'application/octet-stream'
|
||||||
|
media_body = googleapiclient.http.MediaIoBaseUpload(io.BytesIO(sys.stdin.buffer.read()), mimetype, resumable=True)
|
||||||
|
if media_body.size() == 0:
|
||||||
|
media_body = None
|
||||||
|
return media_body
|
||||||
|
|
||||||
|
|
||||||
def has_multiple_parents(body):
|
def has_multiple_parents(body):
|
||||||
return len(body.get('parents', [])) > 1
|
return len(body.get('parents', [])) > 1
|
||||||
|
|
||||||
@ -3716,6 +3738,8 @@ def doUpdateDriveFile(users):
|
|||||||
2,
|
2,
|
||||||
'you cannot specify multiple file identifiers. Choose one of id, drivefilename, query.'
|
'you cannot specify multiple file identifiers. Choose one of id, drivefilename, query.'
|
||||||
)
|
)
|
||||||
|
if operation == 'update' and parameters[DFA_LOCALFILEPATH]:
|
||||||
|
media_body = get_media_body(parameters, body)
|
||||||
for user in users:
|
for user in users:
|
||||||
user, drive = buildDriveGAPIObject(user)
|
user, drive = buildDriveGAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
@ -3736,11 +3760,6 @@ def doUpdateDriveFile(users):
|
|||||||
print(f'No files to {operation} for {user}')
|
print(f'No files to {operation} for {user}')
|
||||||
continue
|
continue
|
||||||
if operation == 'update':
|
if operation == 'update':
|
||||||
if parameters[DFA_LOCALFILEPATH]:
|
|
||||||
media_body = googleapiclient.http.MediaFileUpload(
|
|
||||||
parameters[DFA_LOCALFILEPATH],
|
|
||||||
mimetype=parameters[DFA_LOCALMIMETYPE],
|
|
||||||
resumable=True)
|
|
||||||
for fileId in fileIdSelection['fileIds']:
|
for fileId in fileIdSelection['fileIds']:
|
||||||
if media_body:
|
if media_body:
|
||||||
result = gapi.call(drive.files(),
|
result = gapi.call(drive.files(),
|
||||||
@ -3806,6 +3825,8 @@ def createDriveFile(users):
|
|||||||
i += 1
|
i += 1
|
||||||
else:
|
else:
|
||||||
i = getDriveFileAttribute(i, body, parameters, myarg, False)
|
i = getDriveFileAttribute(i, body, parameters, myarg, False)
|
||||||
|
if parameters[DFA_LOCALFILEPATH]:
|
||||||
|
media_body = get_media_body(parameters, body)
|
||||||
for user in users:
|
for user in users:
|
||||||
user, drive = buildDriveGAPIObject(user)
|
user, drive = buildDriveGAPIObject(user)
|
||||||
if not drive:
|
if not drive:
|
||||||
@ -3819,11 +3840,6 @@ def createDriveFile(users):
|
|||||||
if has_multiple_parents(body):
|
if has_multiple_parents(body):
|
||||||
sys.stderr.write(f"Multiple parents ({len(body['parents'])}) specified for {user}, only one is allowed.\n")
|
sys.stderr.write(f"Multiple parents ({len(body['parents'])}) specified for {user}, only one is allowed.\n")
|
||||||
continue
|
continue
|
||||||
if parameters[DFA_LOCALFILEPATH]:
|
|
||||||
media_body = googleapiclient.http.MediaFileUpload(
|
|
||||||
parameters[DFA_LOCALFILEPATH],
|
|
||||||
mimetype=parameters[DFA_LOCALMIMETYPE],
|
|
||||||
resumable=True)
|
|
||||||
result = gapi.call(drive.files(),
|
result = gapi.call(drive.files(),
|
||||||
'insert',
|
'insert',
|
||||||
convert=parameters[DFA_CONVERT],
|
convert=parameters[DFA_CONVERT],
|
||||||
|
Reference in New Issue
Block a user