def update_user_setting_filters(data, key, user_setting): timespan_map = { '1 week': 'week', '1 month': 'month', '3 months': 'quarter', '6 months': '6 months', '1 year': 'year', } period_map = {'Previous': 'last', 'Next': 'next'} if data.get(key): update = False if isinstance(data.get(key), dict): filters = data.get(key).get('filters') if filters and isinstance(filters, list): for f in filters: if f[2] == 'Next' or f[2] == 'Previous': update = True f[3] = period_map[f[2]] + ' ' + timespan_map[f[3]] f[2] = 'Timespan' if update: data[key]['filters'] = filters update_user_settings(user_setting['doctype'], json.dumps(data), for_update=True)
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 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_setting_filters(data, key, user_setting): timespan_map = { "1 week": "week", "1 month": "month", "3 months": "quarter", "6 months": "6 months", "1 year": "year", } period_map = {"Previous": "last", "Next": "next"} if data.get(key): update = False if isinstance(data.get(key), dict): filters = data.get(key).get("filters") if filters and isinstance(filters, list): for f in filters: if f[2] == "Next" or f[2] == "Previous": update = True f[3] = period_map[f[2]] + " " + timespan_map[f[3]] f[2] = "Timespan" if update: data[key]["filters"] = filters update_user_settings(user_setting["doctype"], json.dumps(data), for_update=True)
def update_user_settings(self): # update user settings if new search user_settings = json.loads(get_user_settings(self.doctype)) if hasattr(self, 'user_settings'): user_settings.update(self.user_settings) if self.save_user_settings_fields: user_settings['fields'] = self.user_settings_fields update_user_settings(self.doctype, user_settings)
def execute(): if frappe.db.table_exists("__ListSettings"): for us in frappe.db.sql( '''select user, doctype, data from __ListSettings''', as_dict=True): try: data = json.loads(us.data) except: continue if 'List' in data: continue if 'limit' in data: data['page_length'] = data['limit'] del data['limit'] new_data = dict(List=data) new_data = json.dumps(new_data) frappe.db.sql( '''update __ListSettings set data=%(new_data)s where user=%(user)s and doctype=%(doctype)s''', { 'new_data': new_data, 'user': us.user, 'doctype': us.doctype }) frappe.db.sql("RENAME TABLE __ListSettings to __UserSettings") else: if not frappe.db.table_exists("__UserSettings"): create_user_settings_table() for user in frappe.db.get_all('User', {'user_type': 'System User'}): defaults = frappe.defaults.get_defaults_for(user.name) for key, value in iteritems(defaults): if key.startswith('_list_settings:'): doctype = key.replace('_list_settings:', '') columns = [ '`tab{1}`.`{0}`'.format(*c) for c in json.loads(value) ] for col in columns: if "name as" in col: columns.remove(col) update_user_settings(doctype, {'fields': columns})
def execute(): if frappe.db.table_exists("__ListSettings"): for us in frappe.db.sql('''select user, doctype, data from __ListSettings''', as_dict=True): try: data = json.loads(us.data) except: continue if 'List' in data: continue if 'limit' in data: data['page_length'] = data['limit'] del data['limit'] new_data = dict(List=data) new_data = json.dumps(new_data) frappe.db.sql('''update __ListSettings set data=%(new_data)s where user=%(user)s and doctype=%(doctype)s''', {'new_data': new_data, 'user': us.user, 'doctype': us.doctype}) frappe.db.sql("RENAME TABLE __ListSettings to __UserSettings") else: if not frappe.db.table_exists("__UserSettings"): create_user_settings_table() for user in frappe.db.get_all('User', {'user_type': 'System User'}): defaults = frappe.defaults.get_defaults_for(user.name) for key, value in iteritems(defaults): if key.startswith('_list_settings:'): doctype = key.replace('_list_settings:', '') columns = ['`tab{1}`.`{0}`'.format(*c) for c in json.loads(value)] for col in columns: if "name as" in col: columns.remove(col) update_user_settings(doctype, {'fields': columns})
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()