Python 3 compatible print statements (#3199)

* changes print statements in file to python 3 compatible style using `__future__`

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* changes deprecated md5 module to hashlib

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements

* adds python 3 style for print statements
This commit is contained in:
tundebabzy 2017-05-01 08:04:29 +01:00 committed by Rushabh Mehta
parent ea3b712461
commit 7b41d7e5eb
48 changed files with 212 additions and 206 deletions

View file

@ -4,7 +4,7 @@
globals attached to frappe module
+ some utility functions that should probably be moved
"""
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
from werkzeug.local import Local, release_local
import os, sys, importlib, inspect, json
@ -185,7 +185,7 @@ def get_site_config(sites_path=None, site_path=None):
if os.path.exists(site_config):
config.update(get_file_json(site_config))
elif local.site and not local.flags.new_site:
print "{0} does not exist".format(local.site)
print("{0} does not exist".format(local.site))
sys.exit(1)
#raise IncorrectSitePath, "{0} does not exist".format(site_config)
@ -241,7 +241,7 @@ def errprint(msg):
:param msg: Message."""
msg = as_unicode(msg)
if not request or (not "cmd" in local.form_dict) or conf.developer_mode:
print msg.encode('utf-8')
print(msg.encode('utf-8'))
error_log.append(msg)
@ -251,7 +251,7 @@ def log(msg):
:param msg: Message."""
if not request:
if conf.get("logging") or False:
print repr(msg)
print(repr(msg))
debug_log.append(as_unicode(msg))
@ -288,7 +288,7 @@ def msgprint(msg, title=None, raise_exception=0, as_table=False, indicator=None,
out.msg = '<table border="1px" style="border-collapse: collapse" cellpadding="2px">' + ''.join(['<tr>'+''.join(['<td>%s</td>' % c for c in r])+'</tr>' for r in msg]) + '</table>'
if flags.print_messages and out.msg:
print "Message: " + repr(out.msg).encode("utf-8")
print("Message: " + repr(out.msg).encode("utf-8"))
if title:
out.title = title
@ -784,7 +784,7 @@ def get_hooks(hook=None, default=None, app_name=None):
# if app is not installed while restoring
# ignore it
pass
print 'Could not find app "{0}"'.format(app_name)
print('Could not find app "{0}"'.format(app_name))
if not request:
sys.exit(1)
raise

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
from frappe.utils.minify import JavascriptMinify
import subprocess
@ -114,8 +114,8 @@ def get_build_maps():
build_maps[target] = source_paths
except ValueError, e:
print path
print 'JSON syntax error {0}'.format(str(e))
print(path)
print('JSON syntax error {0}'.format(str(e)))
return build_maps
timestamps = {}
@ -130,7 +130,7 @@ def pack(target, sources, no_compress, verbose):
suffix = None
if ':' in f: f, suffix = f.split(':')
if not os.path.exists(f) or os.path.isdir(f):
print "did not find " + f
print("did not find " + f)
continue
timestamps[f] = os.path.getmtime(f)
try:
@ -147,7 +147,7 @@ def pack(target, sources, no_compress, verbose):
outtxt += unicode(minified or '', 'utf-8').strip('\n') + ';'
if verbose:
print "{0}: {1}k".format(f, int(len(minified) / 1024))
print("{0}: {1}k".format(f, int(len(minified) / 1024)))
elif outtype=="js" and extn=="html":
# add to frappe.templates
outtxt += html_to_js_template(f, data)
@ -156,8 +156,8 @@ def pack(target, sources, no_compress, verbose):
outtxt += '\n' + data + '\n'
except Exception:
print "--Error in:" + f + "--"
print frappe.get_traceback()
print("--Error in:" + f + "--")
print(frappe.get_traceback())
if not no_compress and outtype == 'css':
pass
@ -166,7 +166,7 @@ def pack(target, sources, no_compress, verbose):
with open(target, 'w') as f:
f.write(outtxt.encode("utf-8"))
print "Wrote %s - %sk" % (target, str(int(os.path.getsize(target)/1024)))
print("Wrote %s - %sk" % (target, str(int(os.path.getsize(target)/1024))))
def html_to_js_template(path, content):
'''returns HTML template content as Javascript code, adding it to `frappe.templates`'''
@ -189,7 +189,7 @@ def files_dirty():
if ':' in f: f, suffix = f.split(':')
if not os.path.exists(f) or os.path.isdir(f): continue
if os.path.getmtime(f) != timestamps.get(f):
print f + ' dirty'
print(f + ' dirty')
return True
else:
return False
@ -211,7 +211,7 @@ def compile_less():
timestamps[fpath] = mtime
print "compiling {0}".format(fpath)
print("compiling {0}".format(fpath))
css_path = os.path.join(path, "public", "css", fname.rsplit(".", 1)[0] + ".css")
os.system("lessc {0} > {1}".format(fpath, css_path))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Web Notes Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals, absolute_import
from __future__ import unicode_literals, absolute_import, print_function
import sys
import click
import cProfile
@ -29,7 +29,7 @@ def pass_context(f):
ps = pstats.Stats(pr, stream=s)\
.sort_stats('cumtime', 'tottime', 'ncalls')
ps.print_stats()
print s.getvalue()
print(s.getvalue())
return ret
@ -40,7 +40,7 @@ def get_site(context):
site = context.sites[0]
return site
except (IndexError, TypeError):
print 'Please specify --site sitename'
print('Please specify --site sitename')
sys.exit(1)
def call_command(cmd, context):

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals, absolute_import
from __future__ import unicode_literals, absolute_import, print_function
import click
import json, sys
import frappe
@ -42,7 +42,7 @@ def enable_scheduler(context):
frappe.connect()
frappe.utils.scheduler.enable_scheduler()
frappe.db.commit()
print "Enabled for", site
print("Enabled for", site)
finally:
frappe.destroy()
@ -57,7 +57,7 @@ def disable_scheduler(context):
frappe.connect()
frappe.utils.scheduler.disable_scheduler()
frappe.db.commit()
print "Disabled for", site
print("Disabled for", site)
finally:
frappe.destroy()
@ -90,7 +90,7 @@ def scheduler(context, state, site=None):
frappe.utils.scheduler.enable_scheduler()
frappe.db.commit()
print 'Scheduler {0}d for site {1}'.format(state, site)
print('Scheduler {0}d for site {1}'.format(state, site))
finally:
frappe.destroy()
@ -143,7 +143,7 @@ def purge_jobs(site=None, queue=None, event=None):
from frappe.utils.doctor import purge_pending_jobs
frappe.init(site or '')
count = purge_pending_jobs(event=event, site=site, queue=queue)
print "Purged {} jobs".format(count)
print("Purged {} jobs".format(count))
@click.command('schedule')
def start_scheduler():
@ -170,11 +170,11 @@ def ready_for_migration(context, site=None):
pending_jobs = get_pending_jobs(site=site)
if pending_jobs:
print 'NOT READY for migration: site {0} has pending background jobs'.format(site)
print('NOT READY for migration: site {0} has pending background jobs'.format(site))
sys.exit(1)
else:
print 'READY for migration: site {0} does not have any background jobs'.format(site)
print('READY for migration: site {0} does not have any background jobs'.format(site))
return 0
finally:

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals, absolute_import
from __future__ import unicode_literals, absolute_import, print_function
import click
import hashlib, os, sys
import frappe
@ -65,7 +65,7 @@ def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=N
frappe.db.commit()
scheduler_status = "disabled" if frappe.utils.scheduler.is_scheduler_disabled() else "enabled"
print "*** Scheduler is", scheduler_status, "***"
print("*** Scheduler is", scheduler_status, "***")
finally:
if installing and os.path.exists(installing):
@ -91,7 +91,7 @@ def restore(context, sql_file_path, mariadb_root_username=None, mariadb_root_pas
if not os.path.exists(sql_file_path):
sql_file_path = '../' + sql_file_path
if not os.path.exists(sql_file_path):
print 'Invalid path {0}' + sql_file_path[3:]
print('Invalid path {0}' + sql_file_path[3:])
sys.exit(1)
if sql_file_path.endswith('sql.gz'):
@ -162,7 +162,7 @@ def list_apps(context):
site = get_site(context)
frappe.init(site=site)
frappe.connect()
print "\n".join(frappe.get_installed_apps())
print("\n".join(frappe.get_installed_apps()))
frappe.destroy()
@click.command('add-system-manager')
@ -204,7 +204,7 @@ def migrate(context, rebuild_website=False):
from frappe.migrate import migrate
for site in context.sites:
print 'Migrating', site
print('Migrating', site)
frappe.init(site=site)
frappe.connect()
try:
@ -281,10 +281,10 @@ def backup(context, with_files=False, backup_path_db=None, backup_path_files=Non
odb = scheduled_backup(ignore_files=not with_files, backup_path_db=backup_path_db, backup_path_files=backup_path_files, backup_path_private_files=backup_path_private_files, force=True)
if verbose:
from frappe.utils import now
print "database backup taken -", odb.backup_path_db, "- on", now()
print("database backup taken -", odb.backup_path_db, "- on", now())
if with_files:
print "files backup taken -", odb.backup_path_files, "- on", now()
print "private files backup taken -", odb.backup_path_private_files, "- on", now()
print("files backup taken -", odb.backup_path_files, "- on", now())
print("private files backup taken -", odb.backup_path_private_files, "- on", now())
frappe.destroy()

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals, absolute_import
from __future__ import unicode_literals, absolute_import, print_function
import click
import frappe
from frappe.commands import pass_context, get_site
@ -32,8 +32,8 @@ def new_language(context, lang_code, app):
frappe.connect(site=context['sites'][0])
frappe.translate.write_translations_file(app, lang_code)
print "File created at ./apps/{app}/{app}/translations/{lang_code}.csv".format(app=app, lang_code=lang_code)
print "You will need to add the language in frappe/geo/languages.json, if you haven't done it already."
print("File created at ./apps/{app}/{app}/translations/{lang_code}.csv".format(app=app, lang_code=lang_code))
print("You will need to add the language in frappe/geo/languages.json, if you haven't done it already.")
@click.command('get-untranslated')
@click.argument('lang')

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals, absolute_import
from __future__ import unicode_literals, absolute_import, print_function
import click
import json, os, sys
from distutils.spawn import find_executable
@ -117,7 +117,7 @@ def execute(context, method, args=None, kwargs=None):
finally:
frappe.destroy()
if ret:
print json.dumps(ret)
print(json.dumps(ret))
@click.command('add-to-email-queue')
@ -207,7 +207,7 @@ def import_doc(context, path, force=False):
if not os.path.exists(path):
path = os.path.join('..', path)
if not os.path.exists(path):
print 'Invalid path {0}'.format(path)
print('Invalid path {0}'.format(path))
sys.exit(1)
for site in context.sites:
@ -235,7 +235,7 @@ def import_csv(context, path, only_insert=False, submit_after_import=False, igno
if not os.path.exists(path):
path = os.path.join('..', path)
if not os.path.exists(path):
print 'Invalid path {0}'.format(path)
print('Invalid path {0}'.format(path))
sys.exit(1)
with open(path, 'r') as csvfile:
@ -250,7 +250,7 @@ def import_csv(context, path, only_insert=False, submit_after_import=False, igno
via_console=True)
frappe.db.commit()
except Exception:
print frappe.get_traceback()
print(frappe.get_traceback())
frappe.destroy()
@ -364,7 +364,7 @@ def request(context, args):
frappe.handler.execute_cmd(frappe.form_dict.cmd)
print frappe.response
print(frappe.response)
finally:
frappe.destroy()
@ -399,7 +399,7 @@ def get_version():
for m in sorted(frappe.get_all_apps()):
module = frappe.get_module(m)
if hasattr(module, "__version__"):
print "{0} {1}".format(m, module.__version__)
print("{0} {1}".format(m, module.__version__))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, os
from frappe import _
@ -29,7 +29,7 @@ def get_doctype_options():
def import_file_by_path(path, ignore_links=False, overwrite=False, submit=False, pre_process=None, no_email=True):
from frappe.utils.csvutils import read_csv_content
from frappe.core.page.data_import_tool.importer import upload
print "Importing " + path
print("Importing " + path)
with open(path, "r") as infile:
upload(rows = read_csv_content(infile.read()), ignore_links=ignore_links, no_email=no_email, overwrite=overwrite,
submit_after_import=submit, pre_process=pre_process)

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, json
import frappe.permissions
@ -210,7 +210,7 @@ def upload(rows = None, submit_after_import=None, ignore_encoding_errors=False,
def log(msg):
if via_console:
print msg.encode('utf-8')
print(msg.encode('utf-8'))
else:
ret.append(msg)

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import json
"""
Server side functions for tagging.
@ -84,7 +84,7 @@ class DocTags:
def remove(self, dn, tag):
"""remove a user tag"""
tl = self.get_tags(dn).split(',')
print tag, filter(lambda x:x!=tag, tl)
print(tag, filter(lambda x:x!=tag, tl))
self.update(dn, filter(lambda x:x.lower()!=tag.lower(), tl))
def remove_all(self, dn):

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import imaplib
import re
@ -644,7 +644,7 @@ def test_internet(host="8.8.8.8", port=53, timeout=3):
socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect((host, port))
return True
except Exception as ex:
print ex.message
print(ex.message)
return False
def notify_unreplied():

View file

@ -1,3 +1,4 @@
from __future__ import print_function
import requests
import json
import frappe
@ -192,11 +193,11 @@ class FrappeClient(object):
meta = frappe.get_meta(doctype)
tables = {}
for df in meta.get_table_fields():
if verbose: print "getting " + df.options
if verbose: print("getting " + df.options)
tables[df.fieldname] = self.get_list(df.options, limit_page_length=999999)
# get links
if verbose: print "getting " + doctype
if verbose: print("getting " + doctype)
docs = self.get_list(doctype, limit_page_length=999999, filters=filters)
# build - attach children to parents
@ -210,7 +211,7 @@ class FrappeClient(object):
if child.parent in docs_map:
docs_map[child.parent].setdefault(fieldname, []).append(child)
if verbose: print "inserting " + doctype
if verbose: print("inserting " + doctype)
for doc in docs:
if exclude and doc["name"] in exclude:
continue
@ -281,7 +282,7 @@ class FrappeClient(object):
try:
rjson = response.json()
except ValueError:
print response.text
print(response.text)
raise
if rjson and ("exc" in rjson) and rjson["exc"]:

View file

@ -4,7 +4,7 @@
# called from wnf.py
# lib/wnf.py --install [rootpassword] [dbname] [source]
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import os, json, sys, subprocess, shutil
import frappe
@ -40,8 +40,8 @@ def install_db(root_login="root", root_password=None, db_name=None, source_sql=N
check_if_ready_for_barracuda()
import_db_from_sql(source_sql, verbose)
if not 'tabDefaultValue' in frappe.db.get_tables():
print '''Database not installed, this can due to lack of permission, or that the database name exists.
Check your mysql root password, or use --force to reinstall'''
print('''Database not installed, this can due to lack of permission, or that the database name exists.
Check your mysql root password, or use --force to reinstall''')
sys.exit(1)
remove_missing_apps()
@ -63,14 +63,14 @@ def create_database_and_user(force, verbose):
raise Exception("Database %s already exists" % (db_name,))
dbman.create_user(db_name, frappe.conf.db_password)
if verbose: print "Created user %s" % db_name
if verbose: print("Created user %s" % db_name)
dbman.create_database(db_name)
if verbose: print "Created database %s" % db_name
if verbose: print("Created database %s" % db_name)
dbman.grant_all_privileges(db_name, db_name)
dbman.flush_privileges()
if verbose: print "Granted privileges to user %s and database %s" % (db_name, db_name)
if verbose: print("Granted privileges to user %s and database %s" % (db_name, db_name))
# close root connection
frappe.db.close()
@ -84,12 +84,12 @@ def create_user_settings_table():
) ENGINE=InnoDB DEFAULT CHARSET=utf8""")
def import_db_from_sql(source_sql, verbose):
if verbose: print "Starting database import..."
if verbose: print("Starting database import...")
db_name = frappe.conf.db_name
if not source_sql:
source_sql = os.path.join(os.path.dirname(frappe.__file__), 'data', 'Framework.sql')
DbManager(frappe.local.db).restore_database(db_name, source_sql, db_name, frappe.conf.db_password)
if verbose: print "Imported from database %s" % source_sql
if verbose: print("Imported from database %s" % source_sql)
def get_root_connection(root_login='root', root_password=None):
if not frappe.local.flags.root_connection:
@ -124,7 +124,7 @@ def install_app(name, verbose=False, set_as_patched=True):
frappe.msgprint("App {0} already installed".format(name))
return
print "Installing {0}...".format(name)
print("Installing {0}...".format(name))
if name != "frappe":
frappe.only_for("System Manager")
@ -182,7 +182,7 @@ def remove_app(app_name, dry_run=False, yes=False):
return
from frappe.utils.backups import scheduled_backup
print "Backing up..."
print("Backing up...")
scheduled_backup(ignore_files=True)
drop_doctypes = []
@ -191,7 +191,7 @@ def remove_app(app_name, dry_run=False, yes=False):
for module_name in frappe.get_module_list(app_name):
for doctype in frappe.get_list("DocType", filters={"module": module_name},
fields=["name", "issingle"]):
print "removing DocType {0}...".format(doctype.name)
print("removing DocType {0}...".format(doctype.name))
if not dry_run:
frappe.delete_doc("DocType", doctype.name)
@ -202,11 +202,11 @@ def remove_app(app_name, dry_run=False, yes=False):
# remove reports, pages and web forms
for doctype in ("Report", "Page", "Web Form"):
for record in frappe.get_list(doctype, filters={"module": module_name}):
print "removing {0} {1}...".format(doctype, record.name)
print("removing {0} {1}...".format(doctype, record.name))
if not dry_run:
frappe.delete_doc(doctype, record.name)
print "removing Module {0}...".format(module_name)
print("removing Module {0}...".format(module_name))
if not dry_run:
frappe.delete_doc("Module Def", module_name)
@ -369,10 +369,10 @@ def check_if_ready_for_barracuda():
def print_db_config(explanation, config_text):
print ("="*80)
print (explanation)
print (config_text)
print ("="*80)
print("="*80)
print(explanation)
print(config_text)
print("="*80)
def extract_sql_gzip(sql_gz_path):

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import time
import redis
@ -612,7 +612,7 @@ class Document(BaseDocument):
msgprint(msg)
if frappe.flags.print_messages:
print self.as_json().encode("utf-8")
print(self.as_json().encode("utf-8"))
raise frappe.MandatoryError('[{doctype}, {name}]: {fields}'.format(
fields=", ".join((each[0] for each in missing)),

View file

@ -15,7 +15,7 @@ Example:
'''
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, json, os
from frappe.utils import cstr, cint
from frappe.model import default_fields, no_value_fields, optional_fields
@ -480,7 +480,7 @@ def trim_tables(doctype=None):
columns_to_remove = [f for f in list(set(columns) - set(fields)) if f not in ignore_fields
and not f.startswith("_")]
if columns_to_remove:
print doctype, "columns removed:", columns_to_remove
print(doctype, "columns removed:", columns_to_remove)
columns_to_remove = ", ".join(["drop `{0}`".format(c) for c in columns_to_remove])
query = """alter table `tab{doctype}` {columns}""".format(
doctype=doctype, columns=columns_to_remove)

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
from frappe import _
from frappe.utils import cint
@ -374,7 +374,7 @@ def bulk_rename(doctype, rows=None, via_console = False):
frappe.db.rollback()
if via_console:
print msg
print(msg)
else:
rename_log.append(msg)

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
"""
Sync's doctype and docfields from txt files to database
perms will get synced only if none exist
@ -50,7 +50,7 @@ def sync_for(app_name, force=0, sync_everything = False, verbose=False, reset_pe
# show progress bar
update_progress_bar("Updating DocTypes for {0}".format(app_name), i, l)
print ""
print()
def get_doc_files(files, start_path, force=0, sync_everything = False, verbose=False):

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
from frappe.utils import cstr
from frappe.build import html_to_js_template
@ -29,7 +29,7 @@ def set_field_property(filters, key, value):
for d in docs:
d.get('fields', filters)[0].set(key, value)
d.save()
print 'Updated {0}'.format(d.name)
print('Updated {0}'.format(d.name))
frappe.db.commit()

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import json
@ -14,7 +14,7 @@ def rename_field(doctype, old_fieldname, new_fieldname):
meta = frappe.get_meta(doctype, cached=False)
new_field = meta.get_field(new_fieldname)
if not new_field:
print "rename_field: " + (new_fieldname) + " not found in " + doctype
print("rename_field: " + (new_fieldname) + " not found in " + doctype)
return
if new_field.fieldtype == "Table":

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, os, json
from frappe.modules import get_module_path, scrub_dt_dn
@ -38,7 +38,7 @@ def import_file_by_path(path, force=False, data_import=False, pre_process=None,
try:
docs = read_doc_from_file(path)
except IOError:
print path + " missing"
print (path + " missing")
return
if docs:
@ -77,7 +77,7 @@ def read_doc_from_file(path):
try:
doc = json.loads(f.read())
except ValueError:
print "bad json: {0}".format(path)
print("bad json: {0}".format(path))
raise
else:
raise IOError, '%s missing' % path

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
"""
Execute Patch Files
@ -125,4 +125,4 @@ def check_session_stopped():
raise frappe.SessionStopped('Session Stopped')
def log(msg):
print msg
print (msg)

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
"""
Utilities for using modules
"""
@ -121,7 +121,7 @@ def sync_customizations_for_doctype(data):
if data.get('custom_perms'):
sync('custom_perms', 'Custom DocPerm', 'parent')
print 'Updating customizations for {0}'.format(doctype)
print('Updating customizations for {0}'.format(doctype))
validate_fields_for_doctype(doctype)
if update_schema and not frappe.db.get_value('DocType', doctype, 'issingle'):
@ -154,7 +154,7 @@ def reload_doc(module, dt=None, dn=None, force=False, reset_permissions=False):
def export_doc(doctype, name, module=None):
"""Write a doc to standard path."""
from frappe.modules.export_file import write_document_file
print doctype, name
print(doctype, name)
if not module: module = frappe.db.get_value('DocType', name, 'module')
write_document_file(frappe.get_doc(doctype, name), module)

View file

@ -1,3 +1,4 @@
from __future__ import print_function
import frappe, urllib
from frappe import _
@ -155,7 +156,7 @@ class OAuthWebRequestValidator(RequestValidator):
try:
request.client = request.client or oc.as_dict()
except Exception, e:
print "Failed body authentication: Application %s does not exist".format(cid=request.client_id)
print("Failed body authentication: Application %s does not exist".format(cid=request.client_id))
return frappe.session.user == urllib.unquote(cookie_dict.get('user_id', "Guest"))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
from frappe.custom.doctype.custom_field.custom_field import create_custom_field
@ -18,7 +18,7 @@ def create_custom_field_for_owner_match():
# a link field pointing to User already exists
if (frappe.db.get_value("DocField", {"parent": dt, "fieldtype": "Link", "options": "User", "default": "__user"})
or frappe.db.get_value("Custom Field", {"dt": dt, "fieldtype": "Link", "options": "User", "default": "__user"})):
print "User link field already exists for", dt
print("User link field already exists for", dt)
continue
fieldname = "{}_owner".format(frappe.scrub(dt))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import os
@ -37,7 +37,7 @@ def execute():
_file_name, content = get_file(name)
b.content_hash = get_content_hash(content)
except IOError:
print 'Warning: Error processing ', name
print('Warning: Error processing ', name)
b.content_hash = None
b.flags.ignore_duplicate_entry_error = True
b.save()
@ -62,18 +62,18 @@ def rename_replacing_files():
f.write(('\n'.join(missing_files) + '\n').encode('utf-8'))
for file_name, file_datas in replaced_files:
print 'processing ' + file_name
print ('processing ' + file_name)
content_hash = frappe.db.get_value('File', file_datas[0], 'content_hash')
if not content_hash:
continue
new_file_name = get_file_name(file_name, content_hash)
if os.path.exists(get_files_path(new_file_name)):
continue
print 'skipping ' + file_name
print('skipping ' + file_name)
try:
os.rename(get_files_path(file_name), get_files_path(new_file_name))
except OSError:
print 'Error renaming ', file_name
print('Error renaming ', file_name)
for name in file_datas:
f = frappe.get_doc('File', name)
f.file_name = new_file_name

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import re
@ -36,10 +36,10 @@ def scrub_relative_urls(html):
return re.sub("""src[\s]*=[\s]*['"]files/([^'"]*)['"]""", 'src="/files/\g<1>"', html)
# return re.sub("""(src|href)[^\w'"]*['"](?!http|ftp|mailto|/|#|%|{|cid:|\.com/www\.)([^'" >]+)['"]""", '\g<1>="/\g<2>"', html)
except:
print "Error", html
print("Error", html)
raise
def print_diff(html, old_value):
import difflib
diff = difflib.unified_diff(old_value.splitlines(1), html.splitlines(1), lineterm='')
print '\n'.join(list(diff))
print('\n'.join(list(diff)))

View file

@ -1,3 +1,4 @@
from __future__ import print_function
import frappe
def execute():
@ -21,7 +22,7 @@ def execute():
try:
file.save()
except:
print frappe.get_traceback()
print(frappe.get_traceback())
raise
from frappe.utils.nestedset import rebuild_tree

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
def execute():
@ -20,8 +20,10 @@ def execute():
max_length = max_length[0][0] if max_length else None
if max_length and 140 < max_length <= 255:
print "setting length of '{fieldname}' in '{doctype}' as {length}".format(
print(
"setting length of '{fieldname}' in '{doctype}' as {length}".format(
fieldname=fieldname, doctype=doctype, length=max_length)
)
# create property setter for length
frappe.make_property_setter({

View file

@ -1,3 +1,4 @@
from __future__ import print_function
from subprocess import Popen, call, PIPE
def execute():
@ -7,7 +8,7 @@ def execute():
if output:
call(['brew', 'upgrade', 'node'])
else:
print 'Please update your NodeJS version'
print('Please update your NodeJS version')
call([
'npm', 'install',

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, copy, json
from frappe import _, msgprint
from frappe.utils import cint
@ -25,21 +25,21 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None):
if not user: user = frappe.session.user
if frappe.is_table(doctype):
if verbose: print "Table type, always true"
if verbose: print("Table type, always true")
return True
meta = frappe.get_meta(doctype)
if ptype=="submit" and not cint(meta.is_submittable):
if verbose: print "Not submittable"
if verbose: print("Not submittable")
return False
if ptype=="import" and not cint(meta.allow_import):
if verbose: print "Not importable"
if verbose: print("Not importable")
return False
if user=="Administrator":
if verbose: print "Administrator"
if verbose: print("Administrator")
return True
def false_if_not_shared():
@ -50,18 +50,18 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None):
if doc:
doc_name = doc if isinstance(doc, basestring) else doc.name
if doc_name in shared:
if verbose: print "Shared"
if verbose: print("Shared")
if ptype in ("read", "write", "share") or meta.permissions[0].get(ptype):
if verbose: print "Is shared"
if verbose: print("Is shared")
return True
elif shared:
# if atleast one shared doc of that type, then return True
# this is used in db_query to check if permission on DocType
if verbose: print "Has a shared document"
if verbose: print("Has a shared document")
return True
if verbose: print "Not Shared"
if verbose: print("Not Shared")
return False
role_permissions = get_role_permissions(meta, user=user, verbose=verbose)
@ -79,19 +79,19 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None):
if role_permissions["if_owner"].get(ptype) and ptype!="create":
owner_perm = doc.owner == frappe.session.user
if verbose: print "Owner permission: {0}".format(owner_perm)
if verbose: print("Owner permission: {0}".format(owner_perm))
# check if user permission
if not owner_perm and role_permissions["apply_user_permissions"].get(ptype):
user_perm = user_has_permission(doc, verbose=verbose, user=user,
user_permission_doctypes=role_permissions.get("user_permission_doctypes", {}).get(ptype) or [])
if verbose: print "User permission: {0}".format(user_perm)
if verbose: print("User permission: {0}".format(user_perm))
if not owner_perm and not user_perm:
controller_perm = has_controller_permissions(doc, ptype, user=user)
if verbose: print "Controller permission: {0}".format(controller_perm)
if verbose: print("Controller permission: {0}".format(controller_perm))
# permission true if any one condition is explicitly True or all permissions are undefined (None)
perm = any([owner_perm, user_perm, controller_perm]) or \
@ -100,7 +100,7 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None):
if not perm:
perm = false_if_not_shared()
if verbose: print "Final Permission: {0}".format(perm)
if verbose: print("Final Permission: {0}".format(perm))
return perm

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import unittest, json, sys
@ -48,7 +48,7 @@ def main(app=None, module=None, doctype=None, verbose=False, tests=(), force=Fal
set_test_email_config()
if verbose:
print 'Running "before_tests" hooks'
print('Running "before_tests" hooks')
for fn in frappe.get_hooks("before_tests", app_name=app):
frappe.get_attr(fn)()
@ -110,14 +110,14 @@ def run_all_tests(app=None, verbose=False, profile=False):
s = StringIO.StringIO()
ps = pstats.Stats(pr, stream=s).sort_stats('cumulative')
ps.print_stats()
print s.getvalue()
print(s.getvalue())
return out
def run_tests_for_doctype(doctype, verbose=False, tests=(), force=False, profile=False):
module = frappe.db.get_value("DocType", doctype, "module")
if not module:
print 'Invalid doctype {0}'.format(doctype)
print('Invalid doctype {0}'.format(doctype))
sys.exit(1)
test_module = get_module_name(doctype, module, "test_")
@ -158,7 +158,7 @@ def _run_unittest(module, verbose=False, tests=(), profile=False):
s = StringIO.StringIO()
ps = pstats.Stats(pr, stream=s).sort_stats('cumulative')
ps.print_stats()
print s.getvalue()
print(s.getvalue())
return out
@ -205,7 +205,7 @@ def make_test_records(doctype, verbose=0, force=False):
if not options in frappe.local.test_objects:
if options in frappe.local.test_objects:
print "No test records or circular reference for {0}".format(options)
print("No test records or circular reference for {0}".format(options))
frappe.local.test_objects[options] = []
make_test_records(options, verbose, force)
make_test_records_for_doctype(options, verbose, force)
@ -247,7 +247,7 @@ def make_test_records_for_doctype(doctype, verbose=0, force=False):
module, test_module = get_modules(doctype)
if verbose:
print "Making for " + doctype
print("Making for " + doctype)
if hasattr(test_module, "_make_test_records"):
frappe.local.test_objects[doctype] += test_module._make_test_records(verbose)
@ -317,11 +317,11 @@ def make_test_objects(doctype, test_records=None, verbose=None, reset=False):
return records
def print_mandatory_fields(doctype):
print "Please setup make_test_records for: " + doctype
print "-" * 60
print("Please setup make_test_records for: " + doctype)
print("-" * 60)
meta = frappe.get_meta(doctype)
print "Autoname: " + (meta.autoname or "")
print "Mandatory Fields: "
print("Autoname: " + (meta.autoname or ""))
print("Mandatory Fields: ")
for d in meta.get("fields", {"reqd":1}):
print d.parent + ":" + d.fieldname + " | " + d.fieldtype + " | " + (d.options or "")
print
print(d.parent + ":" + d.fieldname + " | " + d.fieldtype + " | " + (d.options or ""))
print()

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
"""
frappe.translate
@ -584,7 +584,7 @@ def get_untranslated(lang, untranslated_file, get_all=False):
.replace("\n", "|||"))
if get_all:
print str(len(messages)) + " messages"
print(str(len(messages)) + " messages")
with open(untranslated_file, "w") as f:
for m in messages:
# replace \n with ||| so that internal linebreaks don't get split
@ -597,13 +597,13 @@ def get_untranslated(lang, untranslated_file, get_all=False):
untranslated.append(m[1])
if untranslated:
print str(len(untranslated)) + " missing translations of " + str(len(messages))
print(str(len(untranslated)) + " missing translations of " + str(len(messages)))
with open(untranslated_file, "w") as f:
for m in untranslated:
# replace \n with ||| so that internal linebreaks don't get split
f.write((escape_newlines(m) + os.linesep).encode("utf-8"))
else:
print "all translated!"
print("all translated!")
def update_translations(lang, untranslated_file, translated_file):
"""Update translations from a source and target file for a given language.

View file

@ -3,9 +3,9 @@
# util __init__.py
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
from werkzeug.test import Client
import os, re, urllib, sys, json, md5, requests, traceback
import os, re, urllib, sys, json, hashlib, requests, traceback
from markdown2 import markdown as _markdown
from .html_utils import sanitize_html
@ -142,7 +142,7 @@ def has_gravatar(email):
# since querying gravatar for every item will be slow
return ''
hexdigest = md5.md5(frappe.as_unicode(email).encode('utf-8')).hexdigest()
hexdigest = hashlib.md5(frappe.as_unicode(email).encode('utf-8')).hexdigest()
gravatar_url = "https://secure.gravatar.com/avatar/{hash}?d=404&s=200".format(hash=hexdigest)
try:
@ -155,7 +155,7 @@ def has_gravatar(email):
return ''
def get_gravatar_url(email):
return "https://secure.gravatar.com/avatar/{hash}?d=mm&s=200".format(hash=md5.md5(email).hexdigest())
return "https://secure.gravatar.com/avatar/{hash}?d=mm&s=200".format(hash=hashlib.md5(email).hexdigest())
def get_gravatar(email):
gravatar_url = has_gravatar(email)
@ -278,8 +278,8 @@ def execute_in_shell(cmd, verbose=0):
err = stderr.read()
if verbose:
if err: print err
if out: print out
if err: print(err)
if out: print(out)
return err, out
@ -421,10 +421,10 @@ def watch(path, handler=None, debug=True):
class Handler(FileSystemEventHandler):
def on_any_event(self, event):
if debug:
print "File {0}: {1}".format(event.event_type, event.src_path)
print("File {0}: {1}".format(event.event_type, event.src_path))
if not handler:
print "No handler specified"
print("No handler specified")
return
handler(event.src_path, event.event_type)

View file

@ -8,7 +8,7 @@ frappe.utils.autodoc
Inspect elements of a given module and return its objects
"""
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import inspect, importlib, re, frappe
from frappe.model.document import get_controller
@ -49,7 +49,7 @@ def automodule(name):
installed = None
def get_version(name):
print name
print(name)
global installed
if not installed:

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import redis
from rq import Connection, Queue, Worker
from frappe.utils import cstr
@ -135,7 +135,7 @@ def get_jobs(site=None, queue=None, key='method'):
jobs_per_site[site].append(job.kwargs[key])
else:
print 'No site found in job', job.__dict__
print('No site found in job', job.__dict__)
return jobs_per_site
@ -181,5 +181,5 @@ def enqueue_test_job():
def test_job(s):
import time
print 'sleeping...'
print('sleeping...')
time.sleep(s)

View file

@ -3,7 +3,7 @@
"""This module handles the On Demand Backup utility"""
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
#Imports
from frappe import _
@ -103,7 +103,7 @@ class BackupGenerator:
cmd_string = """tar -cf %s %s""" % (backup_path, files_path)
err, out = frappe.utils.execute_in_shell(cmd_string)
print 'Backed up files', os.path.abspath(backup_path)
print('Backed up files', os.path.abspath(backup_path))
def take_dump(self):
import frappe.utils
@ -198,13 +198,13 @@ def is_file_old(db_file_name, older_than=24):
file_datetime = datetime.fromtimestamp\
(os.stat(db_file_name).st_ctime)
if datetime.today() - file_datetime >= timedelta(hours = older_than):
if verbose: print "File is old"
if verbose: print("File is old")
return True
else:
if verbose: print "File is recent"
if verbose: print("File is recent")
return False
else:
if verbose: print "File does not exist"
if verbose: print("File does not exist")
return True
def get_backup_path():

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import click
import frappe
import os
@ -66,11 +66,11 @@ def get_app_commands(app):
@click.command('get-frappe-commands')
def get_frappe_commands():
print json.dumps(get_app_commands('frappe').keys())
print(json.dumps(get_app_commands('frappe').keys()))
@click.command('get-frappe-help')
def get_frappe_help():
print click.Context(get_app_group('frappe')).get_help()
print(click.Context(get_app_group('frappe')).get_help())
def get_apps():
return frappe.get_all_apps(with_internal_apps=False, sites_path='.')

View file

@ -1,14 +1,14 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, os, re
from frappe.utils import touch_file, encode, cstr
def make_boilerplate(dest, app_name):
if not os.path.exists(dest):
print "Destination directory does not exist"
print("Destination directory does not exist")
return
# app_name should be in snake_case
@ -38,10 +38,10 @@ def make_boilerplate(dest, app_name):
hook_val = defaults[hook_key]
if hook_key=="app_name" and hook_val.lower().replace(" ", "_") != hook_val:
print "App Name must be all lowercase and without spaces"
print("App Name must be all lowercase and without spaces")
hook_val = ""
elif hook_key=="app_title" and not re.match("^(?![\W])[^\d_\s][\w -]+$", hook_val, re.UNICODE):
print "App Title should start with a letter and it can only consist of letters, numbers, spaces and underscores"
print("App Title should start with a letter and it can only consist of letters, numbers, spaces and underscores")
hook_val = ""
hooks[hook_key] = hook_val
@ -96,7 +96,7 @@ def make_boilerplate(dest, app_name):
with open(os.path.join(dest, hooks.app_name, hooks.app_name, "config", "docs.py"), "w") as f:
f.write(encode(docs_template.format(**hooks)))
print "'{app}' created at {path}".format(app=app_name, path=os.path.join(dest, app_name))
print("'{app}' created at {path}".format(app=app_name, path=os.path.join(dest, app_name)))
manifest_template = """include MANIFEST.in

View file

@ -1,4 +1,4 @@
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe.utils
from collections import defaultdict
from rq import Worker, Connection
@ -97,7 +97,7 @@ def doctor(site=None):
workers_online = check_number_of_workers()
jobs_per_queue, job_count = get_jobs_by_queue(site)
print "-----Checking scheduler status-----"
print("-----Checking scheduler status-----")
if site:
sites = [site]
else:
@ -107,28 +107,28 @@ def doctor(site=None):
frappe.init(s)
frappe.connect()
if is_scheduler_disabled():
print "Scheduler disabled for", s
print("Scheduler disabled for", s)
frappe.destroy()
# TODO improve this
print "Workers online:", workers_online
print "-----{0} Jobs-----".format(site)
print("Workers online:", workers_online)
print("-----{0} Jobs-----".format(site))
for queue in get_queue_list():
if jobs_per_queue[queue]:
print "Queue:", queue
print "Number of Jobs: ", job_count[queue]
print "Methods:"
print("Queue:", queue)
print("Number of Jobs: ", job_count[queue])
print("Methods:")
for method, count in jobs_per_queue[queue].iteritems():
print "{0} : {1}".format(method, count)
print "------------"
print("{0} : {1}".format(method, count))
print("------------")
return True
def pending_jobs(site=None):
print "-----Pending Jobs-----"
print("-----Pending Jobs-----")
pending_jobs = get_pending_jobs(site)
for queue in get_queue_list():
if(pending_jobs[queue]):
print "-----Queue :{0}-----".format(queue)
print "\n".join(pending_jobs[queue])
print("-----Queue :{0}-----".format(queue))
print("\n".join(pending_jobs[queue]))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, os
from frappe.core.page.data_import_tool.data_import_tool import import_doc, export_json
@ -60,7 +60,7 @@ def export_fixtures():
filters = fixture.get("filters")
or_filters = fixture.get("or_filters")
fixture = fixture.get("doctype") or fixture.get("dt")
print "Exporting {0} app {1} filters {2}".format(fixture, app, (filters if filters else or_filters))
print("Exporting {0} app {1} filters {2}".format(fixture, app, (filters if filters else or_filters)))
if not os.path.exists(frappe.get_app_path(app, "fixtures")):
os.mkdir(frappe.get_app_path(app, "fixtures"))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import hashlib
@ -16,7 +16,7 @@ import jinja2.exceptions
def sync():
# make table
print 'Syncing help database...'
print('Syncing help database...')
help_db = HelpDatabase()
help_db.make_database()
help_db.connect()
@ -131,7 +131,7 @@ class HelpDatabase(object):
self.db.sql('''insert into help(path, content, title, intro, full_path)
values (%s, %s, %s, %s, %s)''', (relpath, content, title, intro, fpath))
except jinja2.exceptions.TemplateSyntaxError:
print "Invalid Jinja Template for {0}. Skipping".format(fpath)
print("Invalid Jinja Template for {0}. Skipping".format(fpath))
doc_contents += "</ol>"
self.db.sql('''insert into help(path, content, title, intro, full_path) values (%s, %s, %s, %s, %s)''',

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import os
def resize_images(path, maxdim=700):
@ -16,4 +16,4 @@ def resize_images(path, maxdim=700):
im.thumbnail(size, Image.ANTIALIAS)
im.save(os.path.join(basepath, fname))
print "resized {0}".format(os.path.join(basepath, fname))
print("resized {0}".format(os.path.join(basepath, fname)))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import getpass
@ -78,7 +78,7 @@ def get_admin_password():
admin_password = getpass.getpass("Set Administrator password: ")
admin_password2 = getpass.getpass("Re-enter Administrator password: ")
if not admin_password == admin_password2:
print "\nPasswords do not match"
print("\nPasswords do not match")
return ask_admin_password()
return admin_password

View file

@ -8,7 +8,7 @@ Events:
weekly
"""
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
import json
@ -48,7 +48,7 @@ def enqueue_events_for_all_sites():
enqueue_events_for_site(site=site, queued_jobs=jobs_per_site[site])
except:
# it should try to enqueue other sites
print frappe.get_traceback()
print(frappe.get_traceback())
def enqueue_events_for_site(site, queued_jobs):
try:

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
@ -47,7 +47,7 @@ def start_test_server(verbose):
while not pipe.stderr.readline():
time.sleep(0.5)
if verbose:
print "Test server started"
print("Test server started")
def get(url):
_driver.get(url)

View file

@ -5,7 +5,7 @@ Call from command line:
bench setup-docs app path
"""
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import os, json, frappe, shutil, re
from frappe.website.context import get_context
@ -65,7 +65,7 @@ class setup_docs(object):
self.app_title = self.hooks.get("app_title")[0]
self.app_path = frappe.get_app_path(self.app)
print "Deleting current..."
print("Deleting current...")
shutil.rmtree(self.path, ignore_errors = True)
os.makedirs(self.path)
@ -208,7 +208,7 @@ class setup_docs(object):
self.make_folder(basepath)
if not os.path.exists(module_doc_path):
print "Writing " + module_doc_path
print("Writing " + module_doc_path)
with open(module_doc_path, "w") as f:
context = {"name": self.app + "." + module_name}
context.update(self.app_context)
@ -226,7 +226,7 @@ class setup_docs(object):
os.makedirs(path)
index_txt_path = os.path.join(path, "index.txt")
print "Writing " + index_txt_path
print("Writing " + index_txt_path)
with open(index_txt_path, "w") as f:
f.write("")
@ -239,7 +239,7 @@ class setup_docs(object):
"title": name
}
context.update(self.app_context)
print "Writing " + index_html_path
print("Writing " + index_html_path)
with open(index_html_path, "w") as f:
f.write(frappe.render_template(template, context))
@ -255,7 +255,7 @@ class setup_docs(object):
index_parts = filter(None, f.read().splitlines())
if not set(pages).issubset(set(index_parts)):
print "Updating " + index_txt_path
print("Updating " + index_txt_path)
with open(index_txt_path, "w") as f:
f.write("\n".join(pages))
@ -268,7 +268,7 @@ class setup_docs(object):
with open(model_json_path, "r") as j:
doctype_real_name = json.loads(j.read()).get("name")
print "Writing " + model_path
print("Writing " + model_path)
with open(model_path, "w") as f:
context = {"doctype": doctype_real_name}
@ -295,7 +295,7 @@ class setup_docs(object):
cnt = 0
for path, context in pages.iteritems():
print "Writing {0}".format(path)
print("Writing {0}".format(path))
# set this for get_context / website libs
frappe.local.path = path
@ -371,13 +371,13 @@ class setup_docs(object):
cnt += 1
print "Wrote {0} files".format(cnt)
print("Wrote {0} files".format(cnt))
def copy_assets(self):
"""Copy jquery, bootstrap and other assets to files"""
print "Copying assets..."
print("Copying assets...")
assets_path = os.path.join(self.target, "assets")
# copy assets from docs

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe, re
import requests, requests.exceptions
from frappe.utils import strip_html
@ -136,14 +136,14 @@ def check_broken_links():
res = frappe._dict({"status_code": "Connection Error"})
if res.status_code!=200:
print "[{0}] {1}: {2}".format(res.status_code, p.name, link)
print("[{0}] {1}: {2}".format(res.status_code, p.name, link))
cnt += 1
else:
link = link[1:] # remove leading /
link = link.split("#")[0]
if not resolve_route(link):
print p.name + ":" + link
print(p.name + ":" + link)
cnt += 1
print "{0} links broken".format(cnt)
print("{0} links broken".format(cnt))

View file

@ -1,7 +1,7 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# MIT License. See license.txt
from __future__ import unicode_literals
from __future__ import unicode_literals, print_function
import frappe
no_cache = 1
@ -9,5 +9,5 @@ no_sitemap = 1
def get_context(context):
if frappe.flags.in_migrate: return
print frappe.get_traceback().encode("utf-8")
print(frappe.get_traceback().encode("utf-8"))
return {"error": frappe.get_traceback().replace("<", "&lt;").replace(">", "&gt;") }