From 6a725d6c953c893ee4f12839b145edcb0c7235bd Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Thu, 22 Jun 2017 16:26:08 +0530 Subject: [PATCH] [cleanups] --- frappe/core/doctype/custom_role/custom_role.py | 4 +++- frappe/core/doctype/report/report.py | 2 +- .../custom/doctype/custom_field/custom_field.py | 3 ++- frappe/desk/page/setup_wizard/setup_wizard.py | 5 +++++ frappe/desk/query_report.py | 3 ++- frappe/model/utils/__init__.py | 17 +++++++++++++++++ frappe/model/utils/user_settings.py | 2 +- 7 files changed, 31 insertions(+), 5 deletions(-) diff --git a/frappe/core/doctype/custom_role/custom_role.py b/frappe/core/doctype/custom_role/custom_role.py index 2e183bc205..25257e1a23 100644 --- a/frappe/core/doctype/custom_role/custom_role.py +++ b/frappe/core/doctype/custom_role/custom_role.py @@ -7,7 +7,9 @@ import frappe from frappe.model.document import Document class CustomRole(Document): - pass + def validate(self): + if self.report and not self.ref_doctype: + self.ref_doctype = frappe.db.get_value('Report', self.report, 'ref_doctype') def get_custom_allowed_roles(field, name): allowed_roles = [] diff --git a/frappe/core/doctype/report/report.py b/frappe/core/doctype/report/report.py index c5fa61dfdf..6151890183 100644 --- a/frappe/core/doctype/report/report.py +++ b/frappe/core/doctype/report/report.py @@ -49,7 +49,7 @@ class Report(Document): delete_custom_role('report', self.name) def set_doctype_roles(self): - if not self.roles: + if not self.get('roles'): meta = frappe.get_meta(self.ref_doctype) roles = [{'role': d.role} for d in meta.permissions if d.permlevel==0] self.set('roles', roles) diff --git a/frappe/custom/doctype/custom_field/custom_field.py b/frappe/custom/doctype/custom_field/custom_field.py index 7265cee8a6..57ea7a2b0b 100644 --- a/frappe/custom/doctype/custom_field/custom_field.py +++ b/frappe/custom/doctype/custom_field/custom_field.py @@ -73,7 +73,8 @@ class CustomField(Document): @frappe.whitelist() def get_fields_label(doctype=None): - return [{"value": df.fieldname or "", "label": _(df.label or "")} for df in frappe.get_meta(doctype).get("fields")] + return [{"value": df.fieldname or "", "label": _(df.label or "")} + for df in frappe.get_meta(doctype).get("fields")] def create_custom_field_if_values_exist(doctype, df): df = frappe._dict(df) diff --git a/frappe/desk/page/setup_wizard/setup_wizard.py b/frappe/desk/page/setup_wizard/setup_wizard.py index dcc9e2bcd8..9a11894ce0 100755 --- a/frappe/desk/page/setup_wizard/setup_wizard.py +++ b/frappe/desk/page/setup_wizard/setup_wizard.py @@ -86,6 +86,11 @@ def update_user_name(args): first_name, last_name = first_name.split(' ', 1) if args.get("email"): + if frappe.db.exists('User', args.get('email')): + # running again + return + + args['name'] = args.get("email") _mute_emails, frappe.flags.mute_emails = frappe.flags.mute_emails, True diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index 6f353388da..6b74bcc80f 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -9,6 +9,7 @@ import os, json from frappe import _ from frappe.modules import scrub, get_module_path from frappe.utils import flt, cint, get_html_format, cstr +from frappe.model.utils import render_include from frappe.translate import send_translations import frappe.desk.reportview from frappe.permissions import get_role_permissions @@ -55,7 +56,7 @@ def get_script(report_name): send_translations(frappe.get_lang_dict("report", report_name)) return { - "script": script, + "script": render_include(script), "html_format": html_format } diff --git a/frappe/model/utils/__init__.py b/frappe/model/utils/__init__.py index 217ad47a54..c795ae2159 100644 --- a/frappe/model/utils/__init__.py +++ b/frappe/model/utils/__init__.py @@ -61,3 +61,20 @@ def render_include(content): break return content + +def get_fetch_values(doctype, fieldname, value): + '''Returns fetch value dict for the given object + + :param doctype: Target doctype + :param fieldname: Link fieldname selected + :param value: Value selected + ''' + out = {} + meta = frappe.get_meta(doctype) + link_df = meta.get_field(fieldname) + for df in meta.get_fields_to_fetch(fieldname): + # example shipping_address.gistin + link_field, source_fieldname = df.options.split('.', 1) + out[df.fieldname] = frappe.db.get_value(link_df.options, value, source_fieldname) + + return out diff --git a/frappe/model/utils/user_settings.py b/frappe/model/utils/user_settings.py index 86498fc507..1034334049 100644 --- a/frappe/model/utils/user_settings.py +++ b/frappe/model/utils/user_settings.py @@ -16,7 +16,7 @@ def get_user_settings(doctype, for_update=False): if not for_update: update_user_settings(doctype, user_settings, True) - + return user_settings or '{}' def update_user_settings(doctype, user_settings, for_update=False):