예제 #1
0
def load_messages(language):
	frappe.clear_cache()
	set_default_language(language)
	m = get_dict("page", "setup-wizard")
	m.update(get_dict("boot"))
	send_translations(m)
	return frappe.local.lang
예제 #2
0
def get_roles_and_doctypes():
    frappe.only_for("System Manager")
    send_translations(frappe.get_lang_dict("doctype", "DocPerm"))

    active_domains = frappe.get_active_domains()

    doctypes = frappe.get_all("DocType",
                              filters={
                                  "istable": 0,
                                  "name": ("not in", "DocType"),
                              },
                              or_filters={
                                  "ifnull(restrict_to_domain, '')": "",
                                  "restrict_to_domain": ("in", active_domains)
                              },
                              fields=["name"])

    roles = frappe.get_all("Role",
                           filters={
                               "name": ("not in", "Administrator"),
                               "disabled": 0,
                           },
                           or_filters={
                               "ifnull(restrict_to_domain, '')": "",
                               "restrict_to_domain": ("in", active_domains)
                           },
                           fields=["name"])

    return {
        "doctypes": [d.get("name") for d in doctypes],
        "roles": [d.get("name") for d in roles]
    }
예제 #3
0
def get_roles_and_doctypes():
	frappe.only_for("System Manager")
	send_translations(frappe.get_lang_dict("doctype", "DocPerm"))

	active_domains = frappe.get_active_domains()

	doctypes = frappe.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 = frappe.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'])
	}
예제 #4
0
def get_roles_and_doctypes():
	frappe.only_for("System Manager")
	send_translations(frappe.get_lang_dict("doctype", "DocPerm"))

	active_domains = frappe.get_active_domains()

	doctypes = frappe.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 = frappe.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'])
	}
예제 #5
0
def get_script(report_name):
	report = get_report_doc(report_name)

	module = report.module or frappe.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 = "frappe.query_reports['%s']={}" % report_name

	# load translations
	if frappe.lang != "en":
		send_translations(frappe.get_lang_dict("report", report_name))

	return {
		"script": script,
		"html_format": html_format
	}
예제 #6
0
def load_messages(language):
	frappe.clear_cache()
	lang = get_lang_dict()[language]
	frappe.local.lang = lang
	m = get_dict("page", "setup-wizard")
	m.update(get_dict("boot"))
	send_translations(m)
	return lang
예제 #7
0
def load_messages(language):
	frappe.clear_cache()
	lang = get_lang_dict()[language]
	frappe.local.lang = lang
	m = get_dict("page", "setup-wizard")
	m.update(get_dict("boot"))
	send_translations(m)
	return lang
def get_roles_and_doctypes():
	frappe.only_for("System Manager")
	send_translations(frappe.get_lang_dict("doctype", "DocPerm"))
	return {
		"doctypes": [d[0] for d in frappe.db.sql("""select name from `tabDocType` dt where
			istable=0 and name not in ('DocType')""")],
		"roles": [d[0] for d in frappe.db.sql("""select name from tabRole where
			name != 'Administrator' and disabled=0""")]
	}
예제 #9
0
def get_roles_and_doctypes():
	frappe.only_for("System Manager")
	send_translations(frappe.get_lang_dict("doctype", "DocPerm"))
	return {
		"doctypes": [d[0] for d in frappe.db.sql("""select name from `tabDocType` dt where
			ifnull(istable,0)=0 and
			name not in ('DocType') and
			exists(select * from `tabDocField` where parent=dt.name)""")],
		"roles": [d[0] for d in frappe.db.sql("""select name from tabRole where name not in
			('Guest', 'Administrator')""")]
	}
예제 #10
0
파일: desk_page.py 프로젝트: frappe/frappe
def getpage():
    """
	   Load the page from `frappe.form` and send it via `frappe.response`
	"""
    page = frappe.form_dict.get("name")
    doc = get(page)

    # load translations
    if frappe.lang != "en":
        send_translations(frappe.get_lang_dict("page", page))

    frappe.response.docs.append(doc)
