Пример #1
0
def execute():
    docperm_meta = frappe.get_meta('DocPerm')
    for d in frappe.db.get_all('DocType', dict(istable=0, issingle=0,
                                               custom=0)):
        perms = frappe.get_all('DocPerm',
                               fields='*',
                               filters=dict(parent=d.name),
                               order_by='idx asc')

        # get default perms
        try:
            standard_perms = get_standard_permissions(d.name)
        except (IOError, KeyError):
            # no json file, doctype no longer exists!
            continue

        same = True
        if len(standard_perms) != len(perms):
            same = False

        else:
            for i, p in enumerate(perms):
                standard = standard_perms[i]
                for fieldname in docperm_meta.get_fieldnames_with_value():
                    if p.get(fieldname) != standard.get(fieldname):
                        same = False
                        break

                if not same:
                    break

        if not same:
            setup_custom_perms(d.name)
Пример #2
0
def setup_perms_for(doctype):
	perms = frappe.get_all("DocPerm", fields="*", filters=dict(parent=doctype), order_by="idx asc")
	# get default perms
	try:
		standard_perms = get_standard_permissions(doctype)
	except (IOError, KeyError):
		# no json file, doctype no longer exists!
		return

	same = True
	if len(standard_perms) != len(perms):
		same = False

	else:
		for i, p in enumerate(perms):
			standard = standard_perms[i]
			for fieldname in frappe.get_meta("DocPerm").get_fieldnames_with_value():
				if p.get(fieldname) != standard.get(fieldname):
					same = False
					break

			if not same:
				break

	if not same:
		setup_custom_perms(doctype)
Пример #3
0
def setup_perms_for(doctype):
	perms = frappe.get_all('DocPerm', fields='*', filters=dict(parent=doctype), order_by='idx asc')
	# get default perms
	try:
		standard_perms = get_standard_permissions(doctype)
	except (IOError, KeyError):
		# no json file, doctype no longer exists!
		return

	same = True
	if len(standard_perms) != len(perms):
		same = False

	else:
		for i, p in enumerate(perms):
			standard = standard_perms[i]
			for fieldname in frappe.get_meta('DocPerm').get_fieldnames_with_value():
				if p.get(fieldname) != standard.get(fieldname):
					same = False
					break

			if not same:
				break

	if not same:
		setup_custom_perms(doctype)
Пример #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)
Пример #5
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)
Пример #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)
def add(parent, role, permlevel):
    frappe.only_for("System Manager")
    setup_custom_perms(parent)

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

    validate_and_reset(parent)
Пример #8
0
def make_role_and_permissions():
    role_name = 'Bank Payments Manager'
    try:
        role = frappe.new_doc('Role')
        role.update({'role_name': role_name, 'desk_access': 1})
        role.save()
    except frappe.DuplicateEntryError:
        pass

    frappe.reload_doc('bank_integration', 'doctype',
                      'bank_integration_settings')
    setup_custom_perms('Bank Integration Settings')

    for doctype in ['Employee', 'Customer', 'Supplier', 'Payment Entry']:
        add_permission(doctype, role_name, 7)
        update_permission_property(doctype, role_name, 7, 'write', 1)

    frappe.db.commit()
Пример #9
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