diff --git a/seahub/api2/endpoints/dtable.py b/seahub/api2/endpoints/dtable.py index b219def8ae..6b7eea5a92 100644 --- a/seahub/api2/endpoints/dtable.py +++ b/seahub/api2/endpoints/dtable.py @@ -18,13 +18,11 @@ from seaserv import seafile_api, ccnet_api from seahub.api2.authentication import TokenAuthentication from seahub.api2.throttling import UserRateThrottle from seahub.api2.utils import api_error -from seahub.api2.views import get_repo_file from seahub.dtable.models import Workspaces, DTables from seahub.base.templatetags.seahub_tags import email2nickname from seahub.group.utils import group_id_to_name from seahub.utils import is_valid_dirent_name, is_org_context, normalize_file_path, \ check_filename_with_rename, gen_file_upload_url -from seahub.views.file import send_file_access_msg from seahub.settings import MAX_UPLOAD_FILE_NAME_LEN, DTABLE_PRIVATE_KEY from seahub.dtable.utils import check_dtable_share_permission, check_dtable_permission from seahub.constants import PERMISSION_ADMIN, PERMISSION_READ_WRITE @@ -237,64 +235,6 @@ class DTableView(APIView): permission_classes = (IsAuthenticated, ) throttle_classes = (UserRateThrottle, ) - def get(self, request, workspace_id): - """view table file, get table download link - - Permission: - 1. owner - 2. group member - 3. shared user - """ - # argument check - table_name = request.GET.get('name', None) - if not table_name: - error_msg = 'name invalid.' - return api_error(status.HTTP_400_BAD_REQUEST, error_msg) - - reuse = request.GET.get('reuse', '0') - if reuse not in ('1', '0'): - error_msg = 'reuse invalid.' - return api_error(status.HTTP_400_BAD_REQUEST, error_msg) - - # resource check - workspace = Workspaces.objects.get_workspace_by_id(workspace_id) - if not workspace: - error_msg = 'Workspace %s not found.' % workspace_id - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - repo_id = workspace.repo_id - repo = seafile_api.get_repo(repo_id) - if not repo: - error_msg = 'Library %s not found.' % repo_id - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - dtable = DTables.objects.get_dtable(workspace, table_name) - if not dtable: - error_msg = 'dtable %s not found.' % table_name - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - table_file_name = table_name + FILE_TYPE - table_path = normalize_file_path(table_file_name) - table_file_id = seafile_api.get_file_id_by_path(repo_id, table_path) - if not table_file_id: - error_msg = 'file %s not found.' % table_file_name - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - # permission check - username = request.user.username - owner = workspace.owner - if not check_dtable_permission(username, owner) and \ - not check_dtable_share_permission(dtable, username): - error_msg = 'Permission denied.' - return api_error(status.HTTP_403_FORBIDDEN, error_msg) - - # send stats message - send_file_access_msg(request, repo, table_path, 'api') - - op = request.GET.get('op', 'download') - use_onetime = False if reuse == '1' else True - return get_repo_file(request, repo_id, table_file_id, table_file_name, op, use_onetime) - def put(self, request, workspace_id): """rename a table @@ -460,66 +400,6 @@ class DTableView(APIView): return Response({'success': True}, status=status.HTTP_200_OK) -class DTableUpdateLinkView(APIView): - - authentication_classes = (TokenAuthentication, SessionAuthentication) - permission_classes = (IsAuthenticated,) - throttle_classes = (UserRateThrottle,) - - def get(self, request, workspace_id): - """get table file update link - - Permission: - 1. owner - 2. group member - 3. shared user with `rw` or `admin` permission - """ - # argument check - table_name = request.GET.get('name', None) - if not table_name: - error_msg = 'name invalid.' - return api_error(status.HTTP_400_BAD_REQUEST, error_msg) - - # resource check - workspace = Workspaces.objects.get_workspace_by_id(workspace_id) - if not workspace: - error_msg = 'Workspace %s not found.' % workspace_id - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - repo_id = workspace.repo_id - repo = seafile_api.get_repo(repo_id) - if not repo: - error_msg = 'Library %s not found.' % repo_id - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - dtable = DTables.objects.get_dtable(workspace, table_name) - if not dtable: - error_msg = 'dtable %s not found.' % table_name - return api_error(status.HTTP_404_NOT_FOUND, error_msg) - - # permission check - username = request.user.username - owner = workspace.owner - if not check_dtable_permission(username, owner) and \ - check_dtable_share_permission(dtable, username) not in WRITE_PERMISSION_TUPLE: - error_msg = 'Permission denied.' - return api_error(status.HTTP_403_FORBIDDEN, error_msg) - - try: - token = seafile_api.get_fileserver_access_token(repo_id, 'dummy', 'update', - username, use_onetime=False) - except Exception as e: - logger.error(e) - error_msg = 'Internal Server Error' - return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) - - dtable.modifier = username - dtable.save() - - url = gen_file_upload_url(token, 'update-api') - return Response(url) - - class DTableAssetUploadLinkView(APIView): authentication_classes = (TokenAuthentication, SessionAuthentication) diff --git a/seahub/dtable/views.py b/seahub/dtable/views.py index 81eab413a7..4795a094a3 100644 --- a/seahub/dtable/views.py +++ b/seahub/dtable/views.py @@ -8,7 +8,7 @@ from seaserv import seafile_api from seahub.dtable.models import Workspaces, DTables from seahub.utils import normalize_file_path, render_error, render_permission_error, \ - gen_file_get_url, get_file_type_and_ext, IMAGE + gen_file_get_url from seahub.auth.decorators import login_required from seahub.settings import SHARE_LINK_EXPIRE_DAYS_MIN, SHARE_LINK_EXPIRE_DAYS_MAX, \ SHARE_LINK_EXPIRE_DAYS_DEFAULT, DTABLE_SERVER_URL, SEAFILE_COLLAB_SERVER, MEDIA_URL diff --git a/seahub/urls.py b/seahub/urls.py index c8874290d4..3f8a923f4e 100644 --- a/seahub/urls.py +++ b/seahub/urls.py @@ -91,7 +91,7 @@ from seahub.api2.endpoints.starred_items import StarredItems from seahub.api2.endpoints.markdown_lint import MarkdownLintView from seahub.api2.endpoints.public_repos_search import PublishedRepoSearchView from seahub.api2.endpoints.dtable import WorkspacesView, DTableView, DTablesView, \ - DTableUpdateLinkView, DTableAssetUploadLinkView, DTableAccessTokenView + DTableAssetUploadLinkView, DTableAccessTokenView from seahub.api2.endpoints.dtable_share import SharedDTablesView, DTableShareView from seahub.api2.endpoints.dtable_related_users import DTableRelatedUsersView from seahub.api2.endpoints.recent_added_files import RecentAddedFilesView @@ -379,7 +379,6 @@ urlpatterns = [ url(r'^api/v2.1/workspaces/$', WorkspacesView.as_view(), name='api-v2.1-workspaces'), url(r'^api/v2.1/dtables/$', DTablesView.as_view(), name='api-v2.1-dtables'), url(r'^api/v2.1/workspace/(?P\d+)/dtable/$', DTableView.as_view(), name='api-v2.1-workspace-dtable'), - url(r'^api/v2.1/workspace/(?P\d+)/dtable-update-link/$', DTableUpdateLinkView.as_view(), name='api-v2.1-workspace-dtable-update-link'), url(r'^api/v2.1/workspace/(?P\d+)/dtable-asset-upload-link/$', DTableAssetUploadLinkView.as_view(), name='api-v2.1-workspace-dtable-asset-upload-link'), url(r'^api/v2.1/dtables/shared/$', SharedDTablesView.as_view(), name='api-v2.1-dtables-share'), url(r'^api/v2.1/workspace/(?P\d+)/dtable/(?P.*)/share/$', DTableShareView.as_view(), name='api-v2.1-dtable-share'),