Пример #1
0
	def test_clear_user_permissions(self):
		current_user = frappe.session.user
		frappe.set_user('Administrator')
		clear_user_permissions_for_doctype('Blog Category', '*****@*****.**')
		clear_user_permissions_for_doctype('Blog Post', '*****@*****.**')

		add_user_permission('Blog Post', '-test-blog-post-1', '*****@*****.**')
		add_user_permission('Blog Post', '-test-blog-post-2', '*****@*****.**')
		add_user_permission("Blog Category", '_Test Blog Category 1', '*****@*****.**')

		deleted_user_permission_count = clear_user_permissions('*****@*****.**', 'Blog Post')

		self.assertEqual(deleted_user_permission_count, 2)

		blog_post_user_permission_count = frappe.db.count('User Permission', filters={
			'user': '******',
			'allow': 'Blog Post'
		})

		self.assertEqual(blog_post_user_permission_count, 0)

		blog_category_user_permission_count = frappe.db.count('User Permission', filters={
			'user': '******',
			'allow': 'Blog Category'
		})

		self.assertEqual(blog_category_user_permission_count, 1)

		# reset the user
		frappe.set_user(current_user)
Пример #2
0
	def test_block_list(self):
		self._clear_roles()

		from frappe.utils.user import add_role
		add_role("*****@*****.**", "HR User")
		add_role("*****@*****.**", "Leave Approver")
		clear_user_permissions_for_doctype("Employee")

		frappe.db.set_value("Department", "_Test Department",
			"leave_block_list", "_Test Leave Block List")
			
		make_allocation_record()

		application = self.get_application(_test_records[0])
		application.insert()
		application.status = "Approved"
		self.assertRaises(LeaveDayBlockedError, application.submit)

		frappe.set_user("*****@*****.**")

		# clear other applications
		frappe.db.sql("delete from `tabLeave Application`")

		application = self.get_application(_test_records[0])
		self.assertTrue(application.insert())
Пример #3
0
	def test_nested_permission(self):
		clear_user_permissions_for_doctype("File")
		delete_test_file_hierarchy() # delete already existing folders
		from frappe.core.doctype.file.file import create_new_folder
		frappe.set_user('Administrator')

		create_new_folder('level1-A', 'Home')
		create_new_folder('level2-A', 'Home/level1-A')
		create_new_folder('level2-B', 'Home/level1-A')
		create_new_folder('level3-A', 'Home/level1-A/level2-A')

		create_new_folder('level1-B', 'Home')
		create_new_folder('level2-A', 'Home/level1-B')

		# user permission for only one root folder
		add_user_permission('File', 'Home/level1-A', '*****@*****.**')

		from frappe.core.page.permission_manager.permission_manager import update
		update('File', 'All', 0, 'if_owner', 0) # to avoid if_owner filter

		frappe.set_user('*****@*****.**')
		data = DatabaseQuery("File").execute()

		# children of root folder (for which we added user permission) should be accessible
		self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)

		# other folders should not be accessible
		self.assertFalse({"name": "Home/level1-B"} in data)
		self.assertFalse({"name": "Home/level1-B/level2-B"} in data)
		update('File', 'All', 0, 'if_owner', 1)
		frappe.set_user('Administrator')
Пример #4
0
	def test_build_match_conditions(self):
		clear_user_permissions_for_doctype('Blog Post', '*****@*****.**')

		test2user = frappe.get_doc('User', '*****@*****.**')
		test2user.add_roles('Blogger')
		frappe.set_user('*****@*****.**')

		# this will get match conditions for Blog Post
		build_match_conditions = DatabaseQuery('Blog Post').build_match_conditions

		# Before any user permission is applied
		# get as filters
		self.assertEqual(build_match_conditions(as_condition=False), [])
		# get as conditions
		self.assertEqual(build_match_conditions(as_condition=True), "")

		add_user_permission('Blog Post', '-test-blog-post', '*****@*****.**', True)
		add_user_permission('Blog Post', '-test-blog-post-1', '*****@*****.**', True)

		# After applying user permission
		# get as filters
		self.assertTrue({'Blog Post': ['-test-blog-post-1', '-test-blog-post']} in build_match_conditions(as_condition=False))
		# get as conditions
		self.assertEqual(build_match_conditions(as_condition=True),
			"""(((ifnull(`tabBlog Post`.`name`, "")="" or `tabBlog Post`.`name` in ("-test-blog-post-1", "-test-blog-post"))))""")

		frappe.set_user('Administrator')
