Beispiel #1
0
    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'
Beispiel #2
0
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)
Beispiel #3
0
    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'
Beispiel #4
0
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