当前位置: 首页>>代码示例>>Python>>正文


Python utils.gen_shared_upload_link函数代码示例

本文整理汇总了Python中seahub.utils.gen_shared_upload_link函数的典型用法代码示例。如果您正苦于以下问题:Python gen_shared_upload_link函数的具体用法?Python gen_shared_upload_link怎么用?Python gen_shared_upload_link使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了gen_shared_upload_link函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _get_upload_link_info

    def _get_upload_link_info(self, uls):
        data = {}
        token = uls.token

        repo_id = uls.repo_id
        try:
            repo = seafile_api.get_repo(repo_id)
        except Exception as e:
            logger.error(e)
            repo = None

        path = uls.path
        if path:
            obj_name = '/' if path == '/' else os.path.basename(path.rstrip('/'))
        else:
            obj_name = ''

        if uls.ctime:
            ctime = datetime_to_isoformat_timestr(uls.ctime)
        else:
            ctime = ''

        data['repo_id'] = repo_id
        data['repo_name'] = repo.repo_name if repo else ''
        data['path'] = path
        data['obj_name'] = obj_name
        data['view_cnt'] = uls.view_cnt
        data['ctime'] = ctime
        data['link'] = gen_shared_upload_link(token)
        data['token'] = token
        data['username'] = uls.username

        return data
开发者ID:RaphaelWimmer,项目名称:seahub,代码行数:33,代码来源:upload_links.py

示例2: get_shared_upload_link

def get_shared_upload_link(request):
    """
    Handle ajax request to generate dir upload link.
    """
    content_type = 'application/json; charset=utf-8'

    repo_id = request.GET.get('repo_id', '')
    path = request.GET.get('p', '')
    use_passwd = True if int(request.POST.get('use_passwd', '0')) == 1 else False
    passwd = request.POST.get('passwd') if use_passwd else None

    if not (repo_id and path):
        err = _('Invalid arguments')
        data = json.dumps({'error': err})
        return HttpResponse(data, status=400, content_type=content_type)

    if path == '/':         # can not share root dir
        err = _('You cannot share the library in this way.')
        data = json.dumps({'error': err})
        return HttpResponse(data, status=400, content_type=content_type)
    else:
        if path[-1] != '/': # append '/' at end of path
            path += '/'

    repo = seaserv.get_repo(repo_id)
    if not repo:
        messages.error(request, _(u'Library does not exist'))
        return HttpResponse(status=400, content_type=content_type)

    user_perm = check_folder_permission(repo.id, path, request.user.username)

    if user_perm == 'r':
        messages.error(request, _(u'Permission denied'))
        return HttpResponse(status=403, content_type=content_type)
    elif user_perm == 'rw':
        l = UploadLinkShare.objects.filter(repo_id=repo_id).filter(
            username=request.user.username).filter(path=path)
        if len(l) > 0:
            upload_link = l[0]
            token = upload_link.token
        else:
            username = request.user.username
            uls = UploadLinkShare.objects.create_upload_link_share(
                username, repo_id, path, passwd)
            token = uls.token

        shared_upload_link = gen_shared_upload_link(token)

        data = json.dumps({'token': token, 'shared_upload_link': shared_upload_link})
        return HttpResponse(data, status=200, content_type=content_type)
    else:
        messages.error(request, _(u'Operation failed'))
        return HttpResponse(json.dumps(), status=500, content_type=content_type)
开发者ID:rabits,项目名称:seahub,代码行数:53,代码来源:views.py

示例3: _get_upload_link_info

    def _get_upload_link_info(self, uls):
        data = {}
        token = uls.token

        data['repo_id'] = uls.repo_id
        data['path'] = uls.path
        data['ctime'] = uls.ctime
        data['link'] = gen_shared_upload_link(token)
        data['token'] = token
        data['username'] = uls.username

        return data
开发者ID:AviorAlong,项目名称:haiwen-5.1.3,代码行数:12,代码来源:upload_links.py

示例4: list_shared_links