Пример #5
0
	def tearDown(self):
		frappe.set_user("Administrator")
		frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None)

		clear_user_permissions_for_doctype("Blog Category")
		clear_user_permissions_for_doctype("Blog Post")
		clear_user_permissions_for_doctype("Blogger")
		clear_user_permissions_for_doctype("Contact")
		clear_user_permissions_for_doctype("Salutation")

		reset('Blogger')
		reset('Blog Post')
		reset('Contact')
		reset('Salutation')

		self.set_ignore_user_permissions_if_missing(0)
Пример #6
0
	def tearDown(self):
		frappe.set_user("Administrator")
		frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None)

		clear_user_permissions_for_doctype("Blog Category")
		clear_user_permissions_for_doctype("Blog Post")
		clear_user_permissions_for_doctype("Blogger")
Пример #7
0
    def test_strict_user_permissions(self):
        """If `Strict User Permissions` is checked in System Settings,
			show records even if User Permissions are missing for a linked
			doctype"""

        frappe.set_user('Administrator')
        frappe.db.sql('delete from tabContact')

        reset('Salutation')
        reset('Contact')

        make_test_records_for_doctype('Contact', force=True)

        add_user_permission("Salutation", "Mr", "*****@*****.**")
        self.set_strict_user_permissions(0)

        allowed_contact = frappe.get_doc('Contact',
                                         '_Test Contact for _Test Customer')
        other_contact = frappe.get_doc('Contact',
                                       '_Test Contact for _Test Supplier')

        frappe.set_user("*****@*****.**")
        self.assertTrue(allowed_contact.has_permission('read'))
        self.assertTrue(other_contact.has_permission('read'))
        self.assertEqual(len(frappe.get_list("Contact")), 2)

        frappe.set_user("Administrator")
        self.set_strict_user_permissions(1)

        frappe.set_user("*****@*****.**")
        self.assertTrue(allowed_contact.has_permission('read'))
        self.assertFalse(other_contact.has_permission('read'))
        self.assertTrue(len(frappe.get_list("Contact")), 1)

        frappe.set_user("Administrator")
        self.set_strict_user_permissions(0)

        clear_user_permissions_for_doctype("Salutation")
        clear_user_permissions_for_doctype("Contact")
Пример #8
0
    def test_clear_user_permissions(self):
        current_user = frappe.session.user
        frappe.set_user('Administrator')
        clear_user_permissions_for_doctype('Blog Category',
                                           '*****@*****.**')
        clear_user_permissions_for_doctype('Blog Post', '*****@*****.**')

        add_user_permission('Blog Post', '-test-blog-post-1',
                            '*****@*****.**')
        add_user_permission('Blog Post', '-test-blog-post-2',
                            '*****@*****.**')
        add_user_permission("Blog Category", '-test-blog-category-1',
                            '*****@*****.**')

        deleted_user_permission_count = clear_user_permissions(
            '*****@*****.**', 'Blog Post')

        self.assertEqual(deleted_user_permission_count, 2)

        blog_post_user_permission_count = frappe.db.count(
            'User Permission',
            filters={
                'user': '******',
                'allow': 'Blog Post'
            })

        self.assertEqual(blog_post_user_permission_count, 0)

        blog_category_user_permission_count = frappe.db.count(
            'User Permission',
            filters={
                'user': '******',
                'allow': 'Blog Category'
            })

        self.assertEqual(blog_category_user_permission_count, 1)

        # reset the user
        frappe.set_user(current_user)
