diff --git a/frappe/__init__.py b/frappe/__init__.py index 746d5164ea..cc6e7cb32a 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__ = '8.6.6' +__version__ = '8.6.7' __title__ = "Frappe Framework" local = Local() diff --git a/frappe/database.py b/frappe/database.py index af265b5857..b702a8c53d 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -600,8 +600,9 @@ class Database: order_by = ("order by " + order_by) if order_by else "" - r = self.sql("select {0} from `tab{1}` where {2} {3}".format(fl, doctype, - conditions, order_by), values, as_dict=as_dict, debug=debug, update=update) + r = self.sql("select {0} from `tab{1}` {2} {3} {4}" + .format(fl, doctype, "where" if conditions else "", conditions, order_by), values, + as_dict=as_dict, debug=debug, update=update) return r diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index f0b156f673..0ce1d495f8 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -241,7 +241,12 @@ def get_stats(stats, doctype, filters=[]): filters = json.loads(filters) stats = {} - columns = frappe.db.get_table_columns(doctype) + try: + columns = frappe.db.get_table_columns(doctype) + except MySQLdb.OperationalError: + # raised when _user_tags column is added on the fly + columns = [] + for tag in tags: if not tag in columns: continue try: diff --git a/frappe/model/dynamic_links.py b/frappe/model/dynamic_links.py index 0932ffa623..c34dd914ef 100644 --- a/frappe/model/dynamic_links.py +++ b/frappe/model/dynamic_links.py @@ -8,19 +8,21 @@ import frappe # For example Journal Entry should be validated before GL Entry (which is an internal doctype) dynamic_link_queries = [ - """select parent, - (select read_only from `tabDocType` where name=tabDocField.parent) as read_only, - fieldname, options - from tabDocField - where fieldtype='Dynamic Link' - order by read_only""", - - """select dt as parent, - (select read_only from `tabDocType` where name=`tabCustom Field`.dt) as read_only, - fieldname, options - from `tabCustom Field` - where fieldtype='Dynamic Link' - order by read_only""", + """select tabDocField.parent, + `tabDocType`.read_only, `tabDocType`.in_create, + tabDocField.fieldname, tabDocField.options + from tabDocField, `tabDocType` + where `tabDocField`.fieldtype='Dynamic Link' and + `tabDocType`.name=`tabDocField`.parent + order by `tabDocType`.read_only, `tabDocType`.in_create""", + + """select `tabCustom Field`.dt as parent, + `tabDocType`.read_only, `tabDocType`.in_create, + `tabCustom Field`.fieldname, `tabCustom Field`.options + from `tabCustom Field`, `tabDocType` + where `tabCustom Field`.fieldtype='Dynamic Link' and + `tabDocType`.name=`tabCustom Field`.dt + order by `tabDocType`.read_only, `tabDocType`.in_create""", ] def get_dynamic_link_map(for_delete=False):