Drawn back to the obsolete version of python

This commit is contained in:
Vic Bartel 2022-04-08 15:12:29 +02:00
parent d106ba4694
commit 3c1ecfb36e
9 changed files with 493 additions and 463 deletions

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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(),

View file

@ -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

View file

@ -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):

View file

@ -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)

View file

@ -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

File diff suppressed because it is too large Load diff