def list_shared_links(request):
    """List shared links, and remove invalid links(file/dir is deleted or moved).
    """
    username = request.user.username
    
    # download links
    fileshares = FileShare.objects.filter(username=username)
    p_fileshares = []           # personal file share
    for fs in fileshares:
        if is_personal_repo(fs.repo_id):  # only list files in personal repos
            r = seafile_api.get_repo(fs.repo_id)
            if not r:
                fs.delete()
                continue

            if fs.s_type == 'f':
                if seafile_api.get_file_id_by_path(r.id, fs.path) is None:
                    fs.delete()
                    continue
                fs.filename = os.path.basename(fs.path)
                fs.shared_link = gen_file_share_link(fs.token) 
            else:
                if seafile_api.get_dir_id_by_path(r.id, fs.path) is None:
                    fs.delete()
                    continue
                fs.filename = os.path.basename(fs.path.rstrip('/'))
                fs.shared_link = gen_dir_share_link(fs.token)
            fs.repo = r
            p_fileshares.append(fs)

    # upload links
    uploadlinks = UploadLinkShare.objects.filter(username=username)
    p_uploadlinks = []
    for link in uploadlinks:
        if is_personal_repo(link.repo_id):
            r = seafile_api.get_repo(link.repo_id)
            if not r:
                link.delete()
                continue
            if seafile_api.get_dir_id_by_path(r.id, link.path) is None:
                link.delete()
                continue
            link.dir_name = os.path.basename(link.path.rstrip('/'))
            link.shared_link = gen_shared_upload_link(link.token)
            link.repo = r
            p_uploadlinks.append(link)

    
    return render_to_response('share/links.html', {
            "fileshares": p_fileshares,
            "uploadlinks": p_uploadlinks,
            }, context_instance=RequestContext(request))
开发者ID:datawerk,项目名称:seahub,代码行数:52,代码来源:views.py

示例5: get

    def get(self, request, format=None):
        username = request.user.username

        uploadlinks = UploadLinkShare.objects.filter(username=username)
        p_uploadlinks = []
        for link in uploadlinks:
            r = seafile_api.get_repo(link.repo_id)
            if not r:
                link.delete()
                continue

            if seafile_api.get_dir_id_by_path(r.id, link.path) is None:
                link.delete()
                continue

            if link.path != '/':
                link.dir_name = os.path.basename(link.path.rstrip('/'))
            else:
                link.dir_name = link.path

            link.shared_link = gen_shared_upload_link(link.token)
            link.repo = r

            if link.expire_date:
                expire_date = datetime_to_isoformat_timestr(link.expire_date)
            else:
                expire_date = ""

            p_uploadlinks.append({
                "username": link.username,
                "repo_id": link.repo_id,
                "path": link.path,
                "token": link.token,
                "ctime": datetime_to_isoformat_timestr(link.ctime),
                "view_cnt": link.view_cnt,
                "expire_date": expire_date,
            })

        return HttpResponse(json.dumps(p_uploadlinks),
                            status=200, content_type=json_content_type)
开发者ID:AviorAlong,项目名称:haiwen-5.1.3,代码行数:40,代码来源:shared_upload_links.py

示例6: list_shared_upload_links

def list_shared_upload_links(request):
    """List upload links, and remove invalid links(dir is deleted or moved).
    """
    username = request.user.username

    uploadlinks = UploadLinkShare.objects.filter(username=username)
    p_uploadlinks = []
    for link in uploadlinks:
        if is_personal_repo(link.repo_id):
            r = seafile_api.get_repo(link.repo_id)
            if not r:
                link.delete()
                continue
            if seafile_api.get_dir_id_by_path(r.id, link.path) is None:
                link.delete()
                continue
            link.dir_name = os.path.basename(link.path.rstrip('/'))
            link.shared_link = gen_shared_upload_link(link.token)
            link.repo = r
            p_uploadlinks.append(link)

    return render_to_response('repo/shared_upload_links.html', {
            "uploadlinks": p_uploadlinks,
            }, context_instance=RequestContext(request))
