Office365-rest-python-client: рд╡рд┐рд╢реЗрд╖рддрд╛ рддреНрд░реБрдЯрд┐: 'рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ '_auth_context'

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рджрд┐рд╕ре░ 2020  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: vgrem/Office365-REST-Python-Client

рд╡рд░реНрддрдорд╛рди рдореЗрдВ Office365-REST-Python-Client==2.3.0.1 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдЬрдм рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ:

def upload_to_sharepoint():
    url = 'https://tenant.sharepoint.com/sites/sitename'

    credentials = {
        'client_id': os.environ.get('client_id'),
        'client_secret': os.environ.get('client_secret'),
    }
    context_auth = AuthenticationContext(url=url)
    context_auth.acquire_token_for_app(client_id=credentials['client_id'],
                                       client_secret=credentials['client_secret'])
    ctx = ClientContext(url, context_auth)
    web = ctx.web
    ctx.load(web)

    file_name = f"vat check {datetime.now().strftime('%Y-%m-%d')}"
    path = os.path.join("/tmp", file_name)

    with open(path, 'rb') as content_file:
        file_content = content_file.read()

    list_title = "VAT Check"
    target_folder = ctx.web.lists.get_by_title(list_title).rootFolder
    # name = os.path.basename(path)
    target_file = target_folder.upload_file(file_name, file_content)
    ctx.execute_query()
    print(f"File url: {target_file.serverRelativeUrl}")

рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ, рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ, рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ?

AttributeError: 'ClientContext' object has no attribute '_auth_context'

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╡рд╣ рддреЗрдЬрд╝ рдерд╛, рдзрдиреНрдпрд╡рд╛рдж @vgrem рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред

рдЕрднрд┐рд╡рд╛рджрди,

рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! AuthenticationContext рдореЗрдВ рдЧреБрдЬрд░рддреЗ рд╕рдордп рдЦреЛ рдЬрд╛рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдирд┐рдХрд▓рддрд╛ рд╣реИ ClientContext ред

рджреВрд╕рд░реА рдУрд░, рдЪреВрдВрдХрд┐ AuthenticationContext.acquire_token_for_app рдХреЛ рдЖрдЬрдХрд▓ _deprecated_ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк (_recommended_) рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

context_auth = AuthenticationContext(url=url)
context_auth.acquire_token_for_app(client_id=credentials['client_id'],
                                       client_secret=credentials['client_secret'])
ctx = ClientContext(url, context_auth)

рдЬрд╛рдВрдЪ

credentials = ClientCredential(credentials['client_id'], credentials['client_secret'])
ctx = ClientContext(settings['url']).with_credentials(credentials)

рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЕрдкрдирд╛ рдкреИрдХреЗрдЬ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: pip install --upgrade Office365-REST-Python-Client @spurthikaribasaiah

рд╣рд╛рдп @erfannariman рдФрд░ @vgrem ,

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдЦреЛрдЬреЗрдВред рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдкрд┐рдк рдЗрдВрд╕реНрдЯрд╛рд▓ --рдЕрдкрдЧреНрд░реЗрдб рдкрд┐рдк
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ Office365-REST-Python-Client
рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ --рдЕрдкрдЧреНрд░реЗрдб Office365-REST-Python-Client

Office365.runtime.auth.authentication_context рд╕реЗ рдЖрдпрд╛рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рд╕рдВрдЧ
Office365 рд╕реЗ.sharepoint.client_context рдЖрдпрд╛рдд ClientContext

ctx_auth = рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЙрдиреНрдЯреЗрдХреНрд╕реНрдЯ (рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ_рд╕рд╛рдЗрдЯрдпреВрдЖрд░рдПрд▓)
ctx_auth.acquire_token_for_user(рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдкрд╛рд╕)
ctx = ClientContext (Sharepoint_SiteUrl, ctx_auth)
рд╡реЗрдм = ctx.web
рд╕реАрдЯреАрдПрдХреНрд╕.рд▓реЛрдб (рд╡реЗрдм)
ctx.execute_query ()
рдкреНрд░рд┐рдВрдЯ ("рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рдлрд▓")

image

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

domdinicola picture domdinicola  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Bachatero picture Bachatero  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

spurthikaribasaiah picture spurthikaribasaiah  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oktorok picture oktorok  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

haimat picture haimat  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