From 63fbff77ae363bbcb2240a2f1425badb77ffbafa Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 30 Jan 2018 19:01:24 +0530 Subject: [PATCH 1/2] Escape value for using in mysql regexp --- frappe/model/naming.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/frappe/model/naming.py b/frappe/model/naming.py index dc8fb74f19..88fba659c9 100644 --- a/frappe/model/naming.py +++ b/frappe/model/naming.py @@ -200,17 +200,13 @@ def _set_amended_name(doc): def append_number_if_name_exists(doctype, value, fieldname='name', separator='-'): exists = frappe.db.exists(doctype, value if fieldname == 'name' else {fieldname: value}) - + + regex = '^{value}{separator}[[:digit:]]+'.format(value=re.escape(value), separator=separator) if exists: - # should be escaped 2 times since - # python string will parse the first escape - escaped_value = re.escape(re.escape(value)) - last = frappe.db.sql("""select {fieldname} from `tab{doctype}` - where {fieldname} regexp '^{value}{separator}[[:digit:]]+' + where {fieldname} regexp %s order by length({fieldname}) desc, - {fieldname} desc limit 1""".format(doctype=doctype, - value=escaped_value, fieldname=fieldname, separator=separator)) + {fieldname} desc limit 1""".format(doctype=doctype, fieldname=fieldname), regex) if last: count = str(cint(last[0][0].rsplit(separator, 1)[1]) + 1) From 1bac7fa2a7e253d44c72469eb8d9f7237a8dd9db Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 30 Jan 2018 19:32:34 +0600 Subject: [PATCH 2/2] bumped to version 10.0.18 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 83ec87e92d..d436288c7d 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template -__version__ = '10.0.17' +__version__ = '10.0.18' __title__ = "Frappe Framework" local = Local()