importargparseimportsysfromoffice365.sharepoint.client_contextimportClientContextfromoffice365.sharepoint.sitescripts.utilityimportSiteScriptUtilityfromtests.settingsimportclient_id,password,site_url,tenant,usernamedefmain():parser=argparse.ArgumentParser(description="Grant site design rights to a principal")parser.add_argument("--design-id",required=True,help="site design id")parser.add_argument("--principal",required=True,help="principal to grant rights to (e.g. user@contoso.com)")args=parser.parse_args()ctx=ClientContext(site_url).with_username_and_password(tenant=tenant,client_id=client_id,username=username,password=password)designs=SiteScriptUtility.get_site_designs(ctx).execute_query()target=next((dfordindesigns.valueifstr(d.Id)==args.design_id),None)iftargetisNone:sys.exit(f"Site design not found: {args.design_id}")SiteScriptUtility.grant_site_design_rights(ctx,str(target.Id),[args.principal],1,# 1 = View).execute_query()print(f"Rights granted on '{target.Title}' to {args.principal}")principals=SiteScriptUtility.get_site_design_rights(ctx,str(target.Id)).execute_query()print("Current principals:")forpinprincipals:print(f" {p.properties.get('PrincipalName','')}")if__name__=="__main__":main()