예제 #1
0
 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')
예제 #2
0
    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')