def thumbnail_get(request, repo_id, size, path): """ handle thumbnail src from repo file list return thumbnail file to web """ try: size = int(size) except ValueError as e: logger.error(e) return HttpResponse() obj_id = get_file_id_by_path(repo_id, path) if check_folder_permission(request, repo_id, path) is None \ or obj_id is None: return HttpResponse() thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file) and \ allow_generate_thumbnail(request, repo_id, path): generate_thumbnail(request, repo_id, size, path) try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, mimetype='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse()
def share_link_thumbnail_get(request, token, size, path): """ handle thumbnail src from dir download link page return thumbnail file to web """ fileshare = FileShare.objects.get_valid_file_link_by_token(token) if not fileshare: return HttpResponse() repo_id = fileshare.repo_id repo = get_repo(repo_id) if not repo: return HttpResponse() if fileshare.path == '/': image_path = path else: image_path = posixpath.join(fileshare.path, path.lstrip('/')) obj_id = get_file_id_by_path(repo_id, image_path) thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file) and \ allow_generate_thumbnail(request, repo_id, image_path): generate_thumbnail(request, repo_id, size, image_path) try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, mimetype='image/'+THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse()
def share_link_thumbnail_get(request, token, size, path): """ handle thumbnail src from dir download link page return thumbnail file to web """ fileshare = FileShare.objects.get_valid_file_link_by_token(token) if not fileshare: return HttpResponse() repo_id = fileshare.repo_id repo = get_repo(repo_id) if not repo: return HttpResponse() if fileshare.path == '/': image_path = path else: image_path = posixpath.join(fileshare.path, path.lstrip('/')) obj_id = get_file_id_by_path(repo_id, image_path) thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file) and \ allow_generate_thumbnail(request, repo_id, image_path): generate_thumbnail(request, repo_id, size, image_path) try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, mimetype='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse()
def share_link_thumbnail_get(request, token, size, path): """ handle thumbnail src from dir download link page return thumbnail file to web """ try: size = int(size) except ValueError as e: logger.error(e) return HttpResponse() fileshare = FileShare.objects.get_valid_file_link_by_token(token) if not fileshare: return HttpResponse() password_check_passed, err_msg = check_share_link_common( request, fileshare) if not password_check_passed: d = { 'token': token, 'view_name': 'view_shared_dir', 'err_msg': err_msg } return render_to_response('share_access_validation.html', d, context_instance=RequestContext(request)) image_path = get_real_path_by_fs_and_req_path(fileshare, path) repo_id = fileshare.repo_id repo = get_repo(repo_id) obj_id = get_file_id_by_path(repo_id, image_path) # check if file exist if not repo or not obj_id: return HttpResponse() # check if is allowed if repo.encrypted or not ENABLE_THUMBNAIL: return HttpResponse() success = True thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file): success, status_code = generate_thumbnail(request, repo_id, size, image_path) if success: try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, content_type='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse() else: return HttpResponse()
def share_link_thumbnail_get(request, token, size, path): """ handle thumbnail src from dir download link page return thumbnail file to web """ try: size = int(size) except ValueError as e: logger.error(e) return HttpResponse() fileshare = FileShare.objects.get_valid_file_link_by_token(token) if not fileshare: return HttpResponse() password_check_passed, err_msg = check_share_link_common(request, fileshare) if not password_check_passed: d = {'token': token, 'view_name': 'view_shared_dir', 'err_msg': err_msg} return render_to_response('share_access_validation.html', d, context_instance=RequestContext(request)) if fileshare.path == '/': image_path = path else: image_path = posixpath.join(fileshare.path, path.lstrip('/')) repo_id = fileshare.repo_id repo = get_repo(repo_id) obj_id = get_file_id_by_path(repo_id, image_path) # check if file exist if not repo or not obj_id: return HttpResponse() # check if is allowed if repo.encrypted or not ENABLE_THUMBNAIL: return HttpResponse() success = True thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file): success, status_code = generate_thumbnail(request, repo_id, size, image_path) if success: try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, content_type='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse() else: return HttpResponse()
def share_link_thumbnail_create(request, token): """generate thumbnail from dir download link page return thumbnail src to web """ content_type = 'application/json; charset=utf-8' result = {} fileshare = FileShare.objects.get_valid_file_link_by_token(token) if not fileshare: err_msg = _(u"Invalid token.") return HttpResponse(json.dumps({"error": err_msg}), status=400, content_type=content_type) repo_id = fileshare.repo_id repo = get_repo(repo_id) if not repo: err_msg = _(u"Library does not exist.") return HttpResponse(json.dumps({"error": err_msg}), status=400, content_type=content_type) if repo.encrypted or not ENABLE_THUMBNAIL: err_msg = _(u"Permission denied.") return HttpResponse(json.dumps({"error": err_msg}), status=403, content_type=content_type) req_path = request.GET.get('path', None) if not req_path or '../' in req_path: err_msg = _(u"Invalid arguments.") return HttpResponse(json.dumps({"error": err_msg}), status=400, content_type=content_type) if fileshare.path == '/': real_path = req_path else: real_path = posixpath.join(fileshare.path, req_path.lstrip('/')) size = request.GET.get('size', THUMBNAIL_DEFAULT_SIZE) success, status_code = generate_thumbnail(request, repo_id, size, real_path) if success: src = get_share_link_thumbnail_src(token, size, req_path) result['encoded_thumbnail_src'] = urlquote(src) return HttpResponse(json.dumps(result), content_type=content_type) else: err_msg = _('Failed to create thumbnail.') return HttpResponse(json.dumps({'err_msg': err_msg}), status=status_code, content_type=content_type)
def thumbnail_get(request, workspace_id, dtable_uuid, path): """ handle thumbnail src from repo file list return thumbnail file to web """ try: size = int(request.GET.get('size')) except Exception as e: logger.error(e) return HttpResponse() else: if size <= 0: return HttpResponse() # resource check workspace = Workspaces.objects.get_workspace_by_id(workspace_id) if not workspace: return HttpResponse() dtable = DTables.objects.get_dtable_by_uuid(dtable_uuid) if not dtable: return HttpResponse() repo_id = workspace.repo_id path = normalize_file_path(os.path.join('/asset', dtable_uuid, path)) file_id = seafile_api.get_file_id_by_path(repo_id, path) if not file_id: return HttpResponse() # permission check username = request.user.username if not (check_dtable_permission(username, workspace, dtable) or \ (request.session.get('external_link') and request.session.get('external_link')['dtable_uuid'] == dtable.uuid.hex)): return render_permission_error(request, _('Permission denied.')) success = True thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), file_id) if not os.path.exists(thumbnail_file): success, status_code = generate_thumbnail(request, repo_id, size, path) if success: try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, content_type='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse(status=500) else: return HttpResponse(status=status_code)
def thumbnail_get(request, repo_id, size, path): """ handle thumbnail src from repo file list return thumbnail file to web """ if check_folder_permission(request, repo_id, path) is None: return HttpResponse() obj_id = get_file_id_by_path(repo_id, path) thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file) and \ allow_generate_thumbnail(request, repo_id, path): generate_thumbnail(request, repo_id, size, path) try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, mimetype='image/'+THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse()
def share_link_thumbnail_get(request, token, size, path): """ handle thumbnail src from dir download link page return thumbnail file to web """ try: size = int(size) except ValueError as e: logger.error(e) return HttpResponse() fileshare = FileShare.objects.get_valid_file_link_by_token(token) if not fileshare: return HttpResponse() if fileshare.path == '/': image_path = path else: image_path = posixpath.join(fileshare.path, path.lstrip('/')) repo_id = fileshare.repo_id repo = get_repo(repo_id) obj_id = get_file_id_by_path(repo_id, image_path) # check if file exist if not repo or not obj_id: return HttpResponse() # check if is allowed if repo.encrypted or not ENABLE_THUMBNAIL: return HttpResponse() success = True thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file): success, status_code = generate_thumbnail(request, repo_id, size, image_path) if success: try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, content_type='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse() else: return HttpResponse()
def thumbnail_create(request, repo_id): """create thumbnail from repo file list return thumbnail src """ content_type = 'application/json; charset=utf-8' result = {} repo = get_repo(repo_id) path = request.GET.get('path', None) if not repo: err_msg = _(u"Library does not exist.") return HttpResponse(json.dumps({"error": err_msg}), status=403, content_type=content_type) if not path: err_msg = _(u"Invalid arguments.") return HttpResponse(json.dumps({"error": err_msg}), status=403, content_type=content_type) if check_folder_permission(request, repo_id, path) is None: err_msg = _(u"Permission denied.") return HttpResponse(json.dumps({"error": err_msg}), status=403, content_type=content_type) if not allow_generate_thumbnail(request, repo_id, path): err_msg = _(u"Not allowed to generate thumbnail.") return HttpResponse(json.dumps({"error": err_msg}), status=403, content_type=content_type) size = request.GET.get('size', THUMBNAIL_DEFAULT_SIZE) if generate_thumbnail(request, repo_id, size, path): src = get_thumbnail_src(repo_id, size, path) result['encoded_thumbnail_src'] = urlquote(src) return HttpResponse(json.dumps(result), content_type=content_type) else: err_msg = _('Failed to create thumbnail.') return HttpResponse(json.dumps({'err_msg': err_msg}), status=500, content_type=content_type)
def thumbnail_get(request, repo_id, size, path): """ handle thumbnail src from repo file list return thumbnail file to web """ repo = get_repo(repo_id) obj_id = get_file_id_by_path(repo_id, path) # check if file exist if not repo or not obj_id: return HttpResponse() # check if is allowed if repo.encrypted or not ENABLE_THUMBNAIL or \ check_folder_permission(request, repo_id, path) is None: return HttpResponse() try: size = int(size) except ValueError as e: logger.error(e) return HttpResponse() success = True thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file): success, status_code = generate_thumbnail(request, repo_id, size, path) if success: try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, content_type='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse(status=500) else: return HttpResponse(status=status_code)
def thumbnail_get(request, repo_id, size, path): """ handle thumbnail src from repo file list return thumbnail file to web """ repo = get_repo(repo_id) obj_id = get_file_id_by_path(repo_id, path) # check if file exist if not repo or not obj_id: return HttpResponse() # check if is allowed if repo.encrypted or not ENABLE_THUMBNAIL or \ check_folder_permission(request, repo_id, path) is None: return HttpResponse() try: size = int(size) except ValueError as e: logger.error(e) return HttpResponse() success = True thumbnail_file = os.path.join(THUMBNAIL_ROOT, str(size), obj_id) if not os.path.exists(thumbnail_file): success, status_code = generate_thumbnail(request, repo_id, size, path) if success: try: with open(thumbnail_file, 'rb') as f: thumbnail = f.read() return HttpResponse(content=thumbnail, content_type='image/' + THUMBNAIL_EXTENSION) except IOError as e: logger.error(e) return HttpResponse() else: return HttpResponse()