[refactor] [frappe 5.0]
diff --git a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
index 7bf6fcc..9f2385b 100644
--- a/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
+++ b/erpnext/accounts/doctype/journal_voucher/journal_voucher.py
@@ -18,6 +18,9 @@
 		self.credit_days_global = -1
 		self.is_approving_authority = -1
 
+	def get_feed(self):
+		return self.voucher_type
+
 	def validate(self):
 		if not self.is_opening:
 			self.is_opening='No'
diff --git a/erpnext/accounts/report/general_ledger/general_ledger.py b/erpnext/accounts/report/general_ledger/general_ledger.py
index 362f42e..1e38cd7 100644
--- a/erpnext/accounts/report/general_ledger/general_ledger.py
+++ b/erpnext/accounts/report/general_ledger/general_ledger.py
@@ -78,7 +78,7 @@
 		conditions.append("voucher_no=%(voucher_no)s")
 
 
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("GL Entry")
 	if match_conditions: conditions.append(match_conditions)
 
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index c658cdd..d28e8d7 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -7,7 +7,7 @@
 from frappe.utils import nowdate, cstr, flt, now, getdate, add_months
 from frappe import throw, _
 from frappe.utils import formatdate
-import frappe.widgets.reportview
+import frappe.desk.reportview
 
 class FiscalYearError(frappe.ValidationError): pass
 class BudgetError(frappe.ValidationError): pass
diff --git a/erpnext/buying/doctype/quality_inspection/quality_inspection.py b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
index 3fc130a..da34108 100644
--- a/erpnext/buying/doctype/quality_inspection/quality_inspection.py
+++ b/erpnext/buying/doctype/quality_inspection/quality_inspection.py
@@ -38,7 +38,7 @@
 
 def item_query(doctype, txt, searchfield, start, page_len, filters):
 	if filters.get("from"):
