Пример #1
0
    def on_recent(self, request):
        res = {'error': 1}
        if request.method == 'POST':
            user_id = request.form.get('user_id')
            session_id = request.form.get('session_id')

            if cvtools.user_logged_in(user_id, session_id):
                images = cvtools.get_recent_images(user_id)
                result = []
                for img in images:
                    temp = {}
                    temp['ar_id'] = img['id']
                    temp['src_img'] = cvtools.get_abs_url(conf.UPLOAD_DIR_SRC[1:], img['src_name'])
                    temp['target_type'] = img['target_type']
                    if temp['target_type'] == conf.TAR_TYPE_IMAGE:
                        temp['target'] = cvtools.get_abs_url(conf.UPLOAD_DIR_TAR_IMG[1:], img['target'])
                    elif temp['target_type'] == conf.TAR_TYPE_VIDEO:
                        temp['target'] = cvtools.get_abs_url(conf.UPLOAD_DIR_TAR_VIDEO[1:], img['target'])
                    else:
                        temp['target'] = img['target']
                    temp['title'] = img['title']
                    temp['user'] = img['username']
                    temp['viewed_at'] = img['created_at'].isoformat()
                    result.append(temp)

                res['error'] = 0
                res['result'] = result
            else:
                res['error'] = 2
                res['error_msg'] = 'session ended. please login'
        else:
            res['error_msg'] = 'request is not POST'

        response_str = json.dumps([res])
        return Response(response_str, mimetype='application/json')
Пример #2
0
    def on_password(self, request):
        res = {'error': 1}
        if request.method == 'POST':
            user_id = request.form.get('user_id')
            session_id = request.form.get('session_id')
            password = request.form.get('password')
            new_password = request.form.get('new_password')

            if new_password is None:
                res['error_msg'] = 'new_password required'
            else:
                if cvtools.user_logged_in(user_id, session_id):
                    user = cvtools.get_user(user_id)
                    if len(user) > 0:
                        pw_user = str(user[0]['password'])
                        pw_input = str(hashlib.md5(password).hexdigest())
                        if pw_user != pw_input:
                            res['error_msg'] = 'incorrect password'
                        else:
                            cvtools.update_user_password(user_id, new_password)
                            res['error'] = 0
                    else:
                        res['found'] = 0
                        res['error_msg'] = 'user not found'
                else:
                    res['error'] = 2
                    res['error_msg'] = 'session ended. please login'
        else:
            res['error_msg'] = 'request is not GET'

        response_str = json.dumps([res])
        return Response(response_str, mimetype='application/json')
Пример #3
0
    def on_profile(self, request):
        res = {'error': 1}
        if request.method == 'POST':
            user_id = request.form.get('user_id')
            session_id = request.form.get('session_id')
            find_user_id = request.form.get('find_user_id')

            if find_user_id is None:
                find_user_id = user_id

            if cvtools.user_logged_in(user_id, session_id):
                user = cvtools.get_user(find_user_id)
                result = {}
                if len(user) > 0:
                    res['found'] = 1
                    result['user_id'] = user[0]['id']
                    result['username'] = user[0]['username']
                    result['email'] = user[0]['email']
                    result['registered_at'] = user[0]['created_at'].isoformat()
                else:
                    res['found'] = 0

                res['error'] = 0
                res['result'] = result
            else:
                res['error'] = 2
                res['error_msg'] = 'session ended. please login'
        else:
            res['error_msg'] = 'request is not GET'

        response_str = json.dumps([res])
        return Response(response_str, mimetype='application/json')
Пример #4
0
    def on_remove_ar(self, request):
        res = {'error': 1}
        if request.method == 'POST':
            user_id = request.form.get('user_id')
            session_id = request.form.get('session_id')
            ar_id = request.form.get('ar_id')

            if ar_id is not None:
                if cvtools.user_logged_in(user_id, session_id):
                    image, count = cvtools.get_list(None, None, ar_id)
                    if len(image) > 0:
                        image = image[0]
                        if image['user_id'] != int(user_id):
                            res['error_msg'] = 'this ar is not yours'
                        else:
                            if image['target_type'] == conf.TAR_TYPE_IMAGE:
                                tar = conf.UPLOAD_DIR_TAR_IMG + '/' + image['target']
                            elif image['target_type'] == conf.TAR_TYPE_VIDEO:
                                tar = conf.UPLOAD_DIR_TAR_VIDEO + '/' + image['target']
                            else:
                                tar = None

                            if cvtools.remove_image(ar_id, conf.UPLOAD_DIR_SRC + '/' + image['src_name'], tar):
                                res['error'] = 0
                            else:
                                res['error_msg'] = 'delete unsuccessful'
                    else:
                        res['error_msg'] = 'image with id (' + ar_id + ') not found'
                else:
                    res['error'] = 2
                    res['error_msg'] = 'please login'
            else:
                res['error_msg'] = 'ar_id missing'
        response_str = json.dumps([res])
        return Response(response_str, mimetype='application/json')
Пример #5
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')
Пример #6
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')