|
|
@@ -13,7 +13,22 @@ from frappe.utils import cint |
|
|
|
|
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|
def add( |
|
|
|
def add(doctype, name, user=None, read=1, write=0, submit=0, share=0, everyone=0, notify=0): |
|
|
|
"""Expose function without flags to the client-side""" |
|
|
|
return add_docshare( |
|
|
|
doctype, |
|
|
|
name, |
|
|
|
user=user, |
|
|
|
read=read, |
|
|
|
write=write, |
|
|
|
submit=submit, |
|
|
|
share=share, |
|
|
|
everyone=everyone, |
|
|
|
notify=notify, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
def add_docshare( |
|
|
|
doctype, name, user=None, read=1, write=0, submit=0, share=0, everyone=0, flags=None, notify=0 |
|
|
|
): |
|
|
|
"""Share the given document with a user.""" |
|
|
@@ -66,21 +81,29 @@ def remove(doctype, name, user, flags=None): |
|
|
|
|
|
|
|
@frappe.whitelist() |
|
|
|
def set_permission(doctype, name, user, permission_to, value=1, everyone=0): |
|
|
|
"""Expose function without flags to the client-side""" |
|
|
|
set_docshare_permission(doctype, name, user, permission_to, value=value, everyone=everyone) |
|
|
|
|
|
|
|
|
|
|
|
def set_docshare_permission(doctype, name, user, permission_to, value=1, everyone=0, flags=None): |
|
|
|
"""Set share permission.""" |
|
|
|
check_share_permission(doctype, name) |
|
|
|
if not (flags or {}).get("ignore_share_permission"): |
|
|
|
check_share_permission(doctype, name) |
|
|
|
|
|
|
|
share_name = get_share_name(doctype, name, user, everyone) |
|
|
|
value = int(value) |
|
|
|
|
|
|
|
if not share_name: |
|
|
|
if value: |
|
|
|
share = add(doctype, name, user, everyone=everyone, **{permission_to: 1}) |
|
|
|
share = add_docshare(doctype, name, user, everyone=everyone, **{permission_to: 1}, flags=flags) |
|
|
|
else: |
|
|
|
# no share found, nothing to remove |
|
|
|
share = {} |
|
|
|
pass |
|
|
|
else: |
|
|
|
share = frappe.get_doc("DocShare", share_name) |
|
|
|
if flags: |
|
|
|
share.flags.update(flags) |
|
|
|
share.flags.ignore_permissions = True |
|
|
|
share.set(permission_to, value) |
|
|
|
|
|
|
|