mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
Better import
This commit is contained in:
parent
88b6bfa840
commit
574dc150a3
3 changed files with 32 additions and 16 deletions
|
|
@ -4,8 +4,9 @@ import os.path
|
|||
from googleapiclient.discovery import build
|
||||
from google_auth_oauthlib.flow import InstalledAppFlow
|
||||
from google.auth.transport.requests import Request
|
||||
from googleapiclient import errors
|
||||
import random
|
||||
|
||||
from .abstract_provider import AbstractProvider
|
||||
# If modifying these scopes, delete the file token.pickle.
|
||||
from googleapiclient.http import MediaFileUpload
|
||||
|
||||
|
|
@ -13,7 +14,7 @@ SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly',
|
|||
'https://www.googleapis.com/auth/drive.file'] # for write|delete
|
||||
|
||||
|
||||
class GDriveHandler():
|
||||
class GDriveHandler(AbstractProvider):
|
||||
FOLDER_STR = 'application/vnd.google-apps.folder'
|
||||
|
||||
def __init__(self):
|
||||
|
|
@ -172,16 +173,22 @@ class GDriveHandler():
|
|||
media = MediaFileUpload(source_path,
|
||||
mimetype='application/octet-stream',
|
||||
resumable=True)
|
||||
if not file:
|
||||
file_metadata['parents'] = [folder_id] # update doesnt like parent
|
||||
file = self.service.files().create(body=file_metadata,
|
||||
media_body=media,
|
||||
fields='id').execute()
|
||||
else:
|
||||
file = self.service.files().update(fileId=file["id"],
|
||||
body=file_metadata,
|
||||
media_body=media,
|
||||
fields='id').execute()
|
||||
try:
|
||||
if not file:
|
||||
# update doesnt like parent
|
||||
file_metadata['parents'] = [folder_id]
|
||||
file = self.service.files().create(body=file_metadata,
|
||||
media_body=media,
|
||||
fields='id').execute()
|
||||
else:
|
||||
file = self.service.files().update(fileId=file["id"],
|
||||
body=file_metadata,
|
||||
media_body=media,
|
||||
fields='id').execute()
|
||||
except errors.HttpError as ex:
|
||||
if ex.resp['status'] == '404':
|
||||
return False
|
||||
raise
|
||||
|
||||
return file["id"]
|
||||
|
||||
|
|
@ -235,6 +242,14 @@ class GDriveHandler():
|
|||
except Exception:
|
||||
raise ValueError("Uknown folder id {}".format(id))
|
||||
|
||||
def list_folder(self, folder_path):
|
||||
"""
|
||||
List all files and subfolders of particular path non-recursively.
|
||||
:param folder_path: absolut path on provider
|
||||
:return: <list>
|
||||
"""
|
||||
pass
|
||||
|
||||
def list_folders(self):
|
||||
""" Lists all folders in GDrive.
|
||||
Used to build in-memory structure of path to folder ids model.
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from .gdrive import GDriveHandler
|
|||
class Providers(Enum):
|
||||
GDRIVE = 'gdrive'
|
||||
|
||||
|
||||
class ProviderFactory:
|
||||
"""
|
||||
Factory class as a creator of multiple cloud destination.
|
||||
|
|
@ -24,4 +25,4 @@ class ProviderFactory:
|
|||
return creator()
|
||||
|
||||
factory = ProviderFactory()
|
||||
factory.register_provider('gdrive', GDriveHandler)
|
||||
factory.register_provider('gdrive', GDriveHandler)
|
||||
|
|
@ -7,7 +7,7 @@ import asyncio
|
|||
from enum import Enum
|
||||
import datetime
|
||||
|
||||
from .providers import providers
|
||||
from .providers import lib
|
||||
|
||||
log = Logger().get_logger("SyncServer")
|
||||
|
||||
|
|
@ -123,7 +123,7 @@ class SyncServer():
|
|||
:return:
|
||||
"""
|
||||
await asyncio.sleep(0.1)
|
||||
handler = providers.factory.get_provider(provider)
|
||||
handler = lib.factory.get_provider(provider)
|
||||
local_root = representation.get("context", {}).get("root")
|
||||
if not local_root:
|
||||
raise ValueError("Unknown local root for file {}")
|
||||
|
|
@ -215,7 +215,7 @@ class SynchServerThread(threading.Thread):
|
|||
|
||||
sync_representations = self.module.get_sync_representations()
|
||||
|
||||
for provider in providers.factory.providers: # TODO clumsy
|
||||
for provider in lib.factory.providers: # TODO clumsy
|
||||
for sync in sync_representations:
|
||||
files = sync.get("files") or {}
|
||||
if files:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue