Allow users to save an error report
This commit is contained in:
@@ -19,7 +19,6 @@ from ..foundation import context as benchmark_context
|
|||||||
from .global_state import G
|
from .global_state import G
|
||||||
from . import draw
|
from . import draw
|
||||||
|
|
||||||
|
|
||||||
QUICK_SCENES = ["bmw27",
|
QUICK_SCENES = ["bmw27",
|
||||||
"classroom"]
|
"classroom"]
|
||||||
|
|
||||||
@@ -363,6 +362,9 @@ class BENCHMARK_PT_main(Panel):
|
|||||||
text = "Retry Submission"
|
text = "Retry Submission"
|
||||||
sub.operator("benchmark.share", text=text)
|
sub.operator("benchmark.share", text=text)
|
||||||
|
|
||||||
|
if G.submission_exception:
|
||||||
|
sub.operator("benchmark.save_error_report", text="Save Error Report...")
|
||||||
|
|
||||||
sub = col.row()
|
sub = col.row()
|
||||||
subsub = sub.split()
|
subsub = sub.split()
|
||||||
subsub.emboss = 'LINK'
|
subsub.emboss = 'LINK'
|
||||||
@@ -374,7 +376,8 @@ class BENCHMARK_PT_main(Panel):
|
|||||||
subsub.scale_y = 1.5
|
subsub.scale_y = 1.5
|
||||||
subsub.operator("benchmark.restart", text="Start Again")
|
subsub.operator("benchmark.restart", text="Start Again")
|
||||||
|
|
||||||
split.label()
|
split.label('blablabla')
|
||||||
|
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
with G.progress_lock:
|
with G.progress_lock:
|
||||||
@@ -638,6 +641,66 @@ class BENCHMARK_OT_save(bpy.types.Operator):
|
|||||||
make_buttons_green()
|
make_buttons_green()
|
||||||
|
|
||||||
|
|
||||||
|
class BENCHMARK_OT_save_error_report(bpy.types.Operator):
|
||||||
|
bl_idname = "benchmark.save_error_report"
|
||||||
|
bl_label = "Save Error Report"
|
||||||
|
|
||||||
|
filepath: bpy.props.StringProperty(
|
||||||
|
subtype='FILE_PATH',
|
||||||
|
options={'SKIP_SAVE'},
|
||||||
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context) -> bool:
|
||||||
|
with G.progress_lock:
|
||||||
|
return G.submission_exception is not None
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
import traceback
|
||||||
|
import functools
|
||||||
|
import pprint
|
||||||
|
from benchmark.version import version
|
||||||
|
|
||||||
|
with G.progress_lock, open(self.filepath, "w", encoding='utf-8') as outfile:
|
||||||
|
p = functools.partial(print, file=outfile)
|
||||||
|
p(20 * '=', 'Benchmark Client')
|
||||||
|
p('version:', version)
|
||||||
|
if 'MYDATA' in os.environ:
|
||||||
|
p('mydata URL:', os.environ['MYDATA'])
|
||||||
|
p()
|
||||||
|
|
||||||
|
p(20 * '=', 'Exception:')
|
||||||
|
# We don't have the traceback info here any more, hence 'exception only'
|
||||||
|
ex = G.submission_exception
|
||||||
|
exc_info = traceback.format_exception_only(type(ex), ex)
|
||||||
|
for line in exc_info:
|
||||||
|
p(line)
|
||||||
|
|
||||||
|
p()
|
||||||
|
p(20 * '=', 'State:')
|
||||||
|
g_dict = {k: v for k, v in G.__dict__.items()
|
||||||
|
if not k.startswith('_')}
|
||||||
|
p(pprint.pformat(g_dict, width=120))
|
||||||
|
|
||||||
|
make_buttons_green()
|
||||||
|
return {'FINISHED'}
|
||||||
|
|
||||||
|
def invoke(self, context, event):
|
||||||
|
import os
|
||||||
|
make_buttons_default()
|
||||||
|
|
||||||
|
if not self.filepath:
|
||||||
|
self.filepath = os.path.join(
|
||||||
|
os.path.expanduser("~"), "benchmark-error-report.txt")
|
||||||
|
|
||||||
|
wm = context.window_manager
|
||||||
|
wm.fileselect_add(self)
|
||||||
|
return {'RUNNING_MODAL'}
|
||||||
|
|
||||||
|
def cancel(self, context):
|
||||||
|
make_buttons_green()
|
||||||
|
|
||||||
|
|
||||||
class BENCHMARK_OT_share(bpy.types.Operator):
|
class BENCHMARK_OT_share(bpy.types.Operator):
|
||||||
bl_idname = "benchmark.share"
|
bl_idname = "benchmark.share"
|
||||||
bl_label = "Share Benchmark Result"
|
bl_label = "Share Benchmark Result"
|
||||||
@@ -842,6 +905,7 @@ classes = (
|
|||||||
BENCHMARK_OT_run_quick,
|
BENCHMARK_OT_run_quick,
|
||||||
BENCHMARK_OT_run_complete,
|
BENCHMARK_OT_run_complete,
|
||||||
BENCHMARK_OT_save,
|
BENCHMARK_OT_save,
|
||||||
|
BENCHMARK_OT_save_error_report,
|
||||||
BENCHMARK_OT_share,
|
BENCHMARK_OT_share,
|
||||||
BENCHMARK_OT_opendata_link,
|
BENCHMARK_OT_opendata_link,
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user