Пример #9
0
    def test_block_list(self):
        self._clear_roles()

        from frappe.utils.user import add_role
        add_role("*****@*****.**", "HR User")
        add_role("*****@*****.**", "Leave Approver")
        clear_user_permissions_for_doctype("Employee")

        frappe.db.set_value("Department", "_Test Department",
                            "leave_block_list", "_Test Leave Block List")

        application = self.get_application(_test_records[0])
        application.insert()
        application.status = "Approved"
        self.assertRaises(LeaveDayBlockedError, application.submit)

        frappe.set_user("*****@*****.**")

        # clear other applications
        frappe.db.sql("delete from `tabLeave Application`")

        application = self.get_application(_test_records[0])
        self.assertTrue(application.insert())
Пример #10
0
	def test_strict_user_permissions(self):
		"""If `Strict User Permissions` is checked in System Settings,
			show records even if User Permissions are missing for a linked
			doctype"""

		frappe.set_user('Administrator')
		frappe.db.sql('delete from tabContact')

		reset('Salutation')
		reset('Contact')

		make_test_records_for_doctype('Contact', force=True)

		add_user_permission("Salutation", "Mr", "*****@*****.**")
		self.set_strict_user_permissions(0)

		allowed_contact = frappe.get_doc('Contact', '_Test Contact for _Test Customer')
		other_contact = frappe.get_doc('Contact', '_Test Contact for _Test Supplier')

		frappe.set_user("*****@*****.**")
		self.assertTrue(allowed_contact.has_permission('read'))
		self.assertTrue(other_contact.has_permission('read'))
		self.assertEqual(len(frappe.get_list("Contact")), 2)

		frappe.set_user("Administrator")
		self.set_strict_user_permissions(1)

		frappe.set_user("*****@*****.**")
		self.assertTrue(allowed_contact.has_permission('read'))
		self.assertFalse(other_contact.has_permission('read'))
		self.assertTrue(len(frappe.get_list("Contact")), 1)

		frappe.set_user("Administrator")
		self.set_strict_user_permissions(0)

		clear_user_permissions_for_doctype("Salutation")
		clear_user_permissions_for_doctype("Contact")
Пример #11
0
	def tearDown(self):
		frappe.set_user("Administrator")
		frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None)
		clear_user_permissions_for_doctype("Blog Category")
		clear_user_permissions_for_doctype("Blog Post")
		clear_user_permissions_for_doctype("Blogger")
		frappe.db.sql("""update `tabDocPerm` set user_permission_doctypes=null
			where parent='Blog Post' and permlevel=0 and apply_user_permissions=1
			and `read`=1""")
Пример #12
0
    def tearDown(self):
        frappe.set_user("Administrator")
        frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None)
        clear_user_permissions_for_doctype("Blog Category")
        clear_user_permissions_for_doctype("Blog Post")
        clear_user_permissions_for_doctype("Blogger")
        frappe.db.sql("""update `tabDocPerm` set user_permission_doctypes=null
			where parent='Blog Post' and permlevel=0 and apply_user_permissions=1
			and `read`=1""")
Пример #13
0
def add_role_from_array(arr_user, arr_all_user, role_name):
    #check arr_user
    if arr_user != "":
        objUser = ast.literal_eval(arr_user)
        for _user in objUser:
            user = frappe.get_doc("User", _user)
            if not frappe.db.exists("Has Role", {
                    "parent": user.name,
                    "role": role_name
            }):
                user.add_roles(role_name)
            if (role_name == "HR Manager"):
                clear_user_permissions_for_doctype("Employee", user.name)

    #check for arr_all_user
    if arr_all_user != "":
        objAllUser = ast.literal_eval(arr_all_user)
        for _user1 in objAllUser:
            user1 = frappe.get_doc("User", _user1)
            if frappe.db.exists("Has Role", {
                    "parent": user1.name,
                    "role": role_name
            }):
                user1.remove_roles(role_name)
Пример #14
0
	def tearDown(self):
		frappe.set_user("Administrator")
		frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None)

		clear_user_permissions_for_doctype("Blog Category")
		clear_user_permissions_for_doctype("Blog Post")
		clear_user_permissions_for_doctype("Blogger")

		reset('Blogger')
		reset('Blog Post')

		self.set_ignore_user_permissions_if_missing(0)
