Ejemplo n.º 1
0
 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())
Ejemplo n.º 2
0
 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())
Ejemplo n.º 3
0
    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'})