Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
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()
Ejemplo n.º 9
0
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()