File tree Expand file tree Collapse file tree 2 files changed +47
-0
lines changed
examples/sharepoint/folders
office365/sharepoint/webs Expand file tree Collapse file tree 2 files changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ from settings import settings
2
+
3
+ from office365 .runtime .auth .user_credential import UserCredential
4
+ from office365 .sharepoint .client_context import ClientContext
5
+
6
+ credentials = UserCredential (settings ['user_credentials' ]['username' ],
7
+ settings ['user_credentials' ]['password' ])
8
+ ctx = ClientContext (settings ['url' ]).with_credentials (credentials )
9
+
10
+ # create one folder only
11
+ target_folder = "/Shared Documents/test_folder"
12
+ target_folder = ctx .web .get_folder_by_server_relative_url (target_folder )
13
+ target_folder .add ("new_folder" )
14
+ ctx .execute_query () # have to execute
15
+
16
+ # create relative folder tree, no execution required
17
+ target_folder = "/Shared Documents/test_folder/20201116/1133/test"
18
+ target_folder = ctx .web .create_folder_tree (target_folder )
19
+
20
+
21
+
22
+
23
+
Original file line number Diff line number Diff line change
1
+ import os
2
+
1
3
from office365 .runtime .client_result import ClientResult
2
4
from office365 .runtime .client_value_collection import ClientValueCollection
3
5
from office365 .runtime .queries .client_query import ClientQuery
@@ -189,11 +191,33 @@ def get_folder_by_server_relative_url(self, url):
189
191
"""Returns the folder object located at the specified server-relative URL.
190
192
:type url: str
191
193
"""
194
+ if url .startswith ("/" ):
195
+ url = url [1 :]
196
+
192
197
return Folder (
193
198
self .context ,
194
199
ResourcePathServiceOperation ("getFolderByServerRelativeUrl" , [url ], self .resource_path )
195
200
)
196
201
202
+ def create_folder_tree (self , url ):
203
+ """
204
+ Function to create folder tree
205
+ :type url: string
206
+ :param url: relative server URL
207
+ """
208
+
209
+ url_component = os .path .normpath (url ).split (os .path .sep )
210
+ url_component = [part for part in url_component if part ] # ensure no empty elements
211
+ if not url_component :
212
+ raise NotADirectoryError ("Wrong relative URL provided" )
213
+
214
+ folder = self .get_folder_by_server_relative_url (url_component [0 ])
215
+ for url_part in url_component [1 :]:
216
+ folder = folder .add (url_part )
217
+
218
+ self .context .execute_query () # need to execute now, otherwise folders are created in "after_execute_query"
219
+ return folder
220
+
197
221
def ensure_user (self , login_name ):
198
222
"""Checks whether the specified logon name belongs to a valid user of the website, and if the logon name does
199
223
not already exist, adds it to the website.
You can’t perform that action at this time.
0 commit comments