Exemplo n.º 1
0
def create_folder(folder, parent):
    """Make sure the folder exists and return it's name."""
    new_folder_name = "/".join([parent, folder])

    if not frappe.db.exists("File", new_folder_name):
        create_new_folder(folder, parent)

    return new_folder_name
Exemplo n.º 2
0
def create_folder(folder, parent):
    """Make sure the folder exists and return it's name."""
    from frappe.core.doctype.file.file import create_new_folder
    try:
        create_new_folder(folder, parent)
    except frappe.DuplicateEntryError:
        pass

    return "/".join([parent, folder])
def create_folder(folder,parent):
    from frappe.core.doctype.file.file import create_new_folder
    new_folder_name="/".join([parent, folder])

    if not frappe.db.exists("File",new_folder_name):
        create_new_folder(folder,parent)


    return new_folder_name
Exemplo n.º 4
0
def create_folder(folder, parent):
    """Make sure the folder exists and return it's name."""
    from frappe.core.doctype.file.file import create_new_folder
    new_folder_name = "/".join([parent, folder])

    if not frappe.db.exists("File", new_folder_name):
        create_new_folder(folder, parent)

    return new_folder_name
Exemplo n.º 5
0
def after_install():
    if not frappe.get_all("File",
                          filters={
                              "folder": "Home",
                              "file_name": "Projects",
                              "is_folder": 1
                          },
                          limit=1):
        create_new_folder("Projects", "Home")

    frappe.db.commit()
Exemplo n.º 6
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')))
Exemplo n.º 7
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')
Exemplo n.º 8
0
def after_install():  # noqa: D103
    folder = 'Home/Attachments'
    foldername = 'FinTS'
    if not frappe.db.exists('File', {'name': "/".join([folder, foldername])}):
        create_new_folder(foldername, folder)
Exemplo n.º 9
0
 def test_create_new_folder(self):
     from frappe.core.doctype.file.file import create_new_folder
     folder = create_new_folder('test_folder', 'Home')
     self.assertTrue(folder.is_folder)
Exemplo n.º 10
0
def upload_document():
    docname = frappe.form_dict.docname
    fieldname = frappe.form_dict.folder

    validate_document_fieldname(fieldname)

    project_name, project_timeline, client_view = frappe.db.get_value(
        "Project Document", docname,
        ['parent', 'project_timeline', 'client_view'])

    check_project_user_permission(project_name)
    check_project_timeline_permission(project_timeline, 'write')
    check_client_view_permission(client_view)

    if not frappe.get_all("File",
                          filters={
                              "folder": "Home",
                              "file_name": "Projects",
                              "is_folder": 1
                          },
                          limit=1):
        create_new_folder("Projects", "Home")
    if not frappe.get_all("File",
                          filters={
                              "folder": "Home/Projects",
                              "file_name": project_name,
                              "is_folder": 1
                          },
                          limit=1):
        create_new_folder(project_name, "Home/Projects")
    if not frappe.get_all("File",
                          filters={
                              "folder":
                              "Home/Projects/{0}".format(project_name),
                              "file_name": "Attachments",
                              "is_folder": 1
                          },
                          limit=1):
        create_new_folder("Attachments",
                          "Home/Projects/{0}".format(project_name))

    file_doc = frappe.get_doc({
        "doctype":
        "File",
        "attached_to_doctype":
        "Project",
        "attached_to_name":
        project_name,
        "folder":
        'Home/Projects/{0}/Attachments'.format(project_name),
        "file_name":
        frappe.local.uploaded_filename,
        "file_url":
        frappe.form_dict.file_url,
        "is_private":
        1,
        "content":
        frappe.local.uploaded_file
    })
    file_doc.save()

    file_url = file_doc.file_url

    project = frappe.get_doc("Project", project_name)
    document_row = project.get("documents", filters={"name": docname})
    if not document_row:
        frappe.throw(_("Invalid Document Selected"))

    document_row = document_row[0]
    if document_row.get(fieldname):
        frappe.throw(_("Document is already uploaded"))

    document_row.set(fieldname, file_url)
    document_row.set(fieldname + "_date", frappe.utils.today())
    project.save()

    frappe.msgprint(
        _("{0} document {1} version {2} {3} has been successfully uploaded").
        format(document_row.project_timeline,
               frappe.bold(document_row.document_name),
               document_row.document_version, frappe.unscrub(fieldname)))

    return file_doc
Exemplo n.º 11
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')))
Exemplo n.º 12
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')