1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-17 15:53:28 +00:00

Merge branch '8.0' into master

This commit is contained in:
lian
2021-05-24 12:35:50 +08:00
7 changed files with 40 additions and 38 deletions

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { gettext } from '../../../utils/constants';
import { gettext, isPro } from '../../../utils/constants';
import { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';
const propTypes = {
@@ -36,10 +36,12 @@ class SysAdminUnlinkDevice extends React.Component {
<ModalHeader toggle={toggle}>{gettext('Unlink device')}</ModalHeader>
<ModalBody>
<p>{gettext('Are you sure you want to unlink this device?')}</p>
{isPro &&
<div className="d-flex align-items-center">
<input id="delete-files" className="mr-1" type="checkbox" checked={inputChecked} onChange={this.handleInputChange} />
<label htmlFor="delete-files" className="m-0">{gettext('Delete files from this device the next time it comes online.')}</label>
</div>
}
</ModalBody>
<ModalFooter>
<Button color="secondary" onClick={toggle}>{gettext('Cancel')}</Button>

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import { seafileAPI } from '../../../utils/seafile-api';
import { gettext, isPro } from '../../../utils/constants';
import { gettext } from '../../../utils/constants';
import toaster from '../../../components/toast';
import { Utils } from '../../../utils/utils';
import EmptyTip from '../../../components/empty-tip';
@@ -133,9 +133,7 @@ class Item extends Component {
<span title={moment(item.last_accessed).format('llll')}>{moment(item.last_accessed).fromNow()}</span>
</td>
<td>
{isPro &&
<a href="#" className={`sf2-icon-delete action-icon ${isOpIconShown ? '' : 'invisible'}`} title={gettext('Unlink')} onClick={this.handleUnlink}></a>
}
</td>
</tr>
{isUnlinkDeviceDialogOpen &&

View File

@@ -9,6 +9,7 @@ from rest_framework import status
from pysearpc import SearpcError
from seahub.utils import is_pro_version
from seahub.utils.devices import do_unlink_device
from seahub.utils.timeutils import datetime_to_isoformat_timestr
@@ -20,6 +21,7 @@ from seahub.base.templatetags.seahub_tags import email2nickname
logger = logging.getLogger(__name__)
class AdminDevices(APIView):
authentication_classes = (TokenAuthentication, SessionAuthentication)
throttle_classes = (UserRateThrottle,)
@@ -75,7 +77,7 @@ class AdminDevices(APIView):
def delete(self, request, format=None):
if not request.user.admin_permissions.other_permission():
if is_pro_version() and not request.user.admin_permissions.other_permission():
return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')
platform = request.data.get('platform', '')

View File

@@ -120,8 +120,18 @@ class AdminLogsFileAccessLogs(APIView):
start = per_page * (current_page - 1)
limit = per_page + 1
if user_selected:
org_id = -1
orgs = ccnet_api.get_orgs_by_user(user_selected)
if orgs:
org_id = orgs[0].org_id
elif repo_id_selected:
org_id = seafile_api.get_org_id_by_repo_id(repo_id_selected)
else:
org_id = 0
# org_id = 0, show all file audit
events = get_file_audit_events(user_selected, 0, repo_id_selected, start, limit) or []
events = get_file_audit_events(user_selected, org_id, repo_id_selected, start, limit) or []
if len(events) > per_page:
events = events[:per_page]

View File

@@ -35,12 +35,11 @@ from seahub.profile.settings import CONTACT_CACHE_TIMEOUT, CONTACT_CACHE_PREFIX,
from seahub.utils import is_valid_username2, is_org_context, \
is_pro_version, normalize_cache_key, is_valid_email, \
IS_EMAIL_CONFIGURED, send_html_email, get_site_name, \
gen_shared_link, gen_shared_upload_link, \
get_file_audit_events, get_file_update_events
gen_shared_link, gen_shared_upload_link
from seahub.utils.file_size import get_file_size_unit
from seahub.utils.timeutils import timestamp_to_isoformat_timestr, \
datetime_to_isoformat_timestr, utc_to_local
datetime_to_isoformat_timestr
from seahub.utils.user_permissions import get_user_role
from seahub.utils.repo import normalize_repo_status_code
from seahub.constants import DEFAULT_ADMIN
@@ -65,23 +64,10 @@ json_content_type = 'application/json; charset=utf-8'
def get_user_last_access_time(email, last_login_time):
device_last_access = ''
audit_last_access = ''
update_last_access = ''
devices = TokenV2.objects.filter(user=email).order_by('-last_accessed')
if devices:
device_last_access = devices[0].last_accessed
if is_pro_version():
audit_events = get_file_audit_events(email, 0, None, 0, 1) or []
if audit_events:
audit_last_access = audit_events[0].timestamp
if is_pro_version():
update_events = get_file_update_events(email, 0, None, 0, 1) or []
if update_events:
update_last_access = update_events[0].timestamp
# before make_naive
# 2021-04-09 05:32:30+00:00
# tzinfo: UTC
@@ -100,16 +86,6 @@ def get_user_last_access_time(email, last_login_time):
device_last_access = make_naive(device_last_access)
last_access_time_list.append(device_last_access)
if audit_last_access:
if is_aware(audit_last_access):
audit_last_access = make_naive(audit_last_access)
last_access_time_list.append(utc_to_local(audit_last_access))
if update_last_access:
if is_aware(update_last_access):
update_last_access = make_naive(update_last_access)
last_access_time_list.append(utc_to_local(update_last_access))
if not last_access_time_list:
return ''
else:
@@ -250,7 +226,7 @@ def update_user_info(request, user, password, is_active, is_staff, role,
if institution_name == '':
InstitutionAdmin.objects.filter(user=email).delete()
if quota_total_mb:
if quota_total_mb is not None:
quota_total = int(quota_total_mb) * get_file_size_unit('MB')
orgs = ccnet_api.get_orgs_by_user(email)
try:

View File

@@ -43,7 +43,7 @@ from seahub.settings import SHARE_LINK_EXPIRE_DAYS_MAX, \
SHARE_LINK_EXPIRE_DAYS_MIN, SHARE_LINK_LOGIN_REQUIRED, \
SHARE_LINK_EXPIRE_DAYS_DEFAULT, \
ENABLE_SHARE_LINK_AUDIT, ENABLE_VIDEO_THUMBNAIL, \
THUMBNAIL_ROOT
THUMBNAIL_ROOT, ENABLE_UPLOAD_LINK_VIRUS_CHECK
from seahub.wiki.models import Wiki
from seahub.views.file import can_edit_file
from seahub.views import check_folder_permission
@@ -808,11 +808,17 @@ class ShareLinkUpload(APIView):
# generate token
obj_id = json.dumps({'parent_dir': path})
check_virus = False
if is_pro_version() and ENABLE_UPLOAD_LINK_VIRUS_CHECK:
check_virus = True
token = seafile_api.get_fileserver_access_token(repo_id,
obj_id,
'upload-link',
share_link.username,
use_onetime=False)
use_onetime=False,
check_virus=check_virus)
if not token:
error_msg = 'Internal Server Error'

View File

@@ -25,12 +25,14 @@ from seahub.api2.throttling import AnonRateThrottle, UserRateThrottle
from seahub.api2.permissions import CanGenerateUploadLink
from seahub.share.models import UploadLinkShare, check_share_link_common
from seahub.utils import gen_shared_upload_link, gen_file_upload_url
from seahub.utils import gen_shared_upload_link, gen_file_upload_url, \
is_pro_version
from seahub.views import check_folder_permission
from seahub.utils.timeutils import datetime_to_isoformat_timestr
from seahub.settings import UPLOAD_LINK_EXPIRE_DAYS_DEFAULT, \
UPLOAD_LINK_EXPIRE_DAYS_MIN, UPLOAD_LINK_EXPIRE_DAYS_MAX
UPLOAD_LINK_EXPIRE_DAYS_MIN, UPLOAD_LINK_EXPIRE_DAYS_MAX, \
ENABLE_UPLOAD_LINK_VIRUS_CHECK
logger = logging.getLogger(__name__)
@@ -349,11 +351,17 @@ class UploadLinkUpload(APIView):
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
obj_id = json.dumps({'parent_dir': path})
check_virus = False
if is_pro_version() and ENABLE_UPLOAD_LINK_VIRUS_CHECK:
check_virus = True
token = seafile_api.get_fileserver_access_token(repo_id,
obj_id,
'upload-link',
uls.username,
use_onetime=False)
use_onetime=False,
check_virus=check_virus)
if not token:
error_msg = 'Internal Server Error'