Skip to content

Commit 29f2349

Browse files
committed
Folder.get_folders() method, typings improvements for SharePoint API
1 parent c07cc19 commit 29f2349

File tree

30 files changed

+274
-210
lines changed

30 files changed

+274
-210
lines changed

examples/onedrive/drives/list.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
from tests.graph_case import acquire_token_by_client_credentials
88

99
client = GraphClient(acquire_token_by_client_credentials)
10-
drives = client.drives.get().top(10).execute_query()
10+
drives = client.drives.get().top(100).execute_query()
1111
for drive in drives:
1212
print("Drive url: {0}".format(drive.web_url))

examples/sharepoint/files/permissions/assign.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,10 @@
1212
client = ClientContext(test_team_site_url).with_credentials(test_client_credentials)
1313
file_url = "Shared Documents/report #123.csv"
1414

15-
# Step 1: retrieve objects
16-
role_def = client.web.role_definitions.get_by_type(
17-
RoleType.Contributor
18-
) # address role by type
19-
user = client.web.site_users.get_by_email(
20-
test_user_principal_name_alt
21-
) # address user by email
22-
target_file = client.web.get_file_by_server_relative_path(
23-
file_url
24-
) # address file by relative url
2515

26-
# Step 2: to assign a custom permissions to a file
16+
role_def = client.web.role_definitions.get_by_type(RoleType.Contributor)
17+
user = client.web.site_users.get_by_principal_name(test_user_principal_name_alt)
18+
target_file = client.web.get_file_by_server_relative_path(file_url)
19+
20+
# assign a custom permissions for the user to a file
2721
target_file.listItemAllFields.add_role_assignment(user, role_def).execute_query()

examples/sharepoint/folders/get_props.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""
2-
Get Folder properties
2+
Gets Folder properties
33
"""
44
from office365.sharepoint.client_context import ClientContext
55
from tests import test_client_credentials, test_team_site_url
Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,15 @@
1-
from typing import Callable
1+
"""
2+
Demonstrates how to enumerate a folder
3+
"""
24

35
from office365.sharepoint.client_context import ClientContext
4-
from office365.sharepoint.folders.folder import Folder
56
from tests import test_client_credentials, test_team_site_url
67

78
ctx = ClientContext(test_team_site_url).with_credentials(test_client_credentials)
8-
9-
10-
def enum_folder(parent_folder, action):
11-
# type: (Folder, Callable[[Folder], None]) -> None
12-
parent_folder.expand(["Folders"]).get().execute_query()
13-
action(parent_folder)
14-
for folder in parent_folder.folders:
15-
enum_folder(folder, action)
16-
17-
18-
def print_folder_stat(folder):
19-
# type: (Folder) -> None
20-
print(folder.serverRelativeUrl)
21-
print(folder.time_created)
22-
23-
24-
root_folder = ctx.web.default_document_library().root_folder
25-
enum_folder(root_folder, print_folder_stat)
9+
folders = (
10+
ctx.web.default_document_library().root_folder.get_folders(True).execute_query()
11+
)
12+
for folder in folders:
13+
print(
14+
"Url: {0}, Created: {1}".format(folder.serverRelativeUrl, folder.time_created)
15+
)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
"""
2+
Demonstrates how to enumerate a folder
3+
"""
4+
from typing import Callable
5+
6+
from office365.sharepoint.client_context import ClientContext
7+
from office365.sharepoint.folders.folder import Folder
8+
from tests import test_client_credentials, test_team_site_url
9+
10+
11+
def enum_folder(parent_folder, action):
12+
# type: (Folder, Callable[[Folder], None]) -> None
13+
parent_folder.expand(["Folders"]).get().execute_query()
14+
action(parent_folder)
15+
for folder in parent_folder.folders:
16+
enum_folder(folder, action)
17+
18+
19+
def print_folder_stat(folder):
20+
# type: (Folder) -> None
21+
print(folder.serverRelativeUrl)
22+
print(folder.time_created)
23+
24+
25+
ctx = ClientContext(test_team_site_url).with_credentials(test_client_credentials)
26+
root_folder = ctx.web.default_document_library().root_folder
27+
enum_folder(root_folder, print_folder_stat)

examples/sharepoint/groups/add_remove_user.py renamed to examples/sharepoint/groups/add_remove.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""
22
Adds and removes site group
3-
43
"""
54
from office365.sharepoint.client_context import ClientContext
65
from tests import create_unique_name, test_password, test_site_url, test_username
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
"""
2+
Expands group to a collection of principals.
3+
"""
4+
from office365.sharepoint.client_context import ClientContext
5+
from tests import test_client_id, test_client_secret, test_team_site_url
6+
7+
ctx = ClientContext(test_team_site_url).with_client_credentials(
8+
test_client_id, test_client_secret
9+
)
10+
11+
result = ctx.web.associated_member_group.expand_to_principals(100).execute_query()
12+
for principal_info in result.value:
13+
print(principal_info)
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
"""
2-
Export the top navigation
2+
Prints the top navigation
33
"""
4-
import json
54

65
from office365.sharepoint.client_context import ClientContext
76
from tests import test_client_credentials, test_team_site_url
87

98
ctx = ClientContext(test_team_site_url).with_credentials(test_client_credentials)
109
nav = ctx.web.navigation.top_navigation_bar.get().execute_query()
11-
print(json.dumps(nav.to_json(), indent=4))
10+
for item in nav:
11+
print(item)
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
"""
2-
Returns the user permissions for the list.
2+
Returns the user permissions for the list/lib.
33
"""
44
from office365.sharepoint.client_context import ClientContext
55
from tests import test_client_credentials, test_team_site_url
66

77
ctx = ClientContext(test_team_site_url).with_credentials(test_client_credentials)
88
doc_lib = ctx.web.default_document_library()
99
result = doc_lib.get_user_effective_permissions(ctx.web.current_user).execute_query()
10-
print(result.value.permission_levels)
10+
for perm_level in result.value:
11+
print(perm_level)
Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
"""
2-
Demonstrates how to retrieve site groups along with users
2+
Returns the user permissions for the site
33
"""
4+
from pprint import pprint
5+
46
from office365.sharepoint.client_context import ClientContext
57
from tests import test_client_credentials, test_team_site_url
68

79
ctx = ClientContext(test_team_site_url).with_credentials(test_client_credentials)
8-
9-
site_groups = ctx.web.site_groups.expand(["Users"]).get().execute_query()
10-
for g in site_groups:
11-
print("Group name: {0}".format(g.login_name))
12-
for u in g.users:
13-
print("User name: {0}".format(u.login_name))
10+
result = ctx.web.get_user_effective_permissions(ctx.web.current_user).execute_query()
11+
pprint(result.value.permission_levels)

0 commit comments

Comments
 (0)