def patch(self, id=None): if id: boat = ndb.Key(urlsafe=id).get() if boat: boat_data = json.loads(self.request.body) if 'name' in boat_data: boat.name = boat_data['name'] if 'type' in boat_data: boat.type = boat_data['type'] if 'length' in boat_data: boat.length = boat_data['length'] if 'at_sea' in boat_data: boat.at_sea = boat_data['at_sea'] for slip in Slip.query(Slip.current_boat == id): if slip.current_boat and slip.arrival_date: slip.current_boat = "" slip.arrival_date = "" slip.put() boat.put() boat_dict = boat.to_dict() self.response.write(jsonHandler(boat_dict)) else: self.logging(405, "Error: Bad Id") else: self.loggin(403, "Error: Id required for PATCH")
def put(self, slip_id): self.err = False print(self.request.body) err = False try: body = json.loads(self.request.body) except ValueError: self.logging(405, "ERROR: Bad JSON") if not self.err: boat = getAPIObject(body['boat_id']) if not boat: self.logging(405, "ERROR: Bad boat ID") if not self.err: slip = getAPIObject(slip_id) if not slip: self.logging(405, "ERROR: Bad slip ID") if not self.err: if slip.current_boat != 'null': self.logging(403, "ERROR: Slip occupied") if not self.err: slip.arrival_date = body['arrival_date'] slip.current_boat = body['boat_id'] boat.at_sea = False # boat.slip = slip_id slip.put() boat.put() slip_dict = slip.to_dict() boat_dict = boat.to_dict() # boat_dict['slip'] = '/slips' + slip_id self.response.write(jsonHandler(slip_dict))
def prepareSlip(self): id = self.key.urlsafe() slip_data = self.to_dict() slip_data['id'] = id slip_data['self'] = '/slips/' + id if slip_data['current_boat'] != 'null': slip_data['boat_link'] = '/boats/' + slip_data['current_boat'] return jsonHandler(slip_data)
def get(self, id=None): if id: boat = ndb.Key(urlsafe=id).get() if boat: boat_dict= boat.to_dict() boat_dict['self'] = "/boats/" + id self.response.write(jsonHandler(boat_dict)) else: self.logging(405, "Error: lacking boat ID") else: #if no id is provided display entire list of boats boats = Boat.query().fetch() boat_dicts = {'Boats':[]} for boat in boats: id = boat.key.urlsafe() boat_data = boat.to_dict() boat_data['self'] = '/boats/' + id boat_data['id'] = id boat_dicts['Boats'].append(boat_data) self.response.write(jsonHandler(boat_dicts))
def get(self, id=None): if id: slip = ndb.Key(urlsafe=id).get() if slip: slip_dict = slip.to_dict() slip_dict['self'] = "/slips/" + id self.response.write(jsonHandler(slip_dict)) else: self.logging(405, "Error: slip.id required for GET") else: #if no id is provided display entire list of boats slips = Slip.query().fetch() slip_dicts = {'Slips':[]} for slip in slips: id = slip.key.urlsafe() slip_data = slip.to_dict() slip_data['self'] = '/slips/' + id slip_data['id'] = id slip_dicts['Slips'].append(slip_data) self.response.write(jsonHandler(slip_dicts))
def post(self, request): try: body = json.loads(self.request.body) except ValueError: self.logging(405, "Error: Body is not required JSON format.") if not self.err: # all boats should start at sea body['at_sea'] = True new_boat = Boat(**body) new_boat.put() boat_dict = new_boat.to_dict() boat_dict['id'] = new_boat.key.urlsafe() boat_dict['self'] = '/boats/' + new_boat.key.urlsafe() self.response.write(jsonHandler(boat_dict))
def patch(self, id=None): if id: slip = ndb.Key(urlsafe=id).get() if slip: slip_data = simplejson.loads(self.request.body) if 'number' in slip_data: if Slip.query(Slip.number == slip_data['number']).get(): self.logging(403, "Error: A slip of that numer already exists.") slip.number = slip_data['number'] slip.put() slip_dict = slip.to_dict() self.response.write(jsonHandler(slip_dict)) else: self.logging(403, "ERROR: Bad slip ID") else: self.logging(403, "ERROR: boat.id required for PATCH")