Releases: vgrem/Office365-REST-Python-Client
Releases · vgrem/Office365-REST-Python-Client
v 2.5.10
v 2.5.9
Changelog
v 2.5.8
Changelog
- SharePoint resources addressing enhancements
- introduced methods for granting and revoking delegated & application permissions
Example 1: grant an app role to a client service principal
client = GraphClient.with_token_interactive(
tenant_name_or_id, app_client_id, admin_principal_name
)
resource = client.service_principals.get_by_name("Microsoft Graph")
app = client.applications.get_by_app_id(app_client_id)
resource.grant_application(app, "MailboxSettings.Read").execute_query()
Example 2: grant a delegated permission to the client service principal on behalf of a user
client = GraphClient.with_token_interactive(
tenant_name_or_id, app_client_id, admin_principal_name
)
resource = client.service_principals.get_by_name("Microsoft Graph")
app_role = "User.Read.All"
user = client.users.get_by_principal_name(test_user_principal_name)
resource.grant_delegated(app_client_id, user, app_role).execute_query()
v 2.5.7
Changelog
- #836: support for passing a passphrase in
ClientContext.with_client_certificate
method
Example:
cert_credentials = {
"tenant": tenant_name,
"client_id": client_id,
"thumbprint": cert_thumbprint,
"cert_path": "selfsignkeyenc.pem",
"passphrase": "Password",
}
ctx = ClientContext(site_url).with_client_certificate(**cert_credentials)
current_web = ctx.web.get().execute_query()
v 2.5.6
Changelog
- #693: support for folder coloring methods in SharePoint API
Example: create a folder with a color
ctx = ClientContext(site_url).with_credentials(user_credentials)
root_folder = ctx.web.default_document_library().root_folder
folder = root_folder.folders.add(
"archive", color_hex=FolderColors.DarkGreen
).execute_query()
v 2.5.5
Changelog
- #745: better support for Range in OneDrive API
Example: get Range
client = GraphClient.with_username_and_password(
tenant_name, client_id, username, password
)
drive_item = client.me.drive.root.get_by_path("Financial Report.xlsx")
worksheets = drive_item.workbook.worksheets.get().execute_query()
if len(worksheets) == 0:
sys.exit("No worksheets found")
worksheet_range = worksheets["Sheet1"].range(address="A1:B3").execute_query()
v 2.5.4
v 2.5.3
Changelog
- #791 fix: do not reuse same instance for recipient by @byenilmez
- #787 support for
file_name
parameter inFile.copyto
andFile.copyto_using_path
methods - #781: fix for ImportError: cannot import name 'TypedDict' from 'typing' on Python 3.7
- #764: fix for
parent_folder
andparent_collection
empty when retrieving file usingctx.web.get_file_by_server_relative_url
- #735 fix for 401 Client Error: Unauthorised for url on site property update
v 2.5.2
Changelog
- #762: Missing dependency typing_extensions on Python by @chludwig-haufe
- #764: file and folder addresing methods fixes
- #765: CI & Linting improvements and fixes by @kellerza
- #766: fix to share file with password
- #767: fix change token entity type namefix change token entity type name by @benediktziegler
- #768: documentation fixes by @TomPughe