From 123842ffdae87c2ddcd604861d402acb16a3ee15 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Wed, 30 Mar 2016 17:14:56 +0530 Subject: [PATCH] [enhancement] edit-profile in frappe --- frappe/core/doctype/user/user.json | 29 +++++++++++++-- frappe/database.py | 4 ++- frappe/model/utils/link_count.py | 3 +- frappe/templates/pages/edit-profile.html | 46 ++++++++++++++++++++++++ frappe/templates/pages/edit_profile.py | 29 +++++++++++++++ frappe/templates/pages/list.py | 2 +- 6 files changed, 108 insertions(+), 5 deletions(-) create mode 100644 frappe/templates/pages/edit-profile.html create mode 100644 frappe/templates/pages/edit_profile.py diff --git a/frappe/core/doctype/user/user.json b/frappe/core/doctype/user/user.json index e7a769af85..7acff8770e 100644 --- a/frappe/core/doctype/user/user.json +++ b/frappe/core/doctype/user/user.json @@ -420,6 +420,31 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "fieldname": "phone", + "fieldtype": "Data", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Phone", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_on_submit": 0, "bold": 0, @@ -1458,7 +1483,7 @@ "hide_heading": 0, "hide_toolbar": 0, "icon": "icon-user", - "idx": 1, + "idx": 253, "in_create": 0, "in_dialog": 0, "is_submittable": 0, @@ -1466,7 +1491,7 @@ "istable": 0, "max_attachments": 5, "menu_index": 0, - "modified": "2016-03-29 06:26:24.316335", + "modified": "2016-03-30 07:32:15.815142", "modified_by": "Administrator", "module": "Core", "name": "User", diff --git a/frappe/database.py b/frappe/database.py index 296a121c5a..152eac6d2a 100644 --- a/frappe/database.py +++ b/frappe/database.py @@ -369,7 +369,8 @@ class Database: """Returns `get_value` with fieldname='*'""" return self.get_value(doctype, filters, "*", as_dict=as_dict, cache=cache) - def get_value(self, doctype, filters=None, fieldname="name", ignore=None, as_dict=False, debug=False, cache=False): + def get_value(self, doctype, filters=None, fieldname="name", ignore=None, as_dict=False, + debug=False, cache=False): """Returns a document property or list of properties. :param doctype: DocType name. @@ -418,6 +419,7 @@ class Database: user = frappe.db.get_values("User", "test@example.com", "*")[0] """ out = None + cache = False if cache and isinstance(filters, basestring) and \ (doctype, filters, fieldname) in self.value_cache: return self.value_cache[(doctype, filters, fieldname)] diff --git a/frappe/model/utils/link_count.py b/frappe/model/utils/link_count.py index 898e89556e..6145dd8d75 100644 --- a/frappe/model/utils/link_count.py +++ b/frappe/model/utils/link_count.py @@ -23,7 +23,8 @@ def update_link_count(): link_count = frappe.cache().get_value('_link_count') if link_count: for key, count in link_count.iteritems(): - frappe.db.sql('update `tab{0}` set idx = idx + %s where name=%s'.format(key[0]), (count, key[1])) + frappe.db.sql('update `tab{0}` set idx = idx + %s where name=%s'.format(key[0]), + (count, key[1])) # reset the count frappe.cache().delete_value('_link_count') diff --git a/frappe/templates/pages/edit-profile.html b/frappe/templates/pages/edit-profile.html new file mode 100644 index 0000000000..a31bb6aaea --- /dev/null +++ b/frappe/templates/pages/edit-profile.html @@ -0,0 +1,46 @@ +{% extends "templates/web.html" %} + +{% block title %} {{ "Edit Profile" }} {% endblock %} + +{% block header %}

{{ _("Edit Profile") }}

{% endblock %} + +{% block page_content %} +
+ +
+
+ + +
+
+ + +
+ +
+
+ + +{% endblock %} + diff --git a/frappe/templates/pages/edit_profile.py b/frappe/templates/pages/edit_profile.py new file mode 100644 index 0000000000..841d67b0d9 --- /dev/null +++ b/frappe/templates/pages/edit_profile.py @@ -0,0 +1,29 @@ +# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe +from frappe import _ + +no_cache = 1 +no_sitemap = 1 + +def get_context(context): + user = frappe.get_doc('User', frappe.session.user) + user.full_name = user.get_fullname() + context.user = user + +@frappe.whitelist() +def update_user(fullname, phone=None): + if not fullname: + return _("Name is required") + + user = frappe.get_doc('User', frappe.session.user) + user.first_name = fullname + user.last_name = '' + user.phone = phone + user.save(ignore_permissions=True) + + frappe.local.cookie_manager.set_cookie("full_name", fullname) + + return _("Updated") diff --git a/frappe/templates/pages/list.py b/frappe/templates/pages/list.py index 49bd938232..0ee95a9a14 100644 --- a/frappe/templates/pages/list.py +++ b/frappe/templates/pages/list.py @@ -69,7 +69,7 @@ def set_route(context): '''Set link for the list item''' if context.is_web_form: context.route = "{0}?name={1}".format(context.pathname, quote_plus(context.doc.name)) - elif hasattr(context.doc, 'get_route'): + elif context.doc and getattr(context.doc, 'get_route', None): context.route = context.doc.get_route() else: context.route = "{0}/{1}".format(context.pathname or quote_plus(context.doc.doctype), quote_plus(context.doc.name))