Exemple #1
0
def favorite_tour():
    '''
    Togggles whether a tour is favorited for a user. Returns "removed" or "created". Returns 422 if incorrect JSON arguments are provided.
    <u>JSON Args:</u> user_id, tour_id
    '''
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()
    user_id = data.get("user_id")
    tour_id = data.get("tour_id")
    if user_id is None or tour_id is None:
        return "must supply tour_id and user_id", 422

    query = get_session().query(FavoritesClass).filter(
        and_(FavoritesClass.user_id == user_id,
             FavoritesClass.tour_id == tour_id))
    fav = safe_call(query, "first", None)
    deleted = False
    print(fav)
    if fav is None:
        fav = FavoritesClass()
        fav.user_id = user_id
        fav.tour_id = tour_id
        get_session().add(fav)
    else:
        get_session().delete(fav)
        deleted = True
    print(deleted)
    commitSession()
    return ("removed" if deleted else "created")
Exemple #2
0
 def upload_profile_image(self, file, tourid):
     s = file.filename.split('.')
     extension = s[-1]
     url = 'https://s3.amazonaws.com/silktours-media/' + 'tour/profile/' + tourid + '.' + extension
     self.upload_to_s3(file, tourid + '.' + extension)
     self.profile_image = url
     commitSession(self)
     return self.serialize()
Exemple #3
0
def clear_pending_review(eventId):
    """
    Clears the pending review for the tour event.
    """
    if not checkLogin():
        return notAuthorizedResponse()
    event = safe_call(get_session().query(TourEvent), "get", eventId)
    event.pending_review = False
    commitSession(event)
    return "Success"
Exemple #4
0
def compute_tour_event(eventId):
    """
    Marks the given tour event as completed. Also creates a pending review.
    """
    if not checkLogin():
        return notAuthorizedResponse()
    event = safe_call(get_session().query(TourEvent), "get", eventId)
    event.state = "C"
    event.pending_review = True
    commitSession(event)
Exemple #5
0
def edit_tourevent(eventid):
    """
    Edits a tour event. Takes the usual tour event JSON.
    """
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()
    event = safe_call(get_session().query(TourEvent), "get", eventid)
    event.set_props(data)
    commitSession(event)
    return jsonify(event.serialize())
Exemple #6
0
 def create(data, id_tour=None):
     result = None
     if "id_stop" in data:
         result = get_session().query(Stop).get(data["id_stop"])
     if result is None:
         result = Stop()
     result.set_props(data.get("id_tour"), data.get("lat"), data.get("lon"))
     if id_tour is not None:
         result.id_tour = id_tour
     commitSession(result)
     return result
Exemple #7
0
def set_tourevent():
    """
    Create a new tour event. Takes the usual tour event JSON.
    """
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()
    event = TourEvent()
    event.set_props(data)
    commitSession(event)
    return jsonify(event.serialize())
Exemple #8
0
 def create(data, id_tour=None):
     result = None
     if "id_tour_guide" in data:
         result = get_session().query(TourGuidesClass).get(
             data["id_tour_guide"])
     if result is None:
         result = TourGuidesClass()
     result.set_props(data)
     if id_tour is not None:
         result.id_tour = id_tour
     commitSession(result)
     return result
Exemple #9
0
 def create(data, id_tour=None, id_user=None):
     result = None
     if "id_tourEvent" in data:
         result = get_session().query(TourEvent).get(data["id_tourEvent"])
     if result is None:
         result = TourEvent()
     result.set_props(data)
     if id_tour is not None:
         result.id_tour = id_tour
     if id_user is not None:
         result.id_user = id_user
     commitSession(result)
     return result
Exemple #10
0
 def create(data, id_tour=None, id_user=None):
     result = None
     if "id_interestList" in data:
         result = get_session().query(Interests).get(
             data["id_interestList"])
     if result is None:
         result = Interests()
     result.set_props(data)
     if id_tour is not None:
         result.id_tour = id_tour
     if id_user is not None:
         result.id_user = id_user
     commitSession(result)
     return result
