def get_roles_and_doctypes(): dataent.only_for("System Manager") send_translations(dataent.get_lang_dict("doctype", "DocPerm")) active_domains = dataent.get_active_domains() doctypes = dataent.get_all("DocType", filters={ "istable": 0, "name": ("not in", ",".join(not_allowed_in_permission_manager)), }, or_filters={ "ifnull(restrict_to_domain, '')": "", "restrict_to_domain": ("in", active_domains) }, fields=["name"]) roles = dataent.get_all("Role", filters={ "name": ("not in", "Administrator"), "disabled": 0, }, or_filters={ "ifnull(restrict_to_domain, '')": "", "restrict_to_domain": ("in", active_domains) }, fields=["name"]) doctypes_list = [ {"label":_(d.get("name")), "value":d.get("name")} for d in doctypes] roles_list = [ {"label":_(d.get("name")), "value":d.get("name")} for d in roles] return { "doctypes": sorted(doctypes_list, key=lambda d: d['label']), "roles": sorted(roles_list, key=lambda d: d['label']) }
def get_js(items): '''Load JS code files. Will also append translations and extend `dataent._messages` :param items: JSON list of paths of the js files to be loaded.''' items = json.loads(items) out = [] for src in items: src = src.strip("/").split("/") if ".." in src or src[0] != "assets": dataent.throw(_("Invalid file path: {0}").format("/".join(src))) contentpath = os.path.join(dataent.local.sites_path, *src) with open(contentpath, "r") as srcfile: code = dataent.utils.cstr(srcfile.read()) if dataent.local.lang != "en": messages = dataent.get_lang_dict("jsfile", contentpath) messages = json.dumps(messages) code += "\n\n$.extend(dataent._messages, {})".format(messages) out.append(code) return out
def get_script(report_name): report = get_report_doc(report_name) module = report.module or dataent.db.get_value( "DocType", report.ref_doctype, "module") module_path = get_module_path(module) report_folder = os.path.join(module_path, "report", scrub(report.name)) script_path = os.path.join(report_folder, scrub(report.name) + ".js") print_path = os.path.join(report_folder, scrub(report.name) + ".html") script = None if os.path.exists(script_path): with open(script_path, "r") as f: script = f.read() html_format = get_html_format(print_path) if not script and report.javascript: script = report.javascript if not script: script = "dataent.query_reports['%s']={}" % report_name # load translations if dataent.lang != "en": send_translations(dataent.get_lang_dict("report", report_name)) return { "script": render_include(script), "html_format": html_format, "execution_time": dataent.cache().hget('report_execution_time', report_name) or 0 }
def set_translations(self, lang): self.set("__messages", dataent.get_lang_dict("doctype", self.name)) # set translations for grid templates if self.get("__form_grid_templates"): for content in self.get("__form_grid_templates").values(): messages = extract_messages_from_code(content) messages = make_dict_from_messages(messages) self.get("__messages").update(messages, as_value=True)
def getpage(): """ Load the page from `dataent.form` and send it via `dataent.response` """ page = dataent.form_dict.get('name') doc = get(page) # load translations if dataent.lang != "en": send_translations(dataent.get_lang_dict("page", page)) dataent.response.docs.append(doc)
def load_translations(bootinfo): messages = dataent.get_lang_dict("boot") bootinfo["lang"] = dataent.lang # load translated report names for name in bootinfo.user.all_reports: messages[name] = dataent._(name) # only untranslated messages = {k: v for k, v in iteritems(messages) if k != v} bootinfo["__messages"] = messages