コード例 #1
0
 def get(self, name=None):
     queryData = request.args.to_dict()
     if name:
         location = LocationModel.find_by_name(name)
         if location:
             return location.json(), 200
         else:
             return {'error': 'location not found'}, 404
     locations = LocationModel.find(**queryData)
     return {'locations': list(map(lambda x: x.json(), locations))}, 200
コード例 #2
0
 def delete(self, name):
     location = LocationModel.find_by_name(name)
     if location:
         location.delete_from_db()
     else:
         return {'error': 'Location not found'}, 404
     return {'success': 'location deleted'}, 202
コード例 #3
0
    def post(self):
        errors = []
        response = json.loads(self.request.body)

        location_param = param_util.GetParam(response, 'location', True)
        id = param_util.GetInt(location_param, 'id', True)
        name = param_util.GetString(location_param, 'name', True)
        address = param_util.GetParam(location_param, 'address')
        geopt = param_util.GetParam(location_param, 'geopt')
        image_url = param_util.GetString(location_param, 'image_url')
        url = param_util.GetString(location_param, 'url')
        notes = param_util.GetString(location_param, 'notes')

        if errors:
            data = {'errors': errors}
        else:
            found_location = LocationModel.get_by_id(id)

            if not found_location:
                data = {'errors': [{'message': 'id %s is not found.' % id}]}
            else:
                found_location.name = name

                if address:
                    logging.error(address)
                    found_location.address = AddressModel(
                        street=param_util.GetString(address, 'street'),
                        city=param_util.GetString(address, 'city'),
                        state=param_util.GetString(address, 'state'),
                        zip=param_util.GetString(address, 'zip'))
                else:
                    found_location.address = None

                if geopt:
                    if 'lat' in geopt:
                        lat = geopt['lat']
                    else:
                        lat = 0

                    if 'lon' in geopt:
                        lon = geopt['lon']
                    else:
                        lon = 0

                    found_location.geopt = ndb.GeoPt(lat=lat, lon=lon)
                else:
                    found_location.geopt = None

                found_location.image_url = image_url
                found_location.url = url
                found_location.notes = notes

                found_location.put()

                data = {'message': 'Location updated.'}

        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(json.dumps(data))
コード例 #4
0
 def put(self, name):
     data = json.loads(request.data)
     location = LocationModel.find_by_name(name)
     if location:
         location.update(**data)
     else:
         return {'error': 'Location not found'}, 404
     location.save_to_db(commit=True)
     return location.json(), 201
コード例 #5
0
    def get(self):
        data = []
        locations = LocationModel.query().fetch(1000)

        for current in locations:
            location = json_util.to_dict(current)

            data.append(location)

        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(json.dumps(data))
コード例 #6
0
    def get(self):
        id = int(self.request.get('id'))

        if not id:
            data = {'errors': [{'message': 'The "id" parameter is required.'}]}
        else:
            found_location = LocationModel.get_by_id(id)

            if not found_location:
                data = {'errors': [{'message': 'id %s is not found.' % id}]}
            else:
                found_location.key.delete()
                data = {'message': 'Deleted successfully.'}

        self.response.headers['Content-Type'] = 'application/json'
        self.response.write(json.dumps(data))
コード例 #7
0
 def post(self, name=None):
     data = json.loads(request.data)
     name = data.get("name", name)
     if LocationModel.find_by_name(name):
         return {
             'error':
             "A location with name '{}' already exists.".format(name)
         }, 400
     location = LocationModel(**data)
     try:
         location.save_to_db()
     except:
         return {"error": "An error occurred creating the location."}, 500
     return location.json(), 201
コード例 #8
0
    def post(self, name):
        if LocationModel.find_by_name(name):
            return {
                'message':
                "A location with name '{}' already exists.".format(name)
            }, 400

        data = Location.parser.parse_args()

        location = LocationModel(
            name, **data)  # (name, data['name'], data['school_id'])

        try:
            location.save_to_db()
        except:
            return {'message': 'An error ocurred inserting the location'}, 500

        return location.json(), 201
コード例 #9
0
 def get(self, name):
     location = LocationModel.find_by_name(name)
     if location:
         return location.childinlocation()