示例#1
0
def search_and_project(header, main_url, organization_id, log):
    # Search CanonicalBuildings
    print('API Function: search_buildings\n'),
    partmsg = 'search_buildings'
    search_payload = {
        'filter_params': {
            u'address_line_1': u'94734 SE Honeylocust Street'
        }
    }

    result = requests.get(main_url + '/api/v1/search_buildings/',
                          headers=header,
                          data=json.dumps(search_payload))
    check_status(result, partmsg, log)

    # Project
    print('\n-------Project-------\n')

    # Create a Project for 'Condo' in 'use_description'
    print('API Function: create_project\n'),
    partmsg = 'create_project'
    time1 = dt.datetime.now()
    newproject_payload = {
        'name': 'New Project_' + str(time1.day) + str(time1.second),
        'compliance_type': 'describe compliance type',
        'description': 'project description'
    }
    result = requests.post(main_url + '/api/v2/projects/',
                           headers=header,
                           params=json.dumps(
                               {'organization_id': organization_id}),
                           data=json.dumps(newproject_payload))
    write_out_django_debug(partmsg, result)
    check_status(result, partmsg, log)

    # Get project slug
    project_slug = result.json()['project_slug']

    # Get the projects for the organization
    print('API Function: get_project\n'),
    partmsg = 'get_project'

    result = requests.get(main_url + '/api/v2/projects/',
                          headers=header,
                          params=json.dumps({
                              'project_slug': project_slug,
                              'organization_id': organization_id
                          }))
    check_status(result, partmsg, log)

    # Populate project by search buildings result
    print('API Function: add_buildings_to_project\n'),
    partmsg = 'add_buildings_to_project'
    projectbldg_payload = {
        'project': {
            'status': 'active',
            'project_slug': project_slug,
            'slug': project_slug,
            'select_all_checkbox': True,
            'selected_buildings': [],
            'filter_params': {
                'use_description': 'CONDO'
            }
        },
        'organization_id': organization_id
    }

    result = requests.post(main_url +
                           '/app/projects/add_buildings_to_project/',
                           headers=header,
                           data=json.dumps(projectbldg_payload))
    time.sleep(10)
    check_status(result, partmsg, log)

    # Get the percent/progress of buildings added to project
    progress = requests.post(
        main_url +
        '/app/projects/get_adding_buildings_to_project_status_percentage/',
        headers=header,
        data=json.dumps({
            'project_loading_cache_key':
            result.json()['project_loading_cache_key']
        }))
    log.debug(pprint.pformat(progress.json()))
示例#2
0
def search_and_project(header, main_url, organization_id, log):
    # Search CanonicalBuildings
    print('API Function: search_buildings\n'),
    partmsg = 'search_buildings'
    search_payload = {
        'filter_params': {
            u'address_line_1': u'94734 SE Honeylocust Street'
        }
    }

    result = requests.get(main_url + '/api/v1/search_buildings/',
                          headers=header,
                          data=json.dumps(search_payload))
    check_status(result, partmsg, log)

    # Project
    print('\n-------Project-------\n')

    # Create a Project for 'Condo' in 'use_description'
    print('API Function: create_project\n'),
    partmsg = 'create_project'
    time1 = dt.datetime.now()
    newproject_payload = {
        'name': 'New Project_' + str(time1.day) + str(time1.second),
        'compliance_type': 'describe compliance type',
        'description': 'project description'
    }
    result = requests.post(main_url + '/api/v2/projects/',
                           headers=header,
                           params=json.dumps(
                               {'organization_id': organization_id}),
                           data=json.dumps(newproject_payload))
    write_out_django_debug(partmsg, result)
    check_status(result, partmsg, log)

    # Get project slug
    project_slug = result.json()['project_slug']

    # Get the projects for the organization
    print('API Function: get_project\n'),
    partmsg = 'get_project'

    result = requests.get(main_url + '/api/v2/projects/',
                          headers=header,
                          params=json.dumps({
                              'project_slug': project_slug,
                              'organization_id': organization_id
                          }))
    check_status(result, partmsg, log)

    # Populate project by search buildings result
    print('API Function: add_buildings_to_project\n'),
    partmsg = 'add_buildings_to_project'
    projectbldg_payload = {
        'project': {
            'status': 'active',
            'project_slug': project_slug,
            'slug': project_slug,
            'select_all_checkbox': True,
            'selected_buildings': [],
            'filter_params': {
                'use_description': 'CONDO'
            }
        },
        'organization_id': organization_id
    }

    result = requests.post(main_url +
                           '/app/projects/add_buildings_to_project/',
                           headers=header,
                           data=json.dumps(projectbldg_payload))
    time.sleep(10)
    check_status(result, partmsg, log)

    # Get the percent/progress of buildings added to project
    progress = requests.post(
        main_url +
        '/app/projects/get_adding_buildings_to_project_status_percentage/',
        headers=header,
        data=json.dumps({
            'project_loading_cache_key':
            result.json()['project_loading_cache_key']
        }))
    log.debug(pprint.pformat(progress.json()))

    # Export
    print('\n-------Export-------\n')

    # Export all buildings.
    print('API Function: export_buildings\n'),
    partmsg = 'export_buildings'
    export_payload = {
        'export_name': 'project_buildings',
        'export_type': "csv",
        'select_all_checkbox': True,
        'filter_params': {
            'project__slug': project_slug
        }
    }

    result = requests.post(main_url + '/app/export_buildings/',
                           headers=header,
                           data=json.dumps(export_payload))
    check_status(result, partmsg, log)
    if result.json()['total_buildings'] != 58:
        log.warning('Export Buildings: ' +
                    str(result.json()['total_buildings']) + " ; expected 58")

        # Get exportID
    exportID = result.json()['export_id']

    progress = requests.post(main_url + '/app/export_buildings/progress/',
                             headers=header,
                             data=json.dumps({'export_id': exportID}))
    log.debug(pprint.pformat(progress.json()))

    print('API Function: export_buildings_download\n'),
    partmsg = 'export_buildings_download'

    count = 100
    while (count > 0):
        result = requests.post(main_url + '/app/export_buildings/download/',
                               headers=header,
                               data=json.dumps({'export_id': exportID}))
        if result.status_code == 200:
            break
        time.sleep(5)
        count -= 1

    check_status(result, partmsg, log)

    return project_slug