开发者ID:gleez,项目名称:seahub,代码行数:24,代码来源:views.py

示例7: get_repo_dirents

def get_repo_dirents(request, repo, commit, path, offset=-1, limit=-1):
    """List repo dirents based on commit id and path. Use ``offset`` and
    ``limit`` to do paginating.

    Returns: A tupple of (file_list, dir_list, dirent_more)

    TODO: Some unrelated parts(file sharing, stars, modified info, etc) need
    to be pulled out to multiple functions.
    """

    dir_list = []
    file_list = []
    dirent_more = False
    if commit.root_id == EMPTY_SHA1:
        return ([], [], False) if limit == -1 else ([], [], False)
    else:
        try:
            dirs = seafile_api.list_dir_by_commit_and_path(commit.repo_id,
                                                           commit.id, path,
                                                           offset, limit)
            if not dirs:
                return ([], [], False)
        except SearpcError as e:
            logger.error(e)
            return ([], [], False)

        if limit != -1 and limit == len(dirs):
            dirent_more = True

        username = request.user.username
        starred_files = get_dir_starred_files(username, repo.id, path)
        fileshares = FileShare.objects.filter(repo_id=repo.id).filter(username=username)
        uploadlinks = UploadLinkShare.objects.filter(repo_id=repo.id).filter(username=username)


        view_dir_base = reverse("view_common_lib_dir", args=[repo.id, ''])
        dl_dir_base = reverse('repo_download_dir', args=[repo.id])
        file_history_base = reverse('file_revisions', args=[repo.id])
        for dirent in dirs:
            dirent.last_modified = dirent.mtime
            dirent.sharelink = ''
            dirent.uploadlink = ''
            if stat.S_ISDIR(dirent.props.mode):
                dpath = posixpath.join(path, dirent.obj_name)
                if dpath[-1] != '/':
                    dpath += '/'
                for share in fileshares:
                    if dpath == share.path:
                        dirent.sharelink = gen_dir_share_link(share.token)
                        dirent.sharetoken = share.token
                        break
                for link in uploadlinks:
                    if dpath == link.path:
                        dirent.uploadlink = gen_shared_upload_link(link.token)
                        dirent.uploadtoken = link.token
                        break
                p_dpath = posixpath.join(path, dirent.obj_name)
                dirent.view_link = view_dir_base + '?p=' + urlquote(p_dpath)
                dirent.dl_link = dl_dir_base + '?p=' + urlquote(p_dpath)
                dir_list.append(dirent)
            else:
                file_list.append(dirent)
                if repo.version == 0:
                    dirent.file_size = get_file_size(repo.store_id, repo.version, dirent.obj_id)
                else:
                    dirent.file_size = dirent.size
                dirent.starred = False
                fpath = posixpath.join(path, dirent.obj_name)
                p_fpath = posixpath.join(path, dirent.obj_name)
                dirent.view_link = reverse('view_lib_file', args=[repo.id, p_fpath])
                dirent.dl_link = get_file_download_link(repo.id, dirent.obj_id,
                                                        p_fpath)
                dirent.history_link = file_history_base + '?p=' + urlquote(p_fpath)
                if fpath in starred_files:
                    dirent.starred = True
                for share in fileshares:
                    if fpath == share.path:
                        dirent.sharelink = gen_file_share_link(share.token)
                        dirent.sharetoken = share.token
                        break

        return (file_list, dir_list, dirent_more)
开发者ID:domal,项目名称:seahub,代码行数:82,代码来源:__init__.py

