diff options
Diffstat (limited to 'archivist')
-rw-r--r-- | archivist/server.py | 31 | ||||
-rw-r--r-- | archivist/server/__init__.py | 28 | ||||
-rw-r--r-- | archivist/server/prefix.py | 25 | ||||
-rw-r--r-- | archivist/server/tag.py | 19 |
4 files changed, 72 insertions, 31 deletions
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()) |