def on_search_image(self, request): res = {'error': 1} if request.method == 'POST': user_id = request.form.get('user_id') session_id = request.form.get('session_id') search_img = 'img' in request.files and request.files['img'] or None if search_img is not None: search_img_name = cvtools.upload_file(conf.UPLOAD_DIR_TEMP, search_img) if cvtools.resize_image(conf.UPLOAD_DIR_TEMP + '/' + search_img_name): if search_img_name is not False: timer_start = time.clock() search_result = cvtools.search_image(conf.UPLOAD_DIR_TEMP + '/' + search_img_name) res['time'] = time.clock() - timer_start if search_result is not False: search_result = search_result[0] res['error'] = 0 res['found'] = 1 res['title'] = search_result['title'] res['user'] = search_result['username'] res['src_img'] = cvtools.get_abs_url(conf.UPLOAD_DIR_SRC[1:], search_result['src_name']) res['target_type'] = search_result['target_type'] res['target_pos'] = search_result['pos'] if search_result['target_type'] == conf.TAR_TYPE_IMAGE: res['target'] = cvtools.get_abs_url(conf.UPLOAD_DIR_TAR_IMG[1:], search_result['target']) elif search_result['target_type'] == conf.TAR_TYPE_VIDEO: res['target'] = cvtools.get_abs_url(conf.UPLOAD_DIR_TAR_VIDEO[1:], search_result['target']) else: res['target'] = search_result['target'] # adding views if cvtools.user_logged_in(user_id, session_id): cvtools.insert_user_view(user_id, search_result['id']) else: res['error'] = 0 res['found'] = 0 else: res['error_msg'] = 'search image upload failed' else: res['error_msg'] = 'error while resizing image' else: res['error_msg'] = 'img not recieved' response_str = json.dumps([res]) return Response(response_str, mimetype='application/json')
def on_upload_image(self, request): res = {'error': 1} if request.method == 'POST': user_id = request.form.get('user_id') session_id = request.form.get('session_id') title = request.form.get('title') src_img = 'src_img' in request.files and request.files['src_img'] or None tar_image = 'target_image' in request.files and request.files['target_image'] or None tar_video = 'target_video' in request.files and request.files['target_video'] or None tar_type = request.form.get('target_type') tar_url = request.form.get('target_url') tar_url_yt = request.form.get('target_url_yt') tar_model = request.form.get('target_model') tar_pos = request.form.get('target_pos') vid_w = request.form.get('video_w') is None and "512" or request.form.get('video_w') vid_h = request.form.get('video_h') is None and "512" or request.form.get('video_h') if tar_type is None: tar_type = '' else: tar_type = int(tar_type) if src_img is None: res['error_msg'] = 'src_img not found' elif tar_type in [None, '']: res['error_msg'] = 'target_type missing. valid values: [1,2,3,4]' elif tar_type in [conf.TAR_TYPE_IMAGE, conf.TAR_TYPE_VIDEO] and tar_image is None and tar_video is None: res['error_msg'] = 'target img/video not found' elif tar_type == conf.TAR_TYPE_URL and tar_url in [None, '']: res['error_msg'] = 'target_url missing' elif tar_type == conf.TAR_TYPE_URL_YT and tar_url_yt in [None, '']: res['error_msg'] = 'target_url_yt missing' elif tar_type == conf.TAR_TYPE_MODEL and tar_model in [None, '']: res['error_msg'] = 'target_model missing' elif title in [None, '']: res['error_msg'] = 'title missing' elif not cvtools.user_logged_in(user_id, session_id): res['error'] = 2 # not logged in res['error_msg'] = 'please login' elif not vid_w.isdigit() or not vid_h.isdigit(): res['error_msg'] = 'video height and width must be an integer' else: if tar_type == conf.TAR_TYPE_IMAGE: target = cvtools.upload_file(conf.UPLOAD_DIR_TAR_IMG, tar_image) elif tar_type == conf.TAR_TYPE_VIDEO: target = cvtools.upload_file(conf.UPLOAD_DIR_TAR_VIDEO, tar_video) if target is not False: target = cvtools.convert_video(os.path.join(conf.UPLOAD_DIR_TAR_VIDEO, target), vid_w, vid_h) elif tar_type == conf.TAR_TYPE_URL: target = tar_url elif tar_type == conf.TAR_TYPE_URL_YT: target = tar_url_yt elif tar_type == conf.TAR_TYPE_MODEL: target = tar_model else: target = False src_img_name = cvtools.upload_file(conf.UPLOAD_DIR_SRC, src_img) if src_img_name is not False and target != '': file_id = cvtools.insert_file(src_img_name, tar_type, target, user_id, title, tar_pos) if file_id > 0: indexed = cvtools.index_image(conf.UPLOAD_DIR_SRC + '/' + src_img_name, file_id) if indexed is True: res['error'] = 0 else: res['error_msg'] = 'image indexing failed' else: res['error_msg'] = 'upload failed' else: res['error_msg'] = 'request is not POST' response_str = json.dumps([res]) return Response(response_str, mimetype='application/json')