# Buggy code
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")
            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
                )


# Traceback (TypeError)
Patching sites...
Migrating bench-manager.local
Updating DocTypes for frappe        : [========================================] 100%
Updating DocTypes for bench_manager : [========================================] 100%
Updating Dashboard for frappe
Updating Dashboard for bench_manager
fatal: Needed a single revision
Generating Website Theme Files...
Migrating site1.local
Executing frappe.patches.v13_0.update_date_filters_in_user_settings in site1.local (_1bd3e0294da19198)
Traceback (most recent call last):
File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 99, in <module>
main()
File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 18, in main
click.Group(commands=commands)(prog_name='bench')
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py", line 764, in __call__
return self.main(*args, **kwargs)
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py", line 717, in main
rv = self.invoke(ctx)
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py", line 1137, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/core.py", line 555, in invoke
return callback(*args, **kwargs)
File "/home/frappe/frappe-bench/env/lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 26, in _func
ret = f(frappe._dict(ctx.obj), *args, **kwargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/site.py", line 281, in migrate
migrate(context.verbose, rebuild_website=rebuild_website, skip_failing=skip_failing)
File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 67, in migrate
frappe.modules.patch_handler.run_all(skip_failing)
File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 41, in run_all
run_patch(patch)
File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 30, in run_patch
if not run_single(patchmodule = patch):
File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 71, in run_single
return execute_patch(patchmodule, method, methodargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/patch_handler.py", line 91, in execute_patch
frappe.get_attr(patchmodule.split()[0] + ".execute")()
File "/home/frappe/frappe-bench/apps/frappe/frappe/patches/v13_0/update_date_filters_in_user_settings.py", line 20, in execute
update_user_setting_filters(data, key, setting)
File "/home/frappe/frappe-bench/apps/frappe/frappe/patches/v13_0/update_date_filters_in_user_settings.py", line 43, in update_user_setting_filters
for f in filters:
TypeError: 'NoneType' object is not iterable

# Fixed code
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
                )