Пример #15
0
    def test_of_not_of_descendant_ancestors(self):
        clear_user_permissions_for_doctype("File")
        delete_test_file_hierarchy()  # delete already existing folders
        from frappe.core.doctype.file.file import create_new_folder

        create_new_folder('level1-A', 'Home')
        create_new_folder('level2-A', 'Home/level1-A')
        create_new_folder('level2-B', 'Home/level1-A')
        create_new_folder('level3-A', 'Home/level1-A/level2-A')

        create_new_folder('level1-B', 'Home')
        create_new_folder('level2-A', 'Home/level1-B')

        # in descendants filter
        data = frappe.get_all(
            'File', {'name': ('descendants of', 'Home/level1-A/level2-A')})
        self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)

        data = frappe.get_all('File',
                              {'name': ('descendants of', 'Home/level1-A')})
        self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
        self.assertFalse({"name": "Home/level1-B"} in data)
        self.assertFalse({"name": "Home/level1-A"} in data)
        self.assertFalse({"name": "Home"} in data)

        # in ancestors of filter
        data = frappe.get_all(
            'File', {'name': ('ancestors of', 'Home/level1-A/level2-A')})
        self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertFalse({"name": "Home/level1-A/level2-A"} in data)
        self.assertFalse({"name": "Home/level1-A/level2-B"} in data)
        self.assertFalse({"name": "Home/level1-B"} in data)
        self.assertTrue({"name": "Home/level1-A"} in data)
        self.assertTrue({"name": "Home"} in data)

        data = frappe.get_all('File',
                              {'name': ('ancestors of', 'Home/level1-A')})
        self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertFalse({"name": "Home/level1-A/level2-A"} in data)
        self.assertFalse({"name": "Home/level1-A/level2-B"} in data)
        self.assertFalse({"name": "Home/level1-B"} in data)
        self.assertFalse({"name": "Home/level1-A"} in data)
        self.assertTrue({"name": "Home"} in data)

        # not descendants filter
        data = frappe.get_all(
            'File', {'name': ('not descendants of', 'Home/level1-A/level2-A')})
        self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
        self.assertTrue({"name": "Home/level1-A"} in data)
        self.assertTrue({"name": "Home"} in data)

        data = frappe.get_all(
            'File', {'name': ('not descendants of', 'Home/level1-A')})
        self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertFalse({"name": "Home/level1-A/level2-A"} in data)
        self.assertFalse({"name": "Home/level1-A/level2-B"} in data)
        self.assertTrue({"name": "Home/level1-B"} in data)
        self.assertTrue({"name": "Home/level1-A"} in data)
        self.assertTrue({"name": "Home"} in data)

        # not ancestors of filter
        data = frappe.get_all(
            'File', {'name': ('not ancestors of', 'Home/level1-A/level2-A')})
        self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
        self.assertTrue({"name": "Home/level1-B"} in data)
        self.assertTrue({"name": "Home/level1-A"} not in data)
        self.assertTrue({"name": "Home"} not in data)

        data = frappe.get_all('File',
                              {'name': ('not ancestors of', 'Home/level1-A')})
        self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
        self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
        self.assertTrue({"name": "Home/level1-B"} in data)
        self.assertTrue({"name": "Home/level1-A"} in data)
        self.assertFalse({"name": "Home"} in data)

        data = frappe.get_all('File', {'name': ('ancestors of', 'Home')})
        self.assertTrue(len(data) == 0)
        self.assertTrue(
            len(frappe.get_all('File', {'name': (
                'not ancestors of', 'Home')})) == len(frappe.get_all('File')))
