From 424a7d39bc455d7fd540e874105d11aa23795f9e Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 16 Nov 2022 16:00:24 +0530 Subject: [PATCH 1/3] fix: webform read only field not working --- frappe/public/js/frappe/form/controls/base_input.js | 2 +- frappe/public/js/frappe/web_form/webform_script.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/form/controls/base_input.js b/frappe/public/js/frappe/form/controls/base_input.js index 030d35afdb..5910ae0dd7 100644 --- a/frappe/public/js/frappe/form/controls/base_input.js +++ b/frappe/public/js/frappe/form/controls/base_input.js @@ -79,7 +79,7 @@ frappe.ui.form.ControlInput = class ControlInput extends frappe.ui.form.Control if (me.frm) { me.value = frappe.model.get_value(me.doctype, me.docname, me.df.fieldname); } else if (me.doc) { - me.value = me.doc[me.df.fieldname]; + me.value = me.doc[me.df.fieldname] || ""; } if (me.can_write()) { diff --git a/frappe/public/js/frappe/web_form/webform_script.js b/frappe/public/js/frappe/web_form/webform_script.js index f24e10cff3..8a5d123d2f 100644 --- a/frappe/public/js/frappe/web_form/webform_script.js +++ b/frappe/public/js/frappe/web_form/webform_script.js @@ -55,7 +55,7 @@ frappe.ready(function () { function setup_fields(web_form_doc, doc_data) { web_form_doc.web_form_fields.forEach((df) => { df.is_web_form = true; - df.read_only = !web_form_doc.is_new && !web_form_doc.in_edit_mode; + df.read_only = df.read_only || (!web_form_doc.is_new && !web_form_doc.in_edit_mode); if (df.fieldtype === "Table") { df.get_data = () => { let data = []; From 0d5d2cf95c52f07660e91116e3684b831f2f6275 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 16 Nov 2022 16:15:31 +0530 Subject: [PATCH 2/3] ci: fix flake8 URL (#18895) --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0783e94457..e976230244 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -54,8 +54,8 @@ repos: hooks: - id: isort - - repo: https://gitlab.com/pycqa/flake8 - rev: 3.9.2 + - repo: https://github.com/PyCQA/flake8 + rev: 5.0.4 hooks: - id: flake8 additional_dependencies: ['flake8-bugbear',] From 70633573c2b25c296666b8da719d5b53e0cd3ae8 Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Wed, 16 Nov 2022 20:48:50 +0530 Subject: [PATCH 3/3] fix: dont convert row format if not required (#18900) --- frappe/installer.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/frappe/installer.py b/frappe/installer.py index 2a6c29a17f..0cd9b32063 100644 --- a/frappe/installer.py +++ b/frappe/installer.py @@ -3,8 +3,12 @@ import json import os +import re +import subprocess import sys from collections import OrderedDict +from contextlib import suppress +from shutil import which import click @@ -653,10 +657,22 @@ def convert_archive_content(sql_file_path): if frappe.conf.db_type == "mariadb": # ever since mariaDB 10.6, row_format COMPRESSED has been deprecated and removed # this step is added to ease restoring sites depending on older mariaDB servers + # This change was reverted by mariadb in 10.6.6 + # Ref: https://mariadb.com/kb/en/innodb-compressed-row-format/#read-only from pathlib import Path from frappe.utils import random_string + version = _guess_mariadb_version() + if not version or (version <= (10, 6, 0) or version >= (10, 6, 6)): + return + + click.secho( + "MariaDB version being used does not support ROW_FORMAT=COMPRESSED, " + "converting into DYNAMIC format.", + fg="yellow", + ) + old_sql_file_path = Path(f"{sql_file_path}_{random_string(10)}") sql_file_path = Path(sql_file_path) @@ -684,6 +700,20 @@ def extract_sql_gzip(sql_gz_path): return decompressed_file +def _guess_mariadb_version() -> tuple[int] | None: + # Using command-line because we *might* not have a connection yet and this command is required + # in non-interactive mode. + # Use db.sql("select version()") instead if connection is available. + with suppress(Exception): + mysql = which("mysql") + version_output = subprocess.getoutput(f"{mysql} --version") + version_regex = r"(?P\d+\.\d+\.\d+)-MariaDB" + + version = re.search(version_regex, version_output).group("version") + + return tuple(int(v) for v in version.split(".")) + + def extract_files(site_name, file_path): import shutil import subprocess