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()))
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