pull/4019/head
Bai 2020-05-19 20:36:41 +08:00
commit f9e167cb0e
7 changed files with 28 additions and 5 deletions

View File

@ -21,7 +21,9 @@ class JMSCSVRender(BaseRenderer):
@staticmethod @staticmethod
def _get_show_fields(fields, template): def _get_show_fields(fields, template):
if template in ('import', 'update'): if template == 'import':
return [v for k, v in fields.items() if not v.read_only and k != "org_id" and k != 'id']
elif template == 'update':
return [v for k, v in fields.items() if not v.read_only and k != "org_id"] return [v for k, v in fields.items() if not v.read_only and k != "org_id"]
else: else:
return [v for k, v in fields.items() if not v.write_only and k != "org_id"] return [v for k, v in fields.items() if not v.write_only and k != "org_id"]

View File

@ -9,7 +9,7 @@ from rest_framework.settings import api_settings
from rest_framework.exceptions import ValidationError from rest_framework.exceptions import ValidationError
from rest_framework.fields import SkipField, empty from rest_framework.fields import SkipField, empty
__all__ = ['BulkSerializerMixin', 'BulkListSerializerMixin', 'CommonSerializerMixin'] __all__ = ['BulkSerializerMixin', 'BulkListSerializerMixin', 'CommonSerializerMixin', 'CommonBulkSerializerMixin']
class BulkSerializerMixin(object): class BulkSerializerMixin(object):
@ -233,3 +233,6 @@ class EagerLoadQuerySetFields:
class CommonSerializerMixin(DynamicFieldsMixin): class CommonSerializerMixin(DynamicFieldsMixin):
pass pass
class CommonBulkSerializerMixin(BulkSerializerMixin, CommonSerializerMixin):
pass

View File

@ -437,6 +437,15 @@ class DynamicConfig:
backends.insert(0, 'authentication.backends.radius.RadiusBackend') backends.insert(0, 'authentication.backends.radius.RadiusBackend')
return backends return backends
def XPACK_LICENSE_IS_VALID(self):
if not HAS_XPACK:
return False
try:
from xpack.plugins.license.models import License
return bool(License.is_valid)
except:
return False
def get_from_db(self, item): def get_from_db(self, item):
if self.db_setting is not None: if self.db_setting is not None:
value = self.db_setting.get(item) value = self.db_setting.get(item)

View File

@ -85,3 +85,7 @@ LOGIN_LOG_KEEP_DAYS = DYNAMIC.LOGIN_LOG_KEEP_DAYS
TASK_LOG_KEEP_DAYS = CONFIG.TASK_LOG_KEEP_DAYS TASK_LOG_KEEP_DAYS = CONFIG.TASK_LOG_KEEP_DAYS
ORG_CHANGE_TO_URL = CONFIG.ORG_CHANGE_TO_URL ORG_CHANGE_TO_URL = CONFIG.ORG_CHANGE_TO_URL
WINDOWS_SKIP_ALL_MANUAL_PASSWORD = CONFIG.WINDOWS_SKIP_ALL_MANUAL_PASSWORD WINDOWS_SKIP_ALL_MANUAL_PASSWORD = CONFIG.WINDOWS_SKIP_ALL_MANUAL_PASSWORD
# XPACK
XPACK_LICENSE_IS_VALID = DYNAMIC.XPACK_LICENSE_IS_VALID

View File

@ -270,6 +270,8 @@ class PublicSettingApi(generics.RetrieveAPIView):
"data": { "data": {
"WINDOWS_SKIP_ALL_MANUAL_PASSWORD": settings.WINDOWS_SKIP_ALL_MANUAL_PASSWORD, "WINDOWS_SKIP_ALL_MANUAL_PASSWORD": settings.WINDOWS_SKIP_ALL_MANUAL_PASSWORD,
"SECURITY_MAX_IDLE_TIME": settings.SECURITY_MAX_IDLE_TIME, "SECURITY_MAX_IDLE_TIME": settings.SECURITY_MAX_IDLE_TIME,
"XPACK_ENABLED": settings.XPACK_ENABLED,
"XPACK_LICENSE_IS_VALID": settings.XPACK_LICENSE_IS_VALID
} }
} }
return instance return instance

View File

@ -5,7 +5,7 @@ from django.utils.translation import ugettext_lazy as _
from rest_framework import serializers from rest_framework import serializers
from common.utils import validate_ssh_public_key from common.utils import validate_ssh_public_key
from common.mixins import CommonSerializerMixin from common.mixins import CommonBulkSerializerMixin
from common.serializers import AdaptedBulkListSerializer from common.serializers import AdaptedBulkListSerializer
from common.permissions import CanUpdateDeleteUser from common.permissions import CanUpdateDeleteUser
from ..models import User from ..models import User
@ -23,7 +23,7 @@ class UserOrgSerializer(serializers.Serializer):
name = serializers.CharField() name = serializers.CharField()
class UserSerializer(CommonSerializerMixin, serializers.ModelSerializer): class UserSerializer(CommonBulkSerializerMixin, serializers.ModelSerializer):
EMAIL_SET_PASSWORD = _('Reset link will be generated and sent to the user') EMAIL_SET_PASSWORD = _('Reset link will be generated and sent to the user')
CUSTOM_PASSWORD = _('Set password') CUSTOM_PASSWORD = _('Set password')
PASSWORD_STRATEGY_CHOICES = ( PASSWORD_STRATEGY_CHOICES = (
@ -108,6 +108,9 @@ class UserSerializer(CommonSerializerMixin, serializers.ModelSerializer):
return password return password
def validate_groups(self, groups): def validate_groups(self, groups):
"""
审计员不能加入到组中
"""
role = self.initial_data.get('role') role = self.initial_data.get('role')
if self.instance: if self.instance:
role = role or self.instance.role role = role or self.instance.role

View File

@ -132,7 +132,7 @@ function initTable() {
$(document).ready(function(){ $(document).ready(function(){
usersTable = initTable(); usersTable = initTable();
initCsvImportExport(usersTable, "{% trans 'User groups' %}") initCsvImportExport(usersTable, "{% trans 'User' %}")
}).on('click', '#btn_bulk_update', function(){ }).on('click', '#btn_bulk_update', function(){
var action = $('#slct_bulk_update').val(); var action = $('#slct_bulk_update').val();
var id_list = usersTable.selected; var id_list = usersTable.selected;