def get_or_create(item_name, extra_info, get_url, create_url, data): response = Request.get(get_url) if response.status_code != 200: message = "GET error ({}): {}\n{}".format(response.status_code, get_url, response.text) raise ValueError(message) pks = [item["id"] for item in response.json()] if pks == []: response = Request.post(create_url, data) if response.status_code != 201: message = "Create POST error ({}): {}\n{}\n{}".format(response.status_code, create_url, data, response.text) raise ValueError(message) pk = response.json()["id"] if verbose: print("Created {} ({}, pk={})".format(item_name, extra_info, pk)) return pk, True else: pk = pks[0] if len(pks) > 1: message = "Found multiple {} instances ({}) for {}; using pk={}".format(item_name, pks, extra_info, pk) warnings.warn(message) if verbose: print("Existing {} ({}, pk={})".format(item_name, extra_info, pk)) return pk, False
class TestRequest(TestCase): @classmethod def setUp(self): self.request = Request() def test_get_requests_of_projects(self): r = self.request.get('projects') self.assertEqual(r.status_code, 200)
def upload_projects(records): """ Takes in a list of projects, uploads them to the configured datastore. """ ### functionalize and map this rather than for loop request = Request() for record in records: r = get_or_create_project(record) if r.status_code == 200: pass else: attempt_update_project(record)
def get_or_create(item_name, extra_info, get_url, create_url, data): response = Request.get(get_url) if response.status_code != 200: message = "GET error ({}): {}\n{}".format(response.status_code, get_url, response.text) raise ValueError(message) pks = [item["id"] for item in response.json()] if pks == []: response = Request.post(create_url, data) if response.status_code != 201: message = "Create POST error ({}): {}\n{}\n{}".format( response.status_code, create_url, data, response.text) raise ValueError(message) pk = response.json()["id"] if verbose: print("Created {} ({}, pk={})".format(item_name, extra_info, pk)) return pk, True else: pk = pks[0] if len(pks) > 1: message = ( "Found multiple {} instances ({}) for {}; using pk={}".format( item_name, pks, extra_info, pk)) warnings.warn(message) if verbose: print("Existing {} ({}, pk={})".format(item_name, extra_info, pk)) return pk, False
def setUp(self): self.records = [{ "project_id": "4848c118-7167-4929-8979-e839a20772db", "baseline_period_end": "2014-05-27", "baseline_period_start": "2013-08-27", "reporting_period_start": "2014-08-25", "reporting_period_end": "2016-02-11", "latitude": "41.26996057364848", "longitude": "-95.97935449486408", "zipcode": "68111", "weather_station": "725500", "predicted_electricity_savings": "-1558.3948758637775", "predicted_natural_gas_savings": "-43.28523139881372", "project_cost": "6592.515721671437" }] self.request = Request()
def setUp(self): self.request = Request()