mirror of
https://github.com/haiwen/seahub.git
synced 2025-04-28 03:10:45 +00:00
Update dir api (#2869)
* update dir api return dict format response * [listDir] modified listDir after api updated
This commit is contained in:
parent
35c1663dc2
commit
0fb958d9bd
@ -170,7 +170,7 @@ class DirView extends React.Component {
|
||||
let repoID = this.state.repoID;
|
||||
this.setState({isDirentListLoading: true});
|
||||
seafileAPI.listDir(repoID, path, {'with_thumbnail': true}).then(res => {
|
||||
let direntList = res.data.map(item => {
|
||||
let direntList = res.data.dirent_list.map(item => {
|
||||
let fileName = item.name.toLowerCase();
|
||||
if (fileName === 'readme.md' || fileName === 'readme.markdown') {
|
||||
this.setState({readmeMarkdown: item});
|
||||
|
@ -45,7 +45,7 @@ class DirentListItem extends React.Component {
|
||||
if (!this.state.hasRequest) {
|
||||
seafileAPI.listDir(this.props.repo.repo_id, this.state.filePath).then(res => {
|
||||
let direntList = [];
|
||||
res.data.forEach(item => {
|
||||
res.data.dirent_list.forEach(item => {
|
||||
if (this.props.isShowFile === true) { // show dir and file
|
||||
let dirent = new Dirent(item);
|
||||
direntList.push(dirent);
|
||||
|
@ -26,7 +26,7 @@ class DirentListView extends React.Component {
|
||||
let repo = this.props.repo;
|
||||
seafileAPI.listDir(repo.repo_id, '/').then(res => {
|
||||
let direntList = [];
|
||||
res.data.forEach(item => {
|
||||
res.data.dirent_list.forEach(item => {
|
||||
if (this.props.isShowFile === true) {
|
||||
let dirent = new Dirent(item);
|
||||
direntList.push(dirent);
|
||||
|
@ -151,7 +151,7 @@ class EditorUtilities {
|
||||
|
||||
getFiles() {
|
||||
return seafileAPI.listDir(repoID, dirPath, { recursive: true} ).then((response) => {
|
||||
var files = response.data.map((item) => {
|
||||
var files = response.data.dirent_list.map((item) => {
|
||||
return {
|
||||
name: item.name,
|
||||
type: item.type === 'dir' ? 'dir' : 'file',
|
||||
|
@ -248,7 +248,7 @@ class Wiki extends Component {
|
||||
|
||||
loadSidePanel = (initialPath) => {
|
||||
seafileAPI.listDir(repoID, '/',{recursive: true}).then(items => {
|
||||
const files = items.data.map(item => {
|
||||
const files = items.data.dirent_list.map(item => {
|
||||
return {
|
||||
name: item.name,
|
||||
type: item.type === 'dir' ? 'dir' : 'file',
|
||||
@ -337,7 +337,7 @@ class Wiki extends Component {
|
||||
this.setState({isDirentListLoading: true});
|
||||
seafileAPI.listDir(repoID, path, {'with_thumbnail': true}).then(res => {
|
||||
let direntList = [];
|
||||
res.data.forEach(item => {
|
||||
res.data.dirent_list.forEach(item => {
|
||||
let fileName = item.name.toLowerCase();
|
||||
if (fileName === 'readme.md' || fileName === 'readme.markdown') {
|
||||
this.setState({readmeMarkdown: item});
|
||||
|
@ -22,7 +22,7 @@ class EditorUtilities {
|
||||
|
||||
listRepoDir() {
|
||||
return seafileAPI.listDir(repoID, '/',{recursive: true}).then(items => {
|
||||
const files = items.data.map(item => {
|
||||
const files = items.data.dirent_list.map(item => {
|
||||
return {
|
||||
name: item.name,
|
||||
type: item.type === 'dir' ? 'dir' : 'file',
|
||||
|
@ -113,21 +113,24 @@ class DirView(APIView):
|
||||
# get dir/file list recursively
|
||||
username = request.user.username
|
||||
if recursive == '1':
|
||||
result = []
|
||||
dir_file_info_list = get_dir_file_recursively(username, repo_id,
|
||||
parent_dir, [])
|
||||
|
||||
response_dict = {}
|
||||
response_dict['dirent_list'] = []
|
||||
|
||||
if request_type == 'f':
|
||||
for item in dir_file_info_list:
|
||||
if item['type'] == 'file':
|
||||
result.append(item)
|
||||
response_dict['dirent_list'].append(item)
|
||||
elif request_type == 'd':
|
||||
for item in dir_file_info_list:
|
||||
if item['type'] == 'dir':
|
||||
result.append(item)
|
||||
response_dict['dirent_list'].append(item)
|
||||
else:
|
||||
result = dir_file_info_list
|
||||
response_dict['dirent_list'] = dir_file_info_list
|
||||
|
||||
return Response(result)
|
||||
return Response(response_dict)
|
||||
|
||||
# get dirent(folder and file) list
|
||||
try:
|
||||
@ -249,16 +252,17 @@ class DirView(APIView):
|
||||
dir_info_list.sort(lambda x, y: cmp(x['name'].lower(), y['name'].lower()))
|
||||
file_info_list.sort(lambda x, y: cmp(x['name'].lower(), y['name'].lower()))
|
||||
|
||||
if request_type == 'f':
|
||||
result = file_info_list
|
||||
elif request_type == 'd':
|
||||
result = dir_info_list
|
||||
else:
|
||||
result = dir_info_list + file_info_list
|
||||
response_dict = {}
|
||||
response_dict["user_perm"] = permission
|
||||
|
||||
response = Response(result)
|
||||
response["dir_perm"] = permission
|
||||
return response
|
||||
if request_type == 'f':
|
||||
response_dict['dirent_list'] = file_info_list
|
||||
elif request_type == 'd':
|
||||
response_dict['dirent_list'] = dir_info_list
|
||||
else:
|
||||
response_dict['dirent_list'] = dir_info_list + file_info_list
|
||||
|
||||
return Response(response_dict)
|
||||
|
||||
def post(self, request, repo_id, format=None):
|
||||
""" Create, rename, revert dir.
|
||||
|
@ -66,13 +66,13 @@ class DirViewTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert len(json_resp) == 2
|
||||
assert len(json_resp['dirent_list']) == 2
|
||||
|
||||
assert json_resp[0]['type'] == 'dir'
|
||||
assert json_resp[0]['name'] == self.folder_name
|
||||
assert json_resp['dirent_list'][0]['type'] == 'dir'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.folder_name
|
||||
|
||||
assert json_resp[1]['type'] == 'file'
|
||||
assert json_resp[1]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][1]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][1]['name'] == self.file_name
|
||||
|
||||
def test_can_get_with_dir_type_parameter(self):
|
||||
|
||||
@ -81,9 +81,9 @@ class DirViewTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'dir'
|
||||
assert json_resp[0]['name'] == self.folder_name
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'dir'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.folder_name
|
||||
|
||||
def test_can_get_with_file_type_parameter(self):
|
||||
|
||||
@ -92,9 +92,9 @@ class DirViewTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
|
||||
def test_can_get_with_recursive_parameter(self):
|
||||
|
||||
@ -108,17 +108,17 @@ class DirViewTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert len(json_resp) == 3
|
||||
assert json_resp[0]['type'] == 'dir'
|
||||
assert json_resp[0]['name'] == self.folder_name
|
||||
assert json_resp[0]['parent_dir'] == '/'
|
||||
assert len(json_resp['dirent_list']) == 3
|
||||
assert json_resp['dirent_list'][0]['type'] == 'dir'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.folder_name
|
||||
assert json_resp['dirent_list'][0]['parent_dir'] == '/'
|
||||
|
||||
assert json_resp[1]['type'] == 'dir'
|
||||
assert json_resp[1]['name'] == new_dir_name
|
||||
assert json_resp[1]['parent_dir'] == self.folder_path
|
||||
assert json_resp['dirent_list'][1]['type'] == 'dir'
|
||||
assert json_resp['dirent_list'][1]['name'] == new_dir_name
|
||||
assert json_resp['dirent_list'][1]['parent_dir'] == self.folder_path
|
||||
|
||||
assert json_resp[2]['type'] == 'file'
|
||||
assert json_resp[2]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][2]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][2]['name'] == self.file_name
|
||||
|
||||
def test_can_get_with_recursive_and_dir_type_parameter(self):
|
||||
|
||||
@ -133,13 +133,13 @@ class DirViewTest(BaseTestCase):
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert len(json_resp) == 2
|
||||
assert json_resp[0]['type'] == 'dir'
|
||||
assert json_resp[0]['name'] == self.folder_name
|
||||
assert json_resp[0]['parent_dir'] == '/'
|
||||
assert json_resp['dirent_list'][0]['type'] == 'dir'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.folder_name
|
||||
assert json_resp['dirent_list'][0]['parent_dir'] == '/'
|
||||
|
||||
assert json_resp[1]['type'] == 'dir'
|
||||
assert json_resp[1]['name'] == new_dir_name
|
||||
assert json_resp[1]['parent_dir'] == self.folder_path
|
||||
assert json_resp['dirent_list'][1]['type'] == 'dir'
|
||||
assert json_resp['dirent_list'][1]['name'] == new_dir_name
|
||||
assert json_resp['dirent_list'][1]['parent_dir'] == self.folder_path
|
||||
|
||||
def test_can_get_with_recursive_and_file_type_parameter(self):
|
||||
|
||||
@ -153,9 +153,9 @@ class DirViewTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
|
||||
def test_can_get_file_with_lock_info(self):
|
||||
|
||||
@ -168,10 +168,10 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert json_resp[0]['lock_owner'] == ''
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][0]['lock_owner'] == ''
|
||||
|
||||
# lock file
|
||||
seafile_api.lock_file(self.repo_id, self.file_path, self.admin_name, 1)
|
||||
@ -180,10 +180,10 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert json_resp[0]['lock_owner'] == self.admin_name
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][0]['lock_owner'] == self.admin_name
|
||||
|
||||
def test_can_get_file_with_star_info(self):
|
||||
|
||||
@ -193,10 +193,10 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert json_resp[0]['starred'] == False
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][0]['starred'] == False
|
||||
|
||||
# star file
|
||||
resp = self.client.post(reverse('starredfiles'), {'repo_id': self.repo.id, 'p': self.file_path})
|
||||
@ -206,10 +206,10 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert json_resp[0]['starred'] == True
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][0]['starred'] == True
|
||||
|
||||
def test_can_get_file_with_tag_info(self):
|
||||
|
||||
@ -219,10 +219,10 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert not json_resp[0].has_key('file_tags')
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
assert not json_resp['dirent_list'][0].has_key('file_tags')
|
||||
|
||||
# add file tag
|
||||
tag_name = randstring(6)
|
||||
@ -238,12 +238,12 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f')
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == self.file_name
|
||||
assert json_resp[0]['file_tags'][0]['repo_tag_id'] == repo_tag_id
|
||||
assert json_resp[0]['file_tags'][0]['tag_name'] == tag_name
|
||||
assert json_resp[0]['file_tags'][0]['tag_color'] == tag_color
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == self.file_name
|
||||
assert json_resp['dirent_list'][0]['file_tags'][0]['repo_tag_id'] == repo_tag_id
|
||||
assert json_resp['dirent_list'][0]['file_tags'][0]['tag_name'] == tag_name
|
||||
assert json_resp['dirent_list'][0]['file_tags'][0]['tag_color'] == tag_color
|
||||
|
||||
def test_can_get_file_with_thumbnail_info(self):
|
||||
|
||||
@ -258,12 +258,12 @@ class DirViewTest(BaseTestCase):
|
||||
resp = self.client.get(self.url + '?t=f&with_thumbnail=true&p=%s' % self.folder_path)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == image_file_name
|
||||
assert not json_resp[0].has_key('encoded_thumbnail_src')
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == image_file_name
|
||||
assert not json_resp['dirent_list'][0].has_key('encoded_thumbnail_src')
|
||||
|
||||
file_id = json_resp[0]['id']
|
||||
file_id = json_resp['dirent_list'][0]['id']
|
||||
|
||||
# prepare thumbnail
|
||||
size = 48
|
||||
@ -281,10 +281,10 @@ class DirViewTest(BaseTestCase):
|
||||
self.assertEqual(200, resp.status_code)
|
||||
self.assertEqual(200, resp.status_code)
|
||||
json_resp = json.loads(resp.content)
|
||||
assert len(json_resp) == 1
|
||||
assert json_resp[0]['type'] == 'file'
|
||||
assert json_resp[0]['name'] == image_file_name
|
||||
assert image_file_name in json_resp[0]['encoded_thumbnail_src']
|
||||
assert len(json_resp['dirent_list']) == 1
|
||||
assert json_resp['dirent_list'][0]['type'] == 'file'
|
||||
assert json_resp['dirent_list'][0]['name'] == image_file_name
|
||||
assert image_file_name in json_resp['dirent_list'][0]['encoded_thumbnail_src']
|
||||
|
||||
def test_get_dir_with_invalid_perm(self):
|
||||
# login as admin, then get dir info in user's repo
|
||||
|
Loading…
Reference in New Issue
Block a user