From 4ef0aa9dc4546e67d4542393bb5b4df7afbe2b99 Mon Sep 17 00:00:00 2001 From: "Karl O. Pinc" Date: Mon, 19 Aug 2024 11:35:49 -0500 Subject: [PATCH] Refactor to abstract formatting of error detail --- src/pgwui_sql/views/sql.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/pgwui_sql/views/sql.py b/src/pgwui_sql/views/sql.py index 7307050..59884ba 100644 --- a/src/pgwui_sql/views/sql.py +++ b/src/pgwui_sql/views/sql.py @@ -150,31 +150,33 @@ class SQLHandler(pgwui_core.core.SessionDBHandler): return response + def format_detail(self, err, stmt_text): + detail = [] + if err.diag.message_detail is not None: + detail.append(markupsafe.escape(err.diag.message_detail)) + if err.diag.message_hint is not None: + detail.append( + f'Hint: {markupsafe.escape(err.diag.message_hint)}') + detail = '
\n'.join(detail) + + numbered_stmts = [] + numbered_stmts.append('
    ') + for line in stmt_text.rstrip().split('\n'): + numbered_stmts.append(f'
  1. {markupsafe.escape(line)}
  2. ') + numbered_stmts.append('
') + + return detail + '\n'.join(numbered_stmts) + def execute(self, cur, stmt_text): try: cur.execute(stmt_text) except psycopg.errors.Error as err: lineno = stmt_text.count( '\n', 0, int(err.diag.statement_position) - 1) + 1 - - detail = [] - if err.diag.message_detail is not None: - detail.append(markupsafe.escape(err.diag.message_detail)) - if err.diag.message_hint is not None: - detail.append( - f'Hint: {markupsafe.escape(err.diag.message_hint)}') - detail = '
\n'.join(detail) - - numbered_stmts = [] - numbered_stmts.append('
    ') - for line in stmt_text.rstrip().split('\n'): - numbered_stmts.append(f'
  1. {markupsafe.escape(line)}
  2. ') - numbered_stmts.append('
') - raise sql_ex.SQLError(err.diag.severity, lineno, descr=err.diag.message_primary, - detail=detail + '\n'.join(numbered_stmts)) + detail=self.format_detail(err, stmt_text)) def get_result_rows(self, cur, sql_results): first = True -- 2.34.1