示例#1
0
def newBlibb():
    name = request.form['bname']
    desc = request.form['bdesc']
    template = request.form['btemplate']
    key = request.form['bkey']
    user = get_user_name(key)
    image_id = request.form['bimage']
    slug = request.form['slug']
    write_access = request.form['write_access']
    read_access = request.form['read_access']

    # check if a blibb with that slug already exists
    blibb = Blibb.get_by_slug(user, slug)
    # return jsonify(blibb)

    if not blibb:
        res = {'error': 'None'}
        if is_valid_id(image_id):
            image = Picture.dump_image(image_id)
        else:
            image = 'blibb.png'

        new_id = Blibb.insert(user, name, slug, desc, template, image, read_access, write_access)
        res = {'id': new_id}
    else:
        res = {'error': 'Blibb with that slug already exists'}
    return jsonify(res)
示例#2
0
def newItem():
    bid = request.form['blibb_id']
    key = request.form['login_key']
    tags = request.form['tags']
    app_token = request.form['app_token']

    user = get_user_name(key)
    current_app.logger.info('labels: ' + str(user))
    if is_valid_id(bid):
        b = Blibb.get_object({'_id': ObjectId(bid)}, {'u': 1, 't.i': 1})
        controls = Blibb.get_controls_as_dict(b.get('t'))
        current_app.logger.info(controls)
        if Blibb.can_write(user, app_token, bid):
            # labels = Blibb.get_labels(b.get('t'))
            # current_app.logger.info('labels: ' + str(labels))
            bitems = Blitem.get_items_from_request(controls, request)
            current_app.logger.info('items from request: ' + str(bitems))
            blitem_id = Blitem.insert(bid, user, bitems, tags)
            if blitem_id:
                cond = {'_id': ObjectId(bid)}
                Blibb.inc_num_item(cond)
                Blitem.post_process(blitem_id, bitems)
                return blitem_id
        else:
            abort(401)
    return jsonify(Message.get('id_not_valid'))
示例#3
0
def newTag():
    target_id = None
    key = request.form['k']
    user = get_user_name(key)
    target_id = request.form['i']

    if Blitem.isOwner(target_id, user):
        tag = request.form['t']
        Blitem.addTag(target_id, tag)
    return jsonify({'response': 'ok'})
示例#4
0
def newTag():
    target_id = None
    target = None
    key = request.form['k']
    user = get_user_name(key)
    target_id = request.form['b']
    if Blibb.can_write(target_id, user):
        tag = request.form['t']
        target.addTag(target_id, tag)

    return json.dumps('ok')
示例#5
0
def deleteBlitem(blitem_id=None, login_key=None):
    user = get_user_name(login_key)
    if user:
        if is_valid_id(blitem_id):
            if Blitem.can_write(user, blitem_id):
                current_app.logger.error(blitem_id)
                Blitem.remove({'_id': ObjectId(blitem_id)})
                return jsonify({'response': 'deleted'})

        abort(404)
    abort(401)
示例#6
0
def add_controls():
    template = request.form["template"]
    controls = request.form["controls"]
    key = request.form["login_key"]
    user = utils.get_user_name(key)
    res = "Something went wrong"
    current_app.logger.info("template: " + utils.cleanup(template))
    current_app.logger.info("controls" + str(controls))
    # if utils.is_valid_id(template):
    res = ControlTemplate.add_controls(utils.cleanup(template), controls, user)
    # else:
    #     jsonify(Message.get('id_not_valid'))
    return jsonify({"result": res})
示例#7
0
def newPicture():
    e = Event('getImage.newPicture')
    pict = Picture()
    blibb = request.form['b']
    key = request.form['k']
    user = get_user_name(key)
    items = dict()
    r = pict.create(user, items, blibb)
    e.save()
    if r != 'null':
        return r
    else:
        abort(404)
示例#8
0
def updateView():
    blibb_id = request.form['blibb_id']
    user = get_user_name(request.form['login_key'])
    view = request.form['viewName']
    html = request.form['viewHtml']
    # current_app.logger.info(user + ' ' + blibb_id + ' ' + view + ' ' + html)
    if is_valid_id(blibb_id):
        if Blibb.can_write(user, '', blibb_id):
            Blibb.update_view(blibb_id, user, view, html)
            return jsonify({'result': 'View Updated'})
        else:
            abort(401)
    abort(404)
