Skip to content

Apply a site design asynchronously to a target site.

Reference

View source

import argparse
import sys

from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.sitescripts.utility import SiteScriptUtility
from tests.settings import client_id, password, site_url, tenant, username


def main():
    parser = argparse.ArgumentParser(description="Apply a site design to a site")
    parser.add_argument("--site-url", default=site_url, help="target site URL")
    parser.add_argument("--design-id", default=None, help="site design id (default: first design)")
    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()
    if not designs.value:
        sys.exit("No site designs found.")
    if args.design_id:
        target = next((d for d in designs.value if str(d.Id) == args.design_id), designs.value[0])
    else:
        target = designs.value[0]
    assert target.Id is not None

    task = SiteScriptUtility.add_site_design_task(ctx, args.site_url, str(target.Id)).execute_query()
    print(f"Site design '{target.Title}' applied (task ID: {task.value.ID})")


if __name__ == "__main__":
    main()

← Back to Site Designs