display error dialog when start session fails

This commit is contained in:
Huy Pham 2020-02-20 15:46:18 -08:00
parent ceb3d072da
commit 3a2da0282f
2 changed files with 24 additions and 0 deletions

View file

@ -36,3 +36,12 @@ def show_grpc_error(e: "grpc.RpcError", master, app: "Application"):
title = f"GRPC {title}"
dialog = ErrorDialog(master, app, title, e.details())
dialog.show()
def show_grpc_response_exceptions(class_name, exceptions, master, app: "Application"):
title = f"Exceptions from {class_name}"
detail = ""
for e in exceptions:
detail = detail + f"{e}\n"
dialog = ErrorDialog(master, app, title, detail)
dialog.show()

View file

@ -2,6 +2,8 @@ import logging
import threading
from typing import Any, Callable
from core.gui.errors import show_grpc_response_exceptions
class BackgroundTask:
def __init__(self, master: Any, task: Callable, callback: Callable = None, args=()):
@ -19,6 +21,19 @@ class BackgroundTask:
def run(self):
result = self.task(*self.args)
logging.info("task completed")
# if start session fails, a response with Result: False and a list of exceptions is returned
if hasattr(result, "result") and not result.result:
if hasattr(result, "exceptions") and len(result.exceptions) > 0:
self.master.after(
0,
show_grpc_response_exceptions,
*(
result.__class__.__name__,
result.exceptions,
self.master,
self.master,
)
)
if self.callback:
if result is None:
args = ()