Procházet zdrojové kódy

test: docshare with submit permission

version-14
Rucha Mahabal před 4 roky
rodič
revize
b3066f3702
3 změnil soubory, kde provedl 33 přidání a 5 odebrání
  1. +4
    -4
      frappe/automation/doctype/auto_repeat/test_auto_repeat.py
  2. +7
    -1
      frappe/core/doctype/docshare/docshare.py
  3. +22
    -0
      frappe/core/doctype/docshare/test_docshare.py

+ 4
- 4
frappe/automation/doctype/auto_repeat/test_auto_repeat.py Zobrazit soubor

@@ -196,7 +196,7 @@ def make_auto_repeat(**args):
return doc


def create_submittable_doctype(doctype):
def create_submittable_doctype(doctype, submit_perms=1):
if frappe.db.exists('DocType', doctype):
return
else:
@@ -217,9 +217,9 @@ def create_submittable_doctype(doctype):
'write': 1,
'create': 1,
'delete': 1,
'submit': 1,
'cancel': 1,
'amend': 1
'submit': submit_perms,
'cancel': submit_perms,
'amend': submit_perms
}]
}).insert()



+ 7
- 1
frappe/core/doctype/docshare/docshare.py Zobrazit soubor

@@ -5,7 +5,7 @@ from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe import _
from frappe.utils import get_fullname
from frappe.utils import get_fullname, cint

exclude_from_linked_with = True

@@ -15,6 +15,7 @@ class DocShare(Document):
def validate(self):
self.validate_user()
self.check_share_permission()
self.check_is_submittable()
self.cascade_permissions_downwards()
self.get_doc().run_method("validate_share", self)

@@ -41,6 +42,11 @@ class DocShare(Document):

frappe.throw(_('You need to have "Share" permission'), frappe.PermissionError)

def check_is_submittable(self):
if self.submit and not cint(frappe.db.get_value("DocType", self.share_doctype, "is_submittable")):
frappe.throw(_("Cannot share {0} with submit permission as the doctype {1} is not submittable").format(
frappe.bold(self.share_name), frppe.bold(self.share_doctype)))

def after_insert(self):
doc = self.get_doc()
owner = get_fullname(self.owner)


+ 22
- 0
frappe/core/doctype/docshare/test_docshare.py Zobrazit soubor

@@ -5,6 +5,7 @@ from __future__ import unicode_literals
import frappe
import frappe.share
import unittest
from frappe.automation.doctype.auto_repeat.test_auto_repeat import create_submittable_doctype

class TestDocShare(unittest.TestCase):
def setUp(self):
@@ -91,3 +92,24 @@ class TestDocShare(unittest.TestCase):
self.assertTrue(self.event.name not in frappe.share.get_shared("Event", self.user))
self.assertTrue(self.event.name not in frappe.share.get_shared("Event", "test1@example.com"))
self.assertTrue(self.event.name not in frappe.share.get_shared("Event", "Guest"))

def test_share_with_submit_perm(self):
doctype = "Test DocShare with Submit"
create_submittable_doctype(doctype, submit_perms=0)

submittable_doc = frappe.get_doc(dict(doctype=doctype, test="test docshare with submit")).insert()

frappe.set_user(self.user)
self.assertFalse(frappe.has_permission(doctype, "submit", user=self.user))

frappe.set_user("Administrator")
frappe.share.add(doctype, submittable_doc.name, self.user, submit=1)

frappe.set_user(self.user)
self.assertTrue(frappe.has_permission(doctype, "submit", doc=submittable_doc.name, user=self.user))

# test cascade
self.assertTrue(frappe.has_permission(doctype, "read", doc=submittable_doc.name, user=self.user))
self.assertTrue(frappe.has_permission(doctype, "write", doc=submittable_doc.name, user=self.user))

frappe.share.remove(doctype, submittable_doc.name, self.user)

Načítá se…
Zrušit
Uložit