-		from frappe.widgets.reportview import get_match_cond
+		from frappe.desk.reportview import get_match_cond
 		filters.update({
 			"txt": txt,
 			"mcond": get_match_cond(filters["from"]),
diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py
index 240762e..baf8ce5 100644
--- a/erpnext/buying/doctype/supplier/supplier.py
+++ b/erpnext/buying/doctype/supplier/supplier.py
@@ -13,6 +13,8 @@
 from erpnext.utilities.transaction_base import TransactionBase
 
 class Supplier(TransactionBase):
+	def get_feed(self):
+		return self.supplier_name
 
 	def autoname(self):
 		supp_master_name = frappe.defaults.get_global_default('supp_master_name')
diff --git a/erpnext/config/desktop.py b/erpnext/config/desktop.py
index 9f40ef3..34f1599 100644
--- a/erpnext/config/desktop.py
+++ b/erpnext/config/desktop.py
@@ -7,13 +7,6 @@
 			"icon": "icon-money",
 			"type": "module"
 		},
-		"Activity": {
-			"color": "#e67e22",
-			"icon": "icon-play",
-			"label": _("Activity"),
-			"link": "activity",
-			"type": "page"
-		},
 		"Buying": {
 			"color": "#c0392b",
 			"icon": "icon-shopping-cart",
@@ -30,14 +23,6 @@
 			"icon": "icon-cogs",
 			"type": "module"
 		},
-		"Notes": {
-			"color": "#95a5a6",
-			"doctype": "Note",
-			"icon": "icon-file-alt",
-			"label": _("Notes"),
-			"link": "List/Note",
-			"type": "list"
-		},
 		"POS": {
 			"color": "#589494",
 			"icon": "icon-th",
diff --git a/erpnext/config/setup.py b/erpnext/config/setup.py
index 8db9ef2..82fed9d 100644
--- a/erpnext/config/setup.py
+++ b/erpnext/config/setup.py
@@ -1,5 +1,5 @@
 from frappe import _
-from frappe.widgets.moduleview import add_setup_section
+from frappe.desk.moduleview import add_setup_section
 
 def get_data():
 	data = [
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 5f418c4..12d183c 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -18,6 +18,10 @@
 				"other_charges": "templates/print_formats/includes/taxes.html",
 			}
 
+	def get_feed(self):
+		return _("From {0} | {1} {2}").format(self.supplier_name, self.currency,
+			self.grand_total_import)
+
 	def validate(self):
 		super(BuyingController, self).validate()
 		if getattr(self, "supplier", None) and not self.supplier_name:
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index d555532..cbbd82c 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -3,7 +3,7 @@
 
 from __future__ import unicode_literals
 import frappe
-from frappe.widgets.reportview import get_match_cond
+from frappe.desk.reportview import get_match_cond
 from frappe.model.db_query import DatabaseQuery
 
 def get_filters_cond(doctype, filters, conditions):
@@ -276,7 +276,7 @@
 	if searchfield and txt:
 		filter_list.append([doctype, searchfield, "like", "%%%s%%" % txt])
 
-	return frappe.widgets.reportview.execute("Account", filters = filter_list,
+	return frappe.desk.reportview.execute("Account", filters = filter_list,
 		fields = ["name", "parent_account"],
 		limit_start=start, limit_page_length=page_len, as_list=True)
 
diff --git a/erpnext/controllers/recurring_document.py b/erpnext/controllers/recurring_document.py
index bdf8b29..3395d0c 100644
--- a/erpnext/controllers/recurring_document.py
+++ b/erpnext/controllers/recurring_document.py
@@ -134,7 +134,7 @@
 
 def assign_task_to_owner(doc, doctype, msg, users):
 	for d in users:
-		from frappe.widgets.form import assign_to
+		from frappe.desk.form import assign_to
 		args = {
 			'assign_to' 	:	d,
 			'doctype'		:	doctype,
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 86d8837..0f3dc48 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -18,6 +18,10 @@
 				"other_charges": "templates/print_formats/includes/taxes.html",
 			}
 
+	def get_feed(self):
+		return _("To {0} | {1} {2}").format(self.customer_name, self.currency,
+			self.grand_total_export)
+
 	def onload(self):
 		if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"):
 			for item in self.get(self.fname):
diff --git a/erpnext/home/__init__.py b/erpnext/home/__init__.py
deleted file mode 100644
index 26a11a2..0000000
--- a/erpnext/home/__init__.py
+++ /dev/null
@@ -1,102 +0,0 @@
-# ERPNext - web based ERP (http://erpnext.com)
-# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-from __future__ import unicode_literals
-import frappe
-from frappe import msgprint
-
-feed_dict = {
-	# Project
-	'Project': ['[%(status)s]', '#000080'],
-	'Task': ['[%(status)s] %(subject)s', '#000080'],
-
-	# Sales
-	'Lead': ['%(lead_name)s', '#000080'],
-	'Quotation': ['[%(status)s] To %(customer_name)s worth %(currency)s %(grand_total_export)s', '#4169E1'],
-	'Sales Order': ['[%(status)s] To %(customer_name)s worth %(currency)s %(grand_total_export)s', '#4169E1'],
-
-	# Purchase
-	'Supplier': ['%(supplier_name)s, %(supplier_type)s', '#6495ED'],
-	'Purchase Order': ['[%(status)s] %(name)s To %(supplier_name)s for %(currency)s  %(grand_total_import)s', '#4169E1'],
-
-	# Stock
-	'Delivery Note': ['[%(status)s] To %(customer_name)s', '#4169E1'],
-	'Purchase Receipt': ['[%(status)s] From %(supplier)s', '#4169E1'],
-
-	# Accounts
-	'Journal Voucher': ['[%(voucher_type)s] %(name)s', '#4169E1'],
-	'Purchase Invoice': ['To %(supplier_name)s for %(currency)s %(grand_total_import)s', '#4169E1'],
-	'Sales Invoice': ['To %(customer_name)s for %(currency)s %(grand_total_export)s', '#4169E1'],
-
-	# HR
-	'Expense Claim': ['[%(approval_status)s] %(name)s by %(employee_name)s', '#4169E1'],
-	'Salary Slip': ['%(employee_name)s for %(month)s %(fiscal_year)s', '#4169E1'],
-	'Leave Transaction': ['%(leave_type)s for %(employee)s', '#4169E1'],
-
-	# Support
-	'Customer Issue': ['[%(status)s] %(description)s by %(customer_name)s', '#000080'],
-	'Maintenance Visit': ['To %(customer_name)s', '#4169E1'],
-	'Support Ticket': ["[%(status)s] %(subject)s", '#000080'],
-
-	# Website
-	'Web Page': ['%(title)s', '#000080'],
-	'Blog': ['%(title)s', '#000080']
-}
-
-def make_feed(feedtype, doctype, name, owner, subject, color):
-	"makes a new Feed record"
-	#msgprint(subject)
-	from frappe.utils import get_fullname
-
-	if feedtype in ('Login', 'Comment', 'Assignment'):
-		# delete old login, comment feed
-		frappe.db.sql("""delete from tabFeed where
-			datediff(curdate(), creation) > 7 and doc_type in ('Comment', 'Login', 'Assignment')""")
-	else:
-		# one feed per item
-		frappe.db.sql("""delete from tabFeed
-			where doc_type=%s and doc_name=%s
-			and ifnull(feed_type,'') != 'Comment'""", (doctype, name))
-
-	f = frappe.new_doc('Feed')
-	f.owner = owner
-	f.feed_type = feedtype
-	f.doc_type = doctype
-	f.doc_name = name
-	f.subject = subject
-	f.color = color
-	f.full_name = get_fullname(owner)
-	f.save(ignore_permissions=True)
-
-def update_feed(doc, method=None):
-	"adds a new feed"
-	if frappe.flags.in_patch:
-		return
-
-	if method in ['on_update', 'on_submit']:
-		subject, color = feed_dict.get(doc.doctype, [None, None])
-		if subject:
-			make_feed('', doc.doctype, doc.name, doc.owner, subject % doc.as_dict(), color)
-
-def make_comment_feed(doc, method):
-	"""add comment to feed"""
-	comment = doc.comment
-	if len(comment) > 240:
-		comment = comment[:240] + "..."
-
-	make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by,
-		'<i>"' + comment + '"</i>', '#6B24B3')
-
diff --git a/erpnext/home/doctype/__init__.py b/erpnext/home/doctype/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/doctype/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/feed/README.md b/erpnext/home/doctype/feed/README.md
deleted file mode 100644
index 085e575..0000000
--- a/erpnext/home/doctype/feed/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Activity Feed.
\ No newline at end of file
diff --git a/erpnext/home/doctype/feed/__init__.py b/erpnext/home/doctype/feed/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/doctype/feed/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/doctype/feed/feed.json b/erpnext/home/doctype/feed/feed.json
deleted file mode 100644
index bef8aac..0000000
--- a/erpnext/home/doctype/feed/feed.json
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- "autoname": "hash",
- "creation": "2012-07-03 13:29:42",
- "docstatus": 0,
- "doctype": "DocType",
- "fields": [
-  {
-   "fieldname": "feed_type",
-   "fieldtype": "Select",
-   "in_list_view": 1,
-   "label": "Feed Type",
-   "options": "\nComment\nLogin",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "doc_type",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Doc Type",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "doc_name",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Doc Name",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "subject",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Subject",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "color",
-   "fieldtype": "Data",
-   "in_list_view": 1,
-   "label": "Color",
-   "permlevel": 0
-  },
-  {
-   "fieldname": "full_name",
-   "fieldtype": "Data",
-   "label": "Full Name",
-   "permlevel": 0
-  }
- ],
- "icon": "icon-rss",
- "idx": 1,
- "modified": "2014-06-18 03:49:10.882587",
- "modified_by": "Administrator",
- "module": "Home",
- "name": "Feed",
- "owner": "Administrator",
- "permissions": [
-  {
-   "email": 1,
-   "permlevel": 0,
-   "print": 1,
-   "read": 1,
-   "report": 1,
-   "role": "System Manager"
-  },
-  {
-   "apply_user_permissions": 1,
-   "permlevel": 0,
-   "read": 1,
-   "role": "All"
-  }
- ]
-}
diff --git a/erpnext/home/doctype/feed/feed.py b/erpnext/home/doctype/feed/feed.py
deleted file mode 100644
index df8ccb2..0000000
--- a/erpnext/home/doctype/feed/feed.py
+++ /dev/null
@@ -1,50 +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
-import frappe.defaults
-import frappe.permissions
-from frappe.model.document import Document
-
-class Feed(Document):
-	pass
-
-def on_doctype_update():
-	if not frappe.db.sql("""show index from `tabFeed`
-		where Key_name="feed_doctype_docname_index" """):
-		frappe.db.commit()
-		frappe.db.sql("""alter table `tabFeed`
-			add index feed_doctype_docname_index(doc_type, doc_name)""")
-
-def get_permission_query_conditions(user):
-	if not user: user = frappe.session.user
-
-	if not frappe.permissions.apply_user_permissions("Feed", "read", user):
-		return ""
-
-	user_permissions = frappe.defaults.get_user_permissions(user)
-	can_read = frappe.get_user(user).get_can_read()
-
-	can_read_doctypes = ['"{}"'.format(doctype) for doctype in
-		list(set(can_read) - set(user_permissions.keys()))]
-
-	if not can_read_doctypes:
-		return ""
-
-	conditions = ["tabFeed.doc_type in ({})".format(", ".join(can_read_doctypes))]
-
-	if user_permissions:
-		can_read_docs = []
-		for doctype, names in user_permissions.items():
-			for n in names:
-				can_read_docs.append('"{}|{}"'.format(doctype, n))
-
-		if can_read_docs:
-			conditions.append("concat_ws('|', tabFeed.doc_type, tabFeed.doc_name) in ({})".format(
-				", ".join(can_read_docs)))
-
-	return "(" + " or ".join(conditions) + ")"
-
-def has_permission(doc, user):
-	return frappe.has_permission(doc.doc_type, "read", doc.doc_name, user=user)
diff --git a/erpnext/home/page/__init__.py b/erpnext/home/page/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/page/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/page/activity/README.md b/erpnext/home/page/activity/README.md
deleted file mode 100644
index 59e0352..0000000
--- a/erpnext/home/page/activity/README.md
+++ /dev/null
@@ -1 +0,0 @@
-List of latest activities based on Feed.
\ No newline at end of file
diff --git a/erpnext/home/page/activity/__init__.py b/erpnext/home/page/activity/__init__.py
deleted file mode 100644
index baffc48..0000000
--- a/erpnext/home/page/activity/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from __future__ import unicode_literals
diff --git a/erpnext/home/page/activity/activity.css b/erpnext/home/page/activity/activity.css
deleted file mode 100644
index 28b1b40..0000000
--- a/erpnext/home/page/activity/activity.css
+++ /dev/null
@@ -1,23 +0,0 @@
-#page-activity .label {
-	display: inline-block;
-	width: 100px;
-	margin-right: 7px;
-}
-
-#page-activity .label-info {
-	cursor: pointer;
-}
-
-#page-activity .user-info {
-	float: right;
-	color: #777;
-	font-size: 10px;
-}
-
-#page-activity .date-sep {
-	margin: 0px -15px 11px -15px;
-	padding: 5px 0px;
-	border-bottom: 2px solid #aaa;
-	color: #555;
-	font-size: 10px;
-}
\ No newline at end of file
diff --git a/erpnext/home/page/activity/activity.js b/erpnext/home/page/activity/activity.js
deleted file mode 100644
index f50f6c8..0000000
--- a/erpnext/home/page/activity/activity.js
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-// License: GNU General Public License v3. See license.txt
-
-frappe.pages['activity'].onload = function(wrapper) {
-	frappe.ui.make_app_page({
-		parent: wrapper,
-		title: __("Activity"),
-		single_column: true
-	})
-	wrapper.appframe.add_module_icon("Activity");
-
-	var list = new frappe.ui.Listing({
-		hide_refresh: true,
-		appframe: wrapper.appframe,
-		method: 'erpnext.home.page.activity.activity.get_feed',
-		parent: $(wrapper).find(".layout-main"),
-		render_row: function(row, data) {
-			new erpnext.ActivityFeed(row, data);
-		}
-	});
-	list.run();
-
-	wrapper.appframe.set_title_right(__("Refresh"), function() { list.run(); });
-
-	// Build Report Button
-	if(frappe.boot.user.can_get_report.indexOf("Feed")!=-1) {
-		wrapper.appframe.add_button(__('Build Report'), function() {
-			frappe.set_route('Report', "Feed");
-		}, 'icon-th');
-	}
-}
-
-erpnext.last_feed_date = false;
-erpnext.ActivityFeed = Class.extend({
-	init: function(row, data) {
-		this.scrub_data(data);
-		this.add_date_separator(row, data);
-		if(!data.add_class) data.add_class = "label-default";
-		$(row).append(repl('<div style="margin: 0px">\
-			<span class="avatar avatar-small"><img src="%(imgsrc)s" /></span> \
-			<span %(onclick)s class="label %(add_class)s">%(feed_type)s</span>\
-			%(link)s %(subject)s <span class="user-info">%(by)s</span></div>', data));
-	},
-	scrub_data: function(data) {
-		data.by = frappe.user_info(data.owner).fullname;
-		data.imgsrc = frappe.utils.get_file_link(frappe.user_info(data.owner).image);
-
-		// feedtype
-		if(!data.feed_type) {
-			data.feed_type = __(data.doc_type);
-			data.add_class = "label-info";
-			data.onclick = repl('onclick="window.location.href=\'#!List/%(feed_type)s\';"', data)
-		}
-
-		// color for comment
-		if(data.feed_type=='Comment') {
-			data.add_class = "label-danger";
-		}
-
-		if(data.feed_type=='Assignment') {
-			data.add_class = "label-warning";
-		}
-
-		// link
-		if(data.doc_name && data.feed_type!='Login') {
-			data.link = frappe.format(data.doc_name, {"fieldtype":"Link", "options":data.doc_type})
-		} else {
-			data.link = "";
-		}
-	},
-	add_date_separator: function(row, data) {
-		var date = dateutil.str_to_obj(data.modified);
-		var last = erpnext.last_feed_date;
-
-		if((last && dateutil.obj_to_str(last) != dateutil.obj_to_str(date)) || (!last)) {
-			var diff = dateutil.get_day_diff(dateutil.get_today(), dateutil.obj_to_str(date));
-			if(diff < 1) {
-				pdate = 'Today';
-			} else if(diff < 2) {
-				pdate = 'Yesterday';
-			} else {
-				pdate = dateutil.global_date_format(date);
-			}
-			$(row).html(repl('<div class="date-sep" style="padding-left: 15px;">%(date)s</div>', {date: pdate}));
-		}
-		erpnext.last_feed_date = date;
-	}
-})
diff --git a/erpnext/home/page/activity/activity.json b/erpnext/home/page/activity/activity.json
deleted file mode 100644
index a65057e..0000000
--- a/erpnext/home/page/activity/activity.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "creation": "2013-04-09 11:45:31.000000", 
- "docstatus": 0, 
- "doctype": "Page", 
- "icon": "icon-play", 
- "idx": 1, 
- "modified": "2013-07-11 14:40:20.000000", 
- "modified_by": "Administrator", 
- "module": "Home", 
- "name": "activity", 
- "owner": "Administrator", 
- "page_name": "activity", 
- "roles": [
-  {
-   "role": "All"
-  }
- ], 
- "standard": "Yes", 
- "title": "Activity"
-}
\ No newline at end of file
diff --git a/erpnext/home/page/activity/activity.py b/erpnext/home/page/activity/activity.py
deleted file mode 100644
index f8e1213..0000000
--- a/erpnext/home/page/activity/activity.py
+++ /dev/null
@@ -1,12 +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.utils import cint
-
-@frappe.whitelist()
-def get_feed(limit_start, limit_page_length):
-	"""get feed"""
-	return frappe.get_list("Feed", fields=["name", "feed_type", "doc_type", "subject", "owner", "modified"],
-		limit_start = limit_start, limit_page_length = limit_page_length)
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 166d830..6c09030 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -20,7 +20,6 @@
 dump_report_map = "erpnext.startup.report_data_map.data_map"
 update_website_context = "erpnext.startup.webutils.update_website_context"
 
