diff --git a/seahub/api2/endpoints/shared_folders.py b/seahub/api2/endpoints/shared_folders.py index 0f52175c8a..a5984ab269 100644 --- a/seahub/api2/endpoints/shared_folders.py +++ b/seahub/api2/endpoints/shared_folders.py @@ -13,7 +13,7 @@ from seaserv import seafile_api, ccnet_api from seahub.api2.utils import api_error from seahub.api2.authentication import TokenAuthentication from seahub.api2.throttling import UserRateThrottle - +from seahub.profile.models import Profile from seahub.utils import is_org_context from seahub.base.templatetags.seahub_tags import email2nickname @@ -64,6 +64,7 @@ class SharedFolders(APIView): if repo.share_type == 'personal': result['user_name'] = email2nickname(repo.user) result['user_email'] = repo.user + result['contact_email'] = Profile.objects.get_contact_email_by_user(repo.user) if repo.share_type == 'group': group = ccnet_api.get_group(repo.group_id) diff --git a/seahub/api2/endpoints/shared_repos.py b/seahub/api2/endpoints/shared_repos.py index 2e0a1af9d6..e50f4f80eb 100644 --- a/seahub/api2/endpoints/shared_repos.py +++ b/seahub/api2/endpoints/shared_repos.py @@ -13,7 +13,7 @@ from seaserv import seafile_api, ccnet_api from seahub.api2.utils import api_error from seahub.api2.authentication import TokenAuthentication from seahub.api2.throttling import UserRateThrottle - +from seahub.profile.models import Profile from seahub.utils import is_org_context, is_valid_username, send_perm_audit_msg from seahub.base.templatetags.seahub_tags import email2nickname @@ -65,6 +65,7 @@ class SharedRepos(APIView): if repo.share_type == 'personal': result['user_name'] = email2nickname(repo.user) result['user_email'] = repo.user + result['contact_email'] = Profile.objects.get_contact_email_by_user(repo.user) if repo.share_type == 'group': group = ccnet_api.get_group(repo.group_id) diff --git a/seahub/templates/js/templates.html b/seahub/templates/js/templates.html index f15b0e89f9..7b87e14f88 100644 --- a/seahub/templates/js/templates.html +++ b/seahub/templates/js/templates.html @@ -1554,7 +1554,7 @@ <%= icon_title %> <%- name %> <% if (share_type == 'personal') { %> - <%- user_name %> + <%- user_name %> <% } else if (share_type == 'group') { %> <%- group_name %> <% } else if (share_type == 'public') { %> {# no 'public' type for 'folder' #} diff --git a/tests/api/endpoints/test_shared_folders.py b/tests/api/endpoints/test_shared_folders.py index 0beb306491..6e844f8b39 100644 --- a/tests/api/endpoints/test_shared_folders.py +++ b/tests/api/endpoints/test_shared_folders.py @@ -5,7 +5,9 @@ from django.core.urlresolvers import reverse from seaserv import seafile_api +from seahub.profile.models import Profile from seahub.test_utils import BaseTestCase +from tests.common.utils import randstring class SharedFoldersTest(BaseTestCase): @@ -34,21 +36,47 @@ class SharedFoldersTest(BaseTestCase): self.admin_user = self.admin.username self.url = reverse('api-v2.1-shared-folders') - sub_repo_id = self.create_virtual_repo() - self.share_repo_to_user(sub_repo_id) - self.share_repo_to_group(sub_repo_id) + self.sub_repo_id = self.create_virtual_repo() def tearDown(self): + seafile_api.remove_share(self.repo_id, self.user_name, self.admin_user) + seafile_api.unset_group_repo(self.repo_id, self.group_id, self.user_name) + seafile_api.remove_inner_pub_repo(self.repo_id) + self.remove_repo() - def test_can_get(self): + def test_can_get_when_share_to_user(self): + self.share_repo_to_user(self.sub_repo_id) + + contact_email = '%s@%s.com' % (randstring(6), randstring(6)) + nickname = randstring(6) + p = Profile.objects.add_or_update(self.admin.username, nickname=nickname) + p.contact_email = contact_email + p.save() + self.login_as(self.user) resp = self.client.get(self.url) self.assertEqual(200, resp.status_code) json_resp = json.loads(resp.content) assert json_resp[0]['share_type'] == 'personal' - assert json_resp[1]['share_type'] == 'group' + assert json_resp[0]['repo_id'] == self.repo_id + assert json_resp[0]['user_email'] == self.admin.username + assert json_resp[0]['user_name'] == nickname + assert json_resp[0]['contact_email'] == contact_email + + def test_can_get_when_share_to_group(self): + + self.share_repo_to_group(self.sub_repo_id) + + self.login_as(self.user) + resp = self.client.get(self.url) + self.assertEqual(200, resp.status_code) + + json_resp = json.loads(resp.content) + assert json_resp[0]['share_type'] == 'group' + assert json_resp[0]['repo_id'] == self.repo_id + assert json_resp[0]['group_id'] == self.group_id def test_get_with_invalid_repo_permission(self): # login with admin, then get user's share repo info diff --git a/tests/api/endpoints/test_shared_repos.py b/tests/api/endpoints/test_shared_repos.py index 1b2ff96f83..bc1196859a 100644 --- a/tests/api/endpoints/test_shared_repos.py +++ b/tests/api/endpoints/test_shared_repos.py @@ -5,7 +5,9 @@ from django.core.urlresolvers import reverse import seaserv from seaserv import seafile_api +from seahub.profile.models import Profile from seahub.test_utils import BaseTestCase +from tests.common.utils import randstring class SharedReposTest(BaseTestCase): @@ -31,21 +33,53 @@ class SharedReposTest(BaseTestCase): self.url = reverse('api-v2.1-shared-repos') def tearDown(self): + seafile_api.remove_share(self.repo_id, self.user_name, self.admin_name) + seafile_api.unset_group_repo(self.repo_id, self.group_id, self.user_name) + seafile_api.remove_inner_pub_repo(self.repo_id) + self.remove_repo() - def test_can_get(self): + def test_can_get_when_share_to_user(self): self.share_repo_to_user() + + contact_email = '%s@%s.com' % (randstring(6), randstring(6)) + nickname = randstring(6) + p = Profile.objects.add_or_update(self.admin_name, nickname=nickname) + p.contact_email = contact_email + p.save() + + self.login_as(self.user) + resp = self.client.get(self.url) + self.assertEqual(200, resp.status_code) + json_resp = json.loads(resp.content) + + assert json_resp[0]['share_type'] == 'personal' + assert json_resp[0]['repo_id'] == self.repo_id + assert json_resp[0]['user_email'] == self.admin_name + assert json_resp[0]['user_name'] == nickname + assert json_resp[0]['contact_email'] == contact_email + + def test_can_get_when_share_to_group(self): self.share_repo_to_group() + + self.login_as(self.user) + resp = self.client.get(self.url) + self.assertEqual(200, resp.status_code) + json_resp = json.loads(resp.content) + + assert json_resp[0]['share_type'] == 'group' + assert json_resp[0]['repo_id'] == self.repo_id + assert json_resp[0]['group_id'] == self.group_id + + def test_can_get_when_share_to_public(self): self.share_repo_to_public() self.login_as(self.user) resp = self.client.get(self.url) self.assertEqual(200, resp.status_code) - json_resp = json.loads(resp.content) - assert json_resp[0]['share_type'] == 'personal' - assert json_resp[1]['share_type'] == 'group' - assert json_resp[2]['share_type'] == 'public' + + assert json_resp[0]['share_type'] == 'public' def test_get_with_invalid_repo_permission(self): self.share_repo_to_user()