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'))
def getBlitemFields(blibb_id=None): if is_valid_id(blibb_id): b = Blibb.get_object( {'_id': ObjectId(blibb_id)}, {'u': 1, 't.i.n': 1, 't.i.s': 1}) res = Blibb.getLabels(b.get('t')) else: res = Message.get('id_not_valid') return jsonify(res)
def getBlibbShort(short_id=None): if short_id is None: abort(404) o = Blibb.get_object({'si': short_id}) r = Blibb.flat_object(o) if r != 'null': return jsonify(r) else: abort(404)
def getObject(bid=None): if bid is not None: params = request.args.get('fields') fields = dict() for p in params.split(','): fields[p] = 1 current_app.logger.info(fields) doc = Blibb.get_object({'_id': ObjectId(bid)}, fields) blibb = Blibb.to_dict(doc) # return jsonify(Blibb.flat_object(blibb)) abort(404)
def get_item_by_id(username=None, slug=None, id=None): if username is None or slug is None or id is None: abort(404) blibb = Blibb.get_object({'u': username, 's': slug}) if blibb and is_valid_id(id): blibb_id = blibb['_id'] items = Blitem.get_item({'_id': ObjectId(id), 'b': ObjectId(blibb_id)}, {'i': 1, 'tg': 1, 'b': 1, 'c': 1} ) attributes = {'tags': True, 'comments': True} return jsonify(Blitem.flat_object(items, attributes)) else: return jsonify(Message.get('id_not_valid'))
def getBlibb(blibb_id=None, params=None): if blibb_id is None: abort(404) if params is None: o = Blibb.get_object(blibb_id) r = Blibb.flat_object(o) else: r = Blibb.get_by_id_params(blibb_id, params) if r != 'null': return jsonify(r) else: abort(404)
def bulk_insert(self, blibb_id, user, items, tags=None): if is_valid_id(blibb_id): bid = ObjectId(blibb_id) b = Blibb.get_object({'_id': bid}, {'s': 1, 'u': 1, 't.i.n': 1, 't.i.s': 1}) blibb_slug = b.get('s') labels = Blibb.get_labels(b.get('t')) count = 0 for item in items: now = datetime.utcnow() i = self.get_blitem_from_dict(item, labels) doc = {"b": bid, "u": user, "bs": blibb_slug, "c": now, "i": i} objects.insert(doc) count = count + 1 return str(count) + 'elements added' else: return Message.get('id_not_valid')
def addItemtoBlibb(username=None, slug=None): if username is None or slug is None: abort(404) user = '' app_token = '' if 'login_key' in request.form: key = request.form['login_key'] user = get_key(key) else: app_token = request.form['app_token'] if \ 'app_token' in request.form else '' tags = request.form['tags'] if 'tags' in request.form else '' blibb = Blibb.get_object({'u': username, 's': slug}, {'_id': 1, 't.i': 1}) if blibb: blibb_id = blibb['_id'] controls = Blibb.get_controls_as_dict(blibb.get('t')) current_app.logger.info(str(user) + ' - ' + str(app_token) + ' - ' + str(blibb_id) + ' - ' + username + ' - ' + slug) if Blibb.can_write(user, app_token, blibb_id): bitems = Blitem.get_items_from_request(controls, request) if len(bitems) > 0: blitem_id = Blitem.insert(blibb_id, user, bitems, tags) if is_valid_id(blitem_id): cond = {'s': slug, 'u': username} Blibb.inc_num_item(cond) Blitem.post_process(blitem_id, bitems) res = {'id': blitem_id} return jsonify(res) else: return jsonify({'error': 'your POST data was not complete'}) else: abort(401) else: abort(404)
def insert(self, blibb_id, user, items, tags=None): tag_list = [] if is_valid_id(blibb_id): bid = ObjectId(blibb_id) b = Blibb.get_object({'_id': bid}, {'s': 1}) bs = b['s'] if tags is not None: if ',' in tags: tag_list = list(set(tags.lower().split(','))) else: tag_list = list(set(tags.lower().split())) for t in tag_list: Blibb.add_tag(blibb_id, t) num = int(NUM_CHARS) url_id = "".join(sample(digits + ascii_letters, num)) now = datetime.utcnow() doc = {"b": bid, "u": user, "bs": bs, "c": now, "i": items, "tg": tag_list, "st": "active", "si": url_id} newId = objects.insert(doc) post_process.send(doc) return str(newId) else: return Message.get('id_not_valid')
def get(url_id=None): if url_id: blibb = Blibb.get_object({'si': url_id}) if blibb: return redirect('http://blibb.net/blibb?b=' + str(blibb['_id']), 301) abort(404)