コード例 #1
0
ファイル: views.py プロジェクト: funkygaddafi/datapimp
def file_list(request, rel_path):
    focus_index = request.GET.get('focus', 0)
    file_list_view = reverse('file_list', current_app='file_server', args=[''])
    base_dir = get_base_dir(request.user)
    directory = os.path.normpath(os.path.join(base_dir, rel_path)) #@ReservedAssignment
    if (not os.path.isdir(directory)):
        raise Http404
    check_read_access(directory, request.user)
    path = ''
    if (rel_path):
        path = rel_path + '/'
    parent = ''
    if len(directory) >= len(base_dir):
        parent = file_list_view + os.path.split(rel_path)[0]
    dir_content = os.listdir(directory)
    file_list = []
    for f in dir_content:
        abs_path = os.path.join(directory, f)
        if os.path.isdir(abs_path):
            rel_path_to_dir = os.path.join(rel_path, f)
            public_links = public_link_t.objects.filter(account=request.user, rel_path=rel_path_to_dir,
                                                        is_directory=True, inode_num=get_inode_num(abs_path))
            size = len(os.listdir(abs_path))
            file_list.append(file_entry_t(f, public_links, size, True))
                
    for f in dir_content: 
        rel_path_to_file = os.path.join(rel_path, f)
        abs_path = os.path.join(directory, f)
        #ctime = get_ctime(abs_path)
        if os.path.isfile(abs_path):
            public_links = public_link_t.objects.filter(
                account=request.user, rel_path=rel_path_to_file,
                is_directory=False, inode_num=get_inode_num(abs_path))
            file_size = os.path.getsize(abs_path)
            file_list.append(file_entry_t(f, public_links, file_size))
    
    t = loader.get_template('file_server/file_list.html')
    upload_form = upload_file_form_t(initial={'rel_path':rel_path})
    user_profile = get_user_profile(request.user)
    c = RequestContext(request, {
            'file_list': file_list,
            'rel_path': rel_path,
            'path': path,
            'file_list_view': file_list_view,       
            'parent': parent,
            'upload_form': upload_form,
            'focus_index': focus_index,
            'quota': user_profile
            })
    return HttpResponse(t.render(c))
コード例 #2
0
ファイル: views.py プロジェクト: funkygaddafi/datapimp
def public_directory(request, key):
    public_link = get_object_or_404(public_link_t, key=key, is_directory=True)
    try:
        base_dir = get_base_dir(public_link.account)
        directory = os.path.join(base_dir, public_link.rel_path)
        if public_link.inode_num != get_inode_num(directory):
            raise Http404
        check_read_access(directory, public_link.account)
        dir_content = os.listdir(directory)
                    
        file_list = []
        for f in dir_content: 
            rel_path_to_file = os.path.join(directory, f)
            abs_path = os.path.join(directory, f)
            if os.path.isfile(abs_path):
                file_size = os.path.getsize(abs_path)
                file_list.append(file_entry_t(f, [], file_size))
        
        t = loader.get_template('file_server/public_dir.html')
        #upload_form = upload_file_form_t(initial={'rel_path':rel_path})
        user_profile = get_user_profile(public_link.account)
        upload_form = None
        if public_link.write_access:
            upload_form = upload_file_form_t(initial={'rel_path':key})
        
        public_link.download_count += 1
        public_link.save() 
        c = RequestContext(request, {
                'file_list': file_list,
                'quota': user_profile,
                'path' : public_link.rel_path,
                'key' : key,
                'upload_form' : upload_form
                })
        return HttpResponse(t.render(c))
    except IOError: 
        raise Http404