示例#9
0
def upload():
    current_app.logger.info('Upload Image')
    login_key = request.form.get('login_key', False)
    # app_token = request.form.get('app_token', False)
    app_user = request.form.get('u', False)

    if login_key:
        user = get_user_name(login_key)
    else:
        user = app_user

    if 'file' in request.files:
        file = request.files['file']
        if is_image(file.filename):
            object_id = Picture.create(user, {}, file.filename)
        elif is_attachment(file.filename):
            object_id = Attachment.create(user, {}, file.filename)

        filename = secure_filename(object_id + '-' + file.filename)
        c = connect_s3()
        bucket_name = get_config_value('BUCKET')
        bucket = c.create_bucket(bucket_name)
        k = Key(bucket)
        k.key = user + '/' + filename
        k.set_metadata('owner', user)
        extension = os.path.splitext(filename)[1]
        k.content_type = file.content_type
        current_app.logger.info('Extension: ' + str(extension))
        current_app.logger.info('file.content_type: ' + str(file.content_type))
        if extension.lower() == '.jpg':
            k.content_type = 'image/jpeg'
        if extension.lower() == '.png':
            k.content_type = 'image/png'
        if extension.lower() == '.gif':
            k.content_type = 'image/gif'
        current_app.logger.info('Extension: ' + str(extension))
        current_app.logger.info('file.content_type: ' + str(k.content_type))
        k.set_contents_from_string(file.read())
        k.make_public()
        url = 'http://%s/%s' % (bucket_name, k.key)
        current_app.logger.info(
            '########## url: ' + str(url) + ' ' + str(bucket)
        )
        if is_image(file.filename):
            Picture.add_url(object_id, url)
        elif is_attachment(file.filename):
            object_id = Attachment.add_url(object_id, file.filename)

        return jsonify({'upload': url})
    return jsonify({'upload': 'error'})
示例#10
0
def newBookmark(song_id=None):
    e = Event('web.content.newBookmark')
    bk = Bookmark()
    t = request.form['title']
    b = request.form['b']
    bn = request.form['bn']
    k = request.form['k']
    user = get_user_name(k)
    url = request.form['url']
    tags = []
    if 'tags' in request.form:
        tags = request.form['tags']
    bk_id = bk.insert(b, user, url, t, bn, tags)
    e.save()
    return jsonify({'result': str(bk_id)})
示例#11
0
def newTemplate():
    name = request.form["template_name"]
    desc = request.form["template_description"]
    key = request.form["login_key"]
    thumb = request.form["thumbnail"]
    user = utils.get_user_name(key)
    # check if that template exists
    filter = {"n": name, "u": user}
    current_app.logger.info(filter)
    template = ControlTemplate.get_object(filter, {"_id": 1})
    if template is None:
        res = ControlTemplate.insert(name, desc, user, thumb)
    else:
        res = str(template.get("_id", ""))
    return jsonify({"result": res})
示例#12
0
def new_control():
    e = Event('web.new_control')
    key = request.form['login_key']
    name = request.form['control_name']
    ui = request.form['control_ui']
    type = request.form['control_type']
    read = request.form['control_read']
    write = request.form['control_write']
    button = request.form['control_button']

    user = utils.get_user_name(key)
    cid = Control.insert(name, user, ui, type, read, write, button)
    res = {'id': cid}
    e.save()
    return jsonify(res)
示例#13
0
def publishTemplate():
    template_id = request.form["template_id"]
    key = request.form["login_key"]
    user = utils.get_user_name(key)
    template = ControlTemplate.get_by_id(template_id)
    owner = template["owner"]
    if owner == user:
        r = ControlTemplate.publish_default(template_id)
        if r:
            res = {"result": "ok"}
        else:
            res = {"error": "Publishing failed"}
    else:
        res = {"error": "Only the owner can publish"}
    return jsonify(res)
示例#14
0
def loader_excel():
    event = Event('web.content.loader_excel')
    key = request.form['login_key']
    bid = request.form['blibb_id']
    user = get_user_name(key)
    res = dict()
    file = request.files['file']
    if file and allowed_file(file.filename):
        try:
            filename = secure_filename(file.filename)
            excel_file = os.path.join(
                get_config_value('UPLOAD_FOLDER'), filename
            )
            file.save(excel_file)
            if is_valid_id(bid):
                fields = Blibb.get_fields(bid)
                excel_data = loader.excel_to_dict(excel_file, fields)
                current_app.logger.debug(excel_data)
                if len(excel_data):
                    a = Blitem.bulk_insert(bid, user, excel_data)
                    current_app.logger.debug(a)
                    res['result'] = 'ok'
                else:
                    res['error'] = 'No data found in file'
            else:
                if bid == '-1':
                    res['error'] = 'create new blibb from file'

                res['error'] = 'Object Id is not valid'
        # except Exception, e:
            # current_app.logger.error(e)
            # res['error'] = 'Error processing spreadsheet'

        finally:
            if os.path.isfile(filename):
                os.unlink(filename)

    else:
        res['error'] = 'File was not uploaded'

    event.save()
    return jsonify(res)
示例#15
0
def deleteBlibb(blibb_id=None, login_key=None):
    user = get_user_name(login_key)
    if is_valid_id(blibb_id):
        filter = {'_id': ObjectId(blibb_id), 'u': user}
        Blibb.remove(filter)
    return jsonify({'ret': 1})
示例#16
0
def voteDown(blibb_id=None, page=1):
    item_id = request.form['item_id']
    key = request.form['login_key']
    user = get_user_name(key)
    r = Blitem.vote_down(item_id, user)
    return jsonify(r)
示例#17
0
def fork():
    key = request.form['login_key']
    user = get_user_name(key)
    target_id = request.form['b']
    Blibb.fork(target_id, user)
    return json.dumps('ok')
示例#18
0
def get_all_templates(login_key=None):
    user = utils.get_user_name(login_key)
    templates = ControlTemplate.get_templates_by_user(user)
    return jsonify({"result": templates})