示例8: post

    def post(self, request):

        if not IS_EMAIL_CONFIGURED:
            error_msg = _(u'Sending shared link failed. Email service is not properly configured, please contact administrator.')
            return api_error(status.HTTP_403_FORBIDDEN, error_msg)

        # check args
        email = request.POST.get('email', None)
        if not email:
            error_msg = 'email invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        token = request.POST.get('token', None)
        if not token:
            error_msg = 'token invalid.'
            return api_error(status.HTTP_400_BAD_REQUEST, error_msg)

        extra_msg = request.POST.get('extra_msg', '')

        # check if token exists
        try:
            link = UploadLinkShare.objects.get(token=token)
        except UploadLinkShare.DoesNotExist:
            error_msg = 'token %s not found.' % token
            return api_error(status.HTTP_404_NOT_FOUND, error_msg)

        # check if is upload link owner
        username = request.user.username
        if not link.is_owner(username):
            error_msg = 'Permission denied.'
            return api_error(status.HTTP_403_FORBIDDEN, error_msg)

        result = {}
        result['failed'] = []
        result['success'] = []
        to_email_list = string2list(email)
        # use contact_email, if present
        useremail = Profile.objects.get_contact_email_by_user(request.user.username)
        for to_email in to_email_list:

            failed_info = {}

            if not is_valid_email(to_email):
                failed_info['email'] = to_email
                failed_info['error_msg'] = 'email invalid.'
                result['failed'].append(failed_info)
                continue

            # prepare basic info
            c = {
                'email': username,
                'to_email': to_email,
                'extra_msg': extra_msg,
            }

            if REPLACE_FROM_EMAIL:
                from_email = useremail
            else:
                from_email = None  # use default from email

            if ADD_REPLY_TO_HEADER:
                reply_to = useremail
            else:
                reply_to = None

            c['shared_upload_link'] = gen_shared_upload_link(token)
            title = _(u'An upload link is shared to you on %s') % SITE_NAME
            template = 'shared_upload_link_email.html'

            # send email
            try:
                send_html_email(title, template, c, from_email, [to_email], reply_to=reply_to)
                result['success'].append(to_email)
            except Exception as e:
                logger.error(e)
                failed_info['email'] = to_email
                failed_info['error_msg'] = 'Internal Server Error'
                result['failed'].append(failed_info)

        return Response(result)
开发者ID:RaphaelWimmer,项目名称:seahub,代码行数:80,代码来源:send_upload_link_email.py

示例9: gen_token

        token = gen_token(max_length=10)

        upload_link = UploadLinkShare()
        upload_link.username = request.user.username
        upload_link.repo_id = repo_id
        upload_link.path = path
        upload_link.token = token

        try:
            upload_link.save()
        except IntegrityError, e:
            err = _('Failed to get the link, please retry later.')
            data = json.dumps({'error': err})
            return HttpResponse(data, status=500, content_type=content_type)

    shared_upload_link = gen_shared_upload_link(token)

    data = json.dumps({'token': token, 'shared_upload_link': shared_upload_link})
    return HttpResponse(data, status=200, content_type=content_type)

@login_required
def send_shared_upload_link(request):
    """
    Handle ajax post request to send shared upload link.
    """
    if not request.is_ajax() and not request.method == 'POST':
        raise Http404

    content_type = 'application/json; charset=utf-8'

    if not IS_EMAIL_CONFIGURED:
开发者ID:tostadora,项目名称:seahub,代码行数:31,代码来源:views.py

示例10: ajax_get_upload_link

