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 @@
 |
<%- 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()