diff --git a/python/sync/resolver.py b/python/sync/resolver.py index fbd0e7e..0183da8 100644 --- a/python/sync/resolver.py +++ b/python/sync/resolver.py @@ -96,5 +96,4 @@ def entity_info(self): info = { "error" : str(e) } - self.app.log_error(traceback.format_exc()) return info diff --git a/python/sync/sync.py b/python/sync/sync.py index 4380d92..6e88019 100644 --- a/python/sync/sync.py +++ b/python/sync/sync.py @@ -12,13 +12,10 @@ Common Perforce sync utility methods """ - import os import socket import re import threading -import traceback - import sgtk from sgtk import TankError @@ -114,8 +111,6 @@ def sync_with_dialog(app, entities_to_sync, specific_files=False, child_asset_i :returns Qt UI: A new Perforce sync dialog """ + fw = sgtk.platform.current_bundle() - try: - return SyncHandler(fw).sync_with_dlg(app, entities_to_sync, specific_files=specific_files, child_asset_ids=child_asset_ids) - except Exception as e: - fw.log_error(traceback.format_exc()) + return SyncHandler(fw).sync_with_dlg(app, entities_to_sync, specific_files=specific_files, child_asset_ids=child_asset_ids) diff --git a/python/widgets/open_sync_form.py b/python/widgets/open_sync_form.py index 44ccb53..c1a6f69 100644 --- a/python/widgets/open_sync_form.py +++ b/python/widgets/open_sync_form.py @@ -17,7 +17,6 @@ import time import sys - from functools import partial from .sync_workers import SyncWorker, AssetInfoGatherWorker @@ -48,10 +47,6 @@ def __init__(self, parent_sgtk_app, entities_to_sync, specific_files, child_asse self.child_asset_ids = child_asset_ids self.scan() - def log_error(self, e): - self.fw.log_error(str(e)) - self.fw.log_error(traceback.format_exc()) - def scan(self): self._asset_item_info = {} self._asset_items = {} @@ -281,7 +276,7 @@ def open_context_menu(self, point): menu.exec_(self._asset_tree.mapToGlobal(point)) except Exception as e: - self.log_error(e) + self.fw.log_error(e) @@ -316,7 +311,7 @@ def save_ui_state(self, state_str=None): self.prefs.write(data) except Exception as e: - self.log_error(e) + self.fw.log_info(str(e)) def filter_syncd_items(self): """ @@ -342,7 +337,7 @@ def filter_syncd_items(self): except Exception as e: - self.log_error(e) + self.fw.log_info(str(e)) def filter_items(self): @@ -389,7 +384,7 @@ def filter_items(self): getattr(self, "_{}_filter".format(f)).setIcon(QtGui.QIcon()) except Exception as e: - self.log_error(e) + self.fw.log_info(str(e)) def set_ui_interactive(self, state): """ @@ -462,7 +457,7 @@ def update_available_filters(self, filter_info): actions[filter_value] = action except Exception as e: - self.log_error(e) + self.fw.log_info(str(e)) def make_top_level_tree_item(self, asset_name=None, status=None, details=None, icon=None, root_path=None): @@ -539,7 +534,7 @@ def make_sync_tree_item(self, sync_item_info): #self.filter_items except Exception as e: - self.log_error(e) + self.fw.log_info(str(e)) def asset_info_handler(self, info_processed_dict): @@ -603,42 +598,40 @@ def populate_assets(self): Utilize a global threadpool to process workers to ask P4 server for what there is to sync for these. """ - try: - self.asset_item_registry = {} + + self.asset_item_registry = {} - self.sync_items = {} - self.sync_order = [] - self.progress = 0 + self.sync_items = {} + self.sync_order = [] + self.progress = 0 - self.progress_maximum = len(self.entities_to_sync) - self._progress_bar.setRange(0, self.progress_maximum) - self._progress_bar.setValue(0) - self.set_progress_message("Requesting asset information for SG selection...") + self.progress_maximum = len(self.entities_to_sync) + self._progress_bar.setRange(0, self.progress_maximum) + self._progress_bar.setValue(0) + self.set_progress_message("Requesting asset information for SG selection...") - # self.fw.log_info(len(self.entities_to_sync)) - # iterate all parent assets - for entity_to_sync in self.entities_to_sync: + # self.fw.log_info(len(self.entities_to_sync)) + # iterate all parent assets + for entity_to_sync in self.entities_to_sync: - asset_info_gather_worker = AssetInfoGatherWorker(app=self.app, - entity=entity_to_sync, - framework=self.fw) + asset_info_gather_worker = AssetInfoGatherWorker(app=self.app, + entity=entity_to_sync, + framework=self.fw) - if self._force_sync.isChecked(): - asset_info_gather_worker.force_sync = True + if self._force_sync.isChecked(): + asset_info_gather_worker.force_sync = True - asset_info_gather_worker.info_gathered.connect( self.asset_info_handler ) - asset_info_gather_worker.progress.connect( self.iterate_progress ) - asset_info_gather_worker.item_found_to_sync.connect(self.make_sync_tree_item) - asset_info_gather_worker.status_update.connect(self.set_progress_message) - asset_info_gather_worker.includes.connect(self.update_available_filters) + asset_info_gather_worker.info_gathered.connect( self.asset_info_handler ) + asset_info_gather_worker.progress.connect( self.iterate_progress ) + asset_info_gather_worker.item_found_to_sync.connect(self.make_sync_tree_item) + asset_info_gather_worker.status_update.connect(self.set_progress_message) + asset_info_gather_worker.includes.connect(self.update_available_filters) - if self.child_asset_ids: - if entity_to_sync.get('id') in self.child_asset_ids: - asset_info_gather_worker.child = True + if self.child_asset_ids: + if entity_to_sync.get('id') in self.child_asset_ids: + asset_info_gather_worker.child = True - self.threadpool.start(asset_info_gather_worker) - except Exception as e: - self.log_error(e) + self.threadpool.start(asset_info_gather_worker) def make_icon(self, name): @@ -717,42 +710,40 @@ def start_sync(self): Iterate through assets and their sync items to start workers for all paths that require syncs. Utilize a global threadpool to process """ - try: - self.set_ui_interactive(False) - workers = [] - for asset_name, asset_dict in self._asset_items.items(): - for sync_path, sync_widget in asset_dict['child_widgets'].items(): - if not sync_widget.isHidden(): - sync_worker = SyncWorker() - sync_worker.path_to_sync = sync_path - sync_worker.asset_name = asset_name - - sync_worker.fw = self.fw - - sync_worker.started.connect(self.sync_in_progress) - # worker.finished.connect(self.sync_completed) - sync_worker.progress.connect(self.item_syncd) - - workers.append(sync_worker) + self.set_ui_interactive(False) + + workers = [] + for asset_name, asset_dict in self._asset_items.items(): + for sync_path, sync_widget in asset_dict['child_widgets'].items(): + if not sync_widget.isHidden(): + sync_worker = SyncWorker() + sync_worker.path_to_sync = sync_path + sync_worker.asset_name = asset_name + + sync_worker.fw = self.fw - self.progress = 0 + sync_worker.started.connect(self.sync_in_progress) + # worker.finished.connect(self.sync_completed) + sync_worker.progress.connect(self.item_syncd) - self.progress_maximum = len(workers) - self._progress_bar.setRange(0, self.progress_maximum) - self._progress_bar.setValue(0) - self._progress_bar.setVisible(True) - self._progress_bar.setFormat("%p%") + workers.append(sync_worker) + + self.progress = 0 - # make threadpool to take all workers and multithread their execution - self.threadpool = QtCore.QThreadPool.globalInstance() - self.threadpool.setMaxThreadCount(min(24, self.threadpool.maxThreadCount())) + self.progress_maximum = len(workers) + self._progress_bar.setRange(0, self.progress_maximum) + self._progress_bar.setValue(0) + self._progress_bar.setVisible(True) + self._progress_bar.setFormat("%p%") - self.fw.log_debug("Starting Threaded P4 Sync...") + # make threadpool to take all workers and multithread their execution + self.threadpool = QtCore.QThreadPool.globalInstance() + self.threadpool.setMaxThreadCount(min(24, self.threadpool.maxThreadCount())) - # setup workers for multiprocessing + self.fw.log_debug("Starting Threaded P4 Sync...") - for sync_worker in workers: - self.threadpool.start(sync_worker) - except Exception as e: - self.log_error(e) \ No newline at end of file + # setup workers for multiprocessing + + for sync_worker in workers: + self.threadpool.start(sync_worker) diff --git a/python/widgets/sync_workers.py b/python/widgets/sync_workers.py index 06ad377..05aa63b 100644 --- a/python/widgets/sync_workers.py +++ b/python/widgets/sync_workers.py @@ -36,8 +36,6 @@ class SyncWorker(QtCore.QRunnable): path_to_sync = None asset_name = None - - def __init__(self): """ Handles syncing specific file from perforce depot to local workspace on disk @@ -51,10 +49,6 @@ def __init__(self): self.finished = self.signaller.finished self.progress = self.signaller.progress - def log_error(self, e): - self.fw.log_error(str(e)) - self.fw.log_error(traceback.format_exc()) - @QtCore.Slot() def run(self): @@ -117,28 +111,21 @@ def __init__(self, app=None, entity=None, framework=None): self.publish_file = False - def log_error(self, e): - self.fw.log_error(str(e)) - self.fw.log_error(traceback.format_exc()) - @property def asset_name(self): - try: - name = None - if self.asset_item.get('context'): - name = self.asset_item.get('context').entity.get('name') - if not name: - if self.entity.get('code'): - name = self.entity.get('code') - else: - name = self.app.shotgun.find_one(self.entity.get('type'), [["id", "is", self.entity.get('id')]], ['code']).get('code') - - if self.entity.get('type') in ["PublishFiles"]: - sg_ret = self.app.shotgun.find_one("Asset", [["id", "is", self.entity.get('entity').get('id')]], ['code']) - name = sg_ret.get('code') - return name - except Exception as e: - self.log_error(e) + name = None + if self.asset_item.get('context'): + name = self.asset_item.get('context').entity.get('name') + if not name: + if self.entity.get('code'): + name = self.entity.get('code') + else: + name = self.app.shotgun.find_one(self.entity.get('type'), [["id", "is", self.entity.get('id')]], ['code']).get('code') + + if self.entity.get('type') in ["PublishFiles"]: + sg_ret = self.app.shotgun.find_one("Asset", [["id", "is", self.entity.get('entity').get('id')]], ['code']) + name = sg_ret.get('code') + return name @property def root_path(self): @@ -149,7 +136,6 @@ def root_path(self): rp = os.path.join(self.asset_item.get('root_path'), p4_path_operator ) if self.entity.get('type') in ["PublishedFile"]: - # TODO: this needs to become dynamic rp = "B:/" + self.entity.get('path_cache') return rp @@ -304,6 +290,6 @@ def run(self): except Exception as e: - self.log_error(e) + self.fw.log_error(traceback.format_exc()) self.progress.emit("Gathering info for {} {}".format(self.asset_name, progress_status_string))