[refactor modules]
diff --git a/erpnext/hr/doctype/job_applicant/get_job_applications.py b/erpnext/hr/doctype/job_applicant/get_job_applications.py
index e4a8d70..f34f481 100644
--- a/erpnext/hr/doctype/job_applicant/get_job_applications.py
+++ b/erpnext/hr/doctype/job_applicant/get_job_applications.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
from frappe.utils import cstr, cint
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email.receive import POP3Mailbox
from frappe.core.doctype.communication.communication import _make
class JobsMailbox(POP3Mailbox):
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index 7c905a6..638500b 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -185,7 +185,7 @@
def send_mail_funct(self):
- from frappe.utils.email_lib import sendmail
+ from frappe.email import sendmail
receiver = frappe.db.get_value("Employee", self.employee, "company_email")
if receiver:
diff --git a/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py b/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
index 981ffd0..36fa277 100644
--- a/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
+++ b/erpnext/patches/repair_tools/fix_naming_series_records_lost_by_reload.py
@@ -7,7 +7,7 @@
import re
from frappe.model.naming import make_autoname
from frappe.utils import cint
-from frappe.utils.email_lib import sendmail_to_system_managers
+from frappe.email import sendmail_to_system_managers
doctype_series_map = {
'Attendance': 'ATT-',
diff --git a/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py b/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
index 9b07000..5bca5e6 100644
--- a/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
+++ b/erpnext/patches/v4_0/create_custom_fields_for_india_specific_fields.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.core.doctype.custom_field.custom_field import create_custom_field_if_values_exist
+from frappe.custom.doctype.custom_field.custom_field import create_custom_field_if_values_exist
def execute():
frappe.reload_doc("stock", "doctype", "purchase_receipt")
diff --git a/erpnext/patches/v4_0/import_country_codes.py b/erpnext/patches/v4_0/import_country_codes.py
index 4d1177e..e2e9f9d 100644
--- a/erpnext/patches/v4_0/import_country_codes.py
+++ b/erpnext/patches/v4_0/import_country_codes.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.country_info import get_all
+from frappe.geo.country_info import get_all
from erpnext.setup.install import import_country_and_currency
def execute():
diff --git a/erpnext/patches/v4_0/set_naming_series_property_setter.py b/erpnext/patches/v4_0/set_naming_series_property_setter.py
index 7161492..ffbfc24 100644
--- a/erpnext/patches/v4_0/set_naming_series_property_setter.py
+++ b/erpnext/patches/v4_0/set_naming_series_property_setter.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.core.doctype.property_setter.property_setter import make_property_setter
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
doctype_series_map = {
'Attendance': 'ATT-',
diff --git a/erpnext/patches/v4_2/add_currency_turkish_lira.py b/erpnext/patches/v4_2/add_currency_turkish_lira.py
index f547661..d768d58 100644
--- a/erpnext/patches/v4_2/add_currency_turkish_lira.py
+++ b/erpnext/patches/v4_2/add_currency_turkish_lira.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.country_info import get_country_info
+from frappe.geo.country_info import get_country_info
from erpnext.setup.install import add_country_and_currency
def execute():
diff --git a/erpnext/selling/doctype/lead/get_leads.py b/erpnext/selling/doctype/lead/get_leads.py
index b765db6..a79ca60 100644
--- a/erpnext/selling/doctype/lead/get_leads.py
+++ b/erpnext/selling/doctype/lead/get_leads.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
from frappe.utils import cstr, cint
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email.receive import POP3Mailbox
from frappe.core.doctype.communication.communication import _make
def add_sales_communication(subject, content, sender, real_name, mail=None,
diff --git a/erpnext/setup/doctype/backup_manager/backup_manager.py b/erpnext/setup/doctype/backup_manager/backup_manager.py
index ff4e115..99cae9a 100644
--- a/erpnext/setup/doctype/backup_manager/backup_manager.py
+++ b/erpnext/setup/doctype/backup_manager/backup_manager.py
@@ -57,7 +57,7 @@
send_email(False, "Google Drive", error_message)
def send_email(success, service_name, error_status=None):
- from frappe.utils.email_lib import sendmail
+ from frappe.email import sendmail
if success:
subject = "Backup Upload Successful"
message ="""<h3>Backup Uploaded Successfully</h3><p>Hi there, this is just to inform you
diff --git a/erpnext/setup/doctype/country/README.md b/erpnext/setup/doctype/country/README.md
deleted file mode 100644
index 0e3f46c..0000000
--- a/erpnext/setup/doctype/country/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Country Master.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/__init__.py b/erpnext/setup/doctype/country/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/setup/doctype/country/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/country/country.json b/erpnext/setup/doctype/country/country.json
deleted file mode 100644
index 1798ca1..0000000
--- a/erpnext/setup/doctype/country/country.json
+++ /dev/null
@@ -1,107 +0,0 @@
-{
- "allow_import": 1,
- "autoname": "field:country_name",
- "creation": "2013-01-19 10:23:30",
- "docstatus": 0,
- "doctype": "DocType",
- "document_type": "Master",
- "fields": [
- {
- "fieldname": "country_name",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "Country Name",
- "oldfieldname": "country_name",
- "oldfieldtype": "Data",
- "permlevel": 0,
- "reqd": 1
- },
- {
- "fieldname": "date_format",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "Date Format",
- "permlevel": 0
- },
- {
- "fieldname": "time_zones",
- "fieldtype": "Text",
- "in_list_view": 1,
- "label": "Time Zones",
- "permlevel": 0
- },
- {
- "fieldname": "code",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "Code",
- "permlevel": 0
- }
- ],
- "icon": "icon-globe",
- "idx": 1,
- "in_create": 0,
- "modified": "2014-05-27 03:49:08.984710",
- "modified_by": "Administrator",
- "module": "Setup",
- "name": "Country",
- "owner": "Administrator",
- "permissions": [
- {
- "amend": 0,
- "create": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Sales Master Manager",
- "submit": 0,
- "write": 1
- },
- {
- "create": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Purchase Master Manager",
- "submit": 0,
- "write": 1
- },
- {
- "apply_user_permissions": 1,
- "create": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "HR User",
- "submit": 0,
- "write": 1
- },
- {
- "create": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "HR Manager",
- "submit": 0,
- "write": 1
- },
- {
- "apply_user_permissions": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "All"
- }
- ],
- "read_only": 0
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/country.py b/erpnext/setup/doctype/country/country.py
deleted file mode 100644
index 5e16f51..0000000
--- a/erpnext/setup/doctype/country/country.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class Country(Document):
- pass
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/test_country.py b/erpnext/setup/doctype/country/test_country.py
deleted file mode 100644
index b261066..0000000
--- a/erpnext/setup/doctype/country/test_country.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-
-import frappe
-test_records = frappe.get_test_records('Country')
\ No newline at end of file
diff --git a/erpnext/setup/doctype/country/test_records.json b/erpnext/setup/doctype/country/test_records.json
deleted file mode 100644
index 5a7c8a5..0000000
--- a/erpnext/setup/doctype/country/test_records.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "country_name": "_Test Country",
- "doctype": "Country"
- }
-]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/README.md b/erpnext/setup/doctype/currency/README.md
deleted file mode 100644
index 3e1558e..0000000
--- a/erpnext/setup/doctype/currency/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Currency Master with details about abbreviation, symbol etc.
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/__init__.py b/erpnext/setup/doctype/currency/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/setup/doctype/currency/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/setup/doctype/currency/currency.js b/erpnext/setup/doctype/currency/currency.js
deleted file mode 100644
index 79343e9..0000000
--- a/erpnext/setup/doctype/currency/currency.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-cur_frm.cscript.refresh = function(doc) {
- cur_frm.set_intro("");
- if(!cur_frm.doc.enabled) {
- cur_frm.set_intro(__("This Currency is disabled. Enable to use in transactions"))
- }
-}
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/currency.json b/erpnext/setup/doctype/currency/currency.json
deleted file mode 100644
index ee7be19..0000000
--- a/erpnext/setup/doctype/currency/currency.json
+++ /dev/null
@@ -1,117 +0,0 @@
-{
- "autoname": "field:currency_name",
- "creation": "2013-01-28 10:06:02",
- "description": "**Currency** Master",
- "docstatus": 0,
- "doctype": "DocType",
- "fields": [
- {
- "fieldname": "currency_name",
- "fieldtype": "Data",
- "label": "Currency Name",
- "oldfieldname": "currency_name",
- "oldfieldtype": "Data",
- "permlevel": 0,
- "reqd": 1
- },
- {
- "fieldname": "enabled",
- "fieldtype": "Check",
- "in_list_view": 1,
- "label": "Enabled",
- "permlevel": 0
- },
- {
- "description": "Sub-currency. For e.g. \"Cent\"",
- "fieldname": "fraction",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "Fraction",
- "permlevel": 0
- },
- {
- "description": "1 Currency = [?] Fraction\nFor e.g. 1 USD = 100 Cent",
- "fieldname": "fraction_units",
- "fieldtype": "Int",
- "in_list_view": 1,
- "label": "Fraction Units",
- "permlevel": 0
- },
- {
- "description": "A symbol for this currency. For e.g. $",
- "fieldname": "symbol",
- "fieldtype": "Data",
- "in_list_view": 1,
- "label": "Symbol",
- "permlevel": 0
- },
- {
- "description": "How should this currency be formatted? If not set, will use system defaults",
- "fieldname": "number_format",
- "fieldtype": "Select",
- "in_list_view": 1,
- "label": "Number Format",
- "options": "\n#,###.##\n#.###,##\n# ###.##\n# ###,##\n#'###.##\n#, ###.##\n#,##,###.##\n#,###.###\n#.###\n#,###",
- "permlevel": 0
- }
- ],
- "icon": "icon-bitcoin",
- "idx": 1,
- "in_create": 0,
- "modified": "2014-06-18 03:49:09.038451",
- "modified_by": "Administrator",
- "module": "Setup",
- "name": "Currency",
- "owner": "Administrator",
- "permissions": [
- {
- "create": 1,
- "delete": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Accounts Manager",
- "submit": 0,
- "write": 1
- },
- {
- "amend": 0,
- "create": 1,
- "delete": 1,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Sales Master Manager",
- "submit": 0,
- "write": 1
- },
- {
- "amend": 0,
- "create": 1,
- "delete": 0,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "Purchase Master Manager",
- "submit": 0,
- "write": 1
- },
- {
- "apply_user_permissions": 1,
- "delete": 0,
- "email": 1,
- "permlevel": 0,
- "print": 1,
- "read": 1,
- "report": 1,
- "role": "All"
- }
- ],
- "read_only": 0
-}
diff --git a/erpnext/setup/doctype/currency/currency.py b/erpnext/setup/doctype/currency/currency.py
deleted file mode 100644
index abfbe19..0000000
--- a/erpnext/setup/doctype/currency/currency.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import throw, _
-
-from frappe.model.document import Document
-
-class Currency(Document):
- def validate(self):
- frappe.clear_cache()
-
-def validate_conversion_rate(currency, conversion_rate, conversion_rate_label, company):
- """common validation for currency and price list currency"""
-
- company_currency = frappe.db.get_value("Company", company, "default_currency")
-
- if not conversion_rate:
- throw(_("{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.").format(
- conversion_rate_label, currency, company_currency))
diff --git a/erpnext/setup/doctype/currency/test_currency.py b/erpnext/setup/doctype/currency/test_currency.py
deleted file mode 100644
index f0c6cee..0000000
--- a/erpnext/setup/doctype/currency/test_currency.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# pre loaded
-
-import frappe
-test_records = frappe.get_test_records('Currency')
\ No newline at end of file
diff --git a/erpnext/setup/doctype/currency/test_records.json b/erpnext/setup/doctype/currency/test_records.json
deleted file mode 100644
index 0637a08..0000000
--- a/erpnext/setup/doctype/currency/test_records.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 59a42cb..90ea22f 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -9,7 +9,7 @@
from frappe.utils.dateutils import datetime_in_user_format
from datetime import timedelta
from dateutil.relativedelta import relativedelta
-from frappe.utils.email_lib import sendmail
+from frappe.email import sendmail
from frappe.core.doctype.user.user import STANDARD_USERS
content_sequence = [
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index a8905f1..e67ba444 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -6,7 +6,7 @@
import frappe
import frappe.defaults
from frappe.utils import cint
-from frappe.core.doctype.property_setter.property_setter import make_property_setter
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
keydict = {
# "key in defaults": "key in Global Defaults"
diff --git a/erpnext/setup/doctype/naming_series/naming_series.py b/erpnext/setup/doctype/naming_series/naming_series.py
index cb0d437..9278139 100644
--- a/erpnext/setup/doctype/naming_series/naming_series.py
+++ b/erpnext/setup/doctype/naming_series/naming_series.py
@@ -135,7 +135,7 @@
msgprint(_("Please select prefix first"))
def set_by_naming_series(doctype, fieldname, naming_series, hide_name_field=True):
- from frappe.core.doctype.property_setter.property_setter import make_property_setter
+ from frappe.custom.doctype.property_setter.property_setter import make_property_setter
if naming_series:
make_property_setter(doctype, "naming_series", "hidden", 0, "Check")
make_property_setter(doctype, "naming_series", "reqd", 1, "Check")
diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py
index 0e8e58d..93f4ad5 100644
--- a/erpnext/setup/install.py
+++ b/erpnext/setup/install.py
@@ -13,7 +13,6 @@
def after_install():
frappe.get_doc({'doctype': "Role", "role_name": "Analytics"}).insert()
set_single_defaults()
- import_country_and_currency()
from erpnext.accounts.doctype.chart_of_accounts.import_charts import import_charts
import_charts()
frappe.db.set_default('desktop:home_page', 'setup-wizard')
@@ -22,38 +21,6 @@
add_all_roles_to("Administrator")
frappe.db.commit()
-def import_country_and_currency():
- from frappe.country_info import get_all
- data = get_all()
-
- for name in data:
- country = frappe._dict(data[name])
- add_country_and_currency(name, country)
-
- # enable frequently used currencies
- for currency in ("INR", "USD", "GBP", "EUR", "AED", "AUD", "JPY", "CNY", "CHF"):
- frappe.db.set_value("Currency", currency, "enabled", 1)
-
-def add_country_and_currency(name, country):
- if not frappe.db.exists("Country", name):
- frappe.get_doc({
- "doctype": "Country",
- "country_name": name,
- "code": country.code,
- "date_format": country.date_format or "dd-mm-yyyy",
- "time_zones": "\n".join(country.timezones or [])
- }).insert()
-
- if country.currency and not frappe.db.exists("Currency", country.currency):
- frappe.get_doc({
- "doctype": "Currency",
- "currency_name": country.currency,
- "fraction": country.currency_fraction,
- "symbol": country.currency_symbol,
- "fraction_units": country.currency_fraction_units,
- "number_format": country.number_format
- }).insert()
-
def feature_setup():
"""save global defaults and features setup"""
doc = frappe.get_doc("Features Setup", "Features Setup")
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index d3942e4..2750e21 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -8,7 +8,7 @@
from frappe import _
from frappe.utils.file_manager import save_file
from frappe.translate import set_default_language, get_dict, get_lang_dict, send_translations
-from frappe.country_info import get_country_info
+from frappe.geo.country_info import get_country_info
from frappe.utils.nestedset import get_root_of
from default_website import website_maker
import install_fixtures
diff --git a/erpnext/stock/utils.py b/erpnext/stock/utils.py
index 7264f36..3117290 100644
--- a/erpnext/stock/utils.py
+++ b/erpnext/stock/utils.py
@@ -6,7 +6,7 @@
import json
from frappe.utils import flt, cstr, nowdate, add_days, cint
from frappe.defaults import get_global_default
-from frappe.utils.email_lib import sendmail
+from frappe.email import sendmail
from erpnext.accounts.utils import get_fiscal_year, FiscalYearError
class InvalidWarehouseCompany(frappe.ValidationError): pass
diff --git a/erpnext/support/doctype/newsletter/newsletter.py b/erpnext/support/doctype/newsletter/newsletter.py
index 15bf0da..1a9713f 100644
--- a/erpnext/support/doctype/newsletter/newsletter.py
+++ b/erpnext/support/doctype/newsletter/newsletter.py
@@ -94,7 +94,7 @@
sender = self.send_from or frappe.utils.get_formatted_email(self.owner)
- from frappe.utils.email_lib.bulk import send
+ from frappe.email.bulk import send
if not frappe.flags.in_test:
frappe.db.auto_commit_on_many_writes = True
diff --git a/erpnext/support/doctype/support_email_settings/support_email_settings.py b/erpnext/support/doctype/support_email_settings/support_email_settings.py
index be88891..4b00c75 100644
--- a/erpnext/support/doctype/support_email_settings/support_email_settings.py
+++ b/erpnext/support/doctype/support_email_settings/support_email_settings.py
@@ -8,7 +8,7 @@
from frappe import _
from frappe.utils import cint
from frappe.model.document import Document
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email.receive import POP3Mailbox
import _socket, poplib
class SupportEmailSettings(Document):
diff --git a/erpnext/support/doctype/support_ticket/get_support_mails.py b/erpnext/support/doctype/support_ticket/get_support_mails.py
index 21f7c90..ee80a6c 100644
--- a/erpnext/support/doctype/support_ticket/get_support_mails.py
+++ b/erpnext/support/doctype/support_ticket/get_support_mails.py
@@ -4,8 +4,8 @@
from __future__ import unicode_literals
import frappe
from frappe.utils import cstr, cint, decode_dict, today
-from frappe.utils.email_lib import sendmail
-from frappe.utils.email_lib.receive import POP3Mailbox
+from frappe.email import sendmail
+from frappe.email.receive import POP3Mailbox
from frappe.core.doctype.communication.communication import _make
class SupportMailbox(POP3Mailbox):