@@ -7,7 +7,9 @@ import frappe | |||||
from frappe.model.document import Document | from frappe.model.document import Document | ||||
class CustomRole(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): | def get_custom_allowed_roles(field, name): | ||||
allowed_roles = [] | allowed_roles = [] | ||||
@@ -49,7 +49,7 @@ class Report(Document): | |||||
delete_custom_role('report', self.name) | delete_custom_role('report', self.name) | ||||
def set_doctype_roles(self): | def set_doctype_roles(self): | ||||
if not self.roles: | |||||
if not self.get('roles'): | |||||
meta = frappe.get_meta(self.ref_doctype) | meta = frappe.get_meta(self.ref_doctype) | ||||
roles = [{'role': d.role} for d in meta.permissions if d.permlevel==0] | roles = [{'role': d.role} for d in meta.permissions if d.permlevel==0] | ||||
self.set('roles', roles) | self.set('roles', roles) | ||||
@@ -73,7 +73,8 @@ class CustomField(Document): | |||||
@frappe.whitelist() | @frappe.whitelist() | ||||
def get_fields_label(doctype=None): | 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): | def create_custom_field_if_values_exist(doctype, df): | ||||
df = frappe._dict(df) | df = frappe._dict(df) | ||||
@@ -86,6 +86,11 @@ def update_user_name(args): | |||||
first_name, last_name = first_name.split(' ', 1) | first_name, last_name = first_name.split(' ', 1) | ||||
if args.get("email"): | if args.get("email"): | ||||
if frappe.db.exists('User', args.get('email')): | |||||
# running again | |||||
return | |||||
args['name'] = args.get("email") | args['name'] = args.get("email") | ||||
_mute_emails, frappe.flags.mute_emails = frappe.flags.mute_emails, True | _mute_emails, frappe.flags.mute_emails = frappe.flags.mute_emails, True | ||||
@@ -9,6 +9,7 @@ import os, json | |||||
from frappe import _ | from frappe import _ | ||||
from frappe.modules import scrub, get_module_path | from frappe.modules import scrub, get_module_path | ||||
from frappe.utils import flt, cint, get_html_format, cstr | from frappe.utils import flt, cint, get_html_format, cstr | ||||
from frappe.model.utils import render_include | |||||
from frappe.translate import send_translations | from frappe.translate import send_translations | ||||
import frappe.desk.reportview | import frappe.desk.reportview | ||||
from frappe.permissions import get_role_permissions | 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)) | send_translations(frappe.get_lang_dict("report", report_name)) | ||||
return { | return { | ||||
"script": script, | |||||
"script": render_include(script), | |||||
"html_format": html_format | "html_format": html_format | ||||
} | } | ||||
@@ -61,3 +61,20 @@ def render_include(content): | |||||
break | break | ||||
return content | 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 |
@@ -16,7 +16,7 @@ def get_user_settings(doctype, for_update=False): | |||||
if not for_update: | if not for_update: | ||||
update_user_settings(doctype, user_settings, True) | update_user_settings(doctype, user_settings, True) | ||||
return user_settings or '{}' | return user_settings or '{}' | ||||
def update_user_settings(doctype, user_settings, for_update=False): | def update_user_settings(doctype, user_settings, for_update=False): | ||||