Bladeren bron

fix: add flags to set_permission for docshares (#18416) (#18429)

* add flags to set_permission for docshares

* refactor: don't expose flags to client side

* fix add_docshare

* style: black formatting

[skip ci]

Co-authored-by: Leonard Goertz <leonard.goertz@noventive.com>
Co-authored-by: Ankush Menat <ankush@frappe.io>
(cherry picked from commit cfbab92249)

Co-authored-by: Leonard Goertz <49870752+uepselon@users.noreply.github.com>
version-14
mergify[bot] 2 jaren geleden
committed by GitHub
bovenliggende
commit
a2ba0aac19
Geen bekende sleutel gevonden voor deze handtekening in de database GPG sleutel-ID: 4AEE18F83AFDEB23
2 gewijzigde bestanden met toevoegingen van 27 en 4 verwijderingen
  1. +1
    -1
      frappe/core/doctype/user/user.py
  2. +26
    -3
      frappe/share.py

+ 1
- 1
frappe/core/doctype/user/user.py Bestand weergeven

@@ -237,7 +237,7 @@ class User(Document):
)

def share_with_self(self):
frappe.share.add(
frappe.share.add_docshare(
self.doctype, self.name, self.name, write=1, share=1, flags={"ignore_share_permission": True}
)



+ 26
- 3
frappe/share.py Bestand weergeven

@@ -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)



Laden…
Annuleren
Opslaan