exception handling moved from 'synchronization' to 'launch'

This commit is contained in:
iLLiCiTiT 2021-09-14 10:35:10 +02:00
parent e7046b09d7
commit 2bd9ef0b53
2 changed files with 61 additions and 89 deletions

View file

@ -54,13 +54,40 @@ class SyncToAvalonServer(ServerAction):
def launch(self, session, in_entities, event):
project_entity = self.get_project_from_entity(in_entities[0])
project_name = project_entity["full_name"]
result = self.synchronization(
session, in_entities, event, project_name
)
try:
result = self.synchronization(event, project_name)
except Exception as exc:
self.log.error(
"Synchronization failed due to code error", exc_info=True
)
msg = "An error has happened during synchronization"
title = "Synchronization report ({}):".format(project_name)
items = []
items.append({
"type": "label",
"value": "# {}".format(msg)
})
report = {}
try:
report = self.entities_factory.report()
except Exception:
pass
_items = report.get("items") or []
if _items:
items.append(self.entities_factory.report_splitter)
items.extend(_items)
self.show_interface(items, title, event, submit_btn_label="Ok")
return {"success": True, "message": msg}
return result
def synchronization(self, session, in_entities, event, project_name):
def synchronization(self, event, project_name):
time_start = time.time()
self.show_message(event, "Synchronization - Preparing data", True)
@ -134,46 +161,6 @@ class SyncToAvalonServer(ServerAction):
"message": "Synchronization Finished"
}
except Exception:
self.log.error(
"Synchronization failed due to code error", exc_info=True
)
msg = "An error has happened during synchronization"
items = []
items.append({
"type": "label",
"value": "# {}".format(msg)
})
items.append({
"type": "label",
"value": "## Traceback of the error"
})
items.append({
"type": "label",
"value": "<p>{}</p>".format(
str(traceback.format_exc()).replace(
"\n", "<br>").replace(
" ", "&nbsp;"
)
)
})
report = {"items": []}
try:
report = self.entities_factory.report()
except Exception:
pass
title = "Synchronization report ({}):".format(project_name)
_items = report.get("items", [])
if _items:
items.append(self.entities_factory.report_splitter)
items.extend(_items)
self.show_interface(items, title, event)
return {"success": True, "message": msg}
finally:
try:
self.entities_factory.dbcon.uninstall()

View file

@ -65,15 +65,40 @@ class SyncToAvalonLocal(BaseAction):
def launch(self, session, in_entities, event):
project_entity = self.get_project_from_entity(in_entities[0])
project_name = project_entity["full_name"]
result = self.synchronization(
session, in_entities, event, project_name
)
try:
result = self.synchronization(event, project_name)
except Exception as exc:
self.log.error(
"Synchronization failed due to code error", exc_info=True
)
msg = "An error has happened during synchronization"
title = "Synchronization report ({}):".format(project_name)
items = []
items.append({
"type": "label",
"value": "# {}".format(msg)
})
report = {}
try:
report = self.entities_factory.report()
except Exception:
pass
_items = report.get("items") or []
if _items:
items.append(self.entities_factory.report_splitter)
items.extend(_items)
self.show_interface(items, title, event, submit_btn_label="Ok")
return {"success": True, "message": msg}
return result
def synchronization(self, session, in_entities, event, project_name):
def synchronization(self, event, project_name):
time_start = time.time()
self.show_message(event, "Synchronization - Preparing data", True)
@ -147,46 +172,6 @@ class SyncToAvalonLocal(BaseAction):
"message": "Synchronization Finished"
}
except Exception:
self.log.error(
"Synchronization failed due to code error", exc_info=True
)
msg = "An error occurred during synchronization"
items = []
items.append({
"type": "label",
"value": "# {}".format(msg)
})
items.append({
"type": "label",
"value": "## Traceback of the error"
})
items.append({
"type": "label",
"value": "<p>{}</p>".format(
str(traceback.format_exc()).replace(
"\n", "<br>").replace(
" ", "&nbsp;"
)
)
})
report = {"items": []}
try:
report = self.entities_factory.report()
except Exception:
pass
_items = report.get("items", [])
if _items:
items.append(self.entities_factory.report_splitter)
items.extend(_items)
self.show_interface(items, title, event)
return {"success": True, "message": msg}
title = "Synchronization report ({}):".format(project_name)
finally:
try:
self.entities_factory.dbcon.uninstall()