mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-04 16:31:13 +00:00
update cp_progress
This commit is contained in:
56
seahub/api2/endpoints/query_copy_move_progress.py
Normal file
56
seahub/api2/endpoints/query_copy_move_progress.py
Normal file
@@ -0,0 +1,56 @@
|
||||
# Copyright (c) 2012-2016 Seafile Ltd.
|
||||
import logging
|
||||
|
||||
from rest_framework.authentication import SessionAuthentication
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from rest_framework import status
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from seahub.api2.throttling import UserRateThrottle
|
||||
from seahub.api2.authentication import TokenAuthentication
|
||||
from seahub.api2.utils import api_error
|
||||
|
||||
from seaserv import seafile_api
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class QueryCopyMoveProgressView(APIView):
|
||||
|
||||
authentication_classes = (TokenAuthentication, SessionAuthentication)
|
||||
permission_classes = (IsAuthenticated,)
|
||||
throttle_classes = (UserRateThrottle,)
|
||||
|
||||
def get(self, request):
|
||||
""" Fetch progress of file/dir mv/cp.
|
||||
|
||||
Permission checking:
|
||||
1. user login;
|
||||
"""
|
||||
|
||||
# argument check
|
||||
task_id = request.GET.get('task_id')
|
||||
if not task_id:
|
||||
error_msg = 'task_id invalid.'
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||
|
||||
try:
|
||||
res = seafile_api.get_copy_task(task_id)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
error_msg = 'Internal Server Error'
|
||||
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
|
||||
|
||||
# res can be None
|
||||
if not res:
|
||||
error_msg = _(u'Error')
|
||||
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
|
||||
|
||||
result = {}
|
||||
result['done'] = res.done
|
||||
result['total'] = res.total
|
||||
result['canceled'] = res.canceled
|
||||
result['failed'] = res.failed
|
||||
result['successful'] = res.successful
|
||||
return Response(result)
|
@@ -31,6 +31,7 @@ from seahub.api2.endpoints.dirents_download_link import DirentsDownloadLinkView
|
||||
from seahub.api2.endpoints.zip_task import ZipTaskView
|
||||
from seahub.api2.endpoints.share_link_zip_task import ShareLinkZipTaskView
|
||||
from seahub.api2.endpoints.query_zip_progress import QueryZipProgressView
|
||||
from seahub.api2.endpoints.query_copy_move_progress import QueryCopyMoveProgressView
|
||||
from seahub.api2.endpoints.invitations import InvitationsView
|
||||
from seahub.api2.endpoints.invitation import InvitationView
|
||||
from seahub.api2.endpoints.notifications import NotificationsView, NotificationView
|
||||
@@ -139,7 +140,6 @@ urlpatterns = patterns(
|
||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/dir/delete/$', delete_dirent, name='delete_dir'),
|
||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/dir/mv/$', mv_dir, name='mv_dir'),
|
||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/dir/cp/$', cp_dir, name='cp_dir'),
|
||||
url(r'^ajax/cp_progress/$', get_cp_progress, name='get_cp_progress'),
|
||||
url(r'^ajax/cancel_cp/$', cancel_cp, name='cancel_cp'),
|
||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/file/rename/$', rename_dirent, name='rename_file'),
|
||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/file/delete/$', delete_dirent, name='delete_file'),
|
||||
@@ -191,6 +191,7 @@ urlpatterns = patterns(
|
||||
url(r'^api/v2.1/repos/(?P<repo_id>[-0-9a-f]{36})/zip-task/$', ZipTaskView.as_view(), name='api-v2.1-zip-task'),
|
||||
url(r'^api/v2.1/share-link-zip-task/$', ShareLinkZipTaskView.as_view(), name='api-v2.1-share-link-zip-task'),
|
||||
url(r'^api/v2.1/query-zip-progress/$', QueryZipProgressView.as_view(), name='api-v2.1-query-zip-progress'),
|
||||
url(r'^api/v2.1/query-copy-move-progress/$', QueryCopyMoveProgressView.as_view(), name='api-v2.1-query-copy-move-progress'),
|
||||
url(r'^api/v2.1/repos/(?P<repo_id>[-0-9a-f]{36})/dir/$', DirView.as_view(), name='api-v2.1-dir-view'),
|
||||
url(r'^api/v2.1/repos/(?P<repo_id>[-0-9a-f]{36})/set-password/$', RepoSetPassword.as_view(), name="api-v2.1-repo-set-password"),
|
||||
url(r'^api/v2.1/invitations/$', InvitationsView.as_view()),
|
||||
|
@@ -999,35 +999,6 @@ def cp_dirents(request, src_repo_id, src_path, dst_repo_id, dst_path, obj_file_n
|
||||
result = {'success': success, 'failed': failed, 'url': url}
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
@login_required_ajax
|
||||
def get_cp_progress(request):
|
||||
'''
|
||||
Fetch progress of file/dir mv/cp.
|
||||
'''
|
||||
content_type = 'application/json; charset=utf-8'
|
||||
result = {}
|
||||
|
||||
task_id = request.GET.get('task_id')
|
||||
if not task_id:
|
||||
result['error'] = _(u'Argument missing')
|
||||
return HttpResponse(json.dumps(result), status=400,
|
||||
content_type=content_type)
|
||||
|
||||
res = seafile_api.get_copy_task(task_id)
|
||||
|
||||
# res can be None
|
||||
if not res:
|
||||
result['error'] = _(u'Error')
|
||||
return HttpResponse(json.dumps(result), status=500, content_type=content_type)
|
||||
|
||||
result['done'] = res.done
|
||||
result['total'] = res.total
|
||||
result['canceled'] = res.canceled
|
||||
result['failed'] = res.failed
|
||||
result['successful'] = res.successful
|
||||
|
||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
||||
|
||||
@login_required_ajax
|
||||
def cancel_cp(request):
|
||||
'''
|
||||
|
@@ -93,7 +93,7 @@ define([
|
||||
}, 100);
|
||||
var req_progress = function() {
|
||||
$.ajax({
|
||||
url: Common.getUrl({name: 'get_cp_progress'}) + '?task_id=' + encodeURIComponent(task_id),
|
||||
url: Common.getUrl({name: 'query_copy_move_progress'}) + '?task_id=' + encodeURIComponent(task_id),
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
var bar = $('.ui-progressbar-value', $('#mv-progress'));
|
||||
|
@@ -1200,7 +1200,7 @@ define([
|
||||
var task_id = data['task_id'];
|
||||
cancel_btn.data('task_id', task_id);
|
||||
$.ajax({
|
||||
url: Common.getUrl({name:'get_cp_progress'}) + '?task_id=' + encodeURIComponent(task_id),
|
||||
url: Common.getUrl({name:'query_copy_move_progress'}) + '?task_id=' + encodeURIComponent(task_id),
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
var bar = $('.ui-progressbar-value', $('#mv-progress'));
|
||||
|
@@ -84,6 +84,7 @@ define([
|
||||
case 'download_dir_zip_url': return fileServerRoot + 'zip/' + options.zip_token;
|
||||
case 'zip_task': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/zip-task/';
|
||||
case 'query_zip_progress': return siteRoot + 'api/v2.1/query-zip-progress/';
|
||||
case 'query_copy_move_progress': return siteRoot + 'api/v2.1/query-copy-move-progress/';
|
||||
case 'rename_dir': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/dir/';
|
||||
case 'rename_file': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/file/';
|
||||
case 'mv_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/mv/';
|
||||
@@ -96,7 +97,6 @@ define([
|
||||
case 'del_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/delete/';
|
||||
case 'mv_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/move/';
|
||||
case 'cp_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/copy/';
|
||||
case 'get_cp_progress': return siteRoot + 'ajax/cp_progress/';
|
||||
case 'cancel_cp': return siteRoot + 'ajax/cancel_cp/';
|
||||
case 'get_file_op_url': return siteRoot + 'ajax/repo/' + options.repo_id + '/file_op_url/';
|
||||
case 'get_file_uploaded_bytes': return siteRoot + 'ajax/repo/' + options.repo_id + '/get-file-uploaded-bytes/';
|
||||
|
Reference in New Issue
Block a user