From fc11314eda6103d5055062c3035536c93784ea4c Mon Sep 17 00:00:00 2001 From: René 'Necoro' Neumann Date: Thu, 5 Oct 2017 13:07:23 +0200 Subject: Change to flask_restplus --- archivist/server/__init__.py | 28 ++++++++++++++++++++++++++++ archivist/server/prefix.py | 25 +++++++++++++++++++++++++ archivist/server/tag.py | 19 +++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 archivist/server/__init__.py create mode 100644 archivist/server/prefix.py create mode 100644 archivist/server/tag.py (limited to 'archivist/server') 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-54-g00ecf