Global Defaults won't change, even value in tabDefaultValue changed!

Hi, I am trying to set global default in the after_install process. The app can be installed successfully. The global default value I want to set is already updated in tabDefaultValue. However, my default value won’t just load in browser even I do Profile > Reload, Browser Reload, restart bench.

I’m using frappe and erpnext version-15. Here is a simplified version of my code:

import frappe


def after_install():
    set_global_property()


def set_global_property(action = 'install'):
    if action == 'install':
        target = 'custom'
    else:
        target = 'default'

    global_default_value = json.loads(
        open(
            frappe.get_app_path('my_app', 'setup', 'data', 'global_default_value.json')
        ).read()
    )

    for d in global_default_value:
        key = d.get('key')
        value = d.get(target)
        frappe.db.set_default(key, value)

My json file is something like:

    [
    {
        "key": "hide_currency_symbol",
        "default": "",
        "custom": "Yes"
    },
    {
        "key": "default_distance_unit",
        "default": "",
        "custom": "Kilometer"
    }
    ]

What else do I need to do to make it has the same result as clicking Save button on setting page?

@misteraod Global Defaults is s single doctype , so it’s table will be tabSingles and not tabDefaultValue .
you can update the value using :
frappe.client.set_value("Global Defaults", "Global Defaults", key, value)

2 Likes

This works like a charm. Thank you very much.