Skip to content
Snippets Groups Projects
Unverified Commit 73d97450 authored by Megan Henning's avatar Megan Henning Committed by GitHub
Browse files

Merge pull request #997 from scitran/analysis-file-access

Add direct route access to analysis file download
parents 9301a8d5 4d3ebd51
No related branches found
No related tags found
No related merge requests found
......@@ -238,10 +238,14 @@ endpoints = [
]),
# Analysis
route( '/analyses/<_id:{cid}>', AnalysesHandler, m=['GET']),
route( '/analyses/<_id:{cid}>', AnalysesHandler, m=['GET']),
prefix( '/analyses/<_id:{cid}>', [
route('/files', AnalysesHandler, h='download', m=['GET']),
route('/files/<filename:{fname}>', AnalysesHandler, h='download', m=['GET']),
]),
prefix('/<:{cname}>/<:{cid}>/<cont_name:analyses>/<cid:{cid}>', [
route('/<list_name:notes>', NotesListHandler, m=['POST']),
route('/<list_name:notes>/<_id:{nid}>', NotesListHandler, name='notes', m=['GET', 'PUT', 'DELETE']),
route('/<list_name:notes>', NotesListHandler, m=['POST']),
route('/<list_name:notes>/<_id:{nid}>', NotesListHandler, name='notes', m=['GET', 'PUT', 'DELETE']),
]),
......@@ -263,11 +267,11 @@ endpoints = [
route('/<list_name:files>/<name:{fname}>/info', FileListHandler, h='get_info', m=['GET']),
route('/<list_name:files>/<name:{fname}>/info', FileListHandler, h='modify_info', m=['POST']),
route( '/analyses', AnalysesHandler, m=['POST']),
route( '/analyses', AnalysesHandler, m=['POST']),
prefix('/analyses', [
route('/<_id:{cid}>', AnalysesHandler, m=['GET', 'PUT', 'DELETE']),
route('/<_id:{cid}>/files', AnalysesHandler, h='download', m=['GET']),
route('/<_id:{cid}>/files/<filename:{fname}>', AnalysesHandler, h='download', m=['GET']),
route('/<_id:{cid}>', AnalysesHandler, m=['GET', 'PUT', 'DELETE']),
route('/<_id:{cid}>/files', AnalysesHandler, h='download', m=['GET']),
route('/<_id:{cid}>/files/<filename:{fname}>', AnalysesHandler, h='download', m=['GET']),
]),
route('/<list_name:notes>', NotesListHandler, m=['POST']),
......
......@@ -153,9 +153,11 @@ class AnalysesHandler(RefererHandler):
self.abort(404, 'Analysis {} not removed from container {} {}'.format(_id, cont_name, cid))
def download(self, cont_name, cid, _id, filename=None):
def download(self, **kwargs):
"""
.. http:get:: /api/(cont_name)/(cid)/analyses/(analysis_id)/files/(file_name)
.. http:get:: /api/(cont_name)*/(cid)*/analyses/(analysis_id)/files/(file_name)*
* - not required
Download a file from an analysis or download a tar of all files
......@@ -249,8 +251,15 @@ class AnalysesHandler(RefererHandler):
"""
_id = kwargs.get('_id')
analysis = self.storage.get_container(_id)
filename = kwargs.get('filename')
cid = analysis['parent']['id']
cont_name = analysis['parent']['type']
parent = self.storage.get_parent(cont_name, cid)
permchecker = self.get_permchecker(parent)
ticket_id = self.get_param('ticket')
ticket = None
if ticket_id is None:
......@@ -260,7 +269,6 @@ class AnalysesHandler(RefererHandler):
if not self.origin.get('id'):
self.origin = ticket.get('origin')
analysis = self.storage.get_container(_id)
fileinfo = analysis.get('files', [])
if filename:
fileinfo = [fi for fi in fileinfo if fi['name'] == filename]
......
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