mirror of
https://github.com/haiwen/seahub.git
synced 2025-08-22 16:56:57 +00:00
move seahub-extra import inside api (#4221)
* move seahub-extra import inside api * fix repos api, delete CCNET_SERVER_PORT * fix test cases
This commit is contained in:
parent
8f861c003b
commit
d95da0bff1
@ -14,8 +14,6 @@ from seahub.api2.throttling import UserRateThrottle
|
|||||||
from seahub.api2.permissions import IsProVersion
|
from seahub.api2.permissions import IsProVersion
|
||||||
from seahub.api2.utils import api_error
|
from seahub.api2.utils import api_error
|
||||||
|
|
||||||
from seahub_extra.sysadmin_extra.models import UserLoginLog
|
|
||||||
|
|
||||||
from seahub.base.templatetags.seahub_tags import email2nickname, email2contact_email
|
from seahub.base.templatetags.seahub_tags import email2nickname, email2contact_email
|
||||||
from seahub.utils import get_file_audit_events, generate_file_audit_event_type, \
|
from seahub.utils import get_file_audit_events, generate_file_audit_event_type, \
|
||||||
get_file_update_events, get_perm_audit_events, is_valid_email
|
get_file_update_events, get_perm_audit_events, is_valid_email
|
||||||
@ -48,6 +46,7 @@ class AdminLogsLoginLogs(APIView):
|
|||||||
start = (current_page - 1) * per_page
|
start = (current_page - 1) * per_page
|
||||||
end = start + per_page
|
end = start + per_page
|
||||||
|
|
||||||
|
from seahub_extra.sysadmin_extra.models import UserLoginLog
|
||||||
logs = UserLoginLog.objects.all().order_by('-login_date')[start:end]
|
logs = UserLoginLog.objects.all().order_by('-login_date')[start:end]
|
||||||
count = UserLoginLog.objects.all().count()
|
count = UserLoginLog.objects.all().count()
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ from seahub.signals import (repo_created, repo_deleted, repo_transfer)
|
|||||||
from seahub.share.models import FileShare, OrgFileShare, UploadLinkShare
|
from seahub.share.models import FileShare, OrgFileShare, UploadLinkShare
|
||||||
from seahub.utils import gen_file_get_url, gen_token, gen_file_upload_url, \
|
from seahub.utils import gen_file_get_url, gen_token, gen_file_upload_url, \
|
||||||
check_filename_with_rename, is_valid_username, EVENTS_ENABLED, \
|
check_filename_with_rename, is_valid_username, EVENTS_ENABLED, \
|
||||||
get_user_events, EMPTY_SHA1, get_ccnet_server_addr_port, is_pro_version, \
|
get_user_events, EMPTY_SHA1, is_pro_version, \
|
||||||
gen_block_get_url, get_file_type_and_ext, HAS_FILE_SEARCH, \
|
gen_block_get_url, get_file_type_and_ext, HAS_FILE_SEARCH, \
|
||||||
gen_file_share_link, gen_dir_share_link, is_org_context, gen_shared_link, \
|
gen_file_share_link, gen_dir_share_link, is_org_context, gen_shared_link, \
|
||||||
get_org_user_events, calculate_repos_last_modify, send_perm_audit_msg, \
|
get_org_user_events, calculate_repos_last_modify, send_perm_audit_msg, \
|
||||||
@ -608,8 +608,6 @@ def repo_download_info(request, repo_id, gen_sync_token=True):
|
|||||||
return api_error(status.HTTP_404_NOT_FOUND, 'Library not found.')
|
return api_error(status.HTTP_404_NOT_FOUND, 'Library not found.')
|
||||||
|
|
||||||
# generate download url for client
|
# generate download url for client
|
||||||
relay_id = 0
|
|
||||||
addr, port = get_ccnet_server_addr_port()
|
|
||||||
email = request.user.username
|
email = request.user.username
|
||||||
if gen_sync_token:
|
if gen_sync_token:
|
||||||
token = seafile_api.generate_repo_token(repo_id, email)
|
token = seafile_api.generate_repo_token(repo_id, email)
|
||||||
@ -629,8 +627,8 @@ def repo_download_info(request, repo_id, gen_sync_token=True):
|
|||||||
|
|
||||||
info_json = {
|
info_json = {
|
||||||
'relay_id': '44e8f253849ad910dc142247227c8ece8ec0f971',
|
'relay_id': '44e8f253849ad910dc142247227c8ece8ec0f971',
|
||||||
'relay_addr': addr,
|
'relay_addr': '127.0.0.1',
|
||||||
'relay_port': port,
|
'relay_port': '80',
|
||||||
'email': email,
|
'email': email,
|
||||||
'token': token,
|
'token': token,
|
||||||
'repo_id': repo_id,
|
'repo_id': repo_id,
|
||||||
|
@ -526,10 +526,6 @@ def gen_dir_zip_download_url(token):
|
|||||||
"""
|
"""
|
||||||
return '%s/zip/%s' % (get_fileserver_root(), token)
|
return '%s/zip/%s' % (get_fileserver_root(), token)
|
||||||
|
|
||||||
def get_ccnet_server_addr_port():
|
|
||||||
"""get ccnet server host and port"""
|
|
||||||
return seaserv.CCNET_SERVER_ADDR, seaserv.CCNET_SERVER_PORT
|
|
||||||
|
|
||||||
def string2list(string):
|
def string2list(string):
|
||||||
"""
|
"""
|
||||||
Split string contacted with different separators to a list, and remove
|
Split string contacted with different separators to a list, and remove
|
||||||
|
@ -4,6 +4,7 @@ from mock import patch
|
|||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
from django.test import override_settings
|
||||||
|
|
||||||
from seahub.test_utils import BaseTestCase
|
from seahub.test_utils import BaseTestCase
|
||||||
from seahub.invitations.models import Invitation
|
from seahub.invitations.models import Invitation
|
||||||
@ -12,10 +13,11 @@ from seahub.base.accounts import UserPermissions
|
|||||||
from seahub.invitations import models
|
from seahub.invitations import models
|
||||||
|
|
||||||
|
|
||||||
|
@patch('seahub.api2.endpoints.admin.invitations.ENABLE_GUEST_INVITATION', True)
|
||||||
class InvitationsTest(BaseTestCase):
|
class InvitationsTest(BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.url = reverse('api-v2.1-admin-invitations')
|
self.url = reverse('api-v2.1-admin-invitations')
|
||||||
|
|
||||||
@patch.object(CanInviteGuest, 'has_permission')
|
@patch.object(CanInviteGuest, 'has_permission')
|
||||||
@patch.object(UserPermissions, 'can_invite_guest')
|
@patch.object(UserPermissions, 'can_invite_guest')
|
||||||
def test_can_del_all_expired_invitation(self, mock_has_permission, mock_can_invite_guest):
|
def test_can_del_all_expired_invitation(self, mock_has_permission, mock_can_invite_guest):
|
||||||
@ -42,10 +44,9 @@ class InvitationsTest(BaseTestCase):
|
|||||||
invite_type=models.GUEST,
|
invite_type=models.GUEST,
|
||||||
expire_time=timezone.now())
|
expire_time=timezone.now())
|
||||||
entry.save()
|
entry.save()
|
||||||
|
|
||||||
def test_get_invitations(self):
|
def test_get_invitations(self):
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
|
||||||
resp = self.client.get(self.url)
|
resp = self.client.get(self.url)
|
||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
@ -63,6 +64,7 @@ class InvitationsTest(BaseTestCase):
|
|||||||
self.assertEqual(400, resp.status_code)
|
self.assertEqual(400, resp.status_code)
|
||||||
|
|
||||||
|
|
||||||
|
@patch('seahub.api2.endpoints.admin.invitations.ENABLE_GUEST_INVITATION', True)
|
||||||
class InvitationTest(BaseTestCase):
|
class InvitationTest(BaseTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
pass
|
pass
|
||||||
@ -83,6 +85,7 @@ class InvitationTest(BaseTestCase):
|
|||||||
|
|
||||||
def test_can_delete(self):
|
def test_can_delete(self):
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
|
||||||
token = self._add_invitations('test@noway.com')
|
token = self._add_invitations('test@noway.com')
|
||||||
url = reverse('api-v2.1-admin-invitation', args=[token])
|
url = reverse('api-v2.1-admin-invitation', args=[token])
|
||||||
resp = self.client.delete(url)
|
resp = self.client.delete(url)
|
||||||
|
@ -121,7 +121,6 @@ class AdminUserTest(BaseTestCase):
|
|||||||
assert 'is_staff' in json_resp
|
assert 'is_staff' in json_resp
|
||||||
assert 'is_active' in json_resp
|
assert 'is_active' in json_resp
|
||||||
assert 'create_time' in json_resp
|
assert 'create_time' in json_resp
|
||||||
assert 'department' in json_resp
|
|
||||||
assert 'quota_total' in json_resp
|
assert 'quota_total' in json_resp
|
||||||
assert 'quota_usage' in json_resp
|
assert 'quota_usage' in json_resp
|
||||||
|
|
||||||
@ -266,23 +265,6 @@ class AdminUserTest(BaseTestCase):
|
|||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
self.assertEqual(400, resp.status_code)
|
self.assertEqual(400, resp.status_code)
|
||||||
|
|
||||||
|
|
||||||
def test_update_department(self):
|
|
||||||
|
|
||||||
self.login_as(self.admin)
|
|
||||||
|
|
||||||
# change user name
|
|
||||||
department = randstring(10)
|
|
||||||
data = {"email": self.tmp_email, "department": department}
|
|
||||||
resp = self.client.put(self.url, json.dumps(data),
|
|
||||||
'application/json')
|
|
||||||
json_resp = json.loads(resp.content)
|
|
||||||
self.assertEqual(200, resp.status_code)
|
|
||||||
assert json_resp['department'] == department
|
|
||||||
|
|
||||||
d_profile = DetailedProfile.objects.get_detailed_profile_by_user(self.tmp_email)
|
|
||||||
assert d_profile.department == department
|
|
||||||
|
|
||||||
def test_update_quota_total(self):
|
def test_update_quota_total(self):
|
||||||
|
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
@ -33,7 +33,7 @@ class GroupsTest(BaseTestCase):
|
|||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
|
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp[0]) == 8
|
assert len(json_resp[0]) == 7
|
||||||
|
|
||||||
group_ids = []
|
group_ids = []
|
||||||
for group in json_resp:
|
for group in json_resp:
|
||||||
@ -46,7 +46,7 @@ class GroupsTest(BaseTestCase):
|
|||||||
self.assertEqual(200, resp.status_code)
|
self.assertEqual(200, resp.status_code)
|
||||||
|
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp[0]) == 9
|
assert len(json_resp[0]) == 8
|
||||||
|
|
||||||
group_ids = []
|
group_ids = []
|
||||||
group_repos = []
|
group_repos = []
|
||||||
@ -69,7 +69,7 @@ class GroupsTest(BaseTestCase):
|
|||||||
self.assertEqual(201, resp.status_code)
|
self.assertEqual(201, resp.status_code)
|
||||||
|
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp) == 8
|
assert len(json_resp) == 7
|
||||||
assert json_resp['name'] == new_group_name
|
assert json_resp['name'] == new_group_name
|
||||||
assert json_resp['owner'] == self.user.email
|
assert json_resp['owner'] == self.user.email
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ class GroupsTest(BaseTestCase):
|
|||||||
self.assertEqual(201, resp.status_code)
|
self.assertEqual(201, resp.status_code)
|
||||||
|
|
||||||
json_resp = json.loads(resp.content)
|
json_resp = json.loads(resp.content)
|
||||||
assert len(json_resp) == 8
|
assert len(json_resp) == 7
|
||||||
assert json_resp['name'] == new_group_name
|
assert json_resp['name'] == new_group_name
|
||||||
assert json_resp['owner'] == self.user.email
|
assert json_resp['owner'] == self.user.email
|
||||||
|
|
||||||
|
@ -29,7 +29,6 @@ class GroupsApiTest(ApiTestBase):
|
|||||||
self.assertIsNotNone(group['ctime'])
|
self.assertIsNotNone(group['ctime'])
|
||||||
self.assertIsNotNone(group['creator'])
|
self.assertIsNotNone(group['creator'])
|
||||||
self.assertIsNotNone(group['msgnum'])
|
self.assertIsNotNone(group['msgnum'])
|
||||||
self.assertIsNotNone(group['mtime'])
|
|
||||||
self.assertIsNotNone(group['id'])
|
self.assertIsNotNone(group['id'])
|
||||||
self.assertIsNotNone(group['name'])
|
self.assertIsNotNone(group['name'])
|
||||||
|
|
||||||
|
@ -130,12 +130,6 @@ class CommandTest(BaseTestCase):
|
|||||||
assert resp.repo_url == '/library/%(repo_id)s/%(repo_name)s/%(path)s' % {
|
assert resp.repo_url == '/library/%(repo_id)s/%(repo_name)s/%(path)s' % {
|
||||||
'repo_id': self.repo.id, 'repo_name': self.repo.name, 'path': ''}
|
'repo_id': self.repo.id, 'repo_name': self.repo.name, 'path': ''}
|
||||||
|
|
||||||
def test_format_group_message(self):
|
|
||||||
detail = group_msg_to_json(self.group.id, 'from@email.com', 'message')
|
|
||||||
notice = UserNotification(to_user= 'to@user.com', msg_type='group_msg', detail=detail)
|
|
||||||
resp = Command().format_group_message(notice)
|
|
||||||
assert resp.group_url == '/#group/%(group_id)s/discussions/' % {'group_id': self.group.id}
|
|
||||||
|
|
||||||
def test_format_repo_share_to_group_msg(self):
|
def test_format_repo_share_to_group_msg(self):
|
||||||
if not LOCAL_PRO_DEV_ENV:
|
if not LOCAL_PRO_DEV_ENV:
|
||||||
return
|
return
|
||||||
|
@ -29,12 +29,6 @@ class UserNotificationTest(BaseTestCase):
|
|||||||
'repo_name': self.repo.name,
|
'repo_name': self.repo.name,
|
||||||
'path': upload_to.strip('/')} in msg
|
'path': upload_to.strip('/')} in msg
|
||||||
|
|
||||||
def test_format_group_message_title(self):
|
|
||||||
detail = group_msg_to_json(self.group.id, 'from@email.com', 'message')
|
|
||||||
notice = UserNotification(to_user='to@user.com', msg_type='group_msg', detail=detail)
|
|
||||||
msg = notice.format_group_message_title()
|
|
||||||
assert '/#group/%(group_id)s/discussions/' % {'group_id': self.group.id} in msg
|
|
||||||
|
|
||||||
def test_format_group_join_request(self):
|
def test_format_group_join_request(self):
|
||||||
detail = group_join_request_to_json('group_join', self.group.id, 'join_request_msg')
|
detail = group_join_request_to_json('group_join', self.group.id, 'join_request_msg')
|
||||||
notice = UserNotification.objects.add_group_join_request_notice('group_join',
|
notice = UserNotification.objects.add_group_join_request_notice('group_join',
|
||||||
|
@ -11,4 +11,4 @@ class UtilsTest(BaseTestCase):
|
|||||||
assert DEFAULT_USER in get_available_roles()
|
assert DEFAULT_USER in get_available_roles()
|
||||||
|
|
||||||
def test_get_enabled_role_permissions_by_role(self):
|
def test_get_enabled_role_permissions_by_role(self):
|
||||||
assert len(list(get_enabled_role_permissions_by_role(DEFAULT_USER).keys())) == 18
|
assert len(list(get_enabled_role_permissions_by_role(DEFAULT_USER).keys())) == 17
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
from django.core.urlresolvers import reverse
|
|
||||||
|
|
||||||
import seaserv
|
|
||||||
|
|
||||||
from seahub.wiki.models import PersonalWiki
|
|
||||||
from seahub.test_utils import BaseTestCase
|
|
||||||
|
|
||||||
class PersonalWikiTest(BaseTestCase):
|
|
||||||
def test_wiki_does_not_exist(self):
|
|
||||||
self.login_as(self.user)
|
|
||||||
resp = self.client.get(reverse('personal_wiki'))
|
|
||||||
|
|
||||||
assert resp.context['wiki_exists'] is False
|
|
||||||
self.assertTemplateUsed('wiki/personal_wiki.html')
|
|
||||||
|
|
||||||
def test_home_page_missing(self):
|
|
||||||
self.login_as(self.user)
|
|
||||||
PersonalWiki.objects.save_personal_wiki(self.user.username,
|
|
||||||
self.repo.id)
|
|
||||||
assert len(PersonalWiki.objects.all()) == 1
|
|
||||||
|
|
||||||
resp = self.client.get(reverse('personal_wiki'))
|
|
||||||
self.assertEqual(302, resp.status_code)
|
|
||||||
|
|
||||||
def test_invalid_permisison(self):
|
|
||||||
self.login_as(self.admin)
|
|
||||||
|
|
||||||
data = {'dst_repo': self.repo.id}
|
|
||||||
resp = self.client.post(reverse('personal_wiki_use_lib'), data)
|
|
||||||
assert 'Permission denied.' in str(resp.cookies)
|
|
||||||
self.assertEqual(302, resp.status_code)
|
|
||||||
|
|
||||||
def test_invalid_repo(self):
|
|
||||||
self.login_as(self.user)
|
|
||||||
|
|
||||||
data = {'dst_repo': self.repo.id[:30] + '123456'}
|
|
||||||
resp = self.client.post(reverse('personal_wiki_use_lib'), data)
|
|
||||||
assert 'Failed to set wiki library.' in str(resp.cookies)
|
|
||||||
self.assertEqual(302, resp.status_code)
|
|
||||||
|
|
||||||
def test_home_page(self):
|
|
||||||
self.login_as(self.user)
|
|
||||||
PersonalWiki.objects.save_personal_wiki(self.user.username,
|
|
||||||
self.repo.id)
|
|
||||||
assert len(PersonalWiki.objects.all()) == 1
|
|
||||||
|
|
||||||
seaserv.post_empty_file(self.repo.id, "/", "home.md",
|
|
||||||
self.user.username)
|
|
||||||
|
|
||||||
for page_name in ["home", "home.md"]:
|
|
||||||
resp = self.client.get(reverse('personal_wiki', args=[page_name]))
|
|
||||||
self.assertEqual(200, resp.status_code)
|
|
||||||
self.assertTemplateUsed('wiki/personal_wiki.html')
|
|
||||||
self.assertEqual(True, resp.context['wiki_exists'])
|
|
||||||
self.assertEqual("home", resp.context['page'])
|
|
||||||
self.assertEqual("/home.md", resp.context['path'])
|
|
Loading…
Reference in New Issue
Block a user