def test_populate_farmers(self): self.assertEqual(0, Farmer.query().count()) response = self.app.get('/import/') self.assertEqual(200, response.status_code) self.assertEqual({'status': 'done'}, json.loads(response.body)) self.assertGreater(Farmer.query().count(), 0) self.assertEqual(1, Node.query().count())
def test_farmers_populated_already(self): Farmer().put() response = self.app.get('/import/') self.assertEqual(200, response.status_code) self.assertEqual( {'status': 'already_populated'}, json.loads(response.body)) self.assertEqual(1, Farmer.query().count())
def get(self): # If we've already imported farmers, don't bother to import them from # the JSON file. if Farmer.query().count() > 0: return self.json_response({'status': 'already_populated'}) with open('attendees.json') as attendees_file: attendees = json.loads(attendees_file.read()) farmers = [] for name, cell_number in attendees.iteritems(): first_name, last_name = name.split(' ') farmers.append(Farmer( first_name=first_name, last_name=last_name, cell_number=cell_number, house_number=cell_number, farmer_id=generate_farmer_id(), verified=True, dob=datetime.datetime.now() - datetime.timedelta(days=20 * 365), address='Computer Science Postgrab Lab', alias=generate_alias(first_name, last_name), farmer_idx=random.randint(1, 100000), parish='UWI', main_activity='Farming', )) node = Node(node_id='Tomatoes') ndb.put_multi(farmers + [node]) for _ in range(50): DataPoint( temperature=random.randint(40, 90), pressure=random.randint(20, 30), humidity=random.randint(65, 100), light=random.randint(0, 100), saturation=random.randint(30, 90), parent=node.key, ).put() message = """ Low light on tomato patch. Low barometric pressure. Possibility of rain. """ for farmer in farmers: send_sms(farmer.cell_number, message) return self.json_response({'status': 'done'})