mirror of
https://github.com/haiwen/seahub.git
synced 2025-07-11 14:13:56 +00:00
Merge pull request #3785 from haiwen/dtable_share_update
dtable share update model name and class name
This commit is contained in:
commit
47a23e23b8
@ -29,7 +29,7 @@ from seahub.views.file import send_file_access_msg
|
|||||||
from seahub.auth.decorators import login_required
|
from seahub.auth.decorators import login_required
|
||||||
from seahub.settings import MAX_UPLOAD_FILE_NAME_LEN, SHARE_LINK_EXPIRE_DAYS_MIN, \
|
from seahub.settings import MAX_UPLOAD_FILE_NAME_LEN, SHARE_LINK_EXPIRE_DAYS_MIN, \
|
||||||
SHARE_LINK_EXPIRE_DAYS_MAX, SHARE_LINK_EXPIRE_DAYS_DEFAULT
|
SHARE_LINK_EXPIRE_DAYS_MAX, SHARE_LINK_EXPIRE_DAYS_DEFAULT
|
||||||
from seahub.dtable.utils import check_share_dtable_permission
|
from seahub.dtable.utils import check_dtable_share_permission
|
||||||
from seahub.constants import PERMISSION_ADMIN, PERMISSION_READ_WRITE
|
from seahub.constants import PERMISSION_ADMIN, PERMISSION_READ_WRITE
|
||||||
|
|
||||||
|
|
||||||
@ -300,7 +300,7 @@ class DTableView(APIView):
|
|||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
else:
|
else:
|
||||||
if username != owner and \
|
if username != owner and \
|
||||||
not check_share_dtable_permission(dtable, username):
|
not check_dtable_share_permission(dtable, username):
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
@ -535,7 +535,7 @@ class DTableUpdateLinkView(APIView):
|
|||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
else:
|
else:
|
||||||
if username != owner and \
|
if username != owner and \
|
||||||
check_share_dtable_permission(dtable, username) not in WRITE_PERMISSION_TUPLE:
|
check_dtable_share_permission(dtable, username) not in WRITE_PERMISSION_TUPLE:
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
@ -595,7 +595,7 @@ class DTableAssetUploadLinkView(APIView):
|
|||||||
username = request.user.username
|
username = request.user.username
|
||||||
owner = workspace.owner
|
owner = workspace.owner
|
||||||
if username != owner and \
|
if username != owner and \
|
||||||
check_share_dtable_permission(dtable, username) not in WRITE_PERMISSION_TUPLE:
|
check_dtable_share_permission(dtable, username) not in WRITE_PERMISSION_TUPLE:
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
@ -663,7 +663,7 @@ def dtable_file_view(request, workspace_id, name):
|
|||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
else:
|
else:
|
||||||
if username != owner and \
|
if username != owner and \
|
||||||
not check_share_dtable_permission(dtable, username):
|
not check_dtable_share_permission(dtable, username):
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
@ -719,7 +719,7 @@ def dtable_asset_access(request, workspace_id, dtable_id, path):
|
|||||||
username = request.user.username
|
username = request.user.username
|
||||||
owner = workspace.owner
|
owner = workspace.owner
|
||||||
if username != owner and \
|
if username != owner and \
|
||||||
check_share_dtable_permission(dtable, username) not in WRITE_PERMISSION_TUPLE:
|
check_dtable_share_permission(dtable, username) not in WRITE_PERMISSION_TUPLE:
|
||||||
return render_permission_error(request, 'Permission denied.')
|
return render_permission_error(request, 'Permission denied.')
|
||||||
|
|
||||||
token = seafile_api.get_fileserver_access_token(repo_id, asset_id, 'view',
|
token = seafile_api.get_fileserver_access_token(repo_id, asset_id, 'view',
|
||||||
|
@ -14,7 +14,7 @@ from seahub.base.accounts import User
|
|||||||
from seahub.api2.authentication import TokenAuthentication
|
from seahub.api2.authentication import TokenAuthentication
|
||||||
from seahub.api2.throttling import UserRateThrottle
|
from seahub.api2.throttling import UserRateThrottle
|
||||||
from seahub.api2.utils import api_error, get_user_common_info
|
from seahub.api2.utils import api_error, get_user_common_info
|
||||||
from seahub.dtable.models import Workspaces, DTables, ShareDTable
|
from seahub.dtable.models import Workspaces, DTables, DTableShare
|
||||||
from seahub.base.templatetags.seahub_tags import email2nickname
|
from seahub.base.templatetags.seahub_tags import email2nickname
|
||||||
from seahub.utils import is_valid_username, is_org_context
|
from seahub.utils import is_valid_username, is_org_context
|
||||||
from seahub.api2.endpoints.utils import is_org_user
|
from seahub.api2.endpoints.utils import is_org_user
|
||||||
@ -31,18 +31,18 @@ permission_tuple = (PERMISSION_ADMIN, PERMISSION_PREVIEW, PERMISSION_PREVIEW_EDI
|
|||||||
GROUP_DOMAIN = '@seafile_group'
|
GROUP_DOMAIN = '@seafile_group'
|
||||||
|
|
||||||
|
|
||||||
class ShareDTablesView(APIView):
|
class SharedDTablesView(APIView):
|
||||||
authentication_classes = (TokenAuthentication, SessionAuthentication)
|
authentication_classes = (TokenAuthentication, SessionAuthentication)
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
throttle_classes = (UserRateThrottle,)
|
throttle_classes = (UserRateThrottle,)
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
"""get dtables from share
|
"""list dtables from shared
|
||||||
"""
|
"""
|
||||||
to_user = request.user.username
|
to_user = request.user.username
|
||||||
|
|
||||||
try:
|
try:
|
||||||
share_queryset = ShareDTable.objects.list_by_to_user(to_user)
|
share_queryset = DTableShare.objects.list_by_to_user(to_user)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
error_msg = 'Internal Server Error.'
|
error_msg = 'Internal Server Error.'
|
||||||
@ -73,7 +73,7 @@ class ShareDTablesView(APIView):
|
|||||||
return Response({'table_list': table_list})
|
return Response({'table_list': table_list})
|
||||||
|
|
||||||
|
|
||||||
class ShareDTableView(APIView):
|
class DTableShareView(APIView):
|
||||||
authentication_classes = (TokenAuthentication, SessionAuthentication)
|
authentication_classes = (TokenAuthentication, SessionAuthentication)
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
throttle_classes = (UserRateThrottle,)
|
throttle_classes = (UserRateThrottle,)
|
||||||
@ -148,12 +148,12 @@ class ShareDTableView(APIView):
|
|||||||
|
|
||||||
# main
|
# main
|
||||||
try:
|
try:
|
||||||
obj = ShareDTable.objects.get_by_dtable_and_to_user(dtable, to_user)
|
obj = DTableShare.objects.get_by_dtable_and_to_user(dtable, to_user)
|
||||||
if obj:
|
if obj:
|
||||||
error_msg = 'table %s already shared to %s.' % (table_name, to_user)
|
error_msg = 'table %s already shared to %s.' % (table_name, to_user)
|
||||||
return api_error(status.HTTP_409_CONFLICT, error_msg)
|
return api_error(status.HTTP_409_CONFLICT, error_msg)
|
||||||
|
|
||||||
ShareDTable.objects.add(dtable, from_user, to_user, permission)
|
DTableShare.objects.add(dtable, from_user, to_user, permission)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
error_msg = 'Internal Server Error.'
|
error_msg = 'Internal Server Error.'
|
||||||
@ -162,7 +162,7 @@ class ShareDTableView(APIView):
|
|||||||
return Response({"success": True}, status=status.HTTP_201_CREATED)
|
return Response({"success": True}, status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
def get(self, request, workspace_id, name):
|
def get(self, request, workspace_id, name):
|
||||||
"""list share users in share dtable
|
"""list share users in dtable share
|
||||||
"""
|
"""
|
||||||
from_user = request.user.username
|
from_user = request.user.username
|
||||||
table_name = name
|
table_name = name
|
||||||
@ -198,7 +198,7 @@ class ShareDTableView(APIView):
|
|||||||
|
|
||||||
# main
|
# main
|
||||||
try:
|
try:
|
||||||
share_queryset = ShareDTable.objects.list_by_dtable(dtable)
|
share_queryset = DTableShare.objects.list_by_dtable(dtable)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
error_msg = 'Internal Server Error.'
|
error_msg = 'Internal Server Error.'
|
||||||
@ -213,7 +213,7 @@ class ShareDTableView(APIView):
|
|||||||
return Response({"user_list": user_list})
|
return Response({"user_list": user_list})
|
||||||
|
|
||||||
def put(self, request, workspace_id, name):
|
def put(self, request, workspace_id, name):
|
||||||
"""modify share dtable permission
|
"""modify dtable share permission
|
||||||
"""
|
"""
|
||||||
from_user = request.user.username
|
from_user = request.user.username
|
||||||
table_name = name
|
table_name = name
|
||||||
@ -270,7 +270,7 @@ class ShareDTableView(APIView):
|
|||||||
|
|
||||||
# main
|
# main
|
||||||
try:
|
try:
|
||||||
obj = ShareDTable.objects.get_by_dtable_and_to_user(dtable, to_user)
|
obj = DTableShare.objects.get_by_dtable_and_to_user(dtable, to_user)
|
||||||
if not obj:
|
if not obj:
|
||||||
error_msg = 'table %s not shared to %s.' % (table_name, to_user)
|
error_msg = 'table %s not shared to %s.' % (table_name, to_user)
|
||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
@ -331,7 +331,7 @@ class ShareDTableView(APIView):
|
|||||||
|
|
||||||
# main
|
# main
|
||||||
try:
|
try:
|
||||||
obj = ShareDTable.objects.get_by_dtable_and_to_user(dtable, to_user)
|
obj = DTableShare.objects.get_by_dtable_and_to_user(dtable, to_user)
|
||||||
if not obj:
|
if not obj:
|
||||||
error_msg = 'table %s not shared to %s.' % (table_name, to_user)
|
error_msg = 'table %s not shared to %s.' % (table_name, to_user)
|
||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Generated by Django 1.11.15 on 2019-06-26 02:29
|
# Generated by Django 1.11.15 on 2019-07-02 05:20
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
@ -14,7 +14,7 @@ class Migration(migrations.Migration):
|
|||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='ShareDTable',
|
name='DTableShare',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
('id', models.BigAutoField(primary_key=True, serialize=False)),
|
||||||
('from_user', models.CharField(db_index=True, max_length=255)),
|
('from_user', models.CharField(db_index=True, max_length=255)),
|
||||||
@ -23,11 +23,11 @@ class Migration(migrations.Migration):
|
|||||||
('dtable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dtable.DTables')),
|
('dtable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dtable.DTables')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'db_table': 'share_dtable',
|
'db_table': 'dtable_share',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.AlterUniqueTogether(
|
migrations.AlterUniqueTogether(
|
||||||
name='sharedtable',
|
name='dtableshare',
|
||||||
unique_together=set([('dtable', 'to_user')]),
|
unique_together=set([('dtable', 'to_user')]),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
@ -152,7 +152,7 @@ class DTables(models.Model):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class ShareDTableManager(models.Manager):
|
class DTableShareManager(models.Manager):
|
||||||
|
|
||||||
def list_by_dtable(self, dtable):
|
def list_by_dtable(self, dtable):
|
||||||
return self.filter(dtable=dtable)
|
return self.filter(dtable=dtable)
|
||||||
@ -173,8 +173,8 @@ class ShareDTableManager(models.Manager):
|
|||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
class ShareDTable(models.Model):
|
class DTableShare(models.Model):
|
||||||
"""Model used to share dtable
|
"""Model used to dtable share
|
||||||
|
|
||||||
from_user, to_user: user email or group_id@seafile_group
|
from_user, to_user: user email or group_id@seafile_group
|
||||||
"""
|
"""
|
||||||
@ -184,8 +184,8 @@ class ShareDTable(models.Model):
|
|||||||
to_user = models.CharField(max_length=255, db_index=True)
|
to_user = models.CharField(max_length=255, db_index=True)
|
||||||
permission = models.CharField(max_length=15)
|
permission = models.CharField(max_length=15)
|
||||||
|
|
||||||
objects = ShareDTableManager()
|
objects = DTableShareManager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = (('dtable', 'to_user'),)
|
unique_together = (('dtable', 'to_user'),)
|
||||||
db_table = 'share_dtable'
|
db_table = 'dtable_share'
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
from seahub.dtable.models import ShareDTable
|
from seahub.dtable.models import DTableShare
|
||||||
|
|
||||||
|
|
||||||
def check_share_dtable_permission(dtable, to_user):
|
def check_dtable_share_permission(dtable, to_user):
|
||||||
share_dtable_obj = ShareDTable.objects.get_by_dtable_and_to_user(dtable, to_user)
|
share_dtable_obj = DTableShare.objects.get_by_dtable_and_to_user(dtable, to_user)
|
||||||
if share_dtable_obj:
|
if share_dtable_obj:
|
||||||
return share_dtable_obj.permission
|
return share_dtable_obj.permission
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ from seahub.api2.endpoints.starred_items import StarredItems
|
|||||||
from seahub.api2.endpoints.markdown_lint import MarkdownLintView
|
from seahub.api2.endpoints.markdown_lint import MarkdownLintView
|
||||||
from seahub.api2.endpoints.dtable import WorkspacesView, DTableView, DTablesView, \
|
from seahub.api2.endpoints.dtable import WorkspacesView, DTableView, DTablesView, \
|
||||||
DTableUpdateLinkView, DTableAssetUploadLinkView, dtable_file_view, dtable_asset_access
|
DTableUpdateLinkView, DTableAssetUploadLinkView, dtable_file_view, dtable_asset_access
|
||||||
from seahub.dtable.api import ShareDTablesView, ShareDTableView
|
from seahub.dtable.api import SharedDTablesView, DTableShareView
|
||||||
|
|
||||||
# Admin
|
# Admin
|
||||||
from seahub.api2.endpoints.admin.revision_tag import AdminTaggedItemsView
|
from seahub.api2.endpoints.admin.revision_tag import AdminTaggedItemsView
|
||||||
@ -374,8 +374,8 @@ urlpatterns = [
|
|||||||
url(r'^api/v2.1/workspace/(?P<workspace_id>\d+)/dtable-asset-upload-link/$', DTableAssetUploadLinkView.as_view(), name='api-v2.1-workspace-dtable-asset-upload-link'),
|
url(r'^api/v2.1/workspace/(?P<workspace_id>\d+)/dtable-asset-upload-link/$', DTableAssetUploadLinkView.as_view(), name='api-v2.1-workspace-dtable-asset-upload-link'),
|
||||||
url(r'^workspace/(?P<workspace_id>\d+)/dtable/(?P<name>.*)/$', dtable_file_view, name='dtable-file-view'),
|
url(r'^workspace/(?P<workspace_id>\d+)/dtable/(?P<name>.*)/$', dtable_file_view, name='dtable-file-view'),
|
||||||
url(r'^workspace/(?P<workspace_id>\d+)/asset/(?P<dtable_id>[-0-9a-f]{36})/(?P<path>.*)$', dtable_asset_access, name='dtable-asset-access'),
|
url(r'^workspace/(?P<workspace_id>\d+)/asset/(?P<dtable_id>[-0-9a-f]{36})/(?P<path>.*)$', dtable_asset_access, name='dtable-asset-access'),
|
||||||
url(r'^api/v2.1/dtables/shared/$', ShareDTablesView.as_view(), name='api-v2.1-dtables-share'),
|
url(r'^api/v2.1/dtables/shared/$', SharedDTablesView.as_view(), name='api-v2.1-dtables-share'),
|
||||||
url(r'^api/v2.1/workspace/(?P<workspace_id>\d+)/dtable/(?P<name>.*)/share/$', ShareDTableView.as_view(), name='api-v2.1-dtable-share'),
|
url(r'^api/v2.1/workspace/(?P<workspace_id>\d+)/dtable/(?P<name>.*)/share/$', DTableShareView.as_view(), name='api-v2.1-dtable-share'),
|
||||||
|
|
||||||
# Deprecated
|
# Deprecated
|
||||||
url(r'^api/v2.1/repos/(?P<repo_id>[-0-9a-f]{36})/tags/$', FileTagsView.as_view(), name="api-v2.1-filetags-view"),
|
url(r'^api/v2.1/repos/(?P<repo_id>[-0-9a-f]{36})/tags/$', FileTagsView.as_view(), name="api-v2.1-filetags-view"),
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from seahub.dtable.models import Workspaces, ShareDTable, DTables
|
from seahub.dtable.models import Workspaces, DTableShare, DTables
|
||||||
from seaserv import seafile_api
|
from seaserv import seafile_api
|
||||||
|
|
||||||
from seahub.test_utils import BaseTestCase
|
from seahub.test_utils import BaseTestCase
|
||||||
@ -14,7 +14,7 @@ except ImportError:
|
|||||||
LOCAL_PRO_DEV_ENV = False
|
LOCAL_PRO_DEV_ENV = False
|
||||||
|
|
||||||
|
|
||||||
class ShareDTablesViewTest(BaseTestCase):
|
class SharedDTablesViewTest(BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# create workspace
|
# create workspace
|
||||||
self.workspace = Workspaces.objects.create_workspace(
|
self.workspace = Workspaces.objects.create_workspace(
|
||||||
@ -27,9 +27,9 @@ class ShareDTablesViewTest(BaseTestCase):
|
|||||||
self.user.username, self.workspace, 'dtable1')
|
self.user.username, self.workspace, 'dtable1')
|
||||||
assert len(DTables.objects.all()) == 1
|
assert len(DTables.objects.all()) == 1
|
||||||
# share dtable to admin
|
# share dtable to admin
|
||||||
ShareDTable.objects.add(
|
DTableShare.objects.add(
|
||||||
self.dtable, self.user.username, self.admin.username, 'rw')
|
self.dtable, self.user.username, self.admin.username, 'rw')
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
|
|
||||||
self.url = reverse('api-v2.1-dtables-share')
|
self.url = reverse('api-v2.1-dtables-share')
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ class ShareDTablesViewTest(BaseTestCase):
|
|||||||
assert json_resp['table_list'][0]['name'] == 'dtable1'
|
assert json_resp['table_list'][0]['name'] == 'dtable1'
|
||||||
|
|
||||||
|
|
||||||
class ShareDTableViewTest(BaseTestCase):
|
class DTableShareViewTest(BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
# create workspace
|
# create workspace
|
||||||
self.workspace = Workspaces.objects.create_workspace(
|
self.workspace = Workspaces.objects.create_workspace(
|
||||||
@ -74,9 +74,9 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
self.user.username, self.workspace, 'dtable1')
|
self.user.username, self.workspace, 'dtable1')
|
||||||
assert len(DTables.objects.all()) == 1
|
assert len(DTables.objects.all()) == 1
|
||||||
# share dtable to admin
|
# share dtable to admin
|
||||||
ShareDTable.objects.add(
|
DTableShare.objects.add(
|
||||||
self.dtable, self.user.username, self.admin.username, 'rw')
|
self.dtable, self.user.username, self.admin.username, 'rw')
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
|
|
||||||
self.url = reverse('api-v2.1-dtable-share', args=[self.workspace.id, self.dtable.name])
|
self.url = reverse('api-v2.1-dtable-share', args=[self.workspace.id, self.dtable.name])
|
||||||
|
|
||||||
@ -88,9 +88,9 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
self.remove_repo()
|
self.remove_repo()
|
||||||
|
|
||||||
def test_can_post(self):
|
def test_can_post(self):
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
ShareDTable.objects.all().delete()
|
DTableShare.objects.all().delete()
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
@ -100,10 +100,10 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
}
|
}
|
||||||
resp = self.client.post(self.url, data)
|
resp = self.client.post(self.url, data)
|
||||||
self.assertEqual(201, resp.status_code)
|
self.assertEqual(201, resp.status_code)
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
|
|
||||||
def test_can_not_post_with_already_share(self):
|
def test_can_not_post_with_already_share(self):
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
@ -115,9 +115,9 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
self.assertEqual(409, resp.status_code)
|
self.assertEqual(409, resp.status_code)
|
||||||
|
|
||||||
def test_can_not_post_with_not_owner(self):
|
def test_can_not_post_with_not_owner(self):
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
ShareDTable.objects.all().delete()
|
DTableShare.objects.all().delete()
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
|
||||||
@ -129,9 +129,9 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
self.assertEqual(403, resp.status_code)
|
self.assertEqual(403, resp.status_code)
|
||||||
|
|
||||||
def test_can_not_post_with_share_to_owner(self):
|
def test_can_not_post_with_share_to_owner(self):
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
ShareDTable.objects.all().delete()
|
DTableShare.objects.all().delete()
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
@ -146,9 +146,9 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
if not LOCAL_PRO_DEV_ENV:
|
if not LOCAL_PRO_DEV_ENV:
|
||||||
return
|
return
|
||||||
|
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
ShareDTable.objects.all().delete()
|
DTableShare.objects.all().delete()
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
@ -190,13 +190,13 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
resp = self.client.put(self.url, json.dumps(data), 'application/json')
|
resp = self.client.put(self.url, json.dumps(data), 'application/json')
|
||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
|
|
||||||
assert ShareDTable.objects.get_by_dtable_and_to_user(
|
assert DTableShare.objects.get_by_dtable_and_to_user(
|
||||||
self.dtable, self.admin.username).permission == 'r'
|
self.dtable, self.admin.username).permission == 'r'
|
||||||
|
|
||||||
def test_can_not_put_with_not_shared(self):
|
def test_can_not_put_with_not_shared(self):
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
ShareDTable.objects.all().delete()
|
DTableShare.objects.all().delete()
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
@ -235,7 +235,7 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
}
|
}
|
||||||
resp = self.client.delete(self.url, json.dumps(data), 'application/json')
|
resp = self.client.delete(self.url, json.dumps(data), 'application/json')
|
||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
def test_can_delete_with_share_user(self):
|
def test_can_delete_with_share_user(self):
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
@ -245,12 +245,12 @@ class ShareDTableViewTest(BaseTestCase):
|
|||||||
}
|
}
|
||||||
resp = self.client.delete(self.url, json.dumps(data), 'application/json')
|
resp = self.client.delete(self.url, json.dumps(data), 'application/json')
|
||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
def test_can_not_delete_with_not_shared(self):
|
def test_can_not_delete_with_not_shared(self):
|
||||||
assert len(ShareDTable.objects.all()) == 1
|
assert len(DTableShare.objects.all()) == 1
|
||||||
ShareDTable.objects.all().delete()
|
DTableShare.objects.all().delete()
|
||||||
assert len(ShareDTable.objects.all()) == 0
|
assert len(DTableShare.objects.all()) == 0
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user