* dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibility * dict.iteritems to six.iteritems(dict) for python3 compatibilityversion-14
@@ -6,6 +6,7 @@ globals attached to frappe module | |||||
""" | """ | ||||
from __future__ import unicode_literals, print_function | from __future__ import unicode_literals, print_function | ||||
from six import iteritems | |||||
from werkzeug.local import Local, release_local | from werkzeug.local import Local, release_local | ||||
import os, sys, importlib, inspect, json | import os, sys, importlib, inspect, json | ||||
@@ -757,7 +758,7 @@ def get_doc_hooks(): | |||||
if not hasattr(local, 'doc_events_hooks'): | if not hasattr(local, 'doc_events_hooks'): | ||||
hooks = get_hooks('doc_events', {}) | hooks = get_hooks('doc_events', {}) | ||||
out = {} | out = {} | ||||
for key, value in hooks.iteritems(): | |||||
for key, value in iteritems(hooks): | |||||
if isinstance(key, tuple): | if isinstance(key, tuple): | ||||
for doctype in key: | for doctype in key: | ||||
append_hook(out, doctype, value) | append_hook(out, doctype, value) | ||||
@@ -5,6 +5,7 @@ from __future__ import unicode_literals | |||||
import os | import os | ||||
import MySQLdb | import MySQLdb | ||||
from six import iteritems | |||||
from werkzeug.wrappers import Request | from werkzeug.wrappers import Request | ||||
from werkzeug.local import LocalManager | from werkzeug.local import LocalManager | ||||
@@ -115,7 +116,7 @@ def init_request(request): | |||||
def make_form_dict(request): | def make_form_dict(request): | ||||
frappe.local.form_dict = frappe._dict({ k:v[0] if isinstance(v, (list, tuple)) else v \ | frappe.local.form_dict = frappe._dict({ k:v[0] if isinstance(v, (list, tuple)) else v \ | ||||
for k, v in (request.form or request.args).iteritems() }) | |||||
for k, v in iteritems(request.form or request.args) }) | |||||
if "_" in frappe.local.form_dict: | if "_" in frappe.local.form_dict: | ||||
# _ is passed by $.ajax so that the request is not cached by the browser. So, remove _ from form_dict | # _ is passed by $.ajax so that the request is not cached by the browser. So, remove _ from form_dict | ||||
@@ -2,6 +2,9 @@ | |||||
# MIT License. See license.txt | # MIT License. See license.txt | ||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
from six import iteritems | |||||
""" | """ | ||||
bootstrap client session | bootstrap client session | ||||
""" | """ | ||||
@@ -179,7 +182,7 @@ def load_translations(bootinfo): | |||||
messages[name] = frappe._(name) | messages[name] = frappe._(name) | ||||
# only untranslated | # only untranslated | ||||
messages = {k:v for k, v in messages.iteritems() if k!=v} | |||||
messages = {k:v for k, v in iteritems(messages) if k!=v} | |||||
bootinfo["__messages"] = messages | bootinfo["__messages"] = messages | ||||
@@ -5,6 +5,8 @@ from __future__ import unicode_literals, print_function | |||||
from frappe.utils.minify import JavascriptMinify | from frappe.utils.minify import JavascriptMinify | ||||
import subprocess | import subprocess | ||||
from six import iteritems | |||||
""" | """ | ||||
Build the `public` folders and setup languages | Build the `public` folders and setup languages | ||||
""" | """ | ||||
@@ -87,7 +89,7 @@ def make_asset_dirs(make_copy=False): | |||||
def build(no_compress=False, verbose=False): | def build(no_compress=False, verbose=False): | ||||
assets_path = os.path.join(frappe.local.sites_path, "assets") | assets_path = os.path.join(frappe.local.sites_path, "assets") | ||||
for target, sources in get_build_maps().iteritems(): | |||||
for target, sources in iteritems(get_build_maps()): | |||||
pack(os.path.join(assets_path, target), sources, no_compress, verbose) | pack(os.path.join(assets_path, target), sources, no_compress, verbose) | ||||
def get_build_maps(): | def get_build_maps(): | ||||
@@ -100,7 +102,7 @@ def get_build_maps(): | |||||
if os.path.exists(path): | if os.path.exists(path): | ||||
with open(path) as f: | with open(path) as f: | ||||
try: | try: | ||||
for target, sources in json.loads(f.read()).iteritems(): | |||||
for target, sources in iteritems(json.loads(f.read())): | |||||
# update app path | # update app path | ||||
source_paths = [] | source_paths = [] | ||||
for source in sources: | for source in sources: | ||||
@@ -182,7 +184,7 @@ def scrub_html_template(content): | |||||
return content.replace("'", "\'") | return content.replace("'", "\'") | ||||
def files_dirty(): | def files_dirty(): | ||||
for target, sources in get_build_maps().iteritems(): | |||||
for target, sources in iteritems(get_build_maps()): | |||||
for f in sources: | for f in sources: | ||||
if ':' in f: f, suffix = f.split(':') | if ':' in f: f, suffix = f.split(':') | ||||
if not os.path.exists(f) or os.path.isdir(f): continue | if not os.path.exists(f) or os.path.isdir(f): continue | ||||
@@ -8,6 +8,8 @@ import frappe.model | |||||
import frappe.utils | import frappe.utils | ||||
import json, os | import json, os | ||||
from six import iteritems | |||||
''' | ''' | ||||
Handle RESTful requests that are mapped to the `/api/resource` route. | Handle RESTful requests that are mapped to the `/api/resource` route. | ||||
@@ -228,7 +230,7 @@ def bulk_update(docs): | |||||
failed_docs = [] | failed_docs = [] | ||||
for doc in docs: | for doc in docs: | ||||
try: | try: | ||||
ddoc = {key: val for key, val in doc.iteritems() if key not in ['doctype', 'docname']} | |||||
ddoc = {key: val for key, val in iteritems(doc) if key not in ['doctype', 'docname']} | |||||
doctype = doc['doctype'] | doctype = doc['doctype'] | ||||
docname = doc['docname'] | docname = doc['docname'] | ||||
doc = frappe.get_doc(doctype, docname) | doc = frappe.get_doc(doctype, docname) | ||||
@@ -13,6 +13,8 @@ from jinja2 import TemplateSyntaxError | |||||
from frappe.utils.user import is_website_user | from frappe.utils.user import is_website_user | ||||
from frappe.model.naming import make_autoname | from frappe.model.naming import make_autoname | ||||
from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links | from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links | ||||
from six import iteritems | |||||
class Address(Document): | class Address(Document): | ||||
def __setup__(self): | def __setup__(self): | ||||
@@ -191,7 +193,7 @@ def address_query(doctype, txt, searchfield, start, page_len, filters): | |||||
link_name = filters.pop('link_name') | link_name = filters.pop('link_name') | ||||
condition = "" | condition = "" | ||||
for fieldname, value in filters.iteritems(): | |||||
for fieldname, value in iteritems(filters): | |||||
condition += " and {field}={value}".format( | condition += " and {field}={value}".format( | ||||
field=fieldname, | field=fieldname, | ||||
value=value | value=value | ||||
@@ -7,6 +7,8 @@ from frappe.utils import cstr, has_gravatar | |||||
from frappe import _ | from frappe import _ | ||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links | from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links | ||||
from six import iteritems | |||||
class Contact(Document): | class Contact(Document): | ||||
def autoname(self): | def autoname(self): | ||||
@@ -118,7 +120,7 @@ def contact_query(doctype, txt, searchfield, start, page_len, filters): | |||||
link_name = filters.pop('link_name') | link_name = filters.pop('link_name') | ||||
condition = "" | condition = "" | ||||
for fieldname, value in filters.iteritems(): | |||||
for fieldname, value in iteritems(filters): | |||||
condition += " and {field}={value}".format( | condition += " and {field}={value}".format( | ||||
field=fieldname, | field=fieldname, | ||||
value=value | value=value | ||||
@@ -12,6 +12,8 @@ from frappe.modules.export_file import export_to_files | |||||
from frappe.modules import make_boilerplate | from frappe.modules import make_boilerplate | ||||
from frappe.core.doctype.page.page import delete_custom_role | from frappe.core.doctype.page.page import delete_custom_role | ||||
from frappe.core.doctype.custom_role.custom_role import get_custom_allowed_roles | from frappe.core.doctype.custom_role.custom_role import get_custom_allowed_roles | ||||
from six import iteritems | |||||
class Report(Document): | class Report(Document): | ||||
def validate(self): | def validate(self): | ||||
@@ -123,7 +125,7 @@ class Report(Document): | |||||
_filters = params.get('filters') or [] | _filters = params.get('filters') or [] | ||||
if filters: | if filters: | ||||
for key, value in filters.iteritems(): | |||||
for key, value in iteritems(filters): | |||||
condition, _value = '=', value | condition, _value = '=', value | ||||
if isinstance(value, (list, tuple)): | if isinstance(value, (list, tuple)): | ||||
condition, _value = value | condition, _value = value | ||||
@@ -20,6 +20,8 @@ from frappe.utils import now, get_datetime, cstr | |||||
from frappe import _ | from frappe import _ | ||||
from types import StringType, UnicodeType | from types import StringType, UnicodeType | ||||
from frappe.utils.global_search import sync_global_search | from frappe.utils.global_search import sync_global_search | ||||
from six import iteritems | |||||
class Database: | class Database: | ||||
""" | """ | ||||
@@ -655,7 +657,7 @@ class Database: | |||||
where field in ({0}) and | where field in ({0}) and | ||||
doctype=%s'''.format(', '.join(['%s']*len(keys))), | doctype=%s'''.format(', '.join(['%s']*len(keys))), | ||||
keys + [dt], debug=debug) | keys + [dt], debug=debug) | ||||
for key, value in to_update.iteritems(): | |||||
for key, value in iteritems(to_update): | |||||
self.sql('''insert into tabSingles(doctype, field, value) values (%s, %s, %s)''', | self.sql('''insert into tabSingles(doctype, field, value) values (%s, %s, %s)''', | ||||
(dt, key, value), debug=debug) | (dt, key, value), debug=debug) | ||||
@@ -9,6 +9,8 @@ from frappe import _ | |||||
import json | import json | ||||
import random | import random | ||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
from six import iteritems | |||||
class DesktopIcon(Document): | class DesktopIcon(Document): | ||||
def validate(self): | def validate(self): | ||||
@@ -323,7 +325,7 @@ def sync_from_app(app): | |||||
if isinstance(modules, dict): | if isinstance(modules, dict): | ||||
modules_list = [] | modules_list = [] | ||||
for m, desktop_icon in modules.iteritems(): | |||||
for m, desktop_icon in iteritems(modules): | |||||
desktop_icon['module_name'] = m | desktop_icon['module_name'] = m | ||||
modules_list.append(desktop_icon) | modules_list.append(desktop_icon) | ||||
else: | else: | ||||
@@ -7,6 +7,7 @@ import frappe | |||||
import json | import json | ||||
from frappe import _ | from frappe import _ | ||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
from six import iteritems | |||||
class KanbanBoard(Document): | class KanbanBoard(Document): | ||||
@@ -91,7 +92,7 @@ def update_order(board_name, order): | |||||
order_dict = json.loads(order) | order_dict = json.loads(order) | ||||
updated_cards = [] | updated_cards = [] | ||||
for col_name, cards in order_dict.iteritems(): | |||||
for col_name, cards in iteritems(order_dict): | |||||
order_list = [] | order_list = [] | ||||
for card in cards: | for card in cards: | ||||
column = frappe.get_value( | column = frappe.get_value( | ||||
@@ -14,6 +14,8 @@ from frappe.model.utils import render_include | |||||
from frappe.build import scrub_html_template | from frappe.build import scrub_html_template | ||||
###### | ###### | ||||
from six import iteritems | |||||
def get_meta(doctype, cached=True): | def get_meta(doctype, cached=True): | ||||
if cached and not frappe.conf.developer_mode: | if cached and not frappe.conf.developer_mode: | ||||
@@ -153,7 +155,7 @@ class FormMeta(Meta): | |||||
app = module.__name__.split(".")[0] | app = module.__name__.split(".")[0] | ||||
templates = {} | templates = {} | ||||
if hasattr(module, "form_grid_templates"): | if hasattr(module, "form_grid_templates"): | ||||
for key, path in module.form_grid_templates.iteritems(): | |||||
for key, path in iteritems(module.form_grid_templates): | |||||
templates[key] = get_html_format(frappe.get_app_path(app, path)) | templates[key] = get_html_format(frappe.get_app_path(app, path)) | ||||
self.set("__form_grid_templates", templates) | self.set("__form_grid_templates", templates) | ||||
@@ -9,6 +9,8 @@ from frappe.utils import (get_url, scrub_urls, strip, expand_relative_urls, cint | |||||
split_emails, to_markdown, markdown, encode, random_string) | split_emails, to_markdown, markdown, encode, random_string) | ||||
import email.utils | import email.utils | ||||
from frappe.utils import parse_addr | from frappe.utils import parse_addr | ||||
from six import iteritems | |||||
def get_email(recipients, sender='', msg='', subject='[No Subject]', | def get_email(recipients, sender='', msg='', subject='[No Subject]', | ||||
text_content = None, footer=None, print_html=None, formatted=None, attachments=None, | text_content = None, footer=None, print_html=None, formatted=None, attachments=None, | ||||
@@ -209,7 +211,7 @@ class EMail: | |||||
} | } | ||||
# reset headers as values may be changed. | # reset headers as values may be changed. | ||||
for key, val in headers.iteritems(): | |||||
for key, val in iteritems(headers): | |||||
self.set_header(key, val) | self.set_header(key, val) | ||||
# call hook to enable apps to modify msg_root before sending | # call hook to enable apps to modify msg_root before sending | ||||
@@ -2,6 +2,8 @@ | |||||
# MIT License. See license.txt | # MIT License. See license.txt | ||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
from six import iteritems | |||||
from six.moves import range | from six.moves import range | ||||
import time, _socket, poplib, imaplib, email, email.utils, datetime, chardet, re, hashlib | import time, _socket, poplib, imaplib, email, email.utils, datetime, chardet, re, hashlib | ||||
from email_reply_parser import EmailReplyParser | from email_reply_parser import EmailReplyParser | ||||
@@ -343,7 +345,7 @@ class EmailServer: | |||||
return | return | ||||
self.imap.select("Inbox") | self.imap.select("Inbox") | ||||
for uid, operation in uid_list.iteritems(): | |||||
for uid, operation in iteritems(uid_list): | |||||
if not uid: continue | if not uid: continue | ||||
op = "+FLAGS" if operation == "Read" else "-FLAGS" | op = "+FLAGS" if operation == "Read" else "-FLAGS" | ||||
@@ -2,6 +2,7 @@ from __future__ import print_function | |||||
import requests | import requests | ||||
import json | import json | ||||
import frappe | import frappe | ||||
from six import iteritems | |||||
''' | ''' | ||||
FrappeClient is a library that helps you connect with other frappe systems | FrappeClient is a library that helps you connect with other frappe systems | ||||
@@ -270,7 +271,7 @@ class FrappeClient(object): | |||||
def preprocess(self, params): | def preprocess(self, params): | ||||
"""convert dicts, lists to json""" | """convert dicts, lists to json""" | ||||
for key, value in params.iteritems(): | |||||
for key, value in iteritems(params): | |||||
if isinstance(value, (dict, list)): | if isinstance(value, (dict, list)): | ||||
params[key] = json.dumps(value) | params[key] = json.dumps(value) | ||||
@@ -2,7 +2,7 @@ | |||||
# MIT License. See license.txt | # MIT License. See license.txt | ||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
from six import reraise as raise_ | |||||
from six import reraise as raise_, iteritems | |||||
import frappe, sys | import frappe, sys | ||||
from frappe import _ | from frappe import _ | ||||
from frappe.utils import (cint, flt, now, cstr, strip_html, getdate, get_datetime, to_timedelta, | from frappe.utils import (cint, flt, now, cstr, strip_html, getdate, get_datetime, to_timedelta, | ||||
@@ -72,7 +72,7 @@ class BaseDocument(object): | |||||
if key in d: | if key in d: | ||||
self.set(key, d.get(key)) | self.set(key, d.get(key)) | ||||
for key, value in d.iteritems(): | |||||
for key, value in iteritems(d): | |||||
self.set(key, value) | self.set(key, value) | ||||
return self | return self | ||||
@@ -83,7 +83,7 @@ class BaseDocument(object): | |||||
if "doctype" in d: | if "doctype" in d: | ||||
self.set("doctype", d.get("doctype")) | self.set("doctype", d.get("doctype")) | ||||
for key, value in d.iteritems(): | |||||
for key, value in iteritems(d): | |||||
# dont_update_if_missing is a list of fieldnames, for which, you don't want to set default value | # dont_update_if_missing is a list of fieldnames, for which, you don't want to set default value | ||||
if (self.get(key) is None) and (value is not None) and (key not in self.dont_update_if_missing): | if (self.get(key) is None) and (value is not None) and (key not in self.dont_update_if_missing): | ||||
self.set(key, value) | self.set(key, value) | ||||
@@ -565,7 +565,7 @@ class BaseDocument(object): | |||||
if frappe.flags.in_install: | if frappe.flags.in_install: | ||||
return | return | ||||
for fieldname, value in self.get_valid_dict().iteritems(): | |||||
for fieldname, value in iteritems(self.get_valid_dict()): | |||||
df = self.meta.get_field(fieldname) | df = self.meta.get_field(fieldname) | ||||
if df and df.fieldtype in type_map and type_map[df.fieldtype][0]=="varchar": | if df and df.fieldtype in type_map and type_map[df.fieldtype][0]=="varchar": | ||||
max_length = cint(df.get("length")) or cint(varchar_len) | max_length = cint(df.get("length")) or cint(varchar_len) | ||||
@@ -2,6 +2,9 @@ | |||||
# MIT License. See license.txt | # MIT License. See license.txt | ||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
from six import iteritems | |||||
"""build query for doclistview and return results""" | """build query for doclistview and return results""" | ||||
import frappe, json, copy | import frappe, json, copy | ||||
@@ -171,7 +174,7 @@ class DatabaseQuery(object): | |||||
if isinstance(filters, dict): | if isinstance(filters, dict): | ||||
fdict = filters | fdict = filters | ||||
filters = [] | filters = [] | ||||
for key, value in fdict.iteritems(): | |||||
for key, value in iteritems(fdict): | |||||
filters.append(make_filter_tuple(self.doctype, key, value)) | filters.append(make_filter_tuple(self.doctype, key, value)) | ||||
setattr(self, filter_name, filters) | setattr(self, filter_name, filters) | ||||
@@ -10,6 +10,7 @@ from frappe.utils import flt, cstr, now, get_datetime_str, file_lock | |||||
from frappe.utils.background_jobs import enqueue | from frappe.utils.background_jobs import enqueue | ||||
from frappe.model.base_document import BaseDocument, get_controller | from frappe.model.base_document import BaseDocument, get_controller | ||||
from frappe.model.naming import set_new_name | from frappe.model.naming import set_new_name | ||||
from six import iteritems | |||||
from werkzeug.exceptions import NotFound, Forbidden | from werkzeug.exceptions import NotFound, Forbidden | ||||
import hashlib, json | import hashlib, json | ||||
from frappe.model import optional_fields | from frappe.model import optional_fields | ||||
@@ -344,7 +345,7 @@ class Document(BaseDocument): | |||||
def get_values(): | def get_values(): | ||||
values = self.as_dict() | values = self.as_dict() | ||||
# format values | # format values | ||||
for key, value in values.iteritems(): | |||||
for key, value in iteritems(values): | |||||
if value==None: | if value==None: | ||||
values[key] = "" | values[key] = "" | ||||
return values | return values | ||||
@@ -361,7 +362,7 @@ class Document(BaseDocument): | |||||
def update_single(self, d): | def update_single(self, d): | ||||
"""Updates values for Single type Document in `tabSingles`.""" | """Updates values for Single type Document in `tabSingles`.""" | ||||
frappe.db.sql("""delete from tabSingles where doctype=%s""", self.doctype) | frappe.db.sql("""delete from tabSingles where doctype=%s""", self.doctype) | ||||
for field, value in d.iteritems(): | |||||
for field, value in iteritems(d): | |||||
if field != "doctype": | if field != "doctype": | ||||
frappe.db.sql("""insert into tabSingles(doctype, field, value) | frappe.db.sql("""insert into tabSingles(doctype, field, value) | ||||
values (%s, %s, %s)""", (self.doctype, field, value)) | values (%s, %s, %s)""", (self.doctype, field, value)) | ||||
@@ -4,6 +4,7 @@ | |||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
import frappe | import frappe | ||||
from six import iteritems | |||||
ignore_doctypes = ("DocType", "Print Format", "Role", "Module Def", "Communication", | ignore_doctypes = ("DocType", "Print Format", "Role", "Module Def", "Communication", | ||||
"ToDo") | "ToDo") | ||||
@@ -26,7 +27,7 @@ def update_link_count(): | |||||
link_count = frappe.cache().get_value('_link_count') | link_count = frappe.cache().get_value('_link_count') | ||||
if link_count: | if link_count: | ||||
for key, count in link_count.iteritems(): | |||||
for key, count in iteritems(link_count): | |||||
if key[0] not in ignore_doctypes: | if key[0] not in ignore_doctypes: | ||||
try: | try: | ||||
frappe.db.sql('update `tab{0}` set idx = idx + {1} where name=%s'.format(key[0], count), | frappe.db.sql('update `tab{0}` set idx = idx + {1} where name=%s'.format(key[0], count), | ||||
@@ -2,6 +2,8 @@ | |||||
# such as page_limit, filters, last_view | # such as page_limit, filters, last_view | ||||
import frappe, json | import frappe, json | ||||
from six import iteritems | |||||
def get_user_settings(doctype, for_update=False): | def get_user_settings(doctype, for_update=False): | ||||
user_settings = frappe.cache().hget('_user_settings', | user_settings = frappe.cache().hget('_user_settings', | ||||
@@ -36,7 +38,7 @@ def update_user_settings(doctype, user_settings, for_update=False): | |||||
def sync_user_settings(): | def sync_user_settings(): | ||||
'''Sync from cache to database (called asynchronously via the browser)''' | '''Sync from cache to database (called asynchronously via the browser)''' | ||||
for key, data in frappe.cache().hgetall('_user_settings').iteritems(): | |||||
for key, data in iteritems(frappe.cache().hgetall('_user_settings')): | |||||
doctype, user = key.split('::') | doctype, user = key.split('::') | ||||
frappe.db.sql('''insert into __UserSettings (user, doctype, data) values (%s, %s, %s) | frappe.db.sql('''insert into __UserSettings (user, doctype, data) values (%s, %s, %s) | ||||
on duplicate key update data=%s''', (user, doctype, data, data)) | on duplicate key update data=%s''', (user, doctype, data, data)) | ||||
@@ -19,6 +19,8 @@ from frappe.utils import get_files_path, get_site_path | |||||
# a backup from a time before version 3 migration | # a backup from a time before version 3 migration | ||||
# | # | ||||
# * Patch remaining unpatched File records. | # * Patch remaining unpatched File records. | ||||
from six import iteritems | |||||
def execute(): | def execute(): | ||||
frappe.db.auto_commit_on_many_writes = True | frappe.db.auto_commit_on_many_writes = True | ||||
@@ -49,7 +51,7 @@ def get_replaced_files(): | |||||
old_files = dict(frappe.db.sql("select name, file_name from `tabFile` where ifnull(content_hash, '')=''")) | old_files = dict(frappe.db.sql("select name, file_name from `tabFile` where ifnull(content_hash, '')=''")) | ||||
invfiles = invert_dict(new_files) | invfiles = invert_dict(new_files) | ||||
for nname, nfilename in new_files.iteritems(): | |||||
for nname, nfilename in iteritems(new_files): | |||||
if 'files/' + nfilename in old_files.values(): | if 'files/' + nfilename in old_files.values(): | ||||
ret.append((nfilename, invfiles[nfilename])) | ret.append((nfilename, invfiles[nfilename])) | ||||
return ret | return ret | ||||
@@ -82,7 +84,7 @@ def rename_replacing_files(): | |||||
def invert_dict(ddict): | def invert_dict(ddict): | ||||
ret = {} | ret = {} | ||||
for k,v in ddict.iteritems(): | |||||
for k,v in iteritems(ddict): | |||||
if not ret.get(v): | if not ret.get(v): | ||||
ret[v] = [k] | ret[v] = [k] | ||||
else: | else: | ||||
@@ -1,6 +1,8 @@ | |||||
from frappe.installer import create_user_settings_table | from frappe.installer import create_user_settings_table | ||||
from frappe.model.utils.user_settings import update_user_settings | from frappe.model.utils.user_settings import update_user_settings | ||||
import frappe, json | import frappe, json | ||||
from six import iteritems | |||||
def execute(): | def execute(): | ||||
if frappe.db.table_exists("__ListSettings"): | if frappe.db.table_exists("__ListSettings"): | ||||
@@ -32,7 +34,7 @@ def execute(): | |||||
for user in frappe.db.get_all('User', {'user_type': 'System User'}): | for user in frappe.db.get_all('User', {'user_type': 'System User'}): | ||||
defaults = frappe.defaults.get_defaults_for(user.name) | defaults = frappe.defaults.get_defaults_for(user.name) | ||||
for key, value in defaults.iteritems(): | |||||
for key, value in iteritems(defaults): | |||||
if key.startswith('_list_settings:'): | if key.startswith('_list_settings:'): | ||||
doctype = key.replace('_list_settings:', '') | doctype = key.replace('_list_settings:', '') | ||||
columns = ['`tab{1}`.`{0}`'.format(*c) for c in json.loads(value)] | columns = ['`tab{1}`.`{0}`'.format(*c) for c in json.loads(value)] | ||||
@@ -3,6 +3,8 @@ | |||||
from __future__ import unicode_literals, print_function | from __future__ import unicode_literals, print_function | ||||
from six import iteritems | |||||
""" | """ | ||||
frappe.translate | frappe.translate | ||||
~~~~~~~~~~~~~~~~ | ~~~~~~~~~~~~~~~~ | ||||
@@ -120,7 +122,7 @@ def get_dict(fortype, name=None): | |||||
message_dict.update(get_dict_from_hooks(fortype, name)) | message_dict.update(get_dict_from_hooks(fortype, name)) | ||||
# remove untranslated | # remove untranslated | ||||
message_dict = {k:v for k, v in message_dict.iteritems() if k!=v} | |||||
message_dict = {k:v for k, v in iteritems(message_dict) if k!=v} | |||||
translation_assets[asset_key] = message_dict | translation_assets[asset_key] = message_dict | ||||
@@ -13,6 +13,7 @@ from dateutil import parser | |||||
from num2words import num2words | from num2words import num2words | ||||
import HTMLParser | import HTMLParser | ||||
from html2text import html2text | from html2text import html2text | ||||
from six import iteritems | |||||
DATE_FORMAT = "%Y-%m-%d" | DATE_FORMAT = "%Y-%m-%d" | ||||
TIME_FORMAT = "%H:%M:%S.%f" | TIME_FORMAT = "%H:%M:%S.%f" | ||||
@@ -686,7 +687,7 @@ operator_map = { | |||||
def evaluate_filters(doc, filters): | def evaluate_filters(doc, filters): | ||||
'''Returns true if doc matches filters''' | '''Returns true if doc matches filters''' | ||||
if isinstance(filters, dict): | if isinstance(filters, dict): | ||||
for key, value in filters.iteritems(): | |||||
for key, value in iteritems(filters): | |||||
f = get_filter(None, {key:value}) | f = get_filter(None, {key:value}) | ||||
if not compare(doc.get(f.fieldname), f.operator, f.value): | if not compare(doc.get(f.fieldname), f.operator, f.value): | ||||
return False | return False | ||||
@@ -4,6 +4,7 @@ from collections import defaultdict | |||||
from rq import Worker, Connection | from rq import Worker, Connection | ||||
from frappe.utils.background_jobs import get_redis_conn, get_queue, get_queue_list | from frappe.utils.background_jobs import get_redis_conn, get_queue, get_queue_list | ||||
from frappe.utils.scheduler import is_scheduler_disabled | from frappe.utils.scheduler import is_scheduler_disabled | ||||
from six import iteritems | |||||
def get_workers(): | def get_workers(): | ||||
@@ -118,7 +119,7 @@ def doctor(site=None): | |||||
print("Queue:", queue) | print("Queue:", queue) | ||||
print("Number of Jobs: ", job_count[queue]) | print("Number of Jobs: ", job_count[queue]) | ||||
print("Methods:") | print("Methods:") | ||||
for method, count in jobs_per_queue[queue].iteritems(): | |||||
for method, count in iteritems(jobs_per_queue[queue]): | |||||
print("{0} : {1}".format(method, count)) | print("{0} : {1}".format(method, count)) | ||||
print("------------") | print("------------") | ||||
@@ -5,6 +5,8 @@ from __future__ import unicode_literals | |||||
import redis, frappe, re | import redis, frappe, re | ||||
import cPickle as pickle | import cPickle as pickle | ||||
from frappe.utils import cstr | from frappe.utils import cstr | ||||
from six import iteritems | |||||
class RedisWrapper(redis.Redis): | class RedisWrapper(redis.Redis): | ||||
"""Redis client that will automatically prefix conf.db_name""" | """Redis client that will automatically prefix conf.db_name""" | ||||
@@ -148,7 +150,7 @@ class RedisWrapper(redis.Redis): | |||||
def hgetall(self, name): | def hgetall(self, name): | ||||
return {key: pickle.loads(value) for key, value in | return {key: pickle.loads(value) for key, value in | ||||
super(redis.Redis, self).hgetall(self.make_key(name)).iteritems()} | |||||
iteritems(super(redis.Redis, self).hgetall(self.make_key(name)))} | |||||
def hget(self, name, key, generator=None, shared=False): | def hget(self, name, key, generator=None, shared=False): | ||||
_name = self.make_key(name, shared=shared) | _name = self.make_key(name, shared=shared) | ||||
@@ -10,6 +10,8 @@ from __future__ import unicode_literals, print_function | |||||
import os, json, frappe, shutil, re | import os, json, frappe, shutil, re | ||||
from frappe.website.context import get_context | from frappe.website.context import get_context | ||||
from frappe.utils import markdown | from frappe.utils import markdown | ||||
from six import iteritems | |||||
class setup_docs(object): | class setup_docs(object): | ||||
def __init__(self, app): | def __init__(self, app): | ||||
@@ -294,7 +296,7 @@ class setup_docs(object): | |||||
return '{% raw %}' + matchobj.group(0) + '{% endraw %}' | return '{% raw %}' + matchobj.group(0) + '{% endraw %}' | ||||
cnt = 0 | cnt = 0 | ||||
for path, context in pages.iteritems(): | |||||
for path, context in iteritems(pages): | |||||
print("Writing {0}".format(path)) | print("Writing {0}".format(path)) | ||||
# set this for get_context / website libs | # set this for get_context / website libs | ||||
@@ -420,7 +422,7 @@ class setup_docs(object): | |||||
"images/up.png": "img/up.png" | "images/up.png": "img/up.png" | ||||
} | } | ||||
for source, target in copy_files.iteritems(): | |||||
for source, target in iteritems(copy_files): | |||||
source_path = frappe.get_app_path("frappe", "public", source) | source_path = frappe.get_app_path("frappe", "public", source) | ||||
if os.path.isdir(source_path): | if os.path.isdir(source_path): | ||||
if not os.path.exists(os.path.join(assets_path, target)): | if not os.path.exists(os.path.join(assets_path, target)): | ||||
@@ -13,6 +13,8 @@ from frappe.utils.file_manager import get_max_file_size | |||||
from frappe.modules.utils import export_module_json, get_doc_module | from frappe.modules.utils import export_module_json, get_doc_module | ||||
from urllib import urlencode | from urllib import urlencode | ||||
from frappe.integrations.utils import get_payment_gateway_controller | from frappe.integrations.utils import get_payment_gateway_controller | ||||
from six import iteritems | |||||
class WebForm(WebsiteGenerator): | class WebForm(WebsiteGenerator): | ||||
website = frappe._dict( | website = frappe._dict( | ||||
@@ -206,7 +208,7 @@ def get_context(context): | |||||
context.params_from_form_dict = '' | context.params_from_form_dict = '' | ||||
params = {} | params = {} | ||||
for key, value in frappe.form_dict.iteritems(): | |||||
for key, value in iteritems(frappe.form_dict): | |||||
if frappe.get_meta(self.doc_type).get_field(key): | if frappe.get_meta(self.doc_type).get_field(key): | ||||
params[key] = value | params[key] = value | ||||
@@ -365,7 +367,7 @@ def accept(web_form, data, for_payment=False): | |||||
doc = frappe.new_doc(data.doctype) | doc = frappe.new_doc(data.doctype) | ||||
# set values | # set values | ||||
for fieldname, value in data.iteritems(): | |||||
for fieldname, value in iteritems(data): | |||||
if value and isinstance(value, dict): | if value and isinstance(value, dict): | ||||
try: | try: | ||||
if "__file_attachment" in value: | if "__file_attachment" in value: | ||||
@@ -7,6 +7,8 @@ from frappe import _ | |||||
import frappe.sessions | import frappe.sessions | ||||
from frappe.utils import cstr | from frappe.utils import cstr | ||||
import mimetypes, json | import mimetypes, json | ||||
from six import iteritems | |||||
from werkzeug.wrappers import Response | from werkzeug.wrappers import Response | ||||
from werkzeug.routing import Map, Rule, NotFound | from werkzeug.routing import Map, Rule, NotFound | ||||
@@ -78,7 +80,7 @@ def build_response(path, data, http_status_code, headers=None): | |||||
response.headers[b"X-From-Cache"] = frappe.local.response.from_cache or False | response.headers[b"X-From-Cache"] = frappe.local.response.from_cache or False | ||||
if headers: | if headers: | ||||
for key, val in headers.iteritems(): | |||||
for key, val in iteritems(headers): | |||||
response.headers[bytes(key)] = val.encode("utf-8") | response.headers[bytes(key)] = val.encode("utf-8") | ||||
return response | return response | ||||
@@ -3,6 +3,8 @@ | |||||
from __future__ import unicode_literals | from __future__ import unicode_literals | ||||
import frappe, re, os | import frappe, re, os | ||||
from six import iteritems | |||||
def delete_page_cache(path): | def delete_page_cache(path): | ||||
cache = frappe.cache() | cache = frappe.cache() | ||||
@@ -190,7 +192,7 @@ def get_full_index(route=None, app=None): | |||||
pages = get_pages(app=app) | pages = get_pages(app=app) | ||||
# make children map | # make children map | ||||
for route, page_info in pages.iteritems(): | |||||
for route, page_info in iteritems(pages): | |||||
parent_route = os.path.dirname(route) | parent_route = os.path.dirname(route) | ||||
children_map.setdefault(parent_route, []).append(page_info) | children_map.setdefault(parent_route, []).append(page_info) | ||||
@@ -7,6 +7,7 @@ import urllib | |||||
import frappe | import frappe | ||||
from frappe.utils import get_request_site_address, get_datetime, nowdate | from frappe.utils import get_request_site_address, get_datetime, nowdate | ||||
from frappe.website.router import get_pages, get_all_page_context_from_doctypes | from frappe.website.router import get_pages, get_all_page_context_from_doctypes | ||||
from six import iteritems | |||||
no_cache = 1 | no_cache = 1 | ||||
no_sitemap = 1 | no_sitemap = 1 | ||||
@@ -16,14 +17,14 @@ def get_context(context): | |||||
"""generate the sitemap XML""" | """generate the sitemap XML""" | ||||
host = get_request_site_address() | host = get_request_site_address() | ||||
links = [] | links = [] | ||||
for route, page in get_pages().iteritems(): | |||||
for route, page in iteritems(get_pages()): | |||||
if not page.no_sitemap: | if not page.no_sitemap: | ||||
links.append({ | links.append({ | ||||
"loc": urllib.basejoin(host, urllib.quote(page.name.encode("utf-8"))), | "loc": urllib.basejoin(host, urllib.quote(page.name.encode("utf-8"))), | ||||
"lastmod": nowdate() | "lastmod": nowdate() | ||||
}) | }) | ||||
for route, data in get_all_page_context_from_doctypes().iteritems(): | |||||
for route, data in iteritems(get_all_page_context_from_doctypes()): | |||||
links.append({ | links.append({ | ||||
"loc": urllib.basejoin(host, urllib.quote((route or "").encode("utf-8"))), | "loc": urllib.basejoin(host, urllib.quote((route or "").encode("utf-8"))), | ||||
"lastmod": get_datetime(data.get("modified")).strftime("%Y-%m-%d") | "lastmod": get_datetime(data.get("modified")).strftime("%Y-%m-%d") | ||||