1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-02 23:48:47 +00:00

[api2] Add more attributes to search-user and account info

This commit is contained in:
zhengxie
2015-12-05 12:24:51 +08:00
parent 8410afdba2
commit b316c4decc
4 changed files with 85 additions and 2 deletions

View File

@@ -57,7 +57,7 @@ from seahub.message.models import UserMessage
from seahub.notifications.models import UserNotification from seahub.notifications.models import UserNotification
from seahub.options.models import UserOptions from seahub.options.models import UserOptions
from seahub.contacts.models import Contact from seahub.contacts.models import Contact
from seahub.profile.models import Profile from seahub.profile.models import Profile, DetailedProfile
from seahub.shortcuts import get_first_object_or_none from seahub.shortcuts import get_first_object_or_none
from seahub.signals import (repo_created, repo_deleted, from seahub.signals import (repo_created, repo_deleted,
share_file_to_user_successful) share_file_to_user_successful)
@@ -238,10 +238,17 @@ class AccountInfo(APIView):
def get(self, request, format=None): def get(self, request, format=None):
info = {} info = {}
email = request.user.username email = request.user.username
p = Profile.objects.get_profile_by_user(email)
d_p = DetailedProfile.objects.get_detailed_profile_by_user(email)
info['email'] = email info['email'] = email
info['nickname'] = email2nickname(email) info['name'] = email2nickname(email)
info['total'] = seafile_api.get_user_quota(email) info['total'] = seafile_api.get_user_quota(email)
info['usage'] = seafile_api.get_user_self_usage(email) info['usage'] = seafile_api.get_user_self_usage(email)
info['login_id'] = p.login_id if p else ""
info['department'] = d_p.department if d_p else ""
info['contact_email'] = p.contact_email if p else ""
info['institution'] = p.institution if p else ""
return Response(info) return Response(info)
@@ -372,6 +379,13 @@ class SearchUser(APIView):
def format_user_result(request, users, size): def format_user_result(request, users, size):
results = [] results = []
# Get contact_emails from users' profiles
profiles = Profile.objects.filter(user__in=users)
contact_email_dict = {}
for e in profiles:
contact_email_dict[e.user] = e.contact_email
for email in users: for email in users:
url, is_default, date_uploaded = api_avatar_url(email, size) url, is_default, date_uploaded = api_avatar_url(email, size)
results.append({ results.append({
@@ -379,6 +393,7 @@ def format_user_result(request, users, size):
"avatar": avatar(email, size), "avatar": avatar(email, size),
"avatar_url": request.build_absolute_uri(url), "avatar_url": request.build_absolute_uri(url),
"name": email2nickname(email), "name": email2nickname(email),
"contact_email": contact_email_dict.get(email, ""),
}) })
return results return results

View File

@@ -18,6 +18,10 @@ class AccountsApiTest(ApiTestBase):
self.assertEqual(info['email'], self.username) self.assertEqual(info['email'], self.username)
self.assertIsNotNone(info['total']) self.assertIsNotNone(info['total'])
self.assertIsNotNone(info['usage']) self.assertIsNotNone(info['usage'])
self.assertIsNotNone(info['login_id'])
self.assertIsNotNone(info['department'])
self.assertIsNotNone(info['contact_email'])
self.assertIsNotNone(info['institution'])
def test_list_accounts(self): def test_list_accounts(self):
# Normal user can not list accounts # Normal user can not list accounts

37
tests/api/test_dir.py Normal file
View File

@@ -0,0 +1,37 @@
import json
import os
from django.core.urlresolvers import reverse
from seahub.test_utils import BaseTestCase
class DirTest(BaseTestCase):
def setUp(self):
self.login_as(self.user)
self.endpoint = reverse('DirView', args=[self.repo.id])
self.folder_name = os.path.basename(self.folder)
def tearDown(self):
self.remove_repo()
def test_can_list(self):
resp = self.client.get(self.endpoint)
json_resp = json.loads(resp.content)
self.assertEqual(200, resp.status_code)
assert len(json_resp) == 1
assert self.folder_name == json_resp[0]['name']
def test_can_create(self):
resp = self.client.post(self.endpoint + '?p=/new_dir', {
'operation': 'mkdir'
})
self.assertEqual(201, resp.status_code)
def test_create_with_nonexistent_parent(self):
resp = self.client.post(self.endpoint + '?p=/new_parent/new_dir', {
'operation': 'mkdir'
})
self.assertEqual(400, resp.status_code)

View File

@@ -0,0 +1,27 @@
import json
from django.core.urlresolvers import reverse
from seahub.profile.models import Profile
from seahub.test_utils import BaseTestCase
class SearchUserTest(BaseTestCase):
def setUp(self):
self.login_as(self.user)
self.endpoint = reverse('search-user')
def test_can_search(self):
p = Profile.objects.add_or_update(self.user.email, nickname="test")
p.contact_email = 'new_mail@test.com'
p.save()
resp = self.client.get(self.endpoint + '?q=' + self.user.email)
json_resp = json.loads(resp.content)
self.assertEqual(200, resp.status_code)
assert json_resp['users'] is not None
assert json_resp['users'][0]['email'] == self.user.email
assert json_resp['users'][0]['avatar'] is not None
assert json_resp['users'][0]['avatar_url'] is not None
assert json_resp['users'][0]['name'] == 'test'
assert json_resp['users'][0]['contact_email'] == 'new_mail@test.com'