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.zip_task import ZipTaskView
|
||||||
from seahub.api2.endpoints.share_link_zip_task import ShareLinkZipTaskView
|
from seahub.api2.endpoints.share_link_zip_task import ShareLinkZipTaskView
|
||||||
from seahub.api2.endpoints.query_zip_progress import QueryZipProgressView
|
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.invitations import InvitationsView
|
||||||
from seahub.api2.endpoints.invitation import InvitationView
|
from seahub.api2.endpoints.invitation import InvitationView
|
||||||
from seahub.api2.endpoints.notifications import NotificationsView, NotificationView
|
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/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/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/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/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/rename/$', rename_dirent, name='rename_file'),
|
||||||
url(r'^ajax/repo/(?P<repo_id>[-0-9a-f]{36})/file/delete/$', delete_dirent, name='delete_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/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/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-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})/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/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()),
|
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}
|
result = {'success': success, 'failed': failed, 'url': url}
|
||||||
return HttpResponse(json.dumps(result), content_type=content_type)
|
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
|
@login_required_ajax
|
||||||
def cancel_cp(request):
|
def cancel_cp(request):
|
||||||
'''
|
'''
|
||||||
|
@@ -93,7 +93,7 @@ define([
|
|||||||
}, 100);
|
}, 100);
|
||||||
var req_progress = function() {
|
var req_progress = function() {
|
||||||
$.ajax({
|
$.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',
|
dataType: 'json',
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
var bar = $('.ui-progressbar-value', $('#mv-progress'));
|
var bar = $('.ui-progressbar-value', $('#mv-progress'));
|
||||||
|
@@ -1200,7 +1200,7 @@ define([
|
|||||||
var task_id = data['task_id'];
|
var task_id = data['task_id'];
|
||||||
cancel_btn.data('task_id', task_id);
|
cancel_btn.data('task_id', task_id);
|
||||||
$.ajax({
|
$.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',
|
dataType: 'json',
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
var bar = $('.ui-progressbar-value', $('#mv-progress'));
|
var bar = $('.ui-progressbar-value', $('#mv-progress'));
|
||||||
|
@@ -84,6 +84,7 @@ define([
|
|||||||
case 'download_dir_zip_url': return fileServerRoot + 'zip/' + options.zip_token;
|
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 '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_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_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 'rename_file': return siteRoot + 'api/v2.1/repos/' + options.repo_id + '/file/';
|
||||||
case 'mv_dir': return siteRoot + 'ajax/repo/' + options.repo_id + '/dir/mv/';
|
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 'del_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/delete/';
|
||||||
case 'mv_dirents': return siteRoot + 'ajax/repo/' + options.repo_id + '/dirents/move/';
|
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 '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 '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_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/';
|
case 'get_file_uploaded_bytes': return siteRoot + 'ajax/repo/' + options.repo_id + '/get-file-uploaded-bytes/';
|
||||||
|
Reference in New Issue
Block a user