def execute(): """ Update list_view's order by property from __UserSettings """ users = frappe.db.sql("select distinct(user) from `__UserSettings`", as_dict=True) for user in users: # get user_settings for each user settings = frappe.db.sql("select * from `__UserSettings` \ where user='******'".format(frappe.db.escape(user.user)), as_dict=True) # traverse through each doctype's settings for a user for d in settings: data = json.loads(d['data']) if data and ('List' in data) and ( 'order_by' in data['List']) and data['List']['order_by']: # convert order_by to sort_order & sort_by and delete order_by order_by = data['List']['order_by'] if '`' in order_by and '.' in order_by: order_by = order_by.replace('`', '').split('.')[1] data['List']['sort_by'], data['List'][ 'sort_order'] = order_by.split(' ') data['List'].pop('order_by') update_user_settings(d['doctype'], json.dumps(data), for_update=True) sync_user_settings()
def update_user_settings(old, new, link_fields): ''' Update the user settings of all the linked doctypes while renaming. ''' # store the user settings data from the redis to db sync_user_settings() if not link_fields: return # find the user settings for the linked doctypes linked_doctypes = set([d.parent for d in link_fields if not d.issingle]) user_settings_details = frappe.db.sql('''SELECT `user`, `doctype`, `data` FROM `__UserSettings` WHERE `data` like %s AND `doctype` IN ('{doctypes}')'''.format( doctypes="', '".join(linked_doctypes)), (old), as_dict=1) # create the dict using the doctype name as key and values as list of the user settings from collections import defaultdict user_settings_dict = defaultdict(list) for user_setting in user_settings_details: user_settings_dict[user_setting.doctype].append(user_setting) # update the name in linked doctype whose user settings exists for fields in link_fields: user_settings = user_settings_dict.get(fields.parent) if user_settings: for user_setting in user_settings: update_user_settings_data(user_setting, "value", old, new, "docfield", fields.fieldname) else: continue
def update_user_settings(old, new, link_fields): ''' Update the user settings of all the linked doctypes while renaming. ''' # store the user settings data from the redis to db sync_user_settings() if not link_fields: return # find the user settings for the linked doctypes linked_doctypes = set([d.parent for d in link_fields if not d.issingle]) user_settings_details = frappe.db.sql( '''select user, doctype, data from `__UserSettings` where data like "%%%s%%" and doctype in ({0})'''.format(", ".join( ["%s"] * len(linked_doctypes))), tuple([old] + list(linked_doctypes)), as_dict=1) # create the dict using the doctype name as key and values as list of the user settings from collections import defaultdict user_settings_dict = defaultdict(list) for user_setting in user_settings_details: user_settings_dict[user_setting.doctype].append(user_setting) # update the name in linked doctype whose user settings exists for fields in link_fields: user_settings = user_settings_dict.get(fields.parent) if user_settings: for user_setting in user_settings: update_user_settings_data(user_setting, "value", old, new, "docfield", fields.fieldname) else: continue
def update_user_settings(old, new, link_fields): ''' Update the user settings of all the linked doctypes while renaming. ''' # store the user settings data from the redis to db sync_user_settings() if not link_fields: return # find the user settings for the linked doctypes linked_doctypes = set([d.parent for d in link_fields if not d.issingle]) user_settings_details = frappe.db.sql('''select user, doctype, data from `__UserSettings` where data like "%%%s%%" and doctype in ({0})'''.format(", ".join(["%s"]*len(linked_doctypes))), tuple([old] + list(linked_doctypes)), as_dict=1) # create the dict using the doctype name as key and values as list of the user settings from collections import defaultdict user_settings_dict = defaultdict(list) for user_setting in user_settings_details: user_settings_dict[user_setting.doctype].append(user_setting) # update the name in linked doctype whose user settings exists for fields in link_fields: user_settings = user_settings_dict.get(fields.parent) if user_settings: for user_setting in user_settings: update_user_settings_data(user_setting, "value", old, new, "docfield", fields.fieldname) else: continue
def execute(): """Update list_view's order by property from __UserSettings""" users = frappe.db.sql("select distinct(user) from `__UserSettings`", as_dict=True) for user in users: # get user_settings for each user settings = frappe.db.sql( "select * from `__UserSettings` \ where user={0}".format(frappe.db.escape(user.user)), as_dict=True, ) # traverse through each doctype's settings for a user for d in settings: data = json.loads(d["data"]) if data and ("List" in data) and ( "order_by" in data["List"]) and data["List"]["order_by"]: # convert order_by to sort_order & sort_by and delete order_by order_by = data["List"]["order_by"] if "`" in order_by and "." in order_by: order_by = order_by.replace("`", "").split(".")[1] data["List"]["sort_by"], data["List"][ "sort_order"] = order_by.split(" ") data["List"].pop("order_by") update_user_settings(d["doctype"], json.dumps(data), for_update=True) sync_user_settings()
def update_user_settings(doctype, old_fieldname, new_fieldname): # store the user settings data from the redis to db sync_user_settings() user_settings = frappe.db.sql(''' select user, doctype, data from `__UserSettings` where doctype=%s and data like "%%%s%%"''', (doctype, old_fieldname), as_dict=1) for user_setting in user_settings: update_user_settings_data(user_setting, "docfield", old_fieldname, new_fieldname)
def update_user_settings(doctype, old_fieldname, new_fieldname): # store the user settings data from the redis to db sync_user_settings() user_settings = frappe.db.sql(''' select user, doctype, data from `__UserSettings` where doctype=%s and data like "%%%s%%"''', (doctype, old_fieldname), as_dict=1) for user_setting in user_settings: update_user_settings_data(user_setting, "docfield", old_fieldname, new_fieldname)
def execute(): users = frappe.db.sql("select distinct(user) from `__UserSettings`", as_dict=True) for user in users: user_settings = frappe.db.sql(''' select * from `__UserSettings` where user="******" '''.format(user = user.user), as_dict=True) for setting in user_settings: data = frappe.parse_json(setting.get('data')) if data: for key in data: update_user_setting_filters(data, key, setting) sync_user_settings()
def execute(): """ Update list_view's order by property from __UserSettings """ users = frappe.db.sql("select distinct(user) from `__UserSettings`", as_dict=True) for user in users: # get user_settings for each user settings = frappe.db.sql("select * from `__UserSettings` \ where user='******'".format(frappe.db.escape(user.user)), as_dict=True) # traverse through each doctype's settings for a user for d in settings: data = json.loads(d['data']) if data and ('List' in data) and ('order_by' in data['List']) and data['List']['order_by']: # convert order_by to sort_order & sort_by and delete order_by order_by = data['List']['order_by'] if '`' in order_by and '.' in order_by: order_by = order_by.replace('`', '').split('.')[1] data['List']['sort_by'], data['List']['sort_order'] = order_by.split(' ') data['List'].pop('order_by') update_user_settings(d['doctype'], json.dumps(data), for_update=True) sync_user_settings()