|
@@ -32,9 +32,11 @@ class WebServer:
|
|
|
self.__flask = Flask(__name__)
|
|
|
self.__app = socketio.WSGIApp(self.__sio, self.__flask, static_files=static_files)
|
|
|
|
|
|
- def response():
|
|
|
- rsp = make_response()
|
|
|
- return rsp
|
|
|
+ def response(data=None):
|
|
|
+ if data is None:
|
|
|
+ return make_response()
|
|
|
+ else:
|
|
|
+ return make_response(data)
|
|
|
else:
|
|
|
print('development build')
|
|
|
|
|
@@ -42,8 +44,12 @@ class WebServer:
|
|
|
self.__flask = Flask(__name__)
|
|
|
self.__app = socketio.WSGIApp(self.__sio, self.__flask)
|
|
|
|
|
|
- def response():
|
|
|
- rsp = make_response()
|
|
|
+ def response(data=None):
|
|
|
+ if data is None:
|
|
|
+ rsp = make_response()
|
|
|
+ else:
|
|
|
+ rsp = make_response(data)
|
|
|
+
|
|
|
rsp.headers['Access-Control-Allow-Origin'] = '*'
|
|
|
return rsp
|
|
|
|
|
@@ -152,6 +158,27 @@ class WebServer:
|
|
|
# return default success response
|
|
|
return response()
|
|
|
|
|
|
+ @self.__flask.route('/projects/<project_identifier>/unmanaged/<int:file_number>', methods=['GET'])
|
|
|
+ def get_unmanaged_file(project_identifier, file_number):
|
|
|
+ # abort if project id is not valid
|
|
|
+ if project_identifier not in app_status['projects'].keys():
|
|
|
+ return make_response('project does not exist', 500)
|
|
|
+
|
|
|
+ project = app_status['projects'][project_identifier]
|
|
|
+
|
|
|
+ # abort if file id is not valid
|
|
|
+ if file_number >= len(project.unmanaged_files_keys):
|
|
|
+ return make_response('file does not exist', 500)
|
|
|
+
|
|
|
+ file_identifier = project.unmanaged_files_keys[file_number]
|
|
|
+ if file_identifier not in project.unmanaged_files_keys:
|
|
|
+ return make_response('file does not exist', 500)
|
|
|
+
|
|
|
+ target_object = project.unmanaged_files[file_identifier]
|
|
|
+
|
|
|
+ # return element data
|
|
|
+ return response(target_object.get_data())
|
|
|
+
|
|
|
@self.__flask.route('/projects/<project_identifier>/data/<file_identifier>', defaults={'size': None}, methods=['GET'])
|
|
|
@self.__flask.route('/projects/<project_identifier>/data/<file_identifier>/<size>', methods=['GET'])
|
|
|
def get_file(project_identifier, file_identifier, size):
|
|
@@ -162,11 +189,10 @@ class WebServer:
|
|
|
project = app_status['projects'][project_identifier]
|
|
|
|
|
|
# abort if file id is not valid
|
|
|
- if file_identifier not in project['data'].keys():
|
|
|
+ target_object = project.get_media_file(file_identifier)
|
|
|
+ if target_object is None:
|
|
|
return make_response('file does not exist', 500)
|
|
|
|
|
|
- target_object = project['data'][file_identifier]
|
|
|
-
|
|
|
# resize image to requested size
|
|
|
if size is not None:
|
|
|
target_object = target_object.resize(size)
|
|
@@ -187,11 +213,10 @@ class WebServer:
|
|
|
project = app_status['projects'][project_identifier]
|
|
|
|
|
|
# abort if file id is not valid
|
|
|
- if file_identifier not in project['data'].keys():
|
|
|
+ target_object = project.get_media_file(file_identifier)
|
|
|
+ if target_object is None:
|
|
|
return make_response('file does not exist', 500)
|
|
|
|
|
|
- target_object = project['data'][file_identifier]
|
|
|
-
|
|
|
# add result
|
|
|
result = request.get_json(force=True)
|
|
|
if result:
|
|
@@ -219,11 +244,10 @@ class WebServer:
|
|
|
project = app_status['projects'][project_identifier]
|
|
|
|
|
|
# abort if file id is not valid
|
|
|
- if file_identifier not in project['data'].keys():
|
|
|
+ target_object = project.get_media_file(file_identifier)
|
|
|
+ if target_object is None:
|
|
|
return make_response('file does not exist', 500)
|
|
|
|
|
|
- target_object = project['data'][file_identifier]
|
|
|
-
|
|
|
# parse post data
|
|
|
result = request.get_json(force=True)
|
|
|
if result:
|
|
@@ -287,19 +311,36 @@ class WebServer:
|
|
|
# create export
|
|
|
result = []
|
|
|
|
|
|
- for data_key in project['data']:
|
|
|
- data_obj = project['data'][data_key]
|
|
|
+ def mk_obj(type, name, extension, predictions):
|
|
|
data_res = {
|
|
|
- 'type': data_obj['type'],
|
|
|
- 'filename': data_obj['name'] + data_obj['extension'],
|
|
|
+ 'type': type,
|
|
|
+ 'filename': name + extension,
|
|
|
'predictions': []
|
|
|
}
|
|
|
|
|
|
- for result_key in data_obj['predictionResults']:
|
|
|
- result_obj = data_obj['predictionResults'][result_key]
|
|
|
+ for result_key in predictions:
|
|
|
+ result_obj = predictions[result_key]
|
|
|
data_res['predictions'].append(result_obj)
|
|
|
|
|
|
- result.append(data_res)
|
|
|
+ return data_res
|
|
|
+
|
|
|
+ for data_key in project['data']:
|
|
|
+ data_obj = project['data'][data_key]
|
|
|
+ result.append(mk_obj(
|
|
|
+ data_obj['type'],
|
|
|
+ data_obj['name'],
|
|
|
+ data_obj['extension'],
|
|
|
+ data_obj['predictionResults']
|
|
|
+ ))
|
|
|
+
|
|
|
+ for data_key in project.unmanaged_files:
|
|
|
+ data_obj = project.unmanaged_files[data_key].get_data()
|
|
|
+ result.append(mk_obj(
|
|
|
+ data_obj['type'],
|
|
|
+ data_obj['id'],
|
|
|
+ data_obj['extension'],
|
|
|
+ data_obj['predictionResults']
|
|
|
+ ))
|
|
|
|
|
|
# send to user
|
|
|
rsp = make_response(dumps(result))
|