Пример #16
0
	def test_of_not_of_descendant_ancestors(self):
		clear_user_permissions_for_doctype("File")
		delete_test_file_hierarchy() # delete already existing folders
		from frappe.core.doctype.file.file import create_new_folder

		create_new_folder('level1-A', 'Home')
		create_new_folder('level2-A', 'Home/level1-A')
		create_new_folder('level2-B', 'Home/level1-A')
		create_new_folder('level3-A', 'Home/level1-A/level2-A')

		create_new_folder('level1-B', 'Home')
		create_new_folder('level2-A', 'Home/level1-B')

		# in descendants filter
		data = frappe.get_all('File', {'name': ('descendants of', 'Home/level1-A/level2-A')})
		self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)

		data = frappe.get_all('File', {'name': ('descendants of', 'Home/level1-A')})
		self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
		self.assertFalse({"name": "Home/level1-B"} in data)
		self.assertFalse({"name": "Home/level1-A"} in data)
		self.assertFalse({"name": "Home"} in data)

		# in ancestors of filter
		data = frappe.get_all('File', {'name': ('ancestors of', 'Home/level1-A/level2-A')})
		self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertFalse({"name": "Home/level1-A/level2-A"} in data)
		self.assertFalse({"name": "Home/level1-A/level2-B"} in data)
		self.assertFalse({"name": "Home/level1-B"} in data)
		self.assertTrue({"name": "Home/level1-A"} in data)
		self.assertTrue({"name": "Home"} in data)

		data = frappe.get_all('File', {'name': ('ancestors of', 'Home/level1-A')})
		self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertFalse({"name": "Home/level1-A/level2-A"} in data)
		self.assertFalse({"name": "Home/level1-A/level2-B"} in data)
		self.assertFalse({"name": "Home/level1-B"} in data)
		self.assertFalse({"name": "Home/level1-A"} in data)
		self.assertTrue({"name": "Home"} in data)

		# not descendants filter
		data = frappe.get_all('File', {'name': ('not descendants of', 'Home/level1-A/level2-A')})
		self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
		self.assertTrue({"name": "Home/level1-A"} in data)
		self.assertTrue({"name": "Home"} in data)

		data = frappe.get_all('File', {'name': ('not descendants of', 'Home/level1-A')})
		self.assertFalse({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertFalse({"name": "Home/level1-A/level2-A"} in data)
		self.assertFalse({"name": "Home/level1-A/level2-B"} in data)
		self.assertTrue({"name": "Home/level1-B"} in data)
		self.assertTrue({"name": "Home/level1-A"} in data)
		self.assertTrue({"name": "Home"} in data)

		# not ancestors of filter
		data = frappe.get_all('File', {'name': ('not ancestors of', 'Home/level1-A/level2-A')})
		self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
		self.assertTrue({"name": "Home/level1-B"} in data)
		self.assertTrue({"name": "Home/level1-A"} not in data)
		self.assertTrue({"name": "Home"} not in data)

		data = frappe.get_all('File', {'name': ('not ancestors of', 'Home/level1-A')})
		self.assertTrue({"name": "Home/level1-A/level2-A/level3-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-A"} in data)
		self.assertTrue({"name": "Home/level1-A/level2-B"} in data)
		self.assertTrue({"name": "Home/level1-B"} in data)
		self.assertTrue({"name": "Home/level1-A"} in data)
		self.assertFalse({"name": "Home"} in data)

		data = frappe.get_all('File', {'name': ('ancestors of', 'Home')})
		self.assertTrue(len(data) == 0)
		self.assertTrue(len(frappe.get_all('File', {'name': ('not ancestors of', 'Home')})) == len(frappe.get_all('File')))
Пример #17
0
    def test_of_not_of_descendant_ancestors(self):
        frappe.set_user("Administrator")
        clear_user_permissions_for_doctype("Nested DocType")

        # in descendants filter
        data = frappe.get_all("Nested DocType",
                              {"name": ("descendants of", "Level 2 A")})
        self.assertTrue({"name": "Level 3 A"} in data)

        data = frappe.get_all("Nested DocType",
                              {"name": ("descendants of", "Level 1 A")})
        self.assertTrue({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertFalse({"name": "Level 2 B"} in data)
        self.assertFalse({"name": "Level 1 B"} in data)
        self.assertFalse({"name": "Level 1 A"} in data)
        self.assertFalse({"name": "Root"} in data)

        # in ancestors of filter
        data = frappe.get_all("Nested DocType",
                              {"name": ("ancestors of", "Level 2 A")})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertFalse({"name": "Level 2 A"} in data)
        self.assertFalse({"name": "Level 2 B"} in data)
        self.assertFalse({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        data = frappe.get_all("Nested DocType",
                              {"name": ("ancestors of", "Level 1 A")})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertFalse({"name": "Level 2 A"} in data)
        self.assertFalse({"name": "Level 2 B"} in data)
        self.assertFalse({"name": "Level 1 B"} in data)
        self.assertFalse({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        # not descendants filter
        data = frappe.get_all("Nested DocType",
                              {"name": ("not descendants of", "Level 2 A")})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        data = frappe.get_all("Nested DocType",
                              {"name": ("not descendants of", "Level 1 A")})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertFalse({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        # not ancestors of filter
        data = frappe.get_all("Nested DocType",
                              {"name": ("not ancestors of", "Level 2 A")})
        self.assertTrue({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} not in data)
        self.assertTrue({"name": "Root"} not in data)

        data = frappe.get_all("Nested DocType",
                              {"name": ("not ancestors of", "Level 1 A")})
        self.assertTrue({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertFalse({"name": "Root"} in data)

        data = frappe.get_all("Nested DocType",
                              {"name": ("ancestors of", "Root")})
        self.assertTrue(len(data) == 0)
        self.assertTrue(
            len(
                frappe.get_all(
                    "Nested DocType", {"name": (
                        "not ancestors of",
                        "Root")})) == len(frappe.get_all("Nested DocType")))
Пример #18
0
    def test_of_not_of_descendant_ancestors(self):
        frappe.set_user('Administrator')
        clear_user_permissions_for_doctype('Nested DocType')

        # in descendants filter
        data = frappe.get_all('Nested DocType',
                              {'name': ('descendants of', 'Level 2 A')})
        self.assertTrue({"name": "Level 3 A"} in data)

        data = frappe.get_all('Nested DocType',
                              {'name': ('descendants of', 'Level 1 A')})
        self.assertTrue({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertFalse({"name": "Level 2 B"} in data)
        self.assertFalse({"name": "Level 1 B"} in data)
        self.assertFalse({"name": "Level 1 A"} in data)
        self.assertFalse({"name": "Root"} in data)

        # in ancestors of filter
        data = frappe.get_all('Nested DocType',
                              {'name': ('ancestors of', 'Level 2 A')})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertFalse({"name": "Level 2 A"} in data)
        self.assertFalse({"name": "Level 2 B"} in data)
        self.assertFalse({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        data = frappe.get_all('Nested DocType',
                              {'name': ('ancestors of', 'Level 1 A')})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertFalse({"name": "Level 2 A"} in data)
        self.assertFalse({"name": "Level 2 B"} in data)
        self.assertFalse({"name": "Level 1 B"} in data)
        self.assertFalse({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        # not descendants filter
        data = frappe.get_all('Nested DocType',
                              {'name': ('not descendants of', 'Level 2 A')})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        data = frappe.get_all('Nested DocType',
                              {'name': ('not descendants of', 'Level 1 A')})
        self.assertFalse({"name": "Level 3 A"} in data)
        self.assertFalse({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertTrue({"name": "Root"} in data)

        # not ancestors of filter
        data = frappe.get_all('Nested DocType',
                              {'name': ('not ancestors of', 'Level 2 A')})
        self.assertTrue({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} not in data)
        self.assertTrue({"name": "Root"} not in data)

        data = frappe.get_all('Nested DocType',
                              {'name': ('not ancestors of', 'Level 1 A')})
        self.assertTrue({"name": "Level 3 A"} in data)
        self.assertTrue({"name": "Level 2 A"} in data)
        self.assertTrue({"name": "Level 2 B"} in data)
        self.assertTrue({"name": "Level 1 B"} in data)
        self.assertTrue({"name": "Level 1 A"} in data)
        self.assertFalse({"name": "Root"} in data)

        data = frappe.get_all('Nested DocType',
                              {'name': ('ancestors of', 'Root')})
        self.assertTrue(len(data) == 0)
        self.assertTrue(
            len(
                frappe.get_all(
                    'Nested DocType', {'name': (
                        'not ancestors of',
                        'Root')})) == len(frappe.get_all('Nested DocType')))
Пример #19
0
 def tearDown(self):
     frappe.set_user("Administrator")
     frappe.db.set_value("Blogger", "_Test Blogger 1", "user", None)
     clear_user_permissions_for_doctype("Blog Category")
     clear_user_permissions_for_doctype("Blog Post")
     clear_user_permissions_for_doctype("Blogger")