From fc11314eda6103d5055062c3035536c93784ea4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20=27Necoro=27=20Neumann?= Date: Thu, 5 Oct 2017 13:07:23 +0200 Subject: Change to flask_restplus --- archivist/server.py | 31 ------------------------------- archivist/server/__init__.py | 28 ++++++++++++++++++++++++++++ archivist/server/prefix.py | 25 +++++++++++++++++++++++++ archivist/server/tag.py | 19 +++++++++++++++++++ 4 files changed, 72 insertions(+), 31 deletions(-) delete mode 100644 archivist/server.py create mode 100644 archivist/server/__init__.py create mode 100644 archivist/server/prefix.py create mode 100644 archivist/server/tag.py diff --git a/archivist/server.py b/archivist/server.py deleted file mode 100644 index 8500af0..0000000 --- a/archivist/server.py +++ /dev/null @@ -1,31 +0,0 @@ -import click -from flask.cli import FlaskGroup, ScriptInfo -from flask import Flask -from flask_restful import Api, Resource, marshal_with, marshal_with_field, fields - -from . import model as m - -class Tag(Resource): - tag_fields = { - 'name' : fields.String, - 'prefix' : fields.String - } - -class TagList(Resource): - tag_list = { fields.List(fields.Nested(Tag.tag_fields)) } - - @marshal_with_field(fields.List(fields.Nested(Tag.tag_fields))) - def get(self): - res = list(m.Tag.select().where(~m.Tag.default).dicts().iterator()) - print(res) - return res - -def create_app(info): - app = Flask('archivist') - api = Api(app) - api.add_resource(TagList, '/') - return app - -server_group = FlaskGroup( - name='server', - context_settings = {'obj' : ScriptInfo(create_app=create_app)}) diff --git a/archivist/server/__init__.py b/archivist/server/__init__.py new file mode 100644 index 0000000..f5ae194 --- /dev/null +++ b/archivist/server/__init__.py @@ -0,0 +1,28 @@ +from importlib import import_module + +from flask.cli import FlaskGroup, ScriptInfo +from flask import Flask +from flask_restplus import Api, Resource, fields + +api = Api(version='0.1', title='Archivist API', + description='API for the Archivist Document System') + +NAMESPACES=( + 'tag', + 'prefix', +) + +def create_app(info): + app = Flask('archivist') + + for ns in NAMESPACES: + mod = import_module('.' + ns, __name__) + api.add_namespace(mod.api) + + api.init_app(app) + + return app + +server_group = FlaskGroup( + name='server', + context_settings = {'obj' : ScriptInfo(create_app=create_app)}) diff --git a/archivist/server/prefix.py b/archivist/server/prefix.py new file mode 100644 index 0000000..f2a747f --- /dev/null +++ b/archivist/server/prefix.py @@ -0,0 +1,25 @@ +from flask_restplus import Resource, fields, Namespace, marshal_with_field + +from .. import model as m + +api = Namespace('prefix', description = 'Operations on prefixes') + +prefix = api.model('Prefix', { + 'name' : fields.String(required=True), + 'description' : fields.String, + 'virtual' : fields.Boolean +}) + +@api.route('/') +class PrefixList(Resource): + @api.marshal_list_with(prefix) + def get(self): + """List all available non-virtual prefixes.""" + return list(m.Prefix.select().where(~m.Prefix.virtual).dicts().iterator()) + +@api.route('/all') +class PrefixListAll(Resource): + @api.marshal_list_with(prefix) + def get(self): + """List all available prefixes, including virtual.""" + return list(m.Prefix.select().dicts().iterator()) diff --git a/archivist/server/tag.py b/archivist/server/tag.py new file mode 100644 index 0000000..96fafcd --- /dev/null +++ b/archivist/server/tag.py @@ -0,0 +1,19 @@ +from flask_restplus import Resource, fields, Namespace + +from .. import model as m + +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()) -- cgit v1.2.3