mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
Drawn back to the obsolete version of python
This commit is contained in:
parent
d106ba4694
commit
3c1ecfb36e
9 changed files with 493 additions and 463 deletions
|
|
@ -1,5 +1,4 @@
|
|||
from copy import copy
|
||||
from typing import Any, Iterator, Dict, Set
|
||||
|
||||
from avalon.api import AvalonMongoDB
|
||||
|
||||
|
|
@ -14,8 +13,8 @@ _LOG = Logger().get_logger("ShotgridModule.patch")
|
|||
|
||||
|
||||
def _patched_projects(
|
||||
self: Any, projection: Any = None, only_active: bool = True
|
||||
) -> Iterator[Dict[str, Any]]:
|
||||
self, projection=None, only_active=True
|
||||
):
|
||||
all_projects = list(self._prev_projects(projection, only_active))
|
||||
if (
|
||||
not credentials.get_local_login()
|
||||
|
|
@ -30,18 +29,18 @@ def _patched_projects(
|
|||
return all_projects
|
||||
|
||||
|
||||
def _upper(x: Any) -> str:
|
||||
def _upper(x):
|
||||
return str(x).strip().upper()
|
||||
|
||||
|
||||
def _fetch_linked_project_names() -> Set[str]:
|
||||
def _fetch_linked_project_names():
|
||||
return {
|
||||
_upper(x["project_name"])
|
||||
for x in server.find_linked_projects(credentials.get_local_login())
|
||||
}
|
||||
|
||||
|
||||
def patch_avalon_db() -> None:
|
||||
def patch_avalon_db():
|
||||
_LOG.debug("Run avalon patching")
|
||||
if AvalonMongoDB.projects is _patched_projects:
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from typing import Tuple, Optional
|
||||
|
||||
from urllib.parse import urlparse
|
||||
|
||||
import shotgun_api3
|
||||
|
|
@ -8,21 +8,21 @@ from openpype.lib import OpenPypeSecureRegistry, OpenPypeSettingsRegistry
|
|||
from openpype.modules.shotgrid.lib.record import Credentials
|
||||
|
||||
|
||||
def _get_shotgrid_secure_key(hostname: str, key: str) -> str:
|
||||
def _get_shotgrid_secure_key(hostname, key):
|
||||
"""Secure item key for entered hostname."""
|
||||
return f"shotgrid/{hostname}/{key}"
|
||||
|
||||
|
||||
def _get_secure_value_and_registry(
|
||||
hostname: str,
|
||||
name: str,
|
||||
) -> Tuple[str, OpenPypeSecureRegistry]:
|
||||
hostname,
|
||||
name,
|
||||
):
|
||||
key = _get_shotgrid_secure_key(hostname, name)
|
||||
registry = OpenPypeSecureRegistry(key)
|
||||
return registry.get_item(name, None), registry
|
||||
|
||||
|
||||
def get_shotgrid_hostname(shotgrid_url: str) -> str:
|
||||
def get_shotgrid_hostname(shotgrid_url):
|
||||
|
||||
if not shotgrid_url:
|
||||
raise Exception("Shotgrid url cannot be a null")
|
||||
|
|
@ -35,7 +35,7 @@ def get_shotgrid_hostname(shotgrid_url: str) -> str:
|
|||
# Credentials storing function (using keyring)
|
||||
|
||||
|
||||
def get_credentials(shotgrid_url: str) -> Optional[Credentials]:
|
||||
def get_credentials(shotgrid_url):
|
||||
hostname = get_shotgrid_hostname(shotgrid_url)
|
||||
if not hostname:
|
||||
return None
|
||||
|
|
@ -50,7 +50,7 @@ def get_credentials(shotgrid_url: str) -> Optional[Credentials]:
|
|||
return Credentials(login_value, password_value)
|
||||
|
||||
|
||||
def save_credentials(login: str, password: str, shotgrid_url: str):
|
||||
def save_credentials(login, password, shotgrid_url):
|
||||
hostname = get_shotgrid_hostname(shotgrid_url)
|
||||
_, login_registry = _get_secure_value_and_registry(
|
||||
hostname,
|
||||
|
|
@ -65,7 +65,7 @@ def save_credentials(login: str, password: str, shotgrid_url: str):
|
|||
password_registry.set_item(Credentials.password_key_prefix(), password)
|
||||
|
||||
|
||||
def clear_credentials(shotgrid_url: str):
|
||||
def clear_credentials(shotgrid_url):
|
||||
hostname = get_shotgrid_hostname(shotgrid_url)
|
||||
login_value, login_registry = _get_secure_value_and_registry(
|
||||
hostname,
|
||||
|
|
@ -86,7 +86,7 @@ def clear_credentials(shotgrid_url: str):
|
|||
# Login storing function (using json)
|
||||
|
||||
|
||||
def get_local_login() -> Optional[str]:
|
||||
def get_local_login():
|
||||
reg = OpenPypeSettingsRegistry()
|
||||
try:
|
||||
return str(reg.get_item("shotgrid_login"))
|
||||
|
|
@ -94,7 +94,7 @@ def get_local_login() -> Optional[str]:
|
|||
return None
|
||||
|
||||
|
||||
def save_local_login(login: str):
|
||||
def save_local_login(login):
|
||||
reg = OpenPypeSettingsRegistry()
|
||||
reg.set_item("shotgrid_login", login)
|
||||
|
||||
|
|
@ -105,10 +105,10 @@ def clear_local_login():
|
|||
|
||||
|
||||
def check_credentials(
|
||||
login: str,
|
||||
password: str,
|
||||
shotgrid_url: str,
|
||||
) -> bool:
|
||||
login,
|
||||
password,
|
||||
shotgrid_url,
|
||||
):
|
||||
|
||||
if not shotgrid_url or not login or not password:
|
||||
return False
|
||||
|
|
|
|||
|
|
@ -1,18 +1,20 @@
|
|||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Credentials:
|
||||
login: str
|
||||
password: str
|
||||
login = None
|
||||
password = None
|
||||
|
||||
def is_empty(self) -> bool:
|
||||
def __init__(self, login, password) -> None:
|
||||
super().__init__()
|
||||
self.login = login
|
||||
self.password = password
|
||||
|
||||
def is_empty(self):
|
||||
return not (self.login and self.password)
|
||||
|
||||
@staticmethod
|
||||
def login_key_prefix() -> str:
|
||||
def login_key_prefix():
|
||||
return "login"
|
||||
|
||||
@staticmethod
|
||||
def password_key_prefix() -> str:
|
||||
def password_key_prefix():
|
||||
return "password"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import traceback
|
||||
|
||||
import requests
|
||||
from typing import Dict, Any, List
|
||||
|
||||
from openpype.api import Logger
|
||||
from openpype.modules.shotgrid.lib import (
|
||||
|
|
@ -11,7 +10,7 @@ from openpype.modules.shotgrid.lib import (
|
|||
_LOG = Logger().get_logger("ShotgridModule.server")
|
||||
|
||||
|
||||
def find_linked_projects(email: str) -> List[Dict[str, Any]]:
|
||||
def find_linked_projects(email):
|
||||
url = "".join(
|
||||
[
|
||||
settings_lib.get_leecher_backend_url(),
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
import os
|
||||
from functools import lru_cache
|
||||
from typing import Tuple, Dict, List, Any
|
||||
|
||||
from pymongo import MongoClient
|
||||
from openpype.api import get_system_settings, get_project_settings
|
||||
from openpype.modules.shotgrid.lib.const import MODULE_NAME
|
||||
|
||||
|
||||
def get_project_list() -> List[str]:
|
||||
def get_project_list():
|
||||
mongo_url = os.getenv("OPENPYPE_MONGO")
|
||||
client = MongoClient(mongo_url)
|
||||
db = client['avalon']
|
||||
|
|
@ -15,28 +14,28 @@ def get_project_list() -> List[str]:
|
|||
|
||||
|
||||
@lru_cache(maxsize=64)
|
||||
def get_shotgrid_project_settings(project: str) -> Dict[str, Any]:
|
||||
def get_shotgrid_project_settings(project):
|
||||
return get_project_settings(project).get(MODULE_NAME, {})
|
||||
|
||||
|
||||
@lru_cache(maxsize=64)
|
||||
def get_shotgrid_settings() -> Dict[str, Any]:
|
||||
def get_shotgrid_settings():
|
||||
return get_system_settings().get("modules", {}).get(MODULE_NAME, {})
|
||||
|
||||
|
||||
def get_shotgrid_servers() -> Dict[str, Any]:
|
||||
def get_shotgrid_servers():
|
||||
return get_shotgrid_settings().get("shotgrid_settings", {})
|
||||
|
||||
|
||||
def get_leecher_backend_url() -> str:
|
||||
def get_leecher_backend_url():
|
||||
return get_shotgrid_settings().get("leecher_backend_url")
|
||||
|
||||
|
||||
def filter_projects_by_login() -> bool:
|
||||
def filter_projects_by_login():
|
||||
return bool(get_shotgrid_settings().get("filter_projects_by_login", False))
|
||||
|
||||
|
||||
def get_shotgrid_event_mongo_info() -> Tuple[str, str]:
|
||||
def get_shotgrid_event_mongo_info():
|
||||
database_name = os.environ["OPENPYPE_DATABASE_NAME"]
|
||||
collection_name = "shotgrid_events"
|
||||
return database_name, collection_name
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
import os
|
||||
import threading
|
||||
from typing import Optional, Dict, Any
|
||||
|
||||
from openpype_interfaces import (
|
||||
ITrayModule,
|
||||
|
|
@ -20,13 +19,13 @@ SHOTGRID_MODULE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|||
class ShotgridModule(
|
||||
OpenPypeModule, ITrayModule, IPluginPaths, ILaunchHookPaths
|
||||
):
|
||||
leecher_manager_url: str
|
||||
name: str = "shotgrid"
|
||||
enabled: bool = False
|
||||
project_id: Optional[str] = None
|
||||
tray_wrapper: ShotgridTrayWrapper
|
||||
leecher_manager_url = None
|
||||
name = "shotgrid"
|
||||
enabled = False
|
||||
project_id = None
|
||||
tray_wrapper = None
|
||||
|
||||
def initialize(self, modules_settings: Dict[str, Any]):
|
||||
def initialize(self, modules_settings):
|
||||
patch_avalon_db()
|
||||
threading.Timer(10.0, patch_avalon_db).start()
|
||||
shotgrid_settings = modules_settings.get(self.name, dict())
|
||||
|
|
@ -38,17 +37,17 @@ class ShotgridModule(
|
|||
def connect_with_modules(self, enabled_modules):
|
||||
pass
|
||||
|
||||
def get_global_environments(self) -> Dict[str, Any]:
|
||||
def get_global_environments(self):
|
||||
return {"PROJECT_ID": self.project_id}
|
||||
|
||||
def get_plugin_paths(self) -> Dict[str, Any]:
|
||||
def get_plugin_paths(self):
|
||||
return {
|
||||
"publish": [
|
||||
os.path.join(SHOTGRID_MODULE_DIR, "plugins", "publish")
|
||||
]
|
||||
}
|
||||
|
||||
def get_launch_hook_paths(self) -> str:
|
||||
def get_launch_hook_paths(self):
|
||||
return os.path.join(SHOTGRID_MODULE_DIR, "hooks")
|
||||
|
||||
def tray_init(self):
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import os
|
||||
from typing import Any
|
||||
from Qt import QtCore, QtWidgets, QtGui
|
||||
|
||||
from openpype import style
|
||||
|
|
@ -11,20 +10,20 @@ class CredentialsDialog(QtWidgets.QDialog):
|
|||
SIZE_W = 450
|
||||
SIZE_H = 200
|
||||
|
||||
_module: Any = None
|
||||
_is_logged: bool = False
|
||||
url_label: QtWidgets.QLabel
|
||||
login_label: QtWidgets.QLabel
|
||||
password_label: QtWidgets.QLabel
|
||||
url_input: QtWidgets.QComboBox
|
||||
login_input: QtWidgets.QLineEdit
|
||||
password_input: QtWidgets.QLineEdit
|
||||
input_layout: QtWidgets.QFormLayout
|
||||
login_button: QtWidgets.QPushButton
|
||||
buttons_layout: QtWidgets.QHBoxLayout
|
||||
main_widget: QtWidgets.QVBoxLayout
|
||||
_module = None
|
||||
_is_logged = False
|
||||
url_label = None
|
||||
login_label = None
|
||||
password_label = None
|
||||
url_input = None
|
||||
login_input = None
|
||||
password_input = None
|
||||
input_layout = None
|
||||
login_button = None
|
||||
buttons_layout = None
|
||||
main_widget = None
|
||||
|
||||
login_changed: QtCore.Signal = QtCore.Signal()
|
||||
login_changed = QtCore.Signal()
|
||||
|
||||
def __init__(self, module, parent=None):
|
||||
super(CredentialsDialog, self).__init__(parent)
|
||||
|
|
@ -168,7 +167,7 @@ class CredentialsDialog(QtWidgets.QDialog):
|
|||
self._clear_shotgrid_login()
|
||||
self._on_logout()
|
||||
|
||||
def set_error(self, msg: str):
|
||||
def set_error(self, msg):
|
||||
self.error_label.setText(msg)
|
||||
self.error_label.show()
|
||||
|
||||
|
|
@ -184,15 +183,15 @@ class CredentialsDialog(QtWidgets.QDialog):
|
|||
def _close_widget(self):
|
||||
self.hide()
|
||||
|
||||
def _valid_input(self, input_widget: QtWidgets.QLineEdit):
|
||||
def _valid_input(self, input_widget):
|
||||
input_widget.setStyleSheet("")
|
||||
|
||||
def _invalid_input(self, input_widget: QtWidgets.QLineEdit):
|
||||
def _invalid_input(self, input_widget):
|
||||
input_widget.setStyleSheet("border: 1px solid red;")
|
||||
|
||||
def login_with_credentials(
|
||||
self, url: str, login: str, password: str
|
||||
) -> bool:
|
||||
self, url, login, password
|
||||
):
|
||||
verification = credentials.check_credentials(url, login, password)
|
||||
if verification:
|
||||
credentials.save_credentials(login, password, False)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
import os
|
||||
import webbrowser
|
||||
from typing import Any
|
||||
|
||||
from Qt import QtWidgets
|
||||
|
||||
|
|
@ -11,11 +10,11 @@ from openpype.modules.shotgrid.tray.credential_dialog import (
|
|||
|
||||
|
||||
class ShotgridTrayWrapper:
|
||||
module: Any
|
||||
credentials_dialog: CredentialsDialog
|
||||
logged_user_label: QtWidgets.QAction
|
||||
module = None
|
||||
credentials_dialog = None
|
||||
logged_user_label = None
|
||||
|
||||
def __init__(self, module) -> None:
|
||||
def __init__(self, module):
|
||||
self.module = module
|
||||
self.credentials_dialog = CredentialsDialog(module)
|
||||
self.credentials_dialog.login_changed.connect(self.set_login_label)
|
||||
|
|
@ -65,7 +64,7 @@ class ShotgridTrayWrapper:
|
|||
)
|
||||
m.addAction(shotgrid_manager_action)
|
||||
|
||||
def validate(self) -> bool:
|
||||
def validate(self):
|
||||
login = credentials.get_local_login()
|
||||
|
||||
if not login:
|
||||
|
|
|
|||
812
poetry.lock
generated
812
poetry.lock
generated
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue