def get(self, parcel_id, parcel_event_id): response_dict = None if parcel_id is None: # show all parcels, sans events pq = Parcel.all() parcels = pq.fetch(100) response_dict = [p.to_dict() for p in parcels] else: # show single parcel, with events # unless event id set, # in that case, just return the event parcel = Parcel.get_by_id(int(parcel_id)) if parcel is None: return self.not_found() response_dict = parcel.to_dict() if parcel_event_id is None: eq = ParcelEvent.all() eq.ancestor(parcel) eq.order("date") events = eq.fetch(100) event_dicts = [e.to_dict() for e in events] response_dict["events"] = event_dicts else: event = ParcelEvent.get_by_id(int(parcel_event_id), parent=parcel) if event is None: return self.not_found() response_dict = event.to_dict() self.response.headers["Content-Type"] = "application/json; charset=UTF-8" self.response.out.write(json.dumps(response_dict))
def get(self): tracking_number = self.request.get("kolliid") if len(tracking_number) < 9: xml = ParcelHelper().tracking_number_error_as_xml() else: parcel_query = Parcel.all() parcel_query.filter("tracking_number =", tracking_number) parcel = parcel_query.get() if parcel is None: xml = ParcelHelper().no_parcel_as_xml(tracking_number) else: events_query = ParcelEvent.all() logging.info( parcel ) events_query.ancestor(parcel.key()) events = events_query.fetch(100) xml = ParcelHelper().parcel_as_xml(tracking_number, parcel, events) self.response.headers["Content-Type"] = "text/xml; charset=ISO-8859-1" self.response.out.write(xml)