feat: add UI debugging option
This commit is contained in:
parent
1049f5d6c2
commit
849785b668
2 changed files with 14 additions and 5 deletions
|
|
@ -3,6 +3,7 @@ from typing import ClassVar
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe.utils.data import cint
|
||||||
from frappe.utils.pdf import get_host_url
|
from frappe.utils.pdf import get_host_url
|
||||||
from frappe.utils.print_utils import convert_uom, parse_float_and_unit
|
from frappe.utils.print_utils import convert_uom, parse_float_and_unit
|
||||||
|
|
||||||
|
|
@ -10,6 +11,7 @@ from frappe.utils.print_utils import convert_uom, parse_float_and_unit
|
||||||
class Browser:
|
class Browser:
|
||||||
def __init__(self, generator, print_format, html, options):
|
def __init__(self, generator, print_format, html, options):
|
||||||
self.is_print_designer = frappe.get_cached_value("Print Format", print_format, "print_designer")
|
self.is_print_designer = frappe.get_cached_value("Print Format", print_format, "print_designer")
|
||||||
|
self.debug_mode = bool(cint(frappe.form_dict.get("pdf_debug")))
|
||||||
self.browserID = frappe.utils.random_string(10)
|
self.browserID = frappe.utils.random_string(10)
|
||||||
generator.add_browser(self.browserID)
|
generator.add_browser(self.browserID)
|
||||||
# sets soup from html
|
# sets soup from html
|
||||||
|
|
@ -31,7 +33,8 @@ class Browser:
|
||||||
# now wait for page to load as we need DOM to generate pdf
|
# now wait for page to load as we need DOM to generate pdf
|
||||||
self.body_page.wait_for_set_content()
|
self.body_page.wait_for_set_content()
|
||||||
self.body_pdf = self.body_page.generate_pdf(raw=not self.header_page and not self.footer_page)
|
self.body_pdf = self.body_page.generate_pdf(raw=not self.header_page and not self.footer_page)
|
||||||
self.body_page.close()
|
if not self.debug_mode:
|
||||||
|
self.body_page.close()
|
||||||
self.update_header_footer_page()
|
self.update_header_footer_page()
|
||||||
|
|
||||||
if self.header_page:
|
if self.header_page:
|
||||||
|
|
@ -39,16 +42,19 @@ class Browser:
|
||||||
self.header_pdf = self.header_page.get_pdf_from_stream(self.header_page.get_pdf_stream_id())
|
self.header_pdf = self.header_page.get_pdf_from_stream(self.header_page.get_pdf_stream_id())
|
||||||
else:
|
else:
|
||||||
self.header_pdf = self.header_page.generate_pdf()
|
self.header_pdf = self.header_page.generate_pdf()
|
||||||
self.header_page.close()
|
if not self.debug_mode:
|
||||||
|
self.header_page.close()
|
||||||
|
|
||||||
if self.footer_page:
|
if self.footer_page:
|
||||||
if not self.is_footer_dynamic:
|
if not self.is_footer_dynamic:
|
||||||
self.footer_pdf = self.footer_page.get_pdf_from_stream(self.footer_page.get_pdf_stream_id())
|
self.footer_pdf = self.footer_page.get_pdf_from_stream(self.footer_page.get_pdf_stream_id())
|
||||||
else:
|
else:
|
||||||
self.footer_pdf = self.footer_page.generate_pdf()
|
self.footer_pdf = self.footer_page.generate_pdf()
|
||||||
self.footer_page.close()
|
if not self.debug_mode:
|
||||||
|
self.footer_page.close()
|
||||||
|
|
||||||
self.close()
|
if not self.debug_mode:
|
||||||
|
self.close()
|
||||||
|
|
||||||
generator.remove_browser(self.browserID)
|
generator.remove_browser(self.browserID)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import requests
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
|
from frappe.utils.data import cint
|
||||||
from frappe.utils.print_utils import find_or_download_chromium_executable
|
from frappe.utils.print_utils import find_or_download_chromium_executable
|
||||||
|
|
||||||
# TODO: close browser when worker is killed.
|
# TODO: close browser when worker is killed.
|
||||||
|
|
@ -69,11 +70,13 @@ class ChromePDFGenerator:
|
||||||
self.USE_PERSISTENT_CHROMIUM = site_config.get("use_persistent_chromium", False)
|
self.USE_PERSISTENT_CHROMIUM = site_config.get("use_persistent_chromium", False)
|
||||||
# time to wait for chromium to start and provide dev tools url used in _set_devtools_url.
|
# time to wait for chromium to start and provide dev tools url used in _set_devtools_url.
|
||||||
self.START_TIMEOUT = site_config.get("chromium_start_timeout", 3)
|
self.START_TIMEOUT = site_config.get("chromium_start_timeout", 3)
|
||||||
|
# Allow a single PDF request to opt into interactive Chromium debugging.
|
||||||
|
self.debug_mode = bool(cint(frappe.form_dict.get("pdf_debug")))
|
||||||
|
|
||||||
self._chromium_path = find_or_download_chromium_executable()
|
self._chromium_path = find_or_download_chromium_executable()
|
||||||
if self._verify_chromium_installation():
|
if self._verify_chromium_installation():
|
||||||
if not self._devtools_url:
|
if not self._devtools_url:
|
||||||
self.start_chromium_process()
|
self.start_chromium_process(debug=self.debug_mode)
|
||||||
|
|
||||||
def _verify_chromium_installation(self):
|
def _verify_chromium_installation(self):
|
||||||
"""Ensures Chromium is available and executable, raising clearer errors if not."""
|
"""Ensures Chromium is available and executable, raising clearer errors if not."""
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue