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')
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')
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')
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')
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')