def ajax_get_upload_link(request):
    content_type = 'application/json; charset=utf-8'

    if request.method == 'GET':
        repo_id = request.GET.get('repo_id', '')
        path = request.GET.get('p', '')
        username = request.user.username

        if not path.endswith('/'):
            path = path + '/'

        l = UploadLinkShare.objects.filter(repo_id=repo_id).filter(
            username=username).filter(path=path)
        if len(l) > 0:
            token = l[0].token
            data = {
                    'upload_link': gen_shared_upload_link(token),
                    'token': token,
                   }
        else:
            data = {}

        return HttpResponse(json.dumps(data), content_type=content_type)

    elif request.method == 'POST':

        if not request.user.permissions.can_generate_shared_link():
            err = _('You do not have permission to generate shared link')
            data = json.dumps({'error': err})
            return HttpResponse(data, status=403, content_type=content_type)

        repo_id = request.POST.get('repo_id', '')
        path = request.POST.get('p', '')
        use_passwd = True if int(request.POST.get('use_passwd', '0')) == 1 else False
        passwd = request.POST.get('passwd') if use_passwd else None

        if not (repo_id and path):
            err = _('Invalid arguments')
            data = json.dumps({'error': err})
            return HttpResponse(data, status=400, content_type=content_type)

        if passwd and len(passwd) < config.SHARE_LINK_PASSWORD_MIN_LENGTH:
            err = _('Password is too short')
            data = json.dumps({'error': err})
            return HttpResponse(data, status=400, content_type=content_type)

        if path[-1] != '/': # append '/' at end of path
            path += '/'

        repo = seaserv.get_repo(repo_id)
        if not repo:
            err = 'Library %s not found.' % repo_id
            data = json.dumps({'error': err})
            return HttpResponse(data, status=404, content_type=content_type)

        user_perm = check_folder_permission(request, repo_id, '/')
        if user_perm == 'rw':
            l = UploadLinkShare.objects.filter(repo_id=repo_id).filter(
                username=request.user.username).filter(path=path)
            if len(l) > 0:
                upload_link = l[0]
                token = upload_link.token
            else:
                username = request.user.username
                uls = UploadLinkShare.objects.create_upload_link_share(
                    username, repo_id, path, passwd)
                token = uls.token

            shared_upload_link = gen_shared_upload_link(token)

            data = json.dumps({'token': token, 'upload_link': shared_upload_link})
            return HttpResponse(data, content_type=content_type)
        else:
            return HttpResponse(json.dumps({'error': _(u'Permission denied')}),
                status=403, content_type=content_type)
开发者ID:insky2005,项目名称:seahub,代码行数:75,代码来源:views.py

示例11: list_shared_links

def list_shared_links(request):
    """List shared links, and remove invalid links(file/dir is deleted or moved).
    """
    username = request.user.username

    # download links
    fileshares = FileShare.objects.filter(username=username)
    fs_files, fs_dirs = [], []
    for fs in fileshares:
        r = seafile_api.get_repo(fs.repo_id)
        if not r:
            fs.delete()
            continue

        if fs.is_file_share_link():
            if seafile_api.get_file_id_by_path(r.id, fs.path) is None:
                fs.delete()
                continue
            fs.filename = os.path.basename(fs.path)
            fs.shared_link = gen_file_share_link(fs.token)
        else:
            if seafile_api.get_dir_id_by_path(r.id, fs.path) is None:
                fs.delete()
                continue
            if fs.path != '/':
                fs.filename = os.path.basename(fs.path.rstrip('/'))
            else:
                fs.filename = fs.path
            fs.shared_link = gen_dir_share_link(fs.token)
        fs.repo = r

        if fs.expire_date is not None and timezone.now() > fs.expire_date:
            fs.is_expired = True

        fs_files.append(fs) if fs.is_file_share_link() else fs_dirs.append(fs)
    fs_files.sort(lambda x, y: cmp(x.filename, y.filename))
    fs_dirs.sort(lambda x, y: cmp(x.filename, y.filename))

    # upload links
    uploadlinks = UploadLinkShare.objects.filter(username=username)
    p_uploadlinks = []
    for link in uploadlinks:
        r = seafile_api.get_repo(link.repo_id)
        if not r:
            link.delete()
            continue
        if seafile_api.get_dir_id_by_path(r.id, link.path) is None:
            link.delete()
            continue
        if link.path != '/':
            link.dir_name = os.path.basename(link.path.rstrip('/'))
        else:
            link.dir_name = link.path
        link.shared_link = gen_shared_upload_link(link.token)
        link.repo = r
        p_uploadlinks.append(link)
    p_uploadlinks.sort(lambda x, y: cmp(x.dir_name, y.dir_name))

    return render_to_response('share/links.html', {
            "fileshares": fs_dirs + fs_files,
            "uploadlinks": p_uploadlinks,
            }, context_instance=RequestContext(request))
开发者ID:insky2005,项目名称:seahub,代码行数:62,代码来源:views.py


注:本文中的seahub.utils.gen_shared_upload_link函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。