feat(crm): Allow leads to be imported without person name
diff --git a/erpnext/crm/doctype/lead/lead.js b/erpnext/crm/doctype/lead/lead.js
index 208b1f5..8c1ab2f 100644
--- a/erpnext/crm/doctype/lead/lead.js
+++ b/erpnext/crm/doctype/lead/lead.js
@@ -5,29 +5,32 @@
 cur_frm.email_field = "email_id";
 
 erpnext.LeadController = frappe.ui.form.Controller.extend({
-	setup: function() {
-		this.frm.fields_dict.customer.get_query = function(doc, cdt, cdn) {
-			return { query: "erpnext.controllers.queries.customer_query" } }
+	setup: function () {
+		this.frm.fields_dict.customer.get_query = function (doc, cdt, cdn) {
+			return { query: "erpnext.controllers.queries.customer_query" }
+		}
+
+		this.frm.toggle_reqd("lead_name", !this.frm.doc.organization_lead);
 	},
 
-	onload: function() {
-
-		if(cur_frm.fields_dict.lead_owner.df.options.match(/^User/)) {
-			cur_frm.fields_dict.lead_owner.get_query = function(doc, cdt, cdn) {
+	onload: function () {
+		if (cur_frm.fields_dict.lead_owner.df.options.match(/^User/)) {
+			cur_frm.fields_dict.lead_owner.get_query = function (doc, cdt, cdn) {
 				return { query: "frappe.core.doctype.user.user.user_query" }
 			}
 		}
 
-		if(cur_frm.fields_dict.contact_by.df.options.match(/^User/)) {
-			cur_frm.fields_dict.contact_by.get_query = function(doc, cdt, cdn) {
-				return { query: "frappe.core.doctype.user.user.user_query" } }
+		if (cur_frm.fields_dict.contact_by.df.options.match(/^User/)) {
+			cur_frm.fields_dict.contact_by.get_query = function (doc, cdt, cdn) {
+				return { query: "frappe.core.doctype.user.user.user_query" }
+			}
 		}
 	},
 
-	refresh: function() {
+	refresh: function () {
 		var doc = this.frm.doc;
 		erpnext.toggle_naming_series();
-		frappe.dynamic_link = {doc: doc, fieldname: 'name', doctype: 'Lead'}
+		frappe.dynamic_link = { doc: doc, fieldname: 'name', doctype: 'Lead' }
 
 		if(!doc.__islocal && doc.__onload && !doc.__onload.is_customer) {
 			this.frm.add_custom_button(__("Customer"), this.create_customer, __('Create'));
@@ -35,49 +38,46 @@
 			this.frm.add_custom_button(__("Quotation"), this.make_quotation, __('Create'));
 		}
 
-		if(!this.frm.doc.__islocal) {
+		if (!this.frm.doc.__islocal) {
 			frappe.contacts.render_address_and_contact(cur_frm);
 		} else {
 			frappe.contacts.clear_address_and_contact(cur_frm);
 		}
 	},
 
-	create_customer: function() {
+	create_customer: function () {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.lead.lead.make_customer",
 			frm: cur_frm
 		})
 	},
 
-	create_opportunity: function() {
+	create_opportunity: function () {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.lead.lead.make_opportunity",
 			frm: cur_frm
 		})
 	},
 
-	make_quotation: function() {
+	make_quotation: function () {
 		frappe.model.open_mapped_doc({
 			method: "erpnext.crm.doctype.lead.lead.make_quotation",
 			frm: cur_frm
 		})
 	},
 
-	organization_lead: function() {
-		if (this.frm.doc.organization_lead == 1) {
-			this.frm.set_df_property('company_name', 'reqd', 1);
-		} else {
-			this.frm.set_df_property('company_name', 'reqd', 0);
-		}
+	organization_lead: function () {
+		this.frm.toggle_reqd("lead_name", !this.frm.doc.organization_lead);
+		this.frm.toggle_reqd("company_name", this.frm.doc.organization_lead);
 	},
 
-	company_name: function() {
+	company_name: function () {
 		if (this.frm.doc.organization_lead == 1) {
 			this.frm.set_value("lead_name", this.frm.doc.company_name);
 		}
 	},
 
-	contact_date: function() {
+	contact_date: function () {
 		if (this.frm.doc.contact_date) {
 			let d = moment(this.frm.doc.contact_date);
 			d.add(1, "hours");
@@ -86,4 +86,4 @@
 	}
 });
 
-$.extend(cur_frm.cscript, new erpnext.LeadController({frm: cur_frm}));
+$.extend(cur_frm.cscript, new erpnext.LeadController({ frm: cur_frm }));
diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json
index f1c2a9b..600e070 100644
--- a/erpnext/crm/doctype/lead/lead.json
+++ b/erpnext/crm/doctype/lead/lead.json
@@ -145,7 +145,7 @@
    "read_only": 0,
    "remember_last_selected_value": 0,
    "report_hide": 0,
-   "reqd": 1,
+   "reqd": 0,
    "search_index": 1,
    "set_only_once": 0,
    "translatable": 0,
@@ -268,7 +268,7 @@
    "ignore_xss_filter": 0,
    "in_filter": 0,
    "in_global_search": 0,
-   "in_list_view": 0,
+   "in_list_view": 1,
    "in_standard_filter": 0,
    "label": "Lead Owner",
    "length": 0,
@@ -1419,17 +1419,18 @@
   }
  ],
  "has_web_view": 0,
+ "hide_heading": 0,
  "hide_toolbar": 0,
  "icon": "fa fa-user",
  "idx": 5,
  "image_field": "image",
+ "image_view": 0,
  "in_create": 0,
  "is_submittable": 0,
  "issingle": 0,
  "istable": 0,
  "max_attachments": 0,
- "menu_index": 0,
- "modified": "2019-04-11 22:12:50.029368",
+ "modified": "2019-05-10 03:22:57.283628",
  "modified_by": "Administrator",
  "module": "CRM",
  "name": "Lead",
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index d42502d..6e98ebb 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -109,7 +109,11 @@
 
 	def set_lead_name(self):
 		if not self.lead_name:
-			frappe.db.set_value("Lead", self.name, "lead_name", self.company_name)
+			# Check for leads being created through data import
+			if not self.company_name:
+				frappe.throw(_("A Lead requires either a person's name or an organization's name"))
+
+			self.lead_name = self.company_name
 
 @frappe.whitelist()
 def make_customer(source_name, target_doc=None):
@@ -225,4 +229,4 @@
 		lead_name = lead.name
 
 	link_communication_to_document(doc, "Lead", lead_name, ignore_communication_links)
-	return lead_name
\ No newline at end of file
+	return lead_name