def create_dashboard()

in Assets_as_Code/Assets_as_Code/src/functions.py [0:0]


def create_dashboard(session, dashboard, name, principal, SourceEntity, version, themearn, filter='ENABLED',
                     csv='ENABLED', sheetcontrol='EXPANDED'):
    qs = session.client('quicksight')
    sts_client = session.client("sts")
    account_id = sts_client.get_caller_identity()["Account"]
    if themearn == '':
        response = qs.create_dashboard(
            AwsAccountId=account_id,
            DashboardId=dashboard,
            Name=name,
            Permissions=[
                {
                    'Principal': principal,
                    'Actions': [
                        'quicksight:DescribeDashboard',
                        'quicksight:ListDashboardVersions',
                        'quicksight:UpdateDashboardPermissions',
                        'quicksight:QueryDashboard',
                        'quicksight:UpdateDashboard',
                        'quicksight:DeleteDashboard',
                        'quicksight:DescribeDashboardPermissions',
                        'quicksight:UpdateDashboardPublishedVersion'
                    ]
                },
            ],
            SourceEntity=SourceEntity,
            VersionDescription=version,
            DashboardPublishOptions={
                'AdHocFilteringOption': {
                    'AvailabilityStatus': filter
                },
                'ExportToCSVOption': {
                    'AvailabilityStatus': csv
                },
                'SheetControlsOption': {
                    'VisibilityState': sheetcontrol
                }
            }
        )
    else:
        response = qs.create_dashboard(
            AwsAccountId=account_id,
            DashboardId=dashboard,
            Name=name,
            Permissions=[
                {
                    'Principal': principal,
                    'Actions': [
                        'quicksight:DescribeDashboard',
                        'quicksight:ListDashboardVersions',
                        'quicksight:UpdateDashboardPermissions',
                        'quicksight:QueryDashboard',
                        'quicksight:UpdateDashboard',
                        'quicksight:DeleteDashboard',
                        'quicksight:DescribeDashboardPermissions',
                        'quicksight:UpdateDashboardPublishedVersion'
                    ]
                },
            ],
            SourceEntity=SourceEntity,
            VersionDescription=version,
            DashboardPublishOptions={
                'AdHocFilteringOption': {
                    'AvailabilityStatus': filter
                },
                'ExportToCSVOption': {
                    'AvailabilityStatus': csv
                },
                'SheetControlsOption': {
                    'VisibilityState': sheetcontrol
                }
            },
            ThemeArn=themearn
        )

    return response