Exemple #1
0
def _checkpoint_details():
    """
    Gets detailed information about a (User)Checkpoint given its id.   
    """
    CheckpointDetail = namedtuple("CheckpointDetail", 
                                  ("user_checkpoint_obj", 
                                   "total_likes",
                                   "total_shares",
                                   "current_user_like",
                                   "comments",
                                   "user",                                   
                                   ))
    
    user_id = request.args.get("user_id")
    user_checkpoint_id = request.args.get("user_checkpoint_id")
    user_obj = get_user(user_id)
    
    user_checkpoint_obj = get_user_checkpoint(user_checkpoint_id)
    total_likes = get_total_likes(user_checkpoint_obj)
    total_shares = get_total_shares(user_checkpoint_obj)
    current_user_like = (not get_like_w_attr(user_obj, user_checkpoint_obj.checkpoint) is None)
    comments = get_checkpoint_comments(user_checkpoint_obj.checkpoint)
    checkpoint_user_obj = user_checkpoint_obj.user
    user = {"name": checkpoint_user_obj.facebook_user.name,
            "facebook_portrait_url": "https://graph.facebook.com/%s/picture" % checkpoint_user_obj.facebook_user.id,
            }
    
    res = CheckpointDetail(user_checkpoint_obj,
                           total_likes,
                           total_shares,
                           current_user_like,
                           comments,
                           user
                           )
    return res
def sort_checkpoints(ucp_lis, sort_method, **kwargs):
    """
    sorts checkpoints according to method supplied.
    methods available are: newest, nearest, popular
    
    if "nearest" method is chosen, longitude/latitude kw args should be provided.
    """
    sorted_ucp = None
    
    if sort_method == "popular":
        sorted_ucp = sorted(ucp_lis, 
                            key=lambda ucp: get_total_likes(ucp), 
                            reverse=True)
        
    elif sort_method == "nearest":
        lat, lon = kwargs["latitude"], kwargs["longitude"] 
        ucp_namedtuples = _checkpoints_to_location_namedtuples(ucp_lis)
        sorted_ucp = proximity_sort((lat, lon), ucp_namedtuples, len(ucp_namedtuples))
        sorted_ucp = [ucp[1] for ucp in sorted_ucp]
    else: #newest
        sorted_ucp = sorted(ucp_lis, key=lambda ucp: ucp.checkpoint.date_created, reverse=True)
    
    return sorted_ucp