def output(): sample_set_id = get_sample_set_id_from_results_file( request.vars["results_file_id"]) if (auth.can_view_sample_set(sample_set_id)): results_id = int(request.vars["results_file_id"]) output_directory = defs.DIR_OUT_VIDJIL_ID % results_id files = os.listdir(output_directory) file_dicts = [] for f in files: file_size = vidjil_utils.format_size( os.stat(output_directory + f).st_size) file_dicts.append({'filename': f, 'size': file_size}) log.info("view output files", extra={ 'user_id': auth.user.id, 'record_id': request.vars["results_file_id"], 'table_name': "results_file" }) return dict(message="output files", results_file_id=results_id, files=file_dicts) return error_message("access denied")
def upload(): session.forget(response) mes = "" error = "" if request.vars['id'] == None : error += "missing id" elif db.sequence_file[request.vars["id"]] is None: error += "no sequence file with this id" if not error: mes += " file {%s} " % (request.vars['id']) res = {"message": mes + "processing uploaded file"} log.debug(res) if request.vars.file != None : f = request.vars.file try: if request.vars["file_number"] == "1" : db.sequence_file[request.vars["id"]] = dict(data_file = db.sequence_file.data_file.store(f.file, f.filename)) else : db.sequence_file[request.vars["id"]] = dict(data_file2 = db.sequence_file.data_file.store(f.file, f.filename)) mes += "upload finished" except IOError as e: if str(e).find("File name too long") > -1: error += 'Your filename is too long, please shorten it.' else: error += "System error during processing of uploaded file." log.error(str(e)) data_file = db.sequence_file[request.vars["id"]].data_file data_file2 = db.sequence_file[request.vars["id"]].data_file2 if request.vars["file_number"] == "1" and len(error) == 0 and data_file is None: error += "no data file" if request.vars["file_number"] == "2" and len(error) == 0 and data_file2 is None: error += "no data file" if data_file is not None and data_file2 is not None and request.vars['pre_process'] != '0': db.sequence_file[request.vars["id"]] = dict(pre_process_flag = "WAIT") old_task_id = db.sequence_file[request.vars["id"]].pre_process_scheduler_task_id if db.scheduler_task[old_task_id] != None: scheduler.stop_task(old_task_id) db(db.scheduler_task.id == old_task_id).delete() db.commit() schedule_pre_process(int(request.vars['id']), int(request.vars['pre_process'])) mes += " | p%s start pre_process %s " % (request.vars['pre_process'], request.vars['id'] + "-" +request.vars['pre_process']) if data_file is not None : seq_file = defs.DIR_SEQUENCES + data_file # Compute and store file size size = os.path.getsize(seq_file) mes += ' (%s)' % vidjil_utils.format_size(size) db.sequence_file[request.vars["id"]] = dict(size_file = size) if data_file2 is not None : seq_file2 = defs.DIR_SEQUENCES + data_file2 #TODO # Log and exit res = {"message": error + mes} if error: res['success'] = 'false' res['priority'] = 3 log.error(res) else: log.info(res) return gluon.contrib.simplejson.dumps(res, separators=(',',':'))
def upload(): session.forget(response) mes = "" error = "" if request.vars['id'] == None: error += "missing id" elif db.sequence_file[request.vars["id"]] is None: error += "no sequence file with this id" if not error: mes += " file {%s} " % (request.vars['id']) res = {"message": mes + "processing uploaded file"} log.debug(res) if request.vars.file != None: f = request.vars.file try: if request.vars["file_number"] == "1": db.sequence_file[request.vars["id"]] = dict( data_file=db.sequence_file.data_file.store( f.file, f.filename)) else: db.sequence_file[request.vars["id"]] = dict( data_file2=db.sequence_file.data_file.store( f.file, f.filename)) mes += "upload finished (%s)" % (f.filename) except IOError as e: if str(e).find("File name too long") > -1: error += 'Your filename is too long, please shorten it.' else: error += "System error during processing of uploaded file." log.error(str(e)) data_file = db.sequence_file[request.vars["id"]].data_file data_file2 = db.sequence_file[request.vars["id"]].data_file2 if request.vars["file_number"] == "1" and len( error) == 0 and data_file is None: error += "no data file" if request.vars["file_number"] == "2" and len( error) == 0 and data_file2 is None: error += "no data file" if data_file is not None and data_file2 is not None and request.vars[ 'pre_process'] != '0': db.sequence_file[request.vars["id"]] = dict( pre_process_flag="WAIT") old_task_id = db.sequence_file[ request.vars["id"]].pre_process_scheduler_task_id if db.scheduler_task[old_task_id] != None: scheduler.stop_task(old_task_id) db(db.scheduler_task.id == old_task_id).delete() db.commit() schedule_pre_process(int(request.vars['id']), int(request.vars['pre_process'])) mes += " | p%s start pre_process %s " % ( request.vars['pre_process'], request.vars['id'] + "-" + request.vars['pre_process']) if data_file is not None: seq_file = defs.DIR_SEQUENCES + data_file # Compute and store file size size = os.path.getsize(seq_file) mes += ' (%s)' % vidjil_utils.format_size(size) db.sequence_file[request.vars["id"]] = dict(size_file=size) if data_file2 is not None: seq_file2 = defs.DIR_SEQUENCES + data_file2 #TODO # Log and exit res = {"message": error + mes} if error: res['success'] = 'false' res['priority'] = 3 log.error(res) else: log.info(res) return gluon.contrib.simplejson.dumps(res, separators=(',', ':'))