1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-10 03:11:07 +00:00

add avatar url in response (#3381)

* add avatar url in response
This commit is contained in:
Leo
2019-04-28 17:10:53 +08:00
committed by lian
parent 8346e3dcd4
commit 0420331a9c
2 changed files with 21 additions and 4 deletions

View File

@@ -18,6 +18,7 @@ from seahub.avatar.models import Avatar
from seahub.avatar.signals import avatar_updated
from seahub.avatar.settings import (AVATAR_MAX_AVATARS_PER_USER,
AVATAR_MAX_SIZE, AVATAR_ALLOWED_FILE_EXTS)
from seahub.avatar.templatetags.avatar_tags import api_avatar_url
logger = logging.getLogger(__name__)
@@ -29,10 +30,19 @@ class UserAvatarView(APIView):
def post(self, request):
image_file = request.FILES.get('avatar', None)
avatar_size = request.data.get('avatar_size', 64)
if not image_file:
error_msg = 'avatar invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
try:
avatar_size = int(avatar_size)
except Exception as e:
logger.error(e)
error_msg = 'avatar_size invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
(root, ext) = os.path.splitext(image_file.name.lower())
if AVATAR_ALLOWED_FILE_EXTS and ext not in AVATAR_ALLOWED_FILE_EXTS:
error_msg = _(u"%(ext)s is an invalid file extension. Authorized extensions are : %(valid_exts_list)s") % {'ext' : ext, 'valid_exts_list' : ", ".join(AVATAR_ALLOWED_FILE_EXTS)}
@@ -56,9 +66,10 @@ class UserAvatarView(APIView):
avatar.avatar.save(image_file.name, image_file)
avatar.save()
avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar)
avatar_url, is_default, date_uploaded = api_avatar_url(username, int(avatar_size))
except Exception as e:
logger.error(e)
error_msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
return Response({'success': True})
return Response({'avatar_url': avatar_url})

View File

@@ -1,4 +1,5 @@
import os
import random
from tests.api.apitestbase import ApiTestBase
from tests.api.urls import AVATAR_BASE_URL
from tests.common.utils import urljoin
@@ -14,10 +15,15 @@ class AvatarApiTest(ApiTestBase):
avatar_url = urljoin(BASE_URL, avatar_url)
avatar_file = os.path.join(os.getcwd(), 'media/img/seafile-logo.png')
with open(avatar_file) as f:
json_resp = self.post(avatar_url, files={'avatar': f}).json()
random_avatar_size = random.randint(12,128)
assert json_resp['success'] == True
with open(avatar_file) as f:
json_resp = self.post(avatar_url, files={'avatar': f}, data={'avatar_size': random_avatar_size}).json()
assert json_resp.has_key('avatar_url')
response_url = json_resp['avatar_url']
list_url = response_url.split('/')
assert str(random_avatar_size) in list_url
# assert is NOT default avatar
avatar_url = urljoin(AVATAR_BASE_URL, 'user', self.username, '/resized/80/')