diff --git a/frappe/commands/site.py b/frappe/commands/site.py index aa35c113b2..35f54203d1 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals, absolute_import, print_function import click import hashlib, os, sys import frappe +from frappe import _ from _mysql_exceptions import ProgrammingError from frappe.commands import pass_context, get_site from frappe.commands.scheduler import _is_scheduler_enabled @@ -45,7 +46,7 @@ def _new_site(db_name, site, mariadb_root_username=None, mariadb_root_password=N try: # enable scheduler post install? enable_scheduler = _is_scheduler_enabled() - except: + except Exception: enable_scheduler = False make_site_dirs() @@ -374,7 +375,6 @@ def _drop_site(site, root_login='root', root_password=None, archived_sites_path= def move(dest_dir, site): - import os if not os.path.isdir(dest_dir): raise Exception, "destination is not a directory or does not exist" @@ -448,7 +448,7 @@ def _set_limits(context, site, limits): for limit, value in limits: if limit not in ('emails', 'space', 'users', 'email_group', 'expiry', 'support_email', 'support_chat', 'upgrade_url'): - frappe.throw('Invalid limit {0}'.format(limit)) + frappe.throw(_('Invalid limit {0}').format(limit)) if limit=='expiry' and value: try: diff --git a/frappe/core/doctype/file/file_list.js b/frappe/core/doctype/file/file_list.js index c4ea0e20b6..c2ae9af747 100644 --- a/frappe/core/doctype/file/file_list.js +++ b/frappe/core/doctype/file/file_list.js @@ -62,7 +62,7 @@ frappe.listview_settings['File'] = { doclist.page.add_menu_item(__("New Folder"), function() { var d = frappe.prompt(__("Name"), function(values) { if((values.value.indexOf("/") > -1)){ - frappe.throw("Folder name should not include / !!!"); + frappe.throw(__("Folder name should not include '/' (slash)")); return; } var data = { @@ -98,7 +98,7 @@ frappe.listview_settings['File'] = { if(!r.exc) { //doclist.refresh(); } else { - frappe.msgprint(__("Error in uploading files." + r.exc)); + frappe.msgprint(__("Error in uploading files" + r.exc)); } } }); @@ -132,7 +132,7 @@ frappe.listview_settings['File'] = { doclist.list_renderer.settings.add_menu_item_paste(doclist); } else{ - frappe.throw("Please select file to copy"); + frappe.throw(__("Please select file to copy")); } }) doclist.copy = true; @@ -153,8 +153,8 @@ frappe.listview_settings['File'] = { doclist.selected_files = []; $(paste_menu).remove(); } - }) - }) + }); + }); }, before_run: function(doclist) { var name_filter = doclist.filter_list.get_filter("file_name"); @@ -235,5 +235,5 @@ frappe.listview_settings['File'] = { .appendTo(doclist.breadcrumb); } }); - } -} + }; +}; diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py index 94618948e3..a2e05029cb 100644 --- a/frappe/core/doctype/user/user.py +++ b/frappe/core/doctype/user/user.py @@ -87,7 +87,7 @@ class User(Document): def check_demo(self): if frappe.session.user == 'demo@erpnext.com': - frappe.throw('Cannot change user details in demo. Please signup for a new account at https://erpnext.com', title='Not Allowed') + frappe.throw(_('Cannot change user details in demo. Please signup for a new account at https://erpnext.com'), title=_('Not Allowed')) def set_full_name(self): self.full_name = " ".join(filter(None, [self.first_name, self.last_name])) diff --git a/frappe/desk/doctype/bulk_update/bulk_update.py b/frappe/desk/doctype/bulk_update/bulk_update.py index e5c0be1d55..ae6c73d8e0 100644 --- a/frappe/desk/doctype/bulk_update/bulk_update.py +++ b/frappe/desk/doctype/bulk_update/bulk_update.py @@ -20,7 +20,7 @@ def update(doctype, field, value, condition='', limit=500): condition = ' where ' + condition if ';' in condition: - frappe.throw('; not allowed in condition') + frappe.throw(_('; not allowed in condition')) items = frappe.db.sql_list('''select name from `tab{0}`{1} limit 0, {2}'''.format(doctype, condition, limit), debug=1) diff --git a/frappe/desk/doctype/desktop_icon/desktop_icon.py b/frappe/desk/doctype/desktop_icon/desktop_icon.py index 7d8cfe9d7a..e53266a38f 100644 --- a/frappe/desk/doctype/desktop_icon/desktop_icon.py +++ b/frappe/desk/doctype/desktop_icon/desktop_icon.py @@ -277,7 +277,7 @@ def make_user_copy(module_name, user): standard_name = frappe.db.get_value('Desktop Icon', {'module_name': module_name, 'standard': 1}) if not standard_name: - frappe.throw('{0} not found'.format(module_name), frappe.DoesNotExistError) + frappe.throw(_('{0} not found').format(module_name), frappe.DoesNotExistError) original = frappe.get_doc('Desktop Icon', standard_name) diff --git a/frappe/desk/page/applications/applications.py b/frappe/desk/page/applications/applications.py index 9fa1b30f95..bf3f70435e 100644 --- a/frappe/desk/page/applications/applications.py +++ b/frappe/desk/page/applications/applications.py @@ -68,7 +68,7 @@ def install_app(name): reload(site) else: # will only come via direct API - frappe.throw("Listing app not allowed") + frappe.throw(_("Listing app not allowed")) app_hooks = frappe.get_hooks(app_name=name) if app_hooks.get('hide_in_installer'): diff --git a/frappe/desk/search.py b/frappe/desk/search.py index 13fc67349b..d9f881e3db 100644 --- a/frappe/desk/search.py +++ b/frappe/desk/search.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals import frappe, json from frappe.utils import cstr, unique +from frappe import _ # this is called by the Link Field @frappe.whitelist() @@ -18,7 +19,6 @@ def search_link(doctype, txt, query=None, filters=None, page_length=20, searchfi def search_widget(doctype, txt, query=None, searchfield=None, start=0, page_length=10, filters=None, filter_fields=None, as_dict=False): if isinstance(filters, basestring): - import json filters = json.loads(filters) meta = frappe.get_meta(doctype) @@ -38,7 +38,7 @@ def search_widget(doctype, txt, query=None, searchfield=None, start=0, searchfield, start, page_length, filters) else: if query: - frappe.throw("This query style is discontinued") + frappe.throw(_("This query style is discontinued")) # custom query # frappe.response["values"] = frappe.db.sql(scrub_custom_query(query, searchfield, txt)) else: diff --git a/frappe/email/doctype/email_alert/email_alert.py b/frappe/email/doctype/email_alert/email_alert.py index f12cb26046..6e55f541b5 100755 --- a/frappe/email/doctype/email_alert/email_alert.py +++ b/frappe/email/doctype/email_alert/email_alert.py @@ -57,7 +57,7 @@ def get_context(context): if self.condition: try: frappe.safe_eval(self.condition, None, get_context(temp_doc)) - except: + except Exception: frappe.throw(_("The Condition '{0}' is invalid").format(self.condition)) def validate_forbidden_types(self): @@ -239,7 +239,7 @@ def evaluate_alert(doc, alert, event): frappe.throw(_("Error while evaluating Email Alert {0}. Please fix your template.").format(alert)) except Exception, e: frappe.log_error(message=frappe.get_traceback(), title=e) - frappe.throw("Error in Email Alert") + frappe.throw(_("Error in Email Alert")) def get_context(doc): return {"doc": doc, "nowdate": nowdate, "frappe.utils": frappe.utils} diff --git a/frappe/email/doctype/email_domain/email_domain.py b/frappe/email/doctype/email_domain/email_domain.py index cb8aeaf2ab..395a15d8e3 100644 --- a/frappe/email/doctype/email_domain/email_domain.py +++ b/frappe/email/doctype/email_domain/email_domain.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import frappe +from frappe import _ from frappe.model.document import Document from frappe.utils import validate_email_add ,cint import imaplib,poplib,smtplib @@ -37,7 +38,7 @@ class EmailDomain(Document): test = poplib.POP3(self.email_server) except Exception: - frappe.throw("Incoming email account not correct") + frappe.throw(_("Incoming email account not correct")) return None finally: try: @@ -52,8 +53,8 @@ class EmailDomain(Document): self.port = 587 sess = smtplib.SMTP((self.smtp_server or "").encode('utf-8'), cint(self.smtp_port) or None) sess.quit() - except Exception as e: - frappe.throw("Outgoing email account not correct") + except Exception: + frappe.throw(_("Outgoing email account not correct")) return None return diff --git a/frappe/integrations/doctype/ldap_settings/ldap_settings.py b/frappe/integrations/doctype/ldap_settings/ldap_settings.py index c2fc52198f..b2f305c1a2 100644 --- a/frappe/integrations/doctype/ldap_settings/ldap_settings.py +++ b/frappe/integrations/doctype/ldap_settings/ldap_settings.py @@ -21,17 +21,15 @@ class LDAPSettings(Document): except ImportError: msg = """
- Seems ldap is not installed on system.
- Guidelines to install ldap dependancies and python package, - Click here, - + {{_("Seems ldap is not installed on system.
Guidelines to install ldap dependancies and python package")}}, + {{_("Click here")}},
""" - frappe.throw(msg, title="LDAP Not Installed") + frappe.throw(msg, title=_("LDAP Not Installed")) except ldap.LDAPError: conn.unbind_s() - frappe.throw("Incorrect UserId or Password") + frappe.throw(_("Incorrect UserId or Password")) def get_ldap_settings(): try: @@ -67,12 +65,12 @@ def authenticate_ldap_user(user=None, password=None): except: msg = """
- {{_("Seems ldap is not installed on system")}}.
- Click here, + {{_("Seems ldap is not installed on system.")}}
+ {{_("Click here")}}, {{_("Guidelines to install ldap dependancies and python")}}
""" - frappe.throw(msg, title="LDAP Not Installed") + frappe.throw(msg, title=_("LDAP Not Installed")) conn = ldap.initialize(settings.ldap_server_url) @@ -120,4 +118,4 @@ def create_user(params): user = frappe.get_doc(params).insert(ignore_permissions=True) frappe.db.commit() - return user \ No newline at end of file + return user diff --git a/frappe/integrations/doctype/paypal_settings/paypal_settings.py b/frappe/integrations/doctype/paypal_settings/paypal_settings.py index 28311dcc8f..b9d143b95f 100644 --- a/frappe/integrations/doctype/paypal_settings/paypal_settings.py +++ b/frappe/integrations/doctype/paypal_settings/paypal_settings.py @@ -156,7 +156,7 @@ class PayPalSettings(Document): response = make_post_request(url, data=params.encode("utf-8")) if response.get("ACK")[0] != "Success": - frappe.throw("Looks like something is wrong with this site's Paypal configuration.") + frappe.throw(_("Looks like something is wrong with this site's Paypal configuration.")) return response diff --git a/frappe/utils/background_jobs.py b/frappe/utils/background_jobs.py index f7c29ab75d..694195a438 100755 --- a/frappe/utils/background_jobs.py +++ b/frappe/utils/background_jobs.py @@ -6,6 +6,7 @@ from collections import defaultdict import frappe import MySQLdb import os, socket, time +from frappe import _ default_timeout = 300 queue_timeout = { @@ -165,7 +166,7 @@ def validate_queue(queue, default_queue_list=None): default_queue_list = queue_timeout.keys() if queue not in default_queue_list: - frappe.throw("Queue should be one of {0}".format(', '.join(default_queue_list))) + frappe.throw(_("Queue should be one of {0}").format(', '.join(default_queue_list))) def get_redis_conn(): if not hasattr(frappe.local, 'conf'): diff --git a/frappe/utils/data.py b/frappe/utils/data.py index a94254f551..d468dd6c8e 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -701,13 +701,13 @@ def get_filter(doctype, f): f = make_filter_tuple(doctype, key, value) if not isinstance(f, (list, tuple)): - frappe.throw("Filter must be a tuple or list (in a list)") + frappe.throw(frappe._("Filter must be a tuple or list (in a list)")) if len(f) == 3: f = (doctype, f[0], f[1], f[2]) elif len(f) != 4: - frappe.throw("Filter must have 4 values (doctype, fieldname, operator, value): {0}".format(str(f))) + frappe.throw(frappe._("Filter must have 4 values (doctype, fieldname, operator, value): {0}").format(str(f))) f = frappe._dict(doctype=f[0], fieldname=f[1], operator=f[2], value=f[3]) @@ -717,7 +717,7 @@ def get_filter(doctype, f): valid_operators = ("=", "!=", ">", "<", ">=", "<=", "like", "not like", "in", "not in", "between") if f.operator.lower() not in valid_operators: - frappe.throw("Operator must be one of {0}".format(", ".join(valid_operators))) + frappe.throw(frappe._("Operator must be one of {0}").format(", ".join(valid_operators))) if f.doctype and (f.fieldname not in default_fields + optional_fields): diff --git a/frappe/www/feedback.py b/frappe/www/feedback.py index 439e1cedac..7eb4c9bb4d 100644 --- a/frappe/www/feedback.py +++ b/frappe/www/feedback.py @@ -1,4 +1,5 @@ import frappe +from frappe import _ from frappe.core.doctype.feedback_request.feedback_request import is_valid_feedback_request no_cache = True @@ -35,13 +36,13 @@ def accept(key, sender, reference_doctype, reference_name, feedback, rating, ful if not reference_doctype and not reference_name or \ not frappe.db.get_value(reference_doctype, reference_name): - frappe.throw("Invalid reference doctype and reference name") + frappe.throw(_("Invalid Reference")) - if not rating or not feedback: - frappe.throw("Please give both Rating and Detailed Feedback") + if not rating: + frappe.throw(_("Please add a rating")) if not is_valid_feedback_request(key): - frappe.throw("Link is expired") + frappe.throw(_("Expired link")) try: feedback_request = frappe.db.get_value("Feedback Request", {"key": key}) @@ -49,7 +50,7 @@ def accept(key, sender, reference_doctype, reference_name, feedback, rating, ful communication = frappe.get_doc({ "rating": rating, "status": "Closed", - "content": feedback, + "content": feedback or "", "doctype": "Communication", "sender": sender or "Guest", "sent_or_received": "Received", @@ -67,5 +68,6 @@ def accept(key, sender, reference_doctype, reference_name, feedback, rating, ful doc.reference_communication = communication.name doc.save(ignore_permissions=True) return True - except Exception as e: - frappe.throw("Can not submit feedback, Please try again later") + except Exception: + frappe.log_error() + frappe.throw(_("Cannot submit feedback, please try again later"))