summaryrefslogtreecommitdiff
path: root/archivist/server
diff options
context:
space:
mode:
Diffstat (limited to 'archivist/server')
-rw-r--r--archivist/server/__init__.py14
-rw-r--r--archivist/server/tag.py14
2 files changed, 26 insertions, 2 deletions
diff --git a/archivist/server/__init__.py b/archivist/server/__init__.py
index f5ae194..913cff3 100644
--- a/archivist/server/__init__.py
+++ b/archivist/server/__init__.py
@@ -4,6 +4,9 @@ from flask.cli import FlaskGroup, ScriptInfo
from flask import Flask
from flask_restplus import Api, Resource, fields
+from ..model import db
+
+app = Flask('archivist')
api = Api(version='0.1', title='Archivist API',
description='API for the Archivist Document System')
@@ -12,9 +15,16 @@ NAMESPACES=(
'prefix',
)
-def create_app(info):
- app = Flask('archivist')
+@app.before_request
+def before_request():
+ db.connect()
+@app.after_request
+def after_request(response):
+ db.close()
+ return response
+
+def create_app(info):
for ns in NAMESPACES:
mod = import_module('.' + ns, __name__)
api.add_namespace(mod.api)
diff --git a/archivist/server/tag.py b/archivist/server/tag.py
index 96fafcd..8142cd1 100644
--- a/archivist/server/tag.py
+++ b/archivist/server/tag.py
@@ -1,6 +1,8 @@
+from flask import request
from flask_restplus import Resource, fields, Namespace
from .. import model as m
+from .. import bl
api = Namespace('tag', description = 'Operations on tags')
@@ -17,3 +19,15 @@ class TagList(Resource):
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(201, "Tag created")
+ @api.response(409, "Tag already exists")
+ def put(self):
+ """Create a new tag."""
+ data = request.get_json()
+ tag, created = bl.PrefixTag(**data).create()
+ if created:
+ return '',201
+ else:
+ return '',409