From 38dc29120a2d14120dffe5cd337a6726a9ab9efe Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 23 Mar 2015 15:25:24 +0530 Subject: [PATCH 1/3] Fixed User Permissions for listing and report --- frappe/model/db_query.py | 2 +- frappe/permissions.py | 5 ++--- frappe/public/js/frappe/model/perm.js | 16 +++++++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 1df71f870b..19da8c4c38 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -248,7 +248,7 @@ class DatabaseQuery(object): # get user permissions user_permissions = frappe.defaults.get_user_permissions(self.user) self.add_user_permissions(user_permissions, - user_permission_doctypes=role_permissions.get("user_permission_doctypes")) + user_permission_doctypes=role_permissions.get("user_permission_doctypes").get("read")) if as_condition: conditions = "" diff --git a/frappe/permissions.py b/frappe/permissions.py index beb96087b5..31a1e2d275 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -93,10 +93,9 @@ def get_role_permissions(meta, user=None): perms["apply_user_permissions"][ptype] = (perms["apply_user_permissions"].get(ptype, 1) and p.get("apply_user_permissions")) - if p.apply_user_permissions: + if p.apply_user_permissions and p.user_permission_doctypes: # set user_permission_doctypes in perms - user_permission_doctypes = (json.loads(p.user_permission_doctypes) - if p.user_permission_doctypes else None) + user_permission_doctypes = json.loads(p.user_permission_doctypes) if user_permission_doctypes: # perms["user_permission_doctypes"][ptype] would be a list of list like [["User", "Blog Post"], ["User"]] diff --git a/frappe/public/js/frappe/model/perm.js b/frappe/public/js/frappe/model/perm.js index e203b39dfa..1c30c17d03 100644 --- a/frappe/public/js/frappe/model/perm.js +++ b/frappe/public/js/frappe/model/perm.js @@ -86,14 +86,20 @@ $.extend(frappe.perm, { if (permlevel===0 && cint(p.apply_user_permissions) && p.user_permission_doctypes) { // set user_permission_doctypes in perms - var user_permission_doctypes = p.user_permission_doctypes - ? JSON.parse(p.user_permission_doctypes) : null; + var user_permission_doctypes = JSON.parse(p.user_permission_doctypes); if (user_permission_doctypes && user_permission_doctypes.length) { if (!perm[permlevel]["user_permission_doctypes"]) { - perm[permlevel]["user_permission_doctypes"] = []; + perm[permlevel]["user_permission_doctypes"] = {}; } - perm[permlevel]["user_permission_doctypes"].push(user_permission_doctypes); + + $.each(frappe.perm.rights, function(i, key) { + if (!perm[permlevel]["user_permission_doctypes"][key]) { + perm[permlevel]["user_permission_doctypes"][key] = []; + } + + perm[permlevel]["user_permission_doctypes"][key].push(user_permission_doctypes); + }); } } } @@ -127,7 +133,7 @@ $.extend(frappe.perm, { var user_permissions = frappe.defaults.get_user_permissions(); if(user_permissions && !$.isEmptyObject(user_permissions)) { - var user_permission_doctypes = me.get_user_permission_doctypes(perm[0].user_permission_doctypes, + var user_permission_doctypes = me.get_user_permission_doctypes(perm[0].user_permission_doctypes[ptype], user_permissions); $.each(user_permission_doctypes, function(i, doctypes) { From 2d6fec5954acbcc057496467a789f66cd1e107fe Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 23 Mar 2015 16:07:23 +0530 Subject: [PATCH 2/3] File Manager: fixed unicode decode error --- frappe/app.py | 4 ++-- frappe/utils/file_manager.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/frappe/app.py b/frappe/app.py index 76018e391e..f8fed3b22a 100644 --- a/frappe/app.py +++ b/frappe/app.py @@ -143,11 +143,11 @@ def serve(port=8000, profile=False, site=None, sites_path='.'): if not os.environ.get('NO_STATICS'): application = SharedDataMiddleware(application, { - '/assets': os.path.join(sites_path, 'assets'), + b'/assets': os.path.join(sites_path, 'assets').encode("utf-8"), }) application = StaticDataMiddleware(application, { - '/files': os.path.abspath(sites_path) + b'/files': os.path.abspath(sites_path).encode("utf-8") }) run_simple('0.0.0.0', int(port), application, use_reloader=True, diff --git a/frappe/utils/file_manager.py b/frappe/utils/file_manager.py index 2e4f31e32f..e6a61789ed 100644 --- a/frappe/utils/file_manager.py +++ b/frappe/utils/file_manager.py @@ -6,7 +6,7 @@ import frappe import os, base64, re import hashlib import mimetypes -from frappe.utils import get_site_path, get_hook_method, get_files_path, random_string +from frappe.utils import get_site_path, get_hook_method, get_files_path, random_string, encode, cstr from frappe import _ from frappe import conf from copy import copy @@ -258,8 +258,11 @@ def get_content_hash(content): return hashlib.md5(content).hexdigest() def get_file_name(fname, optional_suffix): + # convert to unicode + fname = cstr(fname) + n_records = frappe.db.sql("select name from `tabFile Data` where file_name=%s", fname) - if len(n_records) > 0 or os.path.exists(get_files_path(fname).encode('utf-8')): + if len(n_records) > 0 or os.path.exists(encode(get_files_path(fname))): f = fname.rsplit('.', 1) if len(f) == 1: partial, extn = f[0], "" From 349577479e9d4d614211de0626ee72ece6dc290d Mon Sep 17 00:00:00 2001 From: Pratik Vyas Date: Mon, 23 Mar 2015 16:59:28 +0600 Subject: [PATCH 3/3] bumped to version 4.13.4 --- frappe/__version__.py | 2 +- frappe/hooks.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frappe/__version__.py b/frappe/__version__.py index 6800025a9e..515438b6a8 100644 --- a/frappe/__version__.py +++ b/frappe/__version__.py @@ -1,2 +1,2 @@ from __future__ import unicode_literals -__version__ = "4.13.3" +__version__ = "4.13.4" diff --git a/frappe/hooks.py b/frappe/hooks.py index 7efaea3270..c7adeb5ce2 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -4,7 +4,7 @@ app_title = "Frappe Framework" app_publisher = "Web Notes Technologies Pvt. Ltd." app_description = "Full Stack Web Application Framework in Python" app_icon = "assets/frappe/images/frappe.svg" -app_version = "4.13.3" +app_version = "4.13.4" app_color = "#3498db" app_email = "support@frappe.io" diff --git a/setup.py b/setup.py index c64e13ff99..af620767e4 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages import os -version = "4.13.3" +version = "4.13.4" with open("requirements.txt", "r") as f: install_requires = f.readlines()