Example #1
0
def recommend_travel_group_list(user, amount=10):
    # 遍历好友的旅行记录
    # 根据时间和今天的距离排序进行推荐
    # 总数不超过amount

    user_id = user.get_user_id()

    friend_list = user.get_friend_list()
    other_travel_group_list = []
    for fr in friend_list:
        for tg_id in user.get_others_travel_group_list(fr):
            travel_group = mod_travel.TravelGroup(user_id=user_id,
                                                  travel_group_id=tg_id)
            travel_list = travel_group.get_travel_list()
            if len(travel_list) == 0:
                continue
            travel = mod_travel.Travel(user_id=user_id,
                                       travel_id=travel_list[0])
            company_list = travel.get_company_list()  # 得到朋友travel的company,自己不允许出现在里面

            if user_id not in company_list:
                rep_time = travel.get_travel_info().get_date_start()
                # represent time in isoformat
                # e.g. "1989-06-04"

                other_travel_group_list.append({
                    'travel_group_id': tg_id,
                    'time_delta_days': get_time_delta_days(rep_time)
                })
    other_travel_group_list.sort(key=lambda x: x['time_delta_days'])

    return generate_rec_list(other_travel_group_list, amount, key="travel_group_id")
Example #2
0
def recommend_travel_list_by_travel(user, travel_id, amount=5, max_dist=1200):
    # 遍历好友的旅行记录
    # 根据城市和该travel的距离、时间间隔排序进行推荐
    # 总数不超过amount

    user_id = user.get_user_id()
    travel = mod_travel.Travel(user_id, travel_id)  # travel 是Travel类实例对象
    travel_info = travel.get_travel_info()
    my_city = travel_info.get_city_id()
    friend_list = user.get_friend_list()  # friend id list

    other_travel_group_list = []
    for fr in friend_list:
        for tg_id in user.get_others_travel_group_list(fr):
            travel_group = mod_travel.TravelGroup(user_id=user_id,
                                                  travel_group_id=tg_id)
            # rep_time = mod_travel.Travel(user_id=user_id, travel_id=travel_list[0]).get_travel_info().get_date_start()
            for travel_id in travel_group.get_travel_list():
                travel = mod_travel.Travel(user_id=user_id,
                                           travel_id=travel_id)
                company_list = travel.get_company_list()
                if user_id not in company_list:
                    rep_time = travel.get_travel_info().get_date_start()
                    city = travel.get_travel_info().get_city_id()
                    dist = get_city_distance(my_city, city)
                    if (city != my_city) and (dist < max_dist):
                        other_travel_group_list.append({
                            "travel_id": travel_id,
                            "time_delta_days": get_time_delta_days(rep_time),
                            "city_distance": dist
                        })
    other_travel_group_list.sort(key=lambda x: ((int(x['city_distance'] / 50)) ** 2 + (int(x['time_delta_days'] / 1)) ** 2))

    return generate_rec_list(other_travel_group_list, amount, key="travel_id")
Example #3
0
def recommend_city_list_by_travel(user, travel_id, amount=3, max_dist=1200):
    # 遍历好友的旅行记录
    # 根据城市和该travel的距离排序进行推荐
    # 不包括本城市
    # 总数不超过amount

    user_id = user.get_user_id()
    travel = mod_travel.Travel(user_id, travel_id)  # travel 是Travel类实例对象
    travel_info = travel.get_travel_info()
    my_city = travel_info.get_city_id()
    friend_list = user.get_friend_list()  # friend id list

    other_travel_group_list = []
    for fr in friend_list:
        for tg_id in user.get_others_travel_group_list(fr):
            travel_group = mod_travel.TravelGroup(user_id=user_id,
                                                  travel_group_id=tg_id)
            for travel_id in travel_group.get_travel_list():
                travel = mod_travel.Travel(user_id=user_id,
                                           travel_id=travel_id)
                company_list = travel.get_company_list()
                if user_id not in company_list:
                    city = travel.get_travel_info().get_city_id()
                    dist = get_city_distance(my_city, city)
                    if (city != my_city) and (dist < max_dist):
                        other_travel_group_list.append({
                            'city_id': city,
                            'city_distance': dist
                        })

    other_travel_group_list.sort(key=lambda x: x['city_distance'])

    return generate_rec_list(other_travel_group_list, amount, key="city_id")
