diff --git a/frappe/core/doctype/activity_log/feed.py b/frappe/core/doctype/activity_log/feed.py index fc0a85cdac..a61a4c04f9 100644 --- a/frappe/core/doctype/activity_log/feed.py +++ b/frappe/core/doctype/activity_log/feed.py @@ -65,7 +65,7 @@ def get_feed_match_conditions(user=None, force=True): can_read = frappe.get_user().get_can_read() can_read_doctypes = ['"{}"'.format(doctype) for doctype in - list(set(can_read) - set(user_permissions.keys()))] + list(set(can_read) - set(list(user_permissions)))] if can_read_doctypes: conditions += ["""(`tabCommunication`.reference_doctype is null diff --git a/frappe/core/doctype/domain_settings/domain_settings.py b/frappe/core/doctype/domain_settings/domain_settings.py index 50b826e957..71845f440b 100644 --- a/frappe/core/doctype/domain_settings/domain_settings.py +++ b/frappe/core/doctype/domain_settings/domain_settings.py @@ -28,7 +28,7 @@ class DomainSettings(Document): def restrict_roles_and_modules(self): '''Disable all restricted roles and set `restrict_to_domain` property in Module Def''' active_domains = frappe.get_active_domains() - all_domains = (frappe.get_hooks('domains') or {}).keys() + all_domains = list((frappe.get_hooks('domains') or {})) def remove_role(role): frappe.db.sql('delete from `tabHas Role` where role=%s', role) diff --git a/frappe/database.py b/frappe/database.py index 2b1737138a..21d766ec0c 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -719,7 +719,7 @@ class Database: else: # for singles - keys = to_update.keys() + keys = list(to_update) self.sql(''' delete from tabSingles where field in ({0}) and diff --git a/frappe/desk/form/linked_with.py b/frappe/desk/form/linked_with.py index 39850c4a16..92a204308a 100644 --- a/frappe/desk/form/linked_with.py +++ b/frappe/desk/form/linked_with.py @@ -119,7 +119,7 @@ def _get_linked_doctypes(doctype): if not dt in ret: ret[dt] = {"get_parent": True} - for dt in list(ret.keys()): + for dt in list(ret): try: doctype_module = load_doctype_module(dt) except ImportError: diff --git a/frappe/desk/notifications.py b/frappe/desk/notifications.py index 20c4f30aa7..a7f9220d64 100644 --- a/frappe/desk/notifications.py +++ b/frappe/desk/notifications.py @@ -14,7 +14,7 @@ def get_notifications(): config = get_notification_config() - groups = list(config.get("for_doctype").keys()) + list(config.get("for_module").keys()) + groups = list(config.get("for_doctype")) + list(config.get("for_module")) cache = frappe.cache() notification_count = {} @@ -161,8 +161,8 @@ def clear_notifications(user=None): return config = get_notification_config() - for_doctype = list(config.get('for_doctype').keys()) if config.get('for_doctype') else [] - for_module = list(config.get('for_module').keys()) if config.get('for_module') else [] + for_doctype = list(config.get('for_doctype')) if config.get('for_doctype') else [] + for_module = list(config.get('for_module')) if config.get('for_module') else [] groups = for_doctype + for_module cache = frappe.cache() @@ -194,7 +194,7 @@ def get_notification_info_for_boot(): module_doctypes = {} doctype_info = dict(frappe.db.sql("""select name, module from tabDocType""")) - for d in list(set(can_read + list(config.for_doctype.keys()))): + for d in list(set(can_read + list(config.for_doctype))): if d in config.for_doctype: conditions[d] = config.for_doctype[d] diff --git a/frappe/desk/reportview.py b/frappe/desk/reportview.py index e9e994f0bb..71b31bf716 100644 --- a/frappe/desk/reportview.py +++ b/frappe/desk/reportview.py @@ -78,7 +78,7 @@ def compress(data, args = {}): if not data: return data values = [] - keys = data[0].keys() + keys = list(data[0]) for row in data: new_row = [] for key in keys: diff --git a/frappe/email/doctype/newsletter/test_newsletter.py b/frappe/email/doctype/newsletter/test_newsletter.py index 54a8a8504c..10c2921e58 100644 --- a/frappe/email/doctype/newsletter/test_newsletter.py +++ b/frappe/email/doctype/newsletter/test_newsletter.py @@ -81,7 +81,7 @@ class TestNewsletter(unittest.TestCase): doc = frappe.get_doc("Newsletter", newsletter_name) doc.get_context(context) self.assertEqual(context.no_cache, 1) - self.assertTrue("attachments" not in context.keys()) + self.assertTrue("attachments" not in list(context)) test_dependencies = ["Email Group"] diff --git a/frappe/model/__init__.py b/frappe/model/__init__.py index 441a20733a..f4f8207ba0 100644 --- a/frappe/model/__init__.py +++ b/frappe/model/__init__.py @@ -42,7 +42,7 @@ def delete_fields(args_dict, delete=0): args_dict = { dt: [field names] } """ import frappe.utils - for dt in args_dict.keys(): + for dt in list(args_dict): fields = args_dict[dt] if not fields: continue diff --git a/frappe/model/db_schema.py b/frappe/model/db_schema.py index 79b7a0bd4a..33cdc70d94 100644 --- a/frappe/model/db_schema.py +++ b/frappe/model/db_schema.py @@ -190,7 +190,7 @@ class DbTable: def get_column_definitions(self): column_list = [] + default_columns ret = [] - for k in self.columns.keys(): + for k in list(self.columns): if k not in column_list: d = self.columns[k].get_definition() if d: diff --git a/frappe/permissions.py b/frappe/permissions.py index cd657b7456..1f11dc6d1c 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -450,7 +450,7 @@ def get_user_permission_doctypes(user_permission_doctypes, user_permissions): if cint(frappe.get_system_settings('ignore_user_permissions_if_missing')): # select those user permission doctypes for which user permissions exist! user_permission_doctypes = [ - list(set(doctypes).intersection(set(user_permissions.keys()))) + list(set(doctypes).intersection(set(list(user_permissions)))) for doctypes in user_permission_doctypes] if len(user_permission_doctypes) > 1: diff --git a/frappe/templates/pages/integrations/braintree_checkout.py b/frappe/templates/pages/integrations/braintree_checkout.py index 57213db8e3..7ebb2d40ac 100644 --- a/frappe/templates/pages/integrations/braintree_checkout.py +++ b/frappe/templates/pages/integrations/braintree_checkout.py @@ -17,7 +17,7 @@ def get_context(context): context.no_cache = 1 # all these keys exist in form_dict - if not (set(expected_keys) - set(frappe.form_dict.keys())): + if not (set(expected_keys) - set(list(frappe.form_dict))): for key in expected_keys: context[key] = frappe.form_dict[key] diff --git a/frappe/templates/pages/integrations/stripe_checkout.py b/frappe/templates/pages/integrations/stripe_checkout.py index e79a10fa44..e2f2a77db2 100644 --- a/frappe/templates/pages/integrations/stripe_checkout.py +++ b/frappe/templates/pages/integrations/stripe_checkout.py @@ -17,7 +17,7 @@ def get_context(context): context.publishable_key = get_api_key() # all these keys exist in form_dict - if not (set(expected_keys) - set(frappe.form_dict.keys())): + if not (set(expected_keys) - set(list(frappe.form_dict))): for key in expected_keys: context[key] = frappe.form_dict[key] diff --git a/frappe/utils/__init__.py b/frappe/utils/__init__.py index ea100cb863..5e5aa0f952 100644 --- a/frappe/utils/__init__.py +++ b/frappe/utils/__init__.py @@ -178,7 +178,7 @@ def dict_to_str(args, sep='&'): Converts a dictionary to URL """ t = [] - for k in args.keys(): + for k in list(args): t.append(str(k)+'='+quote(str(args[k] or ''))) return sep.join(t) diff --git a/frappe/utils/background_jobs.py b/frappe/utils/background_jobs.py index 4ed70fa2d0..b817c775aa 100755 --- a/frappe/utils/background_jobs.py +++ b/frappe/utils/background_jobs.py @@ -179,7 +179,7 @@ def get_jobs(site=None, queue=None, key='method'): def get_queue_list(queue_list=None): '''Defines possible queues. Also wraps a given queue in a list after validating.''' - default_queue_list = queue_timeout.keys() + default_queue_list = list(queue_timeout) if queue_list: if isinstance(queue_list, string_types): queue_list = [queue_list] @@ -200,7 +200,7 @@ def get_queue(queue, async=True): def validate_queue(queue, default_queue_list=None): if not default_queue_list: - default_queue_list = queue_timeout.keys() + default_queue_list = list(queue_timeout) if queue not in default_queue_list: frappe.throw(_("Queue should be one of {0}").format(', '.join(default_queue_list))) diff --git a/frappe/utils/bench_helper.py b/frappe/utils/bench_helper.py index 9c92701a9a..69625f3abf 100644 --- a/frappe/utils/bench_helper.py +++ b/frappe/utils/bench_helper.py @@ -77,12 +77,12 @@ def get_app_commands(app): @click.command('get-frappe-commands') def get_frappe_commands(): - commands = list(get_app_commands('frappe').keys()) + commands = list(get_app_commands('frappe')) for app in get_apps(): app_commands = get_app_commands(app) if app_commands: - commands.extend(app_commands.keys()) + commands.extend(list(app_commands)) print(json.dumps(commands)) diff --git a/frappe/utils/dateutils.py b/frappe/utils/dateutils.py index 79722aa159..ec9d6edc86 100644 --- a/frappe/utils/dateutils.py +++ b/frappe/utils/dateutils.py @@ -42,7 +42,7 @@ def parse_date(date): date = date.split(" ")[0] # why the sorting? checking should be done in a predictable order - check_formats = [None] + sorted(dateformats.keys(), + check_formats = [None] + sorted(list(dateformats), reverse=not get_user_date_format().startswith("dd")) for f in check_formats: diff --git a/frappe/utils/doctor.py b/frappe/utils/doctor.py index 23d6d5d6bc..9f046bb8ea 100644 --- a/frappe/utils/doctor.py +++ b/frappe/utils/doctor.py @@ -56,7 +56,7 @@ def get_jobs_by_queue(site=None): consolidated_methods = {} for method in jobs_per_queue[queue]: - if method not in consolidated_methods.keys(): + if method not in list(consolidated_methods): consolidated_methods[method] = 1 else: consolidated_methods[method] += 1 diff --git a/frappe/utils/momentjs.py b/frappe/utils/momentjs.py index b0446ed61d..3c5ec91f63 100644 --- a/frappe/utils/momentjs.py +++ b/frappe/utils/momentjs.py @@ -14,7 +14,7 @@ def update(tz, out): out["rules"][parts[1]] = data["rules"][parts[1]] def get_all_timezones(): - return sorted(data["zones"].keys()) + return sorted(list(data["zones"])) data = { "zones": { diff --git a/frappe/utils/redis_wrapper.py b/frappe/utils/redis_wrapper.py index 1fd8c10d13..04fba555c0 100644 --- a/frappe/utils/redis_wrapper.py +++ b/frappe/utils/redis_wrapper.py @@ -92,7 +92,7 @@ class RedisWrapper(redis.Redis): except redis.exceptions.ConnectionError: regex = re.compile(cstr(key).replace("|", "\|").replace("*", "[\w]*")) - return [k for k in frappe.local.cache.keys() if regex.match(k.decode())] + return [k for k in list(frappe.local.cache) if regex.match(k.decode())] def delete_keys(self, key): """Delete keys with wildcard `*`.""" diff --git a/frappe/www/qrcode.py b/frappe/www/qrcode.py index bf7d79236e..bd0ed38581 100644 --- a/frappe/www/qrcode.py +++ b/frappe/www/qrcode.py @@ -16,7 +16,7 @@ def get_query_key(): '''Return query string arg.''' query_string = frappe.local.request.query_string query = parse_qs(query_string) - if not 'k' in query.keys(): + if not 'k' in list(query): frappe.throw(_('Not Permitted'),frappe.PermissionError) query = (query['k'][0]).strip() if False in [i.isalpha() or i.isdigit() for i in query]: