def handle_post(self, email, account_info): if self.request.get("trip_entity_key"): trip = self.request.get("trip_entity_key").get() trip.capacity_left = int(self.request.get("capacity")) else: trip = Trip(parent=trip_utils.get_parent_key_from_username( account_info.rose_username)) if self.request.get("role_radio_group") == "driver": trip.driver = account_info.key elif self.request.get("role_radio_group") == "passenger": trip.passengers.append(account_info.key) else: raise Exception("wrong value") trip.origin = self.request.get("origin") trip.destination = self.request.get("destination") pick_up_time = date_utils.get_utc_datetime_from_user_input( account_info.time_zone, self.request.get("pick_up_time")) trip.pick_up_time = pick_up_time trip.price = self.request.get("price") if self.request.get("capacity"): trip.capacity_left = int(self.request.get("capacity")) else: trip.capacity_left = 0 trip.put() trip_utils.send_email(email, account_info, trip.origin, trip.destination, trip.pick_up_time, False, False, True) self.redirect("/find-trip")
def handle_post(self, email): if self.request.get("trip_entity_key"): trip_key = ndb.Key(urlsafe=self.request.get("trip_entity_key")) trip = trip_key.get() else: trip = Trip(parent=utils.get_parent_key_for_email(email)) trip.state = self.request.get("state") trip.city = self.request.get("city") trip.start_date = self.request.get("arrival-date") trip.end_date = self.request.get("departure-date") trip.description = self.request.get("description") # last touch modified time update? or nah? # image if self.get_uploads() and len(self.get_uploads()) == 1: logging.info("Received an image blob with this trip.") media_blob = self.get_uploads()[0] trip.media_blob_key = media_blob.key() else: logging.info("This is a trip without an image attachment.") trip.put() self.redirect(self.request.referer)
def post(self): ''' Adds trip to datastore ''' _,id,_,_ = self.get_user() #TODO some checking trip = Trip(parent=helper.trip_key(id)) trip.trip_name = self.request.get('trip_name') trip.description = self.request.get('description') trip.cities = self.get_cities(self.request.get('cities')) avatar = self.request.get('img') if avatar: trip.trip_avatar = avatar try: trip.from_date = datetime.strptime( self.request.get('from_date'), '%d/%m/%Y') trip.to_date = datetime.strptime(self.request.get('to_date'), '%d/%m/%Y') except: try: trip.from_date = datetime.strptime( self.request.get('from_date'), '%Y-%m-%d') trip.to_date = datetime.strptime(self.request.get('to_date'), '%Y-%m-%d') except: trip.from_date = datetime.strptime( '2000-01-01', '%Y-%m-%d') trip.to_date = datetime.strptime('2000-01-01', '%Y-%m-%d') if self.request.get('visibility') == 'True': trip.visibility = True else: trip.visibility = False #create statistic for trip trip.trip_statistic = TrackStatistic(name="Trip Stat",total_distance=0,total_time="", avr_speed=0,total_climb=0,max_elev=-100) #crete tags for trip locationl = helper.creatList(self.request.get('location')) typel = helper.creatList(self.request.get('type')) seasonl = helper.creatList(self.request.get('season')) trip.trip_tags = Tags(location=locationl,type=typel,season=seasonl) trip.put() #put new tags in users tags tags_query = Tags.query(ancestor=helper.trip_key(id)) tags = tags_query.fetch(1) if tags: tags = tags[0] tags.location = helper.union(tags.location,locationl) tags.type = helper.union(tags.type,typel) tags.season = helper.union(tags.season,seasonl) else: new_loc_tags = locationl new_type_tags = typel new_seasion_tags = seasonl tags = Tags(parent=helper.trip_key(id),location=new_loc_tags,type=new_type_tags,season=new_seasion_tags) tags.put() #redirect to mytrips because showing all tips will only be consistent in scope of user # and only eventually consistent for whole datastore self.redirect('/tripmanager')
def post(self): errors = [] output = "" user = users.get_current_user() authz = Authz(user) self.response.headers["Content-type"] = "application/json" # check for authorization to create new trips & verify this is in fact # a request to create a new trip try: # user allowed to create trips? authz.createTrip() except PermissionError as e: # this permission error could have come from authz or locally errors.append({"message": e.args}) # bail if we hit authz errors if len(errors) > 0: self.response.set_status(400) output = json.dumps({"error": errors}) self.response.out.write(output) return # user is allowed, so go ahead and try to create this thing #logging.debug(self.request.body) data = TripUnpacker().unpack_post(self.request) #logging.debug(data) if data['name'] == "" or data['password'] == "": errors.append({"message": "Trip name and password are required."}) else: try: trip = Trip(name=data['name'], password=data['password'], owner=user) # get traveler names raw_travelers = data['travelers'] if len(raw_travelers) > Config.limits.travelers_per_trip: logging.warning('Attempt to add too many travelers: %s', user.nickname) raw_travelers = raw_travelers[:Config.limits. travelers_per_trip] travelers = [] for traveler in raw_travelers: if traveler.strip() != "": travelers.append(traveler.strip()) trip.travelers = travelers # get dates # TODO: validation that these dates are sane and properly ordered start_date = dateparse(data['start_date']) end_date = dateparse(data['end_date']) trip.start_date = start_date.date() #logging.debug("start date = " + str(start_date.date())) trip.end_date = end_date.date() #logging.debug("end date = " + str(end_date.date())) trip.put() output = GqlEncoder().encode({ "id": "%s" % trip.key(), 'modify_date': trip.modify_date, 'start_date': trip.start_date, 'end_date': trip.end_date, }) except Exception as e: logging.exception(e) errors.append({"message": "Unexpected error creating trip"}) if len(errors) > 0: self.response.set_status(400) output = json.dumps({"error": errors}) self.response.out.write(output)
def post(self): errors = [] output = "" user = users.get_current_user() authz = Authz(user) self.response.headers["Content-type"] = "application/json" # check for authorization to create new trips & verify this is in fact # a request to create a new trip try: # user allowed to create trips? authz.createTrip() except PermissionError as e: # this permission error could have come from authz or locally errors.append({"message": e.args}) # bail if we hit authz errors if len(errors) > 0: self.response.set_status(400) output = json.dumps({"error": errors}) self.response.out.write(output) return # user is allowed, so go ahead and try to create this thing # logging.debug(self.request.body) data = TripUnpacker().unpack_post(self.request) # logging.debug(data) if data["name"] == "" or data["password"] == "": errors.append({"message": "Trip name and password are required."}) else: try: trip = Trip(name=data["name"], password=data["password"], owner=user) # get traveler names raw_travelers = data["travelers"] if len(raw_travelers) > Config.limits.travelers_per_trip: logging.warning("Attempt to add too many travelers: %s", user.nickname) raw_travelers = raw_travelers[: Config.limits.travelers_per_trip] travelers = [] for traveler in raw_travelers: if traveler.strip() != "": travelers.append(traveler.strip()) trip.travelers = travelers # get dates # TODO: validation that these dates are sane and properly ordered start_date = dateparse(data["start_date"]) end_date = dateparse(data["end_date"]) trip.start_date = start_date.date() # logging.debug("start date = " + str(start_date.date())) trip.end_date = end_date.date() # logging.debug("end date = " + str(end_date.date())) trip.put() output = GqlEncoder().encode( { "id": "%s" % trip.key(), "modify_date": trip.modify_date, "start_date": trip.start_date, "end_date": trip.end_date, } ) except Exception as e: logging.exception(e) errors.append({"message": "Unexpected error creating trip"}) if len(errors) > 0: self.response.set_status(400) output = json.dumps({"error": errors}) self.response.out.write(output)