Example #4
0
def remove_travel(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    travel_group.remove_travel(travel_id=request_data['travel_id'])

    response = {}
    return response
Example #5
0
def move_travel(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    travel_group.move_travel_to_other_group(travel_id=request_data['travel_id'],
                                            other_travel_group_id=request_data['other_travel_group_id'])

    response = {}
    return response
Example #6
0
def set_travel_group_info(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    travel_group.set_travel_group_name(name=request_data['travel_group_name'])
    travel_group.set_travel_group_note(note=request_data['travel_group_note'])
    travel_group.set_travel_group_color(color=request_data['travel_group_color'])

    response = {}
    return response
Example #7
0
def get_travel_list(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    travel_list = travel_group.get_travel_list()

    response = {
        'count': len(travel_list),
        'travel_list': travel_list
    }
    return response
Example #8
0
def get_others_travel_group_info_list(request_data):
    user = LOGGED_IN_USERS[request_data['user_id']]
    others_travel_group_list = user.get_others_travel_group_list(other_user_id=request_data['other_user_id'])

    response = {
        'count': len(others_travel_group_list),
        'travel_group_info_list': [dict(mod_travel.TravelGroup(user_id=user.get_user_id(),
                                                               travel_group_id=travel_group_id))
                                   for travel_group_id in others_travel_group_list]
    }
    return response
Example #9
0
def get_others_all_travel_group_details(request_data):
    user = LOGGED_IN_USERS[request_data['user_id']]

    others_travel_group_list = user.get_others_travel_group_list(other_user_id=request_data['other_user_id'])
    travel_group_list = [mod_travel.TravelGroup(user_id=user.get_user_id(),
                                                travel_group_id=travel_group_id)
                         for travel_group_id in others_travel_group_list]
    response = {
        'count': len(travel_group_list),
        'travel_group_info_list': [travel_group.get_travel_group_detail()
                                   for travel_group in travel_group_list]
    }
    return response
Example #10
0
def add_travel(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    travel = travel_group.add_travel(date_start=request_data['date_start'],
                                     date_end=request_data['date_end'],
                                     city_id=request_data['city_id'],
                                     travel_note=request_data['travel_note'],
                                     visibility=request_data['visibility'])

    response = {
        'travel_id': travel.get_travel_id()
    }
    return response
Example #11
0
def get_travel_info_list(request_data):
    user_id = request_data['user_id']

    travel_group = mod_travel.TravelGroup(user_id=user_id,
                                          travel_group_id=request_data['travel_group_id'])

    travel_list = travel_group.get_travel_list()

    response = {
        'count': len(travel_list),
        'travel_info_list': [dict(mod_travel.TravelInfo(user_id=user_id,
                                                        travel_id=travel_id))
                             for travel_id in travel_list]
    }
    return response
Example #12
0
def copy_travel(request_data):
    user_id = request_data['user_id']
    src_travel = mod_travel.Travel(user_id=user_id,
                                   travel_id=request_data['source_travel_id'])
    src_travel_info = src_travel.get_travel_info()
    src_travel_group_dbobj = mod_travel.get_travel_group_instance_by_travel_id(travel_id=src_travel.get_travel_id())
    src_travel_owner_user_dbobj = mod_travel.get_travel_group_owner_user_instance(
        travel_group_id=src_travel_group_dbobj.travel_group_id)
    travel_group = mod_travel.TravelGroup(user_id=user_id,
                                          travel_group_id=request_data['travel_group_id'])

    new_travel = travel_group.add_travel(city_id=src_travel_info.get_city_id(),
                                         date_start=isoformat_to_date(src_travel_info.get_date_start()),
                                         date_end=isoformat_to_date(src_travel_info.get_date_end()),
                                         travel_note=src_travel_info.get_travel_note(),
                                         visibility=src_travel_info.get_visibility())

    if user_id in src_travel.get_company_list() and request_data['add_association']:
        new_travel.add_company(company_user_id=src_travel_owner_user_dbobj.user_id)

    response = {
        'new_travel_id': new_travel.get_travel_id()
    }
    return response
Example #13
0
def get_travel_group_info(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    response = dict(travel_group)
    return response
Example #14
0
def get_travel_group_details(request_data):
    travel_group = mod_travel.TravelGroup(user_id=request_data['user_id'],
                                          travel_group_id=request_data['travel_group_id'])

    response = travel_group.get_travel_group_detail()
    return response