Skip to content
Snippets Groups Projects
Commit 0e6be579 authored by Gunnar Schaefer's avatar Gunnar Schaefer
Browse files

add DB reset functionality

parent a196bc2d
No related branches found
No related tags found
No related merge requests found
......@@ -85,6 +85,20 @@ DOWNLOAD_SCHEMA = {
'additionalProperties': False
}
RESET_SCHEMA = {
'$schema': 'http://json-schema.org/draft-04/schema#',
'title': 'Reset',
'type': 'object',
'properties': {
'reset': {
'type': 'boolean',
},
},
'required': ['reset'],
'additionalProperties': False
}
class Core(base.RequestHandler):
"""/api """
......@@ -94,7 +108,22 @@ class Core(base.RequestHandler):
pass
def post(self):
log.error(self.request.body)
if not self.app.config['demo']:
self.abort(400, 'API must be in demo mode')
try:
payload = self.request.json_body
jsonschema.validate(payload, RESET_SCHEMA)
except (ValueError, jsonschema.ValidationError) as e:
self.abort(400, str(e))
if payload.get('reset', False):
self.app.db.projects.delete_many({})
self.app.db.sessions.delete_many({})
self.app.db.acquisitions.delete_many({})
self.app.db.collections.delete_many({})
self.app.db.jobs.delete_many({})
for p in (self.app.config['data_path'] + '/' + d for d in os.listdir(self.app.config['data_path'])):
if p not in [self.app.config['upload_path'], self.app.config['quarantine_path']]:
shutil.rmtree(p)
def get(self):
"""Return API documentation"""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment