mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-02 23:48:47 +00:00
[api2] Add file last modifyied time
This commit is contained in:
@@ -25,6 +25,7 @@ from share.models import FileShare
|
|||||||
from seahub.views import access_to_repo, validate_owner
|
from seahub.views import access_to_repo, validate_owner
|
||||||
from seahub.utils import gen_file_get_url, gen_token, gen_file_upload_url, \
|
from seahub.utils import gen_file_get_url, gen_token, gen_file_upload_url, \
|
||||||
check_filename_with_rename, get_starred_files, get_ccnetapplet_root, \
|
check_filename_with_rename, get_starred_files, get_ccnetapplet_root, \
|
||||||
|
get_dir_files_last_modified, \
|
||||||
get_ccnet_server_addr_port, star_file, unstar_file, string2list
|
get_ccnet_server_addr_port, star_file, unstar_file, string2list
|
||||||
try:
|
try:
|
||||||
from seahub.settings import CLOUD_MODE
|
from seahub.settings import CLOUD_MODE
|
||||||
@@ -376,13 +377,15 @@ def get_file_size (id):
|
|||||||
size = seafserv_threaded_rpc.get_file_size(id)
|
size = seafserv_threaded_rpc.get_file_size(id)
|
||||||
return size if size else 0
|
return size if size else 0
|
||||||
|
|
||||||
def get_dir_entrys_by_id(request, dir_id):
|
def get_dir_entrys_by_id(request, repo_id, path, dir_id):
|
||||||
try:
|
try:
|
||||||
dirs = seafserv_threaded_rpc.list_dir(dir_id)
|
dirs = seafserv_threaded_rpc.list_dir(dir_id)
|
||||||
except SearpcError, e:
|
except SearpcError, e:
|
||||||
return api_error(HTTP_520_OPERATION_FAILED,
|
return api_error(HTTP_520_OPERATION_FAILED,
|
||||||
"Failed to list dir.")
|
"Failed to list dir.")
|
||||||
|
|
||||||
|
mtimes = get_dir_files_last_modified (repo_id, path, dir_id)
|
||||||
|
|
||||||
dir_list, file_list = [], []
|
dir_list, file_list = [], []
|
||||||
for dirent in dirs:
|
for dirent in dirs:
|
||||||
dtype = "file"
|
dtype = "file"
|
||||||
@@ -398,11 +401,13 @@ def get_dir_entrys_by_id(request, dir_id):
|
|||||||
entry["type"]=dtype
|
entry["type"]=dtype
|
||||||
entry["name"]=dirent.obj_name
|
entry["name"]=dirent.obj_name
|
||||||
entry["id"]=dirent.obj_id
|
entry["id"]=dirent.obj_id
|
||||||
|
entry["mtime"]=mtimes.get(dirent.obj_name, None)
|
||||||
if dtype == 'dir':
|
if dtype == 'dir':
|
||||||
dir_list.append(entry)
|
dir_list.append(entry)
|
||||||
else:
|
else:
|
||||||
file_list.append(entry)
|
file_list.append(entry)
|
||||||
|
|
||||||
|
|
||||||
dir_list.sort(lambda x, y : cmp(x['name'].lower(),y['name'].lower()))
|
dir_list.sort(lambda x, y : cmp(x['name'].lower(),y['name'].lower()))
|
||||||
file_list.sort(lambda x, y : cmp(x['name'].lower(),y['name'].lower()))
|
file_list.sort(lambda x, y : cmp(x['name'].lower(),y['name'].lower()))
|
||||||
dentrys = dir_list + file_list
|
dentrys = dir_list + file_list
|
||||||
@@ -471,7 +476,7 @@ def reloaddir(request, repo_id, parent_dir):
|
|||||||
if not dir_id:
|
if not dir_id:
|
||||||
return api_error(status.HTTP_404_NOT_FOUND, "Path does not exist")
|
return api_error(status.HTTP_404_NOT_FOUND, "Path does not exist")
|
||||||
|
|
||||||
return get_dir_entrys_by_id(request, dir_id)
|
return get_dir_entrys_by_id(request, repo_id, parent_dir, dir_id)
|
||||||
|
|
||||||
def reloaddir_if_neccessary (request, repo_id, parent_dir):
|
def reloaddir_if_neccessary (request, repo_id, parent_dir):
|
||||||
|
|
||||||
@@ -841,7 +846,7 @@ class DirView(APIView):
|
|||||||
response["oid"] = dir_id
|
response["oid"] = dir_id
|
||||||
return response
|
return response
|
||||||
else:
|
else:
|
||||||
return get_dir_entrys_by_id(request, dir_id)
|
return get_dir_entrys_by_id(request, repo_id, path, dir_id)
|
||||||
|
|
||||||
def post(self, request, repo_id, format=None):
|
def post(self, request, repo_id, format=None):
|
||||||
# new dir
|
# new dir
|
||||||
|
@@ -760,13 +760,14 @@ def calc_dir_files_last_modified(repo_id, parent_dir, parent_dir_hash, dir_id):
|
|||||||
|
|
||||||
return last_modified_info
|
return last_modified_info
|
||||||
|
|
||||||
def get_dir_files_last_modified(repo_id, parent_dir):
|
def get_dir_files_last_modified(repo_id, parent_dir, dir_id=None):
|
||||||
'''Calc the last modified time of all the files under the directory
|
'''Calc the last modified time of all the files under the directory
|
||||||
<parent_dir> of the repo <repo_id>. Return a dict whose keys are the file
|
<parent_dir> of the repo <repo_id>. Return a dict whose keys are the file
|
||||||
names and values are their corresponding last modified timestamps.
|
names and values are their corresponding last modified timestamps.
|
||||||
|
|
||||||
'''
|
'''
|
||||||
dir_id = seafserv_threaded_rpc.get_dir_id_by_path(repo_id, parent_dir)
|
if not dir_id:
|
||||||
|
dir_id = seafserv_threaded_rpc.get_dir_id_by_path(repo_id, parent_dir)
|
||||||
parent_dir_hash = calc_file_path_hash(parent_dir)
|
parent_dir_hash = calc_file_path_hash(parent_dir)
|
||||||
if not dir_id:
|
if not dir_id:
|
||||||
return {}
|
return {}
|
||||||
|
Reference in New Issue
Block a user