diff --git a/frappe/__version__.py b/frappe/__version__.py index 601b9bb2b3..77df5910b1 100644 --- a/frappe/__version__.py +++ b/frappe/__version__.py @@ -1 +1 @@ -__version__ = "4.11.1" +__version__ = "4.11.2" diff --git a/frappe/core/doctype/comment/comment.py b/frappe/core/doctype/comment/comment.py index 3cd6b3de11..95d27618ef 100644 --- a/frappe/core/doctype/comment/comment.py +++ b/frappe/core/doctype/comment/comment.py @@ -5,8 +5,8 @@ from __future__ import unicode_literals import frappe, json from frappe import _ from frappe.website.render import clear_cache - from frappe.model.document import Document +from frappe.model.db_schema import add_column class Comment(Document): @@ -20,39 +20,44 @@ class Comment(Document): def update_comment_in_doc(self): if self.comment_doctype and self.comment_docname and self.comment and self.comment_type=="Comment": - try: - _comments = self.get_comments_from_parent() - updated = False - for c in _comments: - if c.get("name")==self.name: - c["comment"] = self.comment - updated = True - - if not updated: - _comments.append({ - "comment": self.comment, - "by": self.comment_by or self.owner, - "name":self.name - }) - self.update_comments_in_parent(_comments) - except Exception, e: - if e.args[0]==1054: - if frappe.flags.in_test: - return - - from frappe.model.db_schema import add_column - add_column(self.comment_doctype, "_comments", "Text") - self.update_comment_in_doc() - elif e.args[0]==1146: - # no table - pass - else: - raise + _comments = self.get_comments_from_parent() + updated = False + for c in _comments: + if c.get("name")==self.name: + c["comment"] = self.comment + updated = True + + if not updated: + _comments.append({ + "comment": self.comment, + "by": self.comment_by or self.owner, + "name":self.name + }) + self.update_comments_in_parent(_comments) def get_comments_from_parent(self): - _comments = frappe.db.get_value(self.comment_doctype, - self.comment_docname, "_comments") or "[]" - return json.loads(_comments) + try: + _comments = frappe.db.get_value(self.comment_doctype, + self.comment_docname, "_comments") or "[]" + + return json.loads(_comments) + + except Exception, e: + + if e.args[0]==1054: + if frappe.flags.in_test: + return + + add_column(self.comment_doctype, "_comments", "Text") + + return self.get_comments_from_parent() + + elif e.args[0]==1146: + # no table + pass + + else: + raise def update_comments_in_parent(self, _comments): # use sql, so that we do not mess with the timestamp @@ -80,3 +85,4 @@ def on_doctype_update(): frappe.db.commit() frappe.db.sql("""alter table `tabComment` add index comment_doctype_docname_index(comment_doctype, comment_docname)""") + diff --git a/frappe/core/doctype/notification_count/notification_count.py b/frappe/core/doctype/notification_count/notification_count.py index fbb8ae4718..d07df31999 100644 --- a/frappe/core/doctype/notification_count/notification_count.py +++ b/frappe/core/doctype/notification_count/notification_count.py @@ -44,7 +44,7 @@ def get_notifications(): "open_count":result}).insert(ignore_permissions=True) except MySQLdb.OperationalError, e: - if e.args[0] != 1213: + if e.args[0] not in (1213, 1205): raise logger.error("Deadlock") @@ -60,7 +60,7 @@ def get_notifications(): "open_count":open_count_module[m]}).insert(ignore_permissions=True) except MySQLdb.OperationalError, e: - if e.args[0] != 1213: + if e.args[0] not in (1213, 1205): raise logger.error("Deadlock") @@ -82,7 +82,7 @@ def clear_notifications(user=None): frappe.db.sql("""delete from `tabNotification Count`""") except MySQLdb.OperationalError, e: - if e.args[0] != 1213: + if e.args[0] not in (1213, 1205): raise logger.error("Deadlock") @@ -94,7 +94,7 @@ def delete_notification_count_for(doctype): frappe.db.sql("""delete from `tabNotification Count` where for_doctype = %s""", (doctype,)) except MySQLdb.OperationalError, e: - if e.args[0] != 1213: + if e.args[0] not in (1213, 1205): raise logger.error("Deadlock") diff --git a/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.py b/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.py index 22777957b8..a0a1a7fb5d 100644 --- a/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.py +++ b/frappe/core/report/permitted_documents_for_user/permitted_documents_for_user.py @@ -29,10 +29,10 @@ def validate(user, doctype): def get_columns_and_fields(doctype): columns = ["Name:Link/{}:200".format(doctype)] - fields = ["name"] + fields = ["`name`"] for df in frappe.get_meta(doctype).fields: if df.in_list_view and df.fieldtype in type_map: - fields.append(df.fieldname) + fields.append("`{0}`".format(df.fieldname)) fieldtype = "Link/{}".format(df.options) if df.fieldtype=="Link" else df.fieldtype columns.append("{label}:{fieldtype}:{width}".format(label=df.label, fieldtype=fieldtype, width=df.width or 100)) diff --git a/frappe/hooks.py b/frappe/hooks.py index 0c447688e6..32432aa770 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -3,7 +3,7 @@ app_title = "Frappe Framework" app_publisher = "Web Notes Technologies Pvt. Ltd." app_description = "Full Stack Web Application Framework in Python" app_icon = "assets/frappe/images/frappe.svg" -app_version = "4.11.1" +app_version = "4.11.2" app_color = "#3498db" app_email = "support@frappe.io" diff --git a/frappe/utils/file_manager.py b/frappe/utils/file_manager.py index 3c8b74c8fc..2e4f31e32f 100644 --- a/frappe/utils/file_manager.py +++ b/frappe/utils/file_manager.py @@ -107,7 +107,7 @@ def extract_images_from_html(doc, fieldname): return '