Пример #1
0
    def test_new_invalid_checkpoint(self):
        """
        test the new_checkpoint API, with an invalid checkpoint (without expiry/price)
        """

        # create/save user
        authcode = "someauthcode"
        test_user = self.create_facebook_test_user()
        fb_info, user = save_user(test_user["access_token"], authcode)

        # prep image file
        image_path = join(get_resources_abs_path(), "test/images/timbre.jpg")
        image_file = open(image_path, "r")
        image = base64.encodestring(image_file.read())

        # craft request params
        data = {
            "user_id": user.id,
            "signature": gen_signature("put", "checkpoint", gen_api_key(user.access_token, user.id)),
            "name": random_string(),
            "longitude": 2.0,
            "latitude": 1.0,
            "description": random_string(),
            "image": image,
            "type:": "play",
        }

        # send it
        response = self.client.put("/checkpoint/", data=data)
        assert "Requires at least a price or expiry." in response.data
Пример #2
0
def add_play_cp(user_obj):
    from ctrleff import get_resources_abs_path
    play_img_path = j(get_resources_abs_path(), "demo", "play.jpg")
    expiry = datetime.datetime.now()
    price = 10
    type = "play"
    return _add_cp(user_obj, PLAY_NAME, PLAY_DESC, play_img_path, type, "play.jpg", price=price)
Пример #3
0
def migrate_s3():
    """
    Migrates existing Checkpoints that are stored locally to Amazon S3.
    """
    from db import db, Checkpoint
    local_checkpoints = Checkpoint.query.filter_by(img_location=None)
    
    for cp in local_checkpoints:
        
        #save to s3
        resources_dir = get_resources_abs_path()
        img_path = os.path.join(resources_dir,"uploads",str(cp.creator),cp.image)
        print img_path
        img_file = open(img_path, 'r') 
        img_name = save_to_s3(cp.creator, img_file.read(), resources_dir, False)
        
        img_path_optimized = os.path.join(resources_dir,"uploads",str(cp.creator),cp.image + "_optimized.jpg")
        img_file_optimized = open(img_path_optimized, 'r') 
        save_to_s3(cp.creator, img_file_optimized.read(), resources_dir, False)
        
        #update the checkpoint
        cp.img_location = "s3"
        cp.image = img_name    
        db.session.add(cp)
    
    db.session.commit()
Пример #4
0
def new_checkpoint():
    """
    (PUT: checkpoint) *requires authorization
    creates a barebone checkpoint (just location and image)
    this checkpoint is not complete yet.
    """
    
    #req vars
    user_id = request.form.get("user_id")
    signature = request.form.get("signature")
    name = request.form.get("name")
    longitude = request.form.get("longitude")
    latitude = request.form.get("latitude")
    description = request.form.get("description", None)
    price = request.form.get("price", None)
    expiry = request.form.get("expiry", None)
    image_encoded = request.form.get("image", None)
    type = request.form.get("type")
    share = request.form.get("share", None)
    facebook_post = request.form.get("facebook_post", False)
    image = None
    if image_encoded is None:
        image = request.files["image"]
    
    #generated vars
    verb = "put"
    noun = "checkpoint"
    user = get_user(user_id)
    expiry_datetime = None
    if expiry:
        expiry_datetime = unserialize_json_datetime(expiry)
    
    if not authorize(verb, noun, user_id, signature):
        print "fail"
        return authorization_fail()
    
    #save image
    from util.fileupload import save_to_s3
    tmp_folder = get_resources_abs_path()
    
    if image_encoded is None:
        img_file_name = save_to_s3(user_id, image, tmp_folder, encoded=False)
    else:
        img_file_name = save_to_s3(user_id, image_encoded, tmp_folder) 
    
    checkpoint = add_checkpoint(user_id, name, type, img_file_name, longitude, latitude, description, price, expiry_datetime, img_location="s3")
    user_checkpoint  = add_checkpoint_to_user(user, checkpoint)
    
    #dispatch shares
    if not share is None:
        user_ids_to_share = simplejson.loads(share)
        for uid in user_ids_to_share:
            user_to = get_user(uid)
            share_checkpoint(user, user_to, user_checkpoint)
    
    #return success
    return jsonify({
                    "status": "ok",
                    "result": {
                               "user_checkpoint_id": user_checkpoint.id,
                               },
                    })
Пример #5
0
def add_shop_cp(user_obj):
    from ctrleff import get_resources_abs_path
    shop_img_path = j(get_resources_abs_path(), "demo", "shop.jpg")
    expiry = datetime.datetime.now()
    type = "shop"
    return _add_cp(user_obj, SHOP_NAME, SHOP_DESC, shop_img_path, type, "shop.jpg", expiry=expiry)
Пример #6
0
def add_food_cp(user_obj):
    from ctrleff import get_resources_abs_path
    food_img_path = j(get_resources_abs_path(), "demo", "food.jpg")
    price = 2.5
    type = "food"
    return _add_cp(user_obj, FOOD_NAME, FOOD_DESC, food_img_path, type, "food.jpg", price=price)