def test_duplicate_tag_variable(self): ''' variable in longest tag wins ''' item = Item('firefly') laptop = Tag('laptop') laptop.set_variable('hello', 'laptop') linux = Tag('linux') linux.set_variable('hello', 'linux') item.add_to(laptop) item.add_to(linux) item.save() assert 'hello' in item.get_all_variables() assert item.get_all_variables()['hello'] == 'laptop'
def list_items(): if request.method == "POST": item_name = request.form["item-name"] item = Item.find(item_name) if not item: item = Item(item_name) if 'tag-name' in request.form: tag = Tag.find(request.form['tag-name']) if tag: item.add_to(tag) item.save() return redirect(url_for('show_item', name=item.name)) items = Item.find_all() return render_template('items.html', items=items)
def test_api_update_variable(self): fireflash = Item('fireflash') fireflash.set_variable('test', 'one') fireflash.save() with app.test_client() as c: rv = self.get_json(c, '/api/item/fireflash/') data = json.loads(rv.data) data['vars'] = [{'key':'test', 'value':'two'}] rv = self.put_json(c, '/api/item/fireflash/', data) print rv assert rv.status_code == 200 fireflash = Item.find('fireflash') assert fireflash.variables['test'] == 'two'
def show_tag(name): tag = Tag.find(name) if not tag: abort(404) if request.method == 'POST': if not request.json: abort(415) data = request.json if not 'name' in data: abort(400) response_code = 200 item = Item.find(data['name']) if not item: item = Item(data['name']) response_code = 201 try: item.update_from(data) except MelangeException: abort(400) item.add_to(tag) item.save() response = make_response('', response_code) response.headers['Content-Location'] = url_for('melange_api.show_item',name=item.name) return response if request.method == 'DELETE': tag.remove() response = make_response('', 200) return response if request.method == 'PUT': if not request.json: abort(415) try: if request.json['name'] != tag.name: abort(400) tag.update_from(request.json) tag.save() except MelangeException: abort(400) def item_url(item): return url_for('melange_api.show_item', name=item.name) data = tag.to_data(item_href=item_url) response = make_response( json.dumps(data), 200 ) response.headers['Content-Type'] = 'application/json' return response