From f3b2ba50f0facf160a9ae357f5a6e1e0c4a43b88 Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Fri, 22 Jun 2018 03:51:33 +0530 Subject: [PATCH 1/3] [global-search] trim varchar columns --- frappe/database.py | 5 +++++ frappe/utils/global_search.py | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/frappe/database.py b/frappe/database.py index b7c982ace2..ce8f2c0c8f 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -15,6 +15,7 @@ import frappe.model.meta from frappe.utils import now, get_datetime, cstr from frappe import _ from frappe.model.utils.link_count import flush_local_link_count +from frappe.model.db_schema import varchar_len from frappe.utils.background_jobs import execute_job, get_queue # imports - compatibility imports @@ -913,6 +914,10 @@ class Database: return s + def trim_varchar(self, s): + """Trim given string to the defined varchar length""" + return s[:int(varchar_len)] + def enqueue_jobs_after_commit(): if frappe.flags.enqueue_after_commit and len(frappe.flags.enqueue_after_commit) > 0: for job in frappe.flags.enqueue_after_commit: diff --git a/frappe/utils/global_search.py b/frappe/utils/global_search.py index 5811d78057..d9c83081cc 100644 --- a/frappe/utils/global_search.py +++ b/frappe/utils/global_search.py @@ -142,8 +142,8 @@ def rebuild_for_doctype(doctype): "name": frappe.db.escape(doc.name), "content": frappe.db.escape(' ||| '.join(content or '')), "published": published, - "title": frappe.db.escape(title or ''), - "route": frappe.db.escape(route or '') + "title": frappe.db.trim_varchar(frappe.db.escape(title or '')), + "route": frappe.db.trim_varchar(frappe.db.escape(route or '')) }) if all_contents: insert_values_for_multiple_docs(all_contents) @@ -257,9 +257,12 @@ def update_global_search(doc): if hasattr(doc, 'is_website_published') and doc.meta.allow_guest_to_view: published = 1 if doc.is_website_published() else 0 + title = frappe.db.trim_varchar(doc.get_title()) + route = frappe.db.trim_varchar(doc.get('route')) + frappe.flags.update_global_search.append( dict(doctype=doc.doctype, name=doc.name, content=' ||| '.join(content or ''), - published=published, title=doc.get_title(), route=doc.get('route'))) + published=published, title=title, route=route)) enqueue_global_search() From 76be772e4c9b385967340903e77229a639a8dac6 Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Fri, 22 Jun 2018 17:21:00 +0530 Subject: [PATCH 2/3] [global-search] trim strings directly --- frappe/database.py | 5 ----- frappe/utils/global_search.py | 9 +++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/frappe/database.py b/frappe/database.py index ce8f2c0c8f..b7c982ace2 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -15,7 +15,6 @@ import frappe.model.meta from frappe.utils import now, get_datetime, cstr from frappe import _ from frappe.model.utils.link_count import flush_local_link_count -from frappe.model.db_schema import varchar_len from frappe.utils.background_jobs import execute_job, get_queue # imports - compatibility imports @@ -914,10 +913,6 @@ class Database: return s - def trim_varchar(self, s): - """Trim given string to the defined varchar length""" - return s[:int(varchar_len)] - def enqueue_jobs_after_commit(): if frappe.flags.enqueue_after_commit and len(frappe.flags.enqueue_after_commit) > 0: for job in frappe.flags.enqueue_after_commit: diff --git a/frappe/utils/global_search.py b/frappe/utils/global_search.py index d9c83081cc..952c1dbac2 100644 --- a/frappe/utils/global_search.py +++ b/frappe/utils/global_search.py @@ -8,6 +8,7 @@ import re import redis from frappe.utils import cint, strip_html_tags from frappe.model.base_document import get_controller +from frappe.model.db_schema import varchar_len from six import text_type @@ -142,8 +143,8 @@ def rebuild_for_doctype(doctype): "name": frappe.db.escape(doc.name), "content": frappe.db.escape(' ||| '.join(content or '')), "published": published, - "title": frappe.db.trim_varchar(frappe.db.escape(title or '')), - "route": frappe.db.trim_varchar(frappe.db.escape(route or '')) + "title": frappe.db.escape(title or '')[:int(varchar_len)], + "route": frappe.db.escape(route or '')[:int(varchar_len)] }) if all_contents: insert_values_for_multiple_docs(all_contents) @@ -257,8 +258,8 @@ def update_global_search(doc): if hasattr(doc, 'is_website_published') and doc.meta.allow_guest_to_view: published = 1 if doc.is_website_published() else 0 - title = frappe.db.trim_varchar(doc.get_title()) - route = frappe.db.trim_varchar(doc.get('route')) + title = doc.get_title()[:int(varchar_len)] + route = doc.get('route')[:int(varchar_len)] frappe.flags.update_global_search.append( dict(doctype=doc.doctype, name=doc.name, content=' ||| '.join(content or ''), From cf1338bbcae2568f9630b7ab2bbb3ae5c9d13d8b Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Mon, 25 Jun 2018 09:18:31 +0530 Subject: [PATCH 3/3] [global-search] route check --- frappe/utils/global_search.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/frappe/utils/global_search.py b/frappe/utils/global_search.py index 952c1dbac2..a3d728cc2f 100644 --- a/frappe/utils/global_search.py +++ b/frappe/utils/global_search.py @@ -258,12 +258,10 @@ def update_global_search(doc): if hasattr(doc, 'is_website_published') and doc.meta.allow_guest_to_view: published = 1 if doc.is_website_published() else 0 - title = doc.get_title()[:int(varchar_len)] - route = doc.get('route')[:int(varchar_len)] - frappe.flags.update_global_search.append( dict(doctype=doc.doctype, name=doc.name, content=' ||| '.join(content or ''), - published=published, title=title, route=route)) + published=published, title=doc.get_title()[:int(varchar_len)], route=doc.get('route'))) + enqueue_global_search()