From b00afbf449f31b75d7a3874202c91924aac4e569 Mon Sep 17 00:00:00 2001
From: Renzo Frigato <rfrigato@stanford.edu>
Date: Fri, 16 Sep 2016 10:05:07 -0700
Subject: [PATCH] fix downloads of analysis files

non ticket downloads are now handled properly
---
 api/api.py                  | 4 ++--
 api/handlers/listhandler.py | 7 ++++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/api/api.py b/api/api.py
index 87ea94bc..881cb03e 100644
--- a/api/api.py
+++ b/api/api.py
@@ -189,8 +189,8 @@ routes = [
                                                                                       listhandler.AnalysesHandler, handler_method='download',
                                                                                       methods=['GET'], name='analysis_files'),
     webapp2.Route(_format(r'/api/<cont_name:{cont_name_re}>/<cid:{cid_re}>/<list_name:analyses>/<_id:{cid_re}>/files/<name:{filename_re}>'),
-                                                                                      listhandler.AnalysesHandler,
-                                                                                      handler_method='download', name='analysis_single_file'),
+                                                                                      listhandler.AnalysesHandler, handler_method='download',
+                                                                                      methods=['GET'], name='analysis_single_file'),
     webapp2.Route(_format(r'/api/<cont_name:{cont_name_re}>/<cid:{cid_re}>/<list_name:analyses>/<_id:{cid_re}>/notes'),
                                                                                       listhandler.AnalysesHandler, handler_method='add_note',
                                                                                       methods=['POST'], name='analysis_add_note'),
diff --git a/api/handlers/listhandler.py b/api/handlers/listhandler.py
index d36aba43..dafc6284 100644
--- a/api/handlers/listhandler.py
+++ b/api/handlers/listhandler.py
@@ -835,8 +835,10 @@ class AnalysesHandler(ListHandler):
         permchecker, storage, _, _, _ = self._initialize_request(cont_name, list_name, _id)
         filename = kwargs.get('name')
         ticket_id = self.get_param('ticket')
-        if not ticket_id:
+        if ticket_id is None:
             permchecker(noop)('GET', _id=_id)
+        elif ticket_id != '':
+            ticket = self._check_ticket(ticket_id, _id, filename)
         analysis_id = kwargs.get('_id')
         fileinfo = storage.get_fileinfo(_id, analysis_id, filename)
         if fileinfo is None:
@@ -844,7 +846,7 @@ class AnalysesHandler(ListHandler):
             if filename:
                 error_msg = 'Could not find file {} on analysis {}'.format(filename, analysis_id)
             self.abort(404, error_msg)
-        if not ticket_id:
+        if ticket_id == '':
             if filename:
                 total_size = fileinfo[0]['size']
                 file_cnt = 1
@@ -860,7 +862,6 @@ class AnalysesHandler(ListHandler):
                 'filename': filename
             }
         else:
-            ticket = self._check_ticket(ticket_id, _id, filename)
             if not filename:
                 self._send_batch(ticket)
                 return
-- 
GitLab