GVAmaresh
ini
c87f53a
from googleapiclient.http import MediaFileUpload, MediaIoBaseUpload
import json
import os
from io import BytesIO
import time
import io
file_metadata = {
"name": "Fake",
"mimeType": "application/vnd.google-apps.folder",
}
file_result = {
"name": "Result",
"mimeType": "application/vnd.google-apps.folder",
}
file_report = {
"name": "Report",
"mimeType": "application/vnd.google-apps.folder",
}
def checkFake(service, path="root", Folder_Name="Fake"):
resource = service.files()
result = resource.list(
q=f"mimeType = 'application/vnd.google-apps.folder' and '{path}' in parents",
fields="nextPageToken, files(id, name)",
).execute()
list_folders = result.get("files")
fake_folder_id = None
result_folder_id = None
report_folder_id = None
for folder in list_folders:
if folder["name"] == Folder_Name:
fake_folder_id = folder["id"]
break
if not fake_folder_id:
fake_folder = service.files().create(body=file_metadata, fields="id").execute()
fake_folder_id = fake_folder["id"]
result_folder = (
service.files()
.create(
body={
"name": "Result",
"mimeType": "application/vnd.google-apps.folder",
"parents": [fake_folder_id],
"type": "anyone",
"role": "reader",
},
fields="id",
)
.execute()
)
result_folder_id = result_folder["id"]
report_folder = (
service.files()
.create(
body={
"name": "Report",
"mimeType": "application/vnd.google-apps.folder",
"parents": [fake_folder_id],
},
fields="id",
)
.execute()
)
report_folder_id = report_folder["id"]
return fake_folder_id, result_folder_id, report_folder_id
def checkRespectiveFolder(service, path="root", Folder_Name="Fake"):
resource = service.files()
result = resource.list(
q=f"mimeType = 'application/vnd.google-apps.folder' and '{path}' in parents",
fields="nextPageToken, files(id, name)",
).execute()
list_folders = result.get("files")
fake_folder_id = None
for folder in list_folders:
if folder["name"] == Folder_Name:
fake_folder_id = folder["id"]
break
return fake_folder_id
def CheckFolders(service):
fake_folder_id = checkFake(service)
return "Folders created or already existed."
def AddReport(service, fileName, file):
fake_folder_id = checkRespectiveFolder(service)
report_folder_id = checkRespectiveFolder(
service, path=fake_folder_id, Folder_Name="Report"
)
file_metadata = {"name": fileName, "parents": [report_folder_id]}
media = MediaFileUpload(file, mimetype="application/pdf")
newFile = (
service.files()
.create(body=file_metadata, media_body=media, fields="id")
.execute()
)
return newFile.get("id")
def DeleteReport(service, fileName):
fake_folder_id = checkRespectiveFolder(service)
report_folder_id = checkRespectiveFolder(
service, path=fake_folder_id, Folder_Name="Report"
)
response = (
service.files()
.list(
q="mimeType='application/pdf' and '" + report_folder_id + "' in parents",
spaces="drive",
fields="files(id, name)",
pageToken=None,
)
.execute()
)
for i in response["files"]:
if i["name"] == fileName:
file_id = i["id"]
service.files().delete(fileId=file_id).execute()
break