Exemple #11
0
 def create(data, id_tour=None):
     result = None
     if "tour_hours_id" in data:
         result = get_session().query(TourHoursSpecial).get(
             data["tour_hours_special_id"])
     if result is None:
         result = TourHoursSpecial()
     result.set_props(data.get("tour_id"), data.get("date"),
                      data.get("open_time"), data.get("close_time"),
                      data.get("overrides"))
     if id_tour is not None:
         result.tour_id = id_tour
     commitSession(result)
     return result
Exemple #12
0
 def create_extras(self, data):
     for key in data:
         if key == "stops":
             for item in data[key]:
                 Stop.create(item, self.id_tour)
             # self.stops = [Stop.create(item, self.id_tour) for item in data[key]]
         elif key == "interests":
             for item in data[key]:
                 Interests.create(item, self.id_tour)
             # self.interests = [Interests.create(item, self.id_tour) for item in data[key]]
         elif key == "guides":
             for item in data[key]:
                 TourGuidesClass.create(item, self.id_tour)
         elif key == "address":
             address = Address.create(data[key])
             self.address_id = address.id_address
             commitSession(self)
Exemple #13
0
 def create(data, id_tour=None):
     result = None
     if "tour_hours_id" in data:
         result = get_session().query(TourHours).get(data["tour_hours_id"])
     if result is None:
         result = TourHours()
     result.set_props(
         data.get("tour_id"),
         data.get("day_of_week"),
         data.get("open_time"),
         data.get("close_time"),
         data.get("start_time"),
         data.get("end_time"))
     if id_tour is not None:
         result.tour_id = id_tour
     commitSession(result)
     return result
Exemple #14
0
def edit_user_profile(userid):
    """
    Uploads and sets a user's profile image
    <u>JSON fields:</u> file=base 64 string, name=the filename
    """
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()
    file_data = data['file']
    filename = data['name']
    media = Media()
    result = media.upload(file_data, filename, userid=userid)
    user = safe_call(get_session().query(User), "get", userid)
    user.profile_picture = result["url"]
    # TODO set profile image size in db
    commitSession(user)
    return jsonify(result)
Exemple #15
0
def edit_tour_profile(tourid):
    """
    Uploads and sets a tour's profile image.
    <u>JSON fields:</u>file=base64 encoded file, name=filename
    """
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()
    file_data = data['file']
    filename = data['name']
    media = Media()
    result = media.upload(file_data, filename, tourid=tourid)
    tour = safe_call(get_session().query(Tour), "get", tourid)
    tour.profile_image = result["url"]
    # TODO set profile image size in db
    commitSession(tour)
    return jsonify(result)
Exemple #16
0
def add_stop():
    """
    Adds a new stop to a tour. Stops can also be set with POST /tour.
    <u>JSON fields:</u> id_tour, lat, lon
    """
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()

    stop = Stop()
    id_tour = data["id_tour"]
    lat = float(data["lat"])
    lon = float(data["lon"])

    stop.set_props(id_tour, lat, lon)

    commitSession(stop)
    return "Success"
Exemple #17
0
def add_rating():
    """
    Adds a new raing to the tour.
    <u>JSON fields:</u> id_user_rated=the raters id, id_tour_rated=the tour to rate, rating=rating from 1-5, comment=string comment
    """
    if not checkLogin():
        return notAuthorizedResponse()
    data = request.get_json()

    rating = Rating()
    id_user_rated = data["id_user_rated"]
    id_tour_rated = data["id_tour_rated"]
    rating_value = float(data["rating"])
    comment = data["comment"]
    rating.set_props(rating_value, comment, id_tour_rated, id_user_rated)
    tour = get_session().query(Tour).get(int(id_tour_rated))
    tour.average_rating = (
        (tour.average_rating * tour.rating_count + rating_value) /
        (tour.rating_count + 1))
    tour.rating_count += 1
    get_session().add(tour)
    get_session().add(rating)
    commitSession()
    return "Success"
Exemple #18
0
 def createOrEdit(self, data):
     self.set_props(data)
     commitSession(self)
     self.create_extras(data)
     commitSession(self)
Exemple #19
0
 def setProps(self, data):
     for key in data:
         setattr(self, key, data[key])
     createSession()
     get_session().add(self)
     commitSession()