From 96e8be443e1ea0f2d5265a6534656f7cf0bb72a7 Mon Sep 17 00:00:00 2001 From: KanchanChauhan Date: Fri, 23 Sep 2016 21:14:18 +0530 Subject: [PATCH] user can update image from website (#2089) --- frappe/__init__.py | 10 +- frappe/core/doctype/user/user.py | 4 + frappe/core/web_form/__init__.py | 0 frappe/core/web_form/edit_profile/__init__.py | 0 .../web_form/edit_profile/edit_profile.js | 3 + .../web_form/edit_profile/edit_profile.json | 117 ++++++++++++++++++ .../web_form/edit_profile/edit_profile.py | 7 ++ frappe/utils/user.py | 8 +- frappe/website/context.py | 1 + frappe/www/edit-profile.html | 62 ---------- frappe/www/edit_profile.py | 30 ----- frappe/www/me.html | 3 +- frappe/www/profile.html | 2 +- 13 files changed, 145 insertions(+), 102 deletions(-) create mode 100644 frappe/core/web_form/__init__.py create mode 100644 frappe/core/web_form/edit_profile/__init__.py create mode 100644 frappe/core/web_form/edit_profile/edit_profile.js create mode 100644 frappe/core/web_form/edit_profile/edit_profile.json create mode 100644 frappe/core/web_form/edit_profile/edit_profile.py delete mode 100644 frappe/www/edit-profile.html delete mode 100644 frappe/www/edit_profile.py diff --git a/frappe/__init__.py b/frappe/__init__.py index 107001ee65..2686629aaa 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -500,11 +500,15 @@ def has_website_permission(doctype, ptype="read", doc=None, user=None, verbose=F if not user: user = session.user + if isinstance(doc, basestring): + doc = get_doc(doctype, doc) + + # check permission in controller + if hasattr(doc, 'has_website_permission'): + return doc.has_website_permission(ptype, verbose=verbose) + hooks = (get_hooks("has_website_permission") or {}).get(doctype, []) if hooks: - if isinstance(doc, basestring): - doc = get_doc(doctype, doc) - for method in hooks: result = call(method, doc=doc, ptype=ptype, user=user, verbose=verbose) # if even a single permission check is Falsy diff --git a/frappe/core/doctype/user/user.py b/frappe/core/doctype/user/user.py index 1488fa4887..539cd94d41 100644 --- a/frappe/core/doctype/user/user.py +++ b/frappe/core/doctype/user/user.py @@ -70,6 +70,10 @@ class User(Document): frappe.clear_cache(user=self.name) self.send_password_notification(self.__new_password) + def has_website_permission(self, ptype, verbose=False): + """Returns true if current user is the session user""" + return self.name == frappe.session.user + 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') diff --git a/frappe/core/web_form/__init__.py b/frappe/core/web_form/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/core/web_form/edit_profile/__init__.py b/frappe/core/web_form/edit_profile/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/core/web_form/edit_profile/edit_profile.js b/frappe/core/web_form/edit_profile/edit_profile.js new file mode 100644 index 0000000000..699703c579 --- /dev/null +++ b/frappe/core/web_form/edit_profile/edit_profile.js @@ -0,0 +1,3 @@ +frappe.ready(function() { + // bind events here +}) \ No newline at end of file diff --git a/frappe/core/web_form/edit_profile/edit_profile.json b/frappe/core/web_form/edit_profile/edit_profile.json new file mode 100644 index 0000000000..1d5b984562 --- /dev/null +++ b/frappe/core/web_form/edit_profile/edit_profile.json @@ -0,0 +1,117 @@ +{ + "allow_comments": 0, + "allow_delete": 0, + "allow_edit": 1, + "allow_multiple": 0, + "creation": "2016-09-19 05:16:59.242754", + "doc_type": "User", + "docstatus": 0, + "doctype": "Web Form", + "idx": 0, + "is_standard": 1, + "login_required": 1, + "modified": "2016-09-23 03:08:15.206534", + "modified_by": "Administrator", + "module": "Core", + "name": "edit-profile", + "owner": "Administrator", + "published": 1, + "route": "update-profile", + "sidebar_items": [], + "success_message": "Profile updated successfully.", + "success_url": "/me", + "title": "Update Profile", + "web_form_fields": [ + { + "fieldname": "first_name", + "fieldtype": "Data", + "hidden": 0, + "label": "First Name", + "read_only": 0, + "reqd": 1 + }, + { + "fieldname": "middle_name", + "fieldtype": "Data", + "hidden": 0, + "label": "Middle Name (Optional)", + "read_only": 0, + "reqd": 0 + }, + { + "fieldname": "last_name", + "fieldtype": "Data", + "hidden": 0, + "label": "Last Name", + "read_only": 0, + "reqd": 0 + }, + { + "description": "", + "fieldname": "user_image", + "fieldtype": "Attach", + "hidden": 0, + "label": "User Image", + "read_only": 0, + "reqd": 0 + }, + { + "fieldtype": "Section Break", + "hidden": 0, + "label": "More Information", + "read_only": 0, + "reqd": 0 + }, + { + "fieldname": "phone", + "fieldtype": "Data", + "hidden": 0, + "label": "Phone", + "read_only": 0, + "reqd": 0 + }, + { + "fieldname": "gender", + "fieldtype": "Select", + "hidden": 0, + "label": "Gender", + "options": "\nMale\nFemale\nOther", + "read_only": 0, + "reqd": 0 + }, + { + "description": "", + "fieldname": "language", + "fieldtype": "Link", + "hidden": 0, + "label": "Language", + "options": "Language", + "read_only": 0, + "reqd": 0 + }, + { + "fieldname": "birth_date", + "fieldtype": "Date", + "hidden": 0, + "label": "Birth Date", + "read_only": 0, + "reqd": 0 + }, + { + "fieldname": "location", + "fieldtype": "Data", + "hidden": 0, + "label": "Location", + "read_only": 0, + "reqd": 0 + }, + { + "fieldname": "bio", + "fieldtype": "Text", + "hidden": 0, + "label": "Bio", + "read_only": 0, + "reqd": 0 + } + ] +} \ No newline at end of file diff --git a/frappe/core/web_form/edit_profile/edit_profile.py b/frappe/core/web_form/edit_profile/edit_profile.py new file mode 100644 index 0000000000..2334f8b26d --- /dev/null +++ b/frappe/core/web_form/edit_profile/edit_profile.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals + +import frappe + +def get_context(context): + # do your magic here + pass diff --git a/frappe/utils/user.py b/frappe/utils/user.py index 9f3f002f7d..56a7484c27 100755 --- a/frappe/utils/user.py +++ b/frappe/utils/user.py @@ -215,11 +215,12 @@ def get_user_fullname(user): return fullname and fullname[0][0] or '' def get_fullname_and_avatar(user): - first_name, last_name, avatar = frappe.db.get_value("User", - user, ["first_name", "last_name", "user_image"]) + first_name, last_name, avatar, name = frappe.db.get_value("User", + user, ["first_name", "last_name", "user_image", "name"]) return _dict({ "fullname": " ".join(filter(None, [first_name, last_name])), - "avatar": avatar + "avatar": avatar, + "name": name }) def get_system_managers(only_name=False): @@ -292,7 +293,6 @@ def is_website_user(): def is_system_user(username): return frappe.db.get_value("User", {"name": username, "enabled": 1, "user_type": "System User"}) - def get_users(): from frappe.core.doctype.user.user import get_system_users users = [] diff --git a/frappe/website/context.py b/frappe/website/context.py index dee2934037..09d82f7f91 100644 --- a/frappe/website/context.py +++ b/frappe/website/context.py @@ -124,6 +124,7 @@ def add_sidebar_data(context): info = get_fullname_and_avatar(frappe.session.user) context["fullname"] = info.fullname context["user_image"] = info.avatar + context["user"] = info.name def add_metatags(context): diff --git a/frappe/www/edit-profile.html b/frappe/www/edit-profile.html deleted file mode 100644 index 3d6258357a..0000000000 --- a/frappe/www/edit-profile.html +++ /dev/null @@ -1,62 +0,0 @@ -{% extends "templates/web.html" %} - -{% block title %} {{ "Edit Profile" }} {% endblock %} - -{% block header %}

{{ _("Edit Profile") }}

{% endblock %} - -{% block page_content %} -
- -
-
- - -
-
- - -
- -
-
- - - -{% endblock %} diff --git a/frappe/www/edit_profile.py b/frappe/www/edit_profile.py deleted file mode 100644 index 0c816791c4..0000000000 --- a/frappe/www/edit_profile.py +++ /dev/null @@ -1,30 +0,0 @@ -# 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 - context.show_sidebar=True - -@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/www/me.html b/frappe/www/me.html index 9cd4479f6c..f7d37edf03 100644 --- a/frappe/www/me.html +++ b/frappe/www/me.html @@ -18,7 +18,7 @@
  • {{ _("Reset Password") }}
  • -
  • +
  • {{ _("Edit Profile") }}
  • @@ -46,4 +46,3 @@ {% endblock %} - diff --git a/frappe/www/profile.html b/frappe/www/profile.html index 5703f7588d..8a57e5f9a5 100644 --- a/frappe/www/profile.html +++ b/frappe/www/profile.html @@ -17,7 +17,7 @@
  • {{ _("Reset Password") }}
  • -
  • +
  • {{ _("Edit Profile") }}