Exemplo n.º 1
0
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)
Exemplo n.º 2
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()
Exemplo n.º 3
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()
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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
	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})
Exemplo 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()