diff --git a/frappe/desk/star.py b/frappe/desk/star.py index 2be45e130a..7068a6ef16 100644 --- a/frappe/desk/star.py +++ b/frappe/desk/star.py @@ -19,6 +19,15 @@ def toggle_star(doctype, name, add=False): :param doctype: DocType of the document to star :param name: Name of the document to star :param add: `Yes` if star is to be added. If not `Yes` the star will be removed.""" + + _toggle_star(doctype, name, add) + +def _toggle_star(doctype, name, add=False, user=None): + """Same as toggle_star but hides param `user` from API""" + + if not user: + user = frappe.session.user + try: starred_by = frappe.db.get_value(doctype, name, "_starred_by") if starred_by: @@ -27,17 +36,18 @@ def toggle_star(doctype, name, add=False): starred_by = [] if add=="Yes": - if frappe.session.user not in starred_by: - starred_by.append(frappe.session.user) + if user not in starred_by: + starred_by.append(user) else: - if frappe.session.user in starred_by: - starred_by.remove(frappe.session.user) + if user in starred_by: + starred_by.remove(user) frappe.db.sql("""update `tab{0}` set `_starred_by`=%s where name=%s""".format(doctype), (json.dumps(starred_by), name)) + except Exception, e: if e.args[0]==1054: add_column(doctype, "_starred_by", "Text") - toggle_star(doctype, name, add) + _toggle_star(doctype, name, add, user) else: raise diff --git a/frappe/patches.txt b/frappe/patches.txt index b79b5701c2..ee37e358cb 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -63,3 +63,4 @@ frappe.patches.v5_0.clear_website_group_and_notifications execute:frappe.db.sql("""update tabComment set comment = substr(comment, 6, locate(":", comment)-6) where comment_type in ("Assigned", "Assignment Completed")""") frappe.patches.v5_0.fix_feed frappe.patches.v5_0.update_shared +frappe.patches.v5_0.bookmarks_to_stars diff --git a/frappe/patches/v5_0/bookmarks_to_stars.py b/frappe/patches/v5_0/bookmarks_to_stars.py new file mode 100644 index 0000000000..0967ac13cd --- /dev/null +++ b/frappe/patches/v5_0/bookmarks_to_stars.py @@ -0,0 +1,25 @@ +from __future__ import unicode_literals +import json +import frappe +import frappe.defaults +from frappe.desk.star import _toggle_star + +def execute(): + for user in frappe.get_all("User"): + username = user["name"] + bookmarks = frappe.db.get_default("_bookmarks", username) + + if not bookmarks: + continue + + if isinstance(bookmarks, basestring): + bookmarks = json.loads(bookmarks) + + for opts in bookmarks: + route = (opts.get("route") or "").strip("#/ ") + + if route and route.startswith("Form"): + view, doctype, docname = opts["route"].split("/") + + if frappe.db.exists(doctype, docname): + _toggle_star(doctype, docname, add="Yes", user=username) diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 64d57899fd..3693789b3b 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -51,6 +51,7 @@ frappe.Application = Class.extend({ load_bootinfo: function() { if(frappe.boot) { frappe.modules = frappe.boot.modules; + frappe.model.sync(frappe.boot.docs); this.check_metadata_cache_status(); this.set_globals(); this.sync_pages(); diff --git a/frappe/templates/pages/desk.html b/frappe/templates/pages/desk.html index 048f6c3460..8ac28c4e2a 100644 --- a/frappe/templates/pages/desk.html +++ b/frappe/templates/pages/desk.html @@ -1,13 +1,15 @@
-