from flask import request from flask_restplus import Resource, fields, Namespace from http import HTTPStatus from .. import model as m from .. import bl api = Namespace('tag', description = 'Operations on tags') tag = api.model('Tag', { 'name' : fields.String(required=True), 'prefix' : fields.String, 'description' : fields.String }) @api.route('/') class TagList(Resource): @api.marshal_list_with(tag) def get(self): """List all available tags.""" return list(m.Tag.select().where(~m.Tag.default).dicts().iterator()) @api.expect(tag, validate=True) @api.response(HTTPStatus.CREATED, "Tag created") @api.response(HTTPStatus.CONFLICT, "Tag already exists") def put(self): """Create a new tag.""" data = request.get_json() tag, created = bl.PrefixTag(**data).create() if created: return '', HTTPStatus.CREATED else: return '', HTTPStatus.CONFLICT