예제 #11
0
파일: desk_page.py 프로젝트: tmimori/frappe
def getpage():
    """
	   Load the page from `frappe.form` and send it via `frappe.response`
	"""
    page = frappe.form_dict.get('name')
    doc = get(page)

    # load translations
    if frappe.lang != "en":
        send_translations(frappe.get_lang_dict("page", page))

    frappe.response.docs.append(doc)
예제 #12
0
def get_roles_and_doctypes():
    frappe.only_for("System Manager")
    send_translations(frappe.get_lang_dict("doctype", "DocPerm"))

    active_domains = frappe.get_active_domains()

    doctypes = frappe.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"])

    restricted_roles = ['Administrator']
    if frappe.session.user != 'Administrator':
        custom_user_type_roles = frappe.get_all('User Type',
                                                filters={'is_standard': 0},
                                                fields=['role'])
        for row in custom_user_type_roles:
            restricted_roles.append(row.role)

        restricted_roles.append('All')

    roles = frappe.get_all("Role",
                           filters={
                               "name": ("not in", restricted_roles),
                               "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'])
    }
예제 #13
0
def get_roles_and_doctypes():
	if frappe.local.site_path.split('/')[1] == 'demo.tailorpad.com' and frappe.session.user!='Administrator':
		return None
	frappe.only_for("System Manager")
	send_translations(frappe.get_lang_dict("doctype", "DocPerm"))
	return {
		"doctypes": [d[0] for d in frappe.db.sql("""select name from `tabDocType` dt where
			ifnull(istable,0)=0 and
			name not in ('DocType') and
			exists(select * from `tabDocField` where parent=dt.name)""")],
		"roles": [d[0] for d in frappe.db.sql("""select name from tabRole where name not in
			('Guest', 'Administrator')""")]
	}
def load_messages(language):
	"""Load translation messages for given language from all `setup_wizard_requires`
	javascript files"""
	frappe.clear_cache()
	set_default_language(get_language_code(language))
	m = get_dict("page", "setup-wizard")

	for path in frappe.get_hooks("setup_wizard_requires"):
		# common folder `assets` served from `sites/`
		js_file_path = os.path.abspath(frappe.get_site_path("..", *path.strip("/").split("/")))
		m.update(get_dict("jsfile", js_file_path))

	m.update(get_dict("boot"))
	send_translations(m)
	return frappe.local.lang
def get_roles_and_doctypes():
    frappe.only_for("System Manager")
    send_translations(frappe.get_lang_dict("doctype", "DocPerm"))
    return {
        "doctypes": [
            d[0]
            for d in frappe.db.sql("""select name from `tabDocType` dt where
			ifnull(istable,0)=0 and
			name not in ('DocType') and
			exists(select * from `tabDocField` where parent=dt.name)""")
        ],
        "roles": [
            d[0] for d in frappe.db.sql(
                """select name from tabRole where name not in
			('Guest', 'Administrator')""")
        ]
    }
예제 #16
0
def get_roles_and_doctypes():
    frappe.only_for("System Manager")
    send_translations(frappe.get_lang_dict("doctype", "DocPerm"))
    return {
        "doctypes": [
            d[0]
            for d in frappe.db.sql("""select name from `tabDocType` dt where
			istable=0 and
			name not in ('DocType') and
			exists(select * from `tabDocField` where parent=dt.name) and
			exists(select * from `tabDocPerm` dp,`tabRole` role where dp.role = role.name and dp.parent=dt.name and not role.disabled)"""
                                   )
        ],
        "roles": [
            d[0] for d in frappe.db.sql("""select name from tabRole where
			name != 'Administrator' and disabled=0""")
        ]
    }
예제 #17
0
def get_script(report_name):
    report = get_report_doc(report_name)
    module = report.module or frappe.db.get_value("DocType",
                                                  report.ref_doctype, "module")

    is_custom_module = frappe.get_cached_value("Module Def", module, "custom")

    # custom modules are virtual modules those exists in DB but not in disk.
    module_path = '' if is_custom_module else get_module_path(module)
    report_folder = module_path and os.path.join(module_path, "report",
                                                 scrub(report.name))
    script_path = report_folder and os.path.join(report_folder,
                                                 scrub(report.name) + ".js")
    print_path = report_folder and 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()
            script += f"\n\n//# sourceURL={scrub(report.name)}.js"

    html_format = get_html_format(print_path)

    if not script and report.javascript:
        script = report.javascript
        script += f"\n\n//# sourceURL={scrub(report.name)}__custom"

    if not script:
        script = "frappe.query_reports['%s']={}" % report_name

    # load translations
    if frappe.lang != "en":
        send_translations(frappe.get_lang_dict("report", report_name))

    return {
        "script":
        render_include(script),
        "html_format":
        html_format,
        "execution_time":
        frappe.cache().hget("report_execution_time", report_name) or 0,
    }
예제 #18
0
def search(text, start=0, limit=20, doctype=""):
    """
	Search for given text in __global_search
	:param text: phrase to be searched
	:param start: start results at, default 0
	:param limit: number of results to return, default 20
	:return: Array of result objects
	"""
    from frappe.desk.doctype.global_search_settings.global_search_settings import get_doctypes_for_global_search

    results = []
    sorted_results = []

    allowed_doctypes = get_doctypes_for_global_search()

    for text in set(text.split('&')):
        text = text.strip()
        if not text:
            continue

        conditions = '1=1'
        offset = ''

        mariadb_text = frappe.db.escape('+' + text + '*')

        mariadb_fields = '`doctype`, `name`, `content`, MATCH (`content`) AGAINST ({} IN BOOLEAN MODE) AS rank'.format(
            mariadb_text)
        postgres_fields = '`doctype`, `name`, `content`, TO_TSVECTOR("content") @@ PLAINTO_TSQUERY({}) AS rank'.format(
            frappe.db.escape(text))

        values = {}

        if doctype:
            conditions = '`doctype` = %(doctype)s'
            values['doctype'] = doctype
        elif allowed_doctypes:
            conditions = '`doctype` IN %(allowed_doctypes)s'
            values['allowed_doctypes'] = tuple(allowed_doctypes)

        if int(start) > 0:
            offset = 'OFFSET {}'.format(start)

        common_query = """
				SELECT {fields}
				FROM `__global_search`
				WHERE {conditions}
				ORDER BY rank DESC
				LIMIT {limit}
				{offset}
			"""

        result = frappe.db.multisql(
            {
                'mariadb':
                common_query.format(fields=mariadb_fields,
                                    conditions=conditions,
                                    limit=limit,
                                    offset=offset),
                'postgres':
                common_query.format(fields=postgres_fields,
                                    conditions=conditions,
                                    limit=limit,
                                    offset=offset)
            },
            values=values,
            as_dict=True)

        results.extend(result)

    if frappe.flags.translated_doctypes is None:
        frappe.flags.translated_doctypes = []  # Faster for smaller lists

    # sort results based on allowed_doctype's priority
    for doctype in allowed_doctypes:
        for index, r in enumerate(results):
            if r.doctype == doctype and r.rank > 0.0:
                try:
                    meta = frappe.get_meta(r.doctype)
                    if meta.image_field:
                        r.image = frappe.db.get_value(r.doctype, r.name,
                                                      meta.image_field)
                    if doctype not in frappe.flags.translated_doctypes:
                        frappe.flags.translated_doctypes.append(doctype)
                        send_translations(
                            frappe.get_lang_dict("doctype", doctype))
                except Exception:
                    frappe.clear_messages()

                sorted_results.extend([r])

    return sorted_results