Ejemplo n.º 1
0
def add_permission(doctype, role, permlevel=0, ptype=None):
    """Add a new permission rule to the given doctype
	for the given Role and Permission Level"""
    from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype

    setup_custom_perms(doctype)

    if frappe.db.get_value(
            "Custom DocPerm",
            dict(parent=doctype, role=role, permlevel=permlevel, if_owner=0)):
        return

    if not ptype:
        ptype = "read"

    custom_docperm = frappe.get_doc({
        "doctype": "Custom DocPerm",
        "__islocal": 1,
        "parent": doctype,
        "parenttype": "DocType",
        "parentfield": "permissions",
        "role": role,
        "permlevel": permlevel,
        ptype: 1,
    })

    custom_docperm.save()

    validate_permissions_for_doctype(doctype)
    return custom_docperm.name
Ejemplo n.º 2
0
def add_permission(doctype, role, permlevel=0):
    '''Add a new permission rule to the given doctype
		for the given Role and Permission Level'''
    from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype
    setup_custom_perms(doctype)

    if frappe.db.get_value(
            'Custom DocPerm',
            dict(parent=doctype, role=role, permlevel=permlevel, if_owner=0)):
        return

    custom_docperm = frappe.get_doc({
        "doctype": "Custom DocPerm",
        "__islocal": 1,
        "parent": doctype,
        "parenttype": "DocType",
        "parentfield": "permissions",
        "role": role,
        'read': 1,
        "permlevel": permlevel,
    })

    custom_docperm.save()

    validate_permissions_for_doctype(doctype)
Ejemplo n.º 3
0
def remove(doctype, role, permlevel):
	frappe.only_for("System Manager")
	setup_custom_perms(doctype)

	name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel))

	frappe.db.sql('delete from `tabCustom DocPerm` where name=%s', name)
	if not frappe.get_all('Custom DocPerm', dict(parent=doctype)):
		frappe.throw(_('There must be atleast one permission rule.'), title=_('Cannot Remove'))

	validate_permissions_for_doctype(doctype, for_remove=True)
Ejemplo n.º 4
0
def remove(doctype, role, permlevel):
	frappe.only_for("System Manager")
	setup_custom_perms(doctype)

	name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel))

	frappe.db.sql('delete from `tabCustom DocPerm` where name=%s', name)
	if not frappe.get_all('Custom DocPerm', dict(parent=doctype)):
		frappe.throw(_('There must be atleast one permission rule.'), title=_('Cannot Remove'))

	validate_permissions_for_doctype(doctype, for_remove=True)
Ejemplo n.º 5
0
def update_permission_property(doctype, role, permlevel, ptype, value=None, validate=True):
	'''Update a property in Custom Perm'''
	from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype
	out = setup_custom_perms(doctype)

	name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role,
		permlevel=permlevel))

	frappe.db.sql("""
		update `tabCustom DocPerm`
		set `{0}`=%s where name=%s""".format(ptype), (value, name))
	if validate:
		validate_permissions_for_doctype(doctype)

	return out
Ejemplo n.º 6
0
def remove(doctype, role, permlevel):
    frappe.only_for("System Manager")
    setup_custom_perms(doctype)

    frappe.db.delete("Custom DocPerm", {
        "parent": doctype,
        "role": role,
        "permlevel": permlevel
    })

    if not frappe.get_all('Custom DocPerm', {"parent": doctype}):
        frappe.throw(_('There must be atleast one permission rule.'),
                     title=_('Cannot Remove'))

    validate_permissions_for_doctype(doctype, for_remove=True, alert=True)
Ejemplo n.º 7
0
def update_permission_property(doctype, role, permlevel, ptype, value=None, validate=True):
	'''Update a property in Custom Perm'''
	from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype
	out = setup_custom_perms(doctype)

	name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role,
		permlevel=permlevel))

	frappe.db.sql("""
		update `tabCustom DocPerm`
		set `{0}`=%s where name=%s""".format(ptype), (value, name))
	if validate:
		validate_permissions_for_doctype(doctype)

	return out
Ejemplo n.º 8
0
def update(doctype, role, permlevel, ptype, value=None):
    frappe.only_for("System Manager")

    out = None
    if setup_custom_perms(doctype):
        out = 'refresh'

    name = frappe.get_value(
        'Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel))

    frappe.db.sql("""update `tabCustom DocPerm` set `%s`=%s where name=%s"""\
      % (frappe.db.escape(ptype), '%s', '%s'), (value, name))
    validate_permissions_for_doctype(doctype)

    return out
Ejemplo n.º 9
0
def update_permission_property(doctype,
                               role,
                               permlevel,
                               ptype,
                               value=None,
                               validate=True):
    """Update a property in Custom Perm"""
    from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype

    out = setup_custom_perms(doctype)

    name = frappe.get_value(
        "Custom DocPerm", dict(parent=doctype, role=role, permlevel=permlevel))

    table = DocType("Custom DocPerm")
    frappe.qb.update(table).set(ptype, value).where(table.name == name).run()

    if validate:
        validate_permissions_for_doctype(doctype)

    return out
Ejemplo n.º 10
0
def add_permission(doctype, role, permlevel=0):
	'''Add a new permission rule to the given doctype
		for the given Role and Permission Level'''
	from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype
	setup_custom_perms(doctype)

	if frappe.db.get_value('Custom DocPerm', dict(parent=doctype, role=role,
		permlevel=permlevel)):
		return

	custom_docperm = frappe.get_doc({
		"doctype":"Custom DocPerm",
		"__islocal": 1,
		"parent": doctype,
		"parenttype": "DocType",
		"parentfield": "permissions",
		"role": role,
		'read': 1,
		"permlevel": permlevel,
	})

	custom_docperm.save()

	validate_permissions_for_doctype(doctype)
Ejemplo n.º 11
0
def validate_and_reset(doctype, for_remove=False):
	from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype
	validate_permissions_for_doctype(doctype, for_remove)
	clear_doctype_cache(doctype)
def validate_and_reset(doctype, for_remove=False):
    from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype
    validate_permissions_for_doctype(doctype, for_remove)
    clear_doctype_cache(doctype)