-on_session_creation = "erpnext.startup.event_handlers.on_session_creation"
 before_tests = "erpnext.setup.utils.before_tests"
 
 website_generators = ["Item Group", "Item", "Sales Partner"]
@@ -28,24 +27,15 @@
 standard_queries = "Customer:erpnext.selling.doctype.customer.customer.get_customer_list"
 
 permission_query_conditions = {
-		"Feed": "erpnext.home.doctype.feed.feed.get_permission_query_conditions",
 		"Note": "erpnext.utilities.doctype.note.note.get_permission_query_conditions"
 	}
 
 has_permission = {
-		"Feed": "erpnext.home.doctype.feed.feed.has_permission",
 		"Note": "erpnext.utilities.doctype.note.note.has_permission"
 	}
 
 
 doc_events = {
-	"*": {
-		"on_update": "erpnext.home.update_feed",
-		"on_submit": "erpnext.home.update_feed"
-	},
-	"Comment": {
-		"on_update": "erpnext.home.make_comment_feed"
-	},
 	"Stock Entry": {
 		"on_submit": "erpnext.stock.doctype.material_request.material_request.update_completed_qty",
 		"on_cancel": "erpnext.stock.doctype.material_request.material_request.update_completed_qty"
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 560ee02..4db9cbf 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -11,6 +11,10 @@
 class InvalidExpenseApproverError(frappe.ValidationError): pass
 
 class ExpenseClaim(Document):
+	def get_feed(self):
+		return _("{0}: From {0} for {1}").format(self.approval_status,
+			self.employee_name, self.total_claimed_amount)
+
 	def validate(self):
 		self.validate_fiscal_year()
 		self.validate_exp_details()
diff --git a/erpnext/hr/doctype/leave_application/leave_application.py b/erpnext/hr/doctype/leave_application/leave_application.py
index 1751eb1..aacb7d4 100755
--- a/erpnext/hr/doctype/leave_application/leave_application.py
+++ b/erpnext/hr/doctype/leave_application/leave_application.py
@@ -17,6 +17,10 @@
 
 from frappe.model.document import Document
 class LeaveApplication(Document):
+	def get_feed(self):
+		return _("{0}: From {0} of type {1}").format(self.status,
+			self.employee_name, self.leave_type)
+
 	def validate(self):
 		if not getattr(self, "__islocal", None) and frappe.db.exists(self.doctype, self.name):
 			self.previous_doc = frappe.db.get_value(self.doctype, self.name, "*", as_dict=True)
@@ -212,7 +216,7 @@
 
 	def notify(self, args):
 		args = frappe._dict(args)
-		from frappe.core.page.messages.messages import post
+		from frappe.desk.page.messages.messages import post
 		post(**{"txt": args.message, "contact": args.message_to, "subject": args.subject,
 			"notify": cint(self.follow_via_email)})
 
@@ -249,7 +253,7 @@
 
 	employee, company = employee.name, employee.company
 
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("Leave Application")
 
 	# show department leaves for employee
diff --git a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
index 4b92848..f54b2e4 100644
--- a/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
+++ b/erpnext/hr/report/employee_leave_balance/employee_leave_balance.py
@@ -4,7 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe import _
-from frappe.widgets.reportview import execute as runreport
+from frappe.desk.reportview import execute as runreport
 
 def execute(filters=None):
 	if not filters: filters = {}
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 88e6e12..ce9b561 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -11,6 +11,8 @@
 from frappe.model.document import Document
 
 class Project(Document):
+	def get_feed(self):
+		return self.status
 
 	def get_gross_profit(self):
 		pft, per_pft =0, 0
@@ -70,4 +72,4 @@
 
 @frappe.whitelist()
 def get_cost_center_name(project_name):
-	return frappe.db.get_value("Project", project_name, "cost_center")
\ No newline at end of file
+	return frappe.db.get_value("Project", project_name, "cost_center")
diff --git a/erpnext/projects/doctype/task/task.py b/erpnext/projects/doctype/task/task.py
index 8d63f12..fe1ce7f 100644
--- a/erpnext/projects/doctype/task/task.py
+++ b/erpnext/projects/doctype/task/task.py
@@ -11,6 +11,9 @@
 from frappe.model.document import Document
 
 class Task(Document):
+	def get_feed(self):
+		return '{0}: {1}'.format(_(self.status), self.subject)
+
 	def get_project_details(self):
 		return {
 			"project": self.project
@@ -47,7 +50,7 @@
 
 @frappe.whitelist()
 def get_events(start, end, filters=None):
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	if not frappe.has_permission("Task"):
 		frappe.msgprint(_("No Permission"), raise_exception=1)
 
diff --git a/erpnext/projects/doctype/time_log/time_log.py b/erpnext/projects/doctype/time_log/time_log.py
index eb8afc7..6678392 100644
--- a/erpnext/projects/doctype/time_log/time_log.py
+++ b/erpnext/projects/doctype/time_log/time_log.py
@@ -61,7 +61,7 @@
 
 @frappe.whitelist()
 def get_events(start, end):
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	if not frappe.has_permission("Time Log"):
 		frappe.msgprint(_("No Permission"), raise_exception=1)
 
diff --git a/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py b/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py
index b8f746b..fecdc2f 100644
--- a/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py
+++ b/erpnext/projects/report/daily_time_log_summary/daily_time_log_summary.py
@@ -75,7 +75,7 @@
 	if filters.get("to_date"):
 		conditions += " and to_time <= timestamp(%(to_date)s, %(to_time)s)"
 
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	match_conditions = build_match_conditions("Time Log")
 	if match_conditions:
 		conditions += " and %s" % match_conditions
diff --git a/erpnext/projects/utils.py b/erpnext/projects/utils.py
index 6fee9b3..b36519b 100644
--- a/erpnext/projects/utils.py
+++ b/erpnext/projects/utils.py
@@ -12,7 +12,7 @@
 
 @frappe.whitelist()
 def query_task(doctype, txt, searchfield, start, page_len, filters):
-	from frappe.widgets.reportview import build_match_conditions
+	from frappe.desk.reportview import build_match_conditions
 	
 	search_string = "%%%s%%" % txt
 	order_by_string = "%s%%" % txt
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 362542e..a43b44d 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -12,6 +12,8 @@
 from erpnext.accounts.party import create_party_account
 
 class Customer(TransactionBase):
+	def get_feed(self):
+		return self.customer_name
 
 	def autoname(self):
 		cust_master_name = frappe.defaults.get_global_default('cust_master_name')
diff --git a/erpnext/selling/doctype/lead/lead.py b/erpnext/selling/doctype/lead/lead.py
index 3c345ef..667a39f 100644
--- a/erpnext/selling/doctype/lead/lead.py
+++ b/erpnext/selling/doctype/lead/lead.py
@@ -11,6 +11,9 @@
 from erpnext.controllers.selling_controller import SellingController
 
 class Lead(SellingController):
+	def get_feed(self):
+		return '{0}: {1}'.format(_(self.status), self.lead_name)
+
 	def onload(self):
 		customer = frappe.db.get_value("Customer", {"lead_name": self.name})
 		self.get("__onload").is_customer = customer
diff --git a/erpnext/setup/doctype/backup_manager/backup_manager.js b/erpnext/setup/doctype/backup_manager/backup_manager.js
index ee2b1a7..03c6bf9 100644
--- a/erpnext/setup/doctype/backup_manager/backup_manager.js
+++ b/erpnext/setup/doctype/backup_manager/backup_manager.js
@@ -4,17 +4,17 @@
 $.extend(cur_frm.cscript, {
 	refresh: function() {
 		cur_frm.disable_save();
-		
-		if(!(cint(cur_frm.doc.dropbox_access_allowed) || 
+
+		if(!(cint(cur_frm.doc.dropbox_access_allowed) ||
 			cint(cur_frm.doc.gdrive_access_allowed))) {
 				cur_frm.set_intro(__("You can start by selecting backup frequency and granting access for sync"));
 		} else {
 			var services = {
-				"dropbox": __("Dropbox"),
-				"gdrive": __("Google Drive")
+				"dropbox": __("Dropbox")
+				// "gdrive": __("Google Drive")
 			}
 			var active_services = [];
-			
+
 			$.each(services, function(service, label) {
 				var access_allowed = cint(cur_frm.doc[service + "_access_allowed"]);
 				var frequency = cur_frm.doc["upload_backups_to_" + service];
@@ -22,27 +22,27 @@
 					active_services.push(label + " [" + frequency + "]");
 				}
 			});
-			
+
 			if(active_services.length > 0) {
-				cur_frm.set_intro(__("Backups will be uploaded to") + ": " + 
+				cur_frm.set_intro(__("Backups will be uploaded to") + ": " +
 					frappe.utils.comma_and(active_services));
 			} else {
 				cur_frm.set_intro("");
 			}
 		}
-		
+
 	},
-	
+
 	validate_send_notifications_to: function() {
 		if(!cur_frm.doc.send_notifications_to) {
-			msgprint(__("Please specify") + ": " + 
+			msgprint(__("Please specify") + ": " +
 				__(frappe.meta.get_label(cur_frm.doctype, "send_notifications_to")));
 			return false;
 		}
-		
+
 		return true;
 	},
-	
+
 	allow_dropbox_access: function() {
 		if(cur_frm.cscript.validate_send_notifications_to()) {
 			return frappe.call({
@@ -59,7 +59,7 @@
 			});
 		}
 	},
-	
+
 	allow_gdrive_access: function() {
 		if(cur_frm.cscript.validate_send_notifications_to()) {
 			return frappe.call({
@@ -72,7 +72,7 @@
 			});
 		}
 	},
-	
+
 	validate_gdrive: function() {
 		return frappe.call({
 			method: "erpnext.setup.doctype.backup_manager.backup_googledrive.gdrive_callback",
@@ -81,11 +81,11 @@
 			},
 		});
 	},
-	
+
 	upload_backups_to_dropbox: function() {
 		cur_frm.save();
 	},
-	
+
 	// upload_backups_to_gdrive: function() {
 	// 	cur_frm.save();
 	// },
diff --git a/erpnext/setup/doctype/email_digest/email_digest.py b/erpnext/setup/doctype/email_digest/email_digest.py
index 90ea22f..c66d3de 100644
--- a/erpnext/setup/doctype/email_digest/email_digest.py
+++ b/erpnext/setup/doctype/email_digest/email_digest.py
@@ -295,7 +295,7 @@
 			filter_by_company=False)
 
 	def get_calendar_events(self, user_id):
-		from frappe.core.doctype.event.event import get_events
+		from frappe.desk.doctype.event.event import get_events
 		events = get_events(self.future_from_date.strftime("%Y-%m-%d"), self.future_to_date.strftime("%Y-%m-%d"))
 
 		html = ""
diff --git a/erpnext/setup/page/setup_wizard/setup_wizard.py b/erpnext/setup/page/setup_wizard/setup_wizard.py
index 2750e21..cc1cd23 100644
--- a/erpnext/setup/page/setup_wizard/setup_wizard.py
+++ b/erpnext/setup/page/setup_wizard/setup_wizard.py
@@ -227,9 +227,11 @@
 
 def create_feed_and_todo():
 	"""update activty feed and create todo for creation of item, customer, vendor"""
-	from erpnext.home import make_feed
-	make_feed('Comment', 'ToDo', '', frappe.session['user'],
-		'ERNext Setup Complete!', '#6B24B3')
+	frappe.get_doc({
+		"doctype": "Feed",
+		"feedtype": "Comment",
+		"subject": "ERPNext Setup Complete!"
+	}).insert(ignore_permissions=True)
 
 def create_email_digest():
 	from frappe.utils.user import get_system_managers
diff --git a/erpnext/startup/event_handlers.py b/erpnext/startup/event_handlers.py
deleted file mode 100644
index 6dac990..0000000
--- a/erpnext/startup/event_handlers.py
+++ /dev/null
@@ -1,17 +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.utils import nowtime
-from frappe.utils.user import get_user_fullname
-from erpnext.home import make_feed
-
-def on_session_creation(login_manager):
-	"""make feed"""
-	if frappe.session['user'] != 'Guest':
-		# create feed
-		make_feed('Login', 'User', login_manager.user, login_manager.user,
-			'%s logged in at %s' % (get_user_fullname(login_manager.user), nowtime()),
-			login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D')
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index c3aab6a..74f88f2 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -26,6 +26,10 @@
 
 class StockEntry(StockController):
 	fname = 'mtn_details'
+
+	def get_feed(self):
+		return _("From {0} to {1}").format(self.from_warehouse, self.to_warehouse)
+
 	def onload(self):
 		if self.docstatus==1:
 			for item in self.get(self.fname):
diff --git a/erpnext/support/doctype/customer_issue/customer_issue.py b/erpnext/support/doctype/customer_issue/customer_issue.py
index 45adb0b..9e6300e 100644
--- a/erpnext/support/doctype/customer_issue/customer_issue.py
+++ b/erpnext/support/doctype/customer_issue/customer_issue.py
@@ -12,6 +12,8 @@
 from erpnext.utilities.transaction_base import TransactionBase
 
 class CustomerIssue(TransactionBase):
+	def get_feed(self):
+		return _("{0}: From {1}").format(self.status, self.customer_name)
 
 	def validate(self):
 		if session['user'] != 'Guest' and not self.customer:
diff --git a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
index e16017d..ef2fb41 100644
--- a/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
+++ b/erpnext/support/doctype/maintenance_visit/maintenance_visit.py
@@ -8,6 +8,8 @@
 from erpnext.utilities.transaction_base import TransactionBase
 
 class MaintenanceVisit(TransactionBase):
+	def get_feed(self):
+		return _("To {0}").format(self.customer_name)
 
 	def get_item_details(self, item_code):
 		return frappe.db.get_value("Item", item_code, ["item_name", "description"], as_dict=1)
diff --git a/erpnext/support/doctype/support_ticket/support_ticket.py b/erpnext/support/doctype/support_ticket/support_ticket.py
index 4cdc20a..1212218 100644
--- a/erpnext/support/doctype/support_ticket/support_ticket.py
+++ b/erpnext/support/doctype/support_ticket/support_ticket.py
@@ -3,11 +3,14 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 
 from erpnext.utilities.transaction_base import TransactionBase
 from frappe.utils import now, extract_email_id
 
 class SupportTicket(TransactionBase):
+	def get_feed(self):
+		return "{0}: {1}".format(_(self.status, self.subject))
 
 	def get_sender(self, comm):
 		return frappe.db.get_value('Support Email Settings',None,'support_email')
@@ -30,7 +33,7 @@
 		self.set_lead_contact(self.raised_by)
 
 		if self.status == "Closed":
-			from frappe.widgets.form.assign_to import clear
+			from frappe.desk.form.assign_to import clear
 			clear(self.doctype, self.name)
 
 	def set_lead_contact(self, email_id):
diff --git a/erpnext/utilities/doctype/note/README.md b/erpnext/utilities/doctype/note/README.md
deleted file mode 100644
index 95d7b33..0000000
--- a/erpnext/utilities/doctype/note/README.md
+++ /dev/null
@@ -1 +0,0 @@
-Shared Note. (Page with standard information, links, attachments).
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note/__init__.py b/erpnext/utilities/doctype/note/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/doctype/note/__init__.py
+++ /dev/null
diff --git a/erpnext/utilities/doctype/note/note.json b/erpnext/utilities/doctype/note/note.json
deleted file mode 100644
index 66d99f4..0000000
--- a/erpnext/utilities/doctype/note/note.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "allow_rename": 1, 
- "creation": "2013-05-24 13:41:00", 
- "description": "Note is a free page where users can share documents / notes", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Transaction", 
- "fields": [
-  {
-   "fieldname": "title", 
-   "fieldtype": "Data", 
-   "in_list_view": 0, 
-   "label": "Title", 
-   "permlevel": 0, 
-   "print_hide": 1, 
-   "reqd": 1
-  }, 
-  {
-   "description": "Help: To link to another record in the system, use \"#Form/Note/[Note Name]\" as the Link URL. (don't use \"http://\")", 
-   "fieldname": "content", 
-   "fieldtype": "Text Editor", 
-   "in_list_view": 0, 
-   "label": "Content", 
-   "permlevel": 0
-  }, 
-  {
-   "fieldname": "share", 
-   "fieldtype": "Section Break", 
-   "label": "Share", 
-   "permlevel": 0
-  }, 
-  {
-   "description": "Everyone can read", 
-   "fieldname": "public", 
-   "fieldtype": "Check", 
-   "in_list_view": 1, 
-   "label": "Public", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }, 
-  {
-   "fieldname": "share_with", 
-   "fieldtype": "Table", 
-   "label": "Share With", 
-   "options": "Note User", 
-   "permlevel": 0, 
-   "print_hide": 1
-  }
- ], 
- "icon": "icon-file-text", 
- "idx": 1, 
- "modified": "2014-07-30 03:24:38.302928", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Note", 
- "owner": "Administrator", 
- "permissions": [
-  {
-   "apply_user_permissions": 1, 
-   "create": 1, 
-   "delete": 1, 
-   "email": 1, 
-   "permlevel": 0, 
-   "print": 1, 
-   "read": 1, 
-   "role": "All", 
-   "write": 1
-  }
- ], 
- "read_only_onload": 1
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note/note.py b/erpnext/utilities/doctype/note/note.py
deleted file mode 100644
index 2db4137..0000000
--- a/erpnext/utilities/doctype/note/note.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe import _
-from frappe.model.document import Document
-
-class Note(Document):
-	def autoname(self):
-		# replace forbidden characters
-		import re
-		self.name = re.sub("[%'\"#*?`]", "", self.title.strip())
-
-	def before_print(self):
-		self.print_heading = self.name
-		self.sub_heading = ""
-
-def get_permission_query_conditions(user):
-	if not user: user = frappe.session.user
-
-	if user == "Administrator":
-		return ""
-
-	return """(`tabNote`.public=1 or `tabNote`.owner="{user}" or exists (
-		select name from `tabNote User`
-			where `tabNote User`.parent=`tabNote`.name
-			and `tabNote User`.user="{user}"))""".format(user=user)
-
-def has_permission(doc, ptype, user):
-	if doc.public == 1 or user == "Administrator":
-		return True
-
-	if user == doc.owner:
-		return True
-
-	note_user_map = dict((d.user, d) for d in doc.get("share_with"))
-	if user in note_user_map:
-		if ptype == "read":
-			return True
-		elif note_user_map.get(user).permission == "Edit":
-			return True
-
-	return False
diff --git a/erpnext/utilities/doctype/note/note_list.html b/erpnext/utilities/doctype/note/note_list.html
deleted file mode 100644
index d3289d2..0000000
--- a/erpnext/utilities/doctype/note/note_list.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<div class="row" style="max-height: 30px;">
-	<div class="col-xs-12">
-		<div class="text-ellipsis">
-			{%= list.get_avatar_and_id(doc) %}
-
-			{% if(!doc.public) { %}
-			<span style="margin-right: 8px;"
-				title="{%= __("Private") %}" class="filterable"
-				data-filter="public,=,Yes">
-				<i class="icon-lock text-muted"></i>
-			</span>
-			{% } %}
-
-		</div>
-	</div>
-</div>
diff --git a/erpnext/utilities/doctype/note/note_list.js b/erpnext/utilities/doctype/note/note_list.js
deleted file mode 100644
index 161ebad..0000000
--- a/erpnext/utilities/doctype/note/note_list.js
+++ /dev/null
@@ -1,3 +0,0 @@
-frappe.listview_settings['Note'] = {
-	add_fields: ["title", "public"],
-}
diff --git a/erpnext/utilities/doctype/note/test_note.py b/erpnext/utilities/doctype/note/test_note.py
deleted file mode 100644
index 997c57b..0000000
--- a/erpnext/utilities/doctype/note/test_note.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
-# See license.txt
-
-import frappe
-import unittest
-
-test_records = frappe.get_test_records('Note')
-
-class TestNote(unittest.TestCase):
-	pass
diff --git a/erpnext/utilities/doctype/note/test_records.json b/erpnext/utilities/doctype/note/test_records.json
deleted file mode 100644
index f3d7cff..0000000
--- a/erpnext/utilities/doctype/note/test_records.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-	{
-		"doctype": "Note",
-		"name": "_Test Note 1",
-		"title": "Test Note Title"
-	}
-]
diff --git a/erpnext/utilities/doctype/note_user/README.md b/erpnext/utilities/doctype/note_user/README.md
deleted file mode 100644
index a8e066d..0000000
--- a/erpnext/utilities/doctype/note_user/README.md
+++ /dev/null
@@ -1 +0,0 @@
-User who can access / edit the parent Note.
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note_user/__init__.py b/erpnext/utilities/doctype/note_user/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/erpnext/utilities/doctype/note_user/__init__.py
+++ /dev/null
diff --git a/erpnext/utilities/doctype/note_user/note_user.json b/erpnext/utilities/doctype/note_user/note_user.json
deleted file mode 100644
index e67a75c..0000000
--- a/erpnext/utilities/doctype/note_user/note_user.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "creation": "2013-05-24 14:24:48", 
- "description": "List of users who can edit a particular Note", 
- "docstatus": 0, 
- "doctype": "DocType", 
- "document_type": "Other", 
- "fields": [
-  {
-   "fieldname": "user", 
-   "fieldtype": "Link", 
-   "ignore_user_permissions": 1, 
-   "in_list_view": 1, 
-   "label": "User", 
-   "options": "User", 
-   "permlevel": 0, 
-   "reqd": 1
-  }, 
-  {
-   "default": "Edit", 
-   "fieldname": "permission", 
-   "fieldtype": "Select", 
-   "in_list_view": 1, 
-   "label": "Permission", 
-   "options": "Edit\nRead", 
-   "permlevel": 0
-  }
- ], 
- "idx": 1, 
- "istable": 1, 
- "modified": "2014-06-04 02:33:27.466061", 
- "modified_by": "Administrator", 
- "module": "Utilities", 
- "name": "Note User", 
- "owner": "Administrator", 
- "permissions": []
-}
\ No newline at end of file
diff --git a/erpnext/utilities/doctype/note_user/note_user.py b/erpnext/utilities/doctype/note_user/note_user.py
deleted file mode 100644
index 1594f78..0000000
--- a/erpnext/utilities/doctype/note_user/note_user.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
-# License: GNU General Public License v3. See license.txt
-
-# For license information, please see license.txt
-
-from __future__ import unicode_literals
-import frappe
-
-from frappe.model.document import Document
-
-class NoteUser(Document):
-	pass
\ No newline at end of file