mirror of https://github.com/jumpserver/jumpserver
commit
b1132bfc37
|
@ -20,7 +20,7 @@ class AssetSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||||
model = Asset
|
model = Asset
|
||||||
list_serializer_class = BulkListSerializer
|
list_serializer_class = BulkListSerializer
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
# validators = [] # If not set to [], partial bulk update will be error
|
validators = []
|
||||||
|
|
||||||
def get_field_names(self, declared_fields, info):
|
def get_field_names(self, declared_fields, info):
|
||||||
fields = super().get_field_names(declared_fields, info)
|
fields = super().get_field_names(declared_fields, info)
|
||||||
|
|
|
@ -9,6 +9,7 @@ import chardet
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
|
from django.contrib import messages
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.views.generic import TemplateView, ListView, View
|
from django.views.generic import TemplateView, ListView, View
|
||||||
from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView
|
from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateView
|
||||||
|
@ -76,14 +77,6 @@ class AssetCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
|
||||||
template_name = 'assets/asset_create.html'
|
template_name = 'assets/asset_create.html'
|
||||||
success_url = reverse_lazy('assets:asset-list')
|
success_url = reverse_lazy('assets:asset-list')
|
||||||
|
|
||||||
# def form_valid(self, form):
|
|
||||||
# print("form valid")
|
|
||||||
# asset = form.save()
|
|
||||||
# asset.created_by = self.request.user.username or 'Admin'
|
|
||||||
# asset.date_created = timezone.now()
|
|
||||||
# asset.save()
|
|
||||||
# return super().form_valid(form)
|
|
||||||
|
|
||||||
def get_form(self, form_class=None):
|
def get_form(self, form_class=None):
|
||||||
form = super().get_form(form_class=form_class)
|
form = super().get_form(form_class=form_class)
|
||||||
node_id = self.request.GET.get("node_id")
|
node_id = self.request.GET.get("node_id")
|
||||||
|
@ -106,29 +99,12 @@ class AssetCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
|
||||||
return create_success_msg % ({"name": cleaned_data["hostname"]})
|
return create_success_msg % ({"name": cleaned_data["hostname"]})
|
||||||
|
|
||||||
|
|
||||||
# class AssetModalListView(AdminUserRequiredMixin, ListView):
|
|
||||||
# paginate_by = settings.DISPLAY_PER_PAGE
|
|
||||||
# model = Asset
|
|
||||||
# context_object_name = 'asset_modal_list'
|
|
||||||
# template_name = 'assets/_asset_list_modal.html'
|
|
||||||
#
|
|
||||||
# def get_context_data(self, **kwargs):
|
|
||||||
# assets = Asset.objects.all()
|
|
||||||
# assets_id = self.request.GET.get('assets_id', '')
|
|
||||||
# assets_id_list = [i for i in assets_id.split(',') if i.isdigit()]
|
|
||||||
# context = {
|
|
||||||
# 'all_assets': assets_id_list,
|
|
||||||
# 'assets': assets
|
|
||||||
# }
|
|
||||||
# kwargs.update(context)
|
|
||||||
# return super().get_context_data(**kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class AssetBulkUpdateView(AdminUserRequiredMixin, ListView):
|
class AssetBulkUpdateView(AdminUserRequiredMixin, ListView):
|
||||||
model = Asset
|
model = Asset
|
||||||
form_class = forms.AssetBulkUpdateForm
|
form_class = forms.AssetBulkUpdateForm
|
||||||
template_name = 'assets/asset_bulk_update.html'
|
template_name = 'assets/asset_bulk_update.html'
|
||||||
success_url = reverse_lazy('assets:asset-list')
|
success_url = reverse_lazy('assets:asset-list')
|
||||||
|
success_message = _("Bulk update asset success")
|
||||||
id_list = None
|
id_list = None
|
||||||
form = None
|
form = None
|
||||||
|
|
||||||
|
@ -150,6 +126,7 @@ class AssetBulkUpdateView(AdminUserRequiredMixin, ListView):
|
||||||
form = self.form_class(request.POST)
|
form = self.form_class(request.POST)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
form.save()
|
form.save()
|
||||||
|
messages.success(request, self.success_message)
|
||||||
return redirect(self.success_url)
|
return redirect(self.success_url)
|
||||||
else:
|
else:
|
||||||
return self.get(request, form=form, *args, **kwargs)
|
return self.get(request, form=form, *args, **kwargs)
|
||||||
|
|
Binary file not shown.
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Jumpserver 0.3.3\n"
|
"Project-Id-Version: Jumpserver 0.3.3\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2018-08-10 16:10+0800\n"
|
"POT-Creation-Date: 2018-08-13 15:01+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
"Last-Translator: ibuler <ibuler@qq.com>\n"
|
||||||
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
|
"Language-Team: Jumpserver team<ibuler@qq.com>\n"
|
||||||
|
@ -44,6 +44,7 @@ msgstr "节点管理"
|
||||||
#: assets/forms/asset.py:116 assets/models/asset.py:85
|
#: assets/forms/asset.py:116 assets/models/asset.py:85
|
||||||
#: assets/models/cluster.py:19 assets/models/user.py:73
|
#: assets/models/cluster.py:19 assets/models/user.py:73
|
||||||
#: assets/templates/assets/asset_detail.html:73 templates/_nav.html:25
|
#: assets/templates/assets/asset_detail.html:73 templates/_nav.html:25
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:18
|
||||||
msgid "Admin user"
|
msgid "Admin user"
|
||||||
msgstr "管理用户"
|
msgstr "管理用户"
|
||||||
|
|
||||||
|
@ -54,11 +55,13 @@ msgstr "管理用户"
|
||||||
#: assets/templates/assets/asset_update.html:41
|
#: assets/templates/assets/asset_update.html:41
|
||||||
#: assets/templates/assets/asset_update.html:43
|
#: assets/templates/assets/asset_update.html:43
|
||||||
#: assets/templates/assets/user_asset_list.html:34
|
#: assets/templates/assets/user_asset_list.html:34
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:20
|
||||||
msgid "Label"
|
msgid "Label"
|
||||||
msgstr "标签"
|
msgstr "标签"
|
||||||
|
|
||||||
#: assets/forms/asset.py:37 assets/forms/asset.py:76 assets/models/asset.py:76
|
#: assets/forms/asset.py:37 assets/forms/asset.py:76 assets/models/asset.py:76
|
||||||
#: assets/models/domain.py:47 assets/templates/assets/user_asset_list.html:168
|
#: assets/models/domain.py:47 assets/templates/assets/user_asset_list.html:168
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:17
|
||||||
msgid "Domain"
|
msgid "Domain"
|
||||||
msgstr "网域"
|
msgstr "网域"
|
||||||
|
|
||||||
|
@ -116,6 +119,7 @@ msgstr "端口"
|
||||||
#: terminal/templates/terminal/command_list.html:73
|
#: terminal/templates/terminal/command_list.html:73
|
||||||
#: terminal/templates/terminal/session_list.html:41
|
#: terminal/templates/terminal/session_list.html:41
|
||||||
#: terminal/templates/terminal/session_list.html:72
|
#: terminal/templates/terminal/session_list.html:72
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:16
|
||||||
msgid "Asset"
|
msgid "Asset"
|
||||||
msgstr "资产"
|
msgstr "资产"
|
||||||
|
|
||||||
|
@ -146,6 +150,9 @@ msgstr "资产"
|
||||||
#: users/templates/users/user_list.html:23
|
#: users/templates/users/user_list.html:23
|
||||||
#: users/templates/users/user_profile.html:51
|
#: users/templates/users/user_profile.html:51
|
||||||
#: users/templates/users/user_pubkey_update.html:53
|
#: users/templates/users/user_pubkey_update.html:53
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:52
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:12
|
||||||
|
#: xpack/templates/orgs/org_list.html:12
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名称"
|
msgstr "名称"
|
||||||
|
|
||||||
|
@ -353,6 +360,7 @@ msgstr "创建者"
|
||||||
#: perms/templates/perms/asset_permission_detail.html:94
|
#: perms/templates/perms/asset_permission_detail.html:94
|
||||||
#: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17
|
#: terminal/templates/terminal/terminal_detail.html:59 users/models/group.py:17
|
||||||
#: users/templates/users/user_group_detail.html:63
|
#: users/templates/users/user_group_detail.html:63
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:60
|
||||||
msgid "Date created"
|
msgid "Date created"
|
||||||
msgstr "创建日期"
|
msgstr "创建日期"
|
||||||
|
|
||||||
|
@ -376,6 +384,9 @@ msgstr "创建日期"
|
||||||
#: users/templates/users/user_group_detail.html:67
|
#: users/templates/users/user_group_detail.html:67
|
||||||
#: users/templates/users/user_group_list.html:14
|
#: users/templates/users/user_group_list.html:14
|
||||||
#: users/templates/users/user_profile.html:130
|
#: users/templates/users/user_profile.html:130
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:64
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:22
|
||||||
|
#: xpack/templates/orgs/org_list.html:14
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr "备注"
|
msgstr "备注"
|
||||||
|
|
||||||
|
@ -455,7 +466,11 @@ msgstr "默认资产组"
|
||||||
#: terminal/templates/terminal/session_list.html:71 users/forms.py:312
|
#: terminal/templates/terminal/session_list.html:71 users/forms.py:312
|
||||||
#: users/models/user.py:33 users/models/user.py:348
|
#: users/models/user.py:33 users/models/user.py:348
|
||||||
#: users/templates/users/user_group_detail.html:78
|
#: users/templates/users/user_group_detail.html:78
|
||||||
#: users/templates/users/user_group_list.html:13 users/views/user.py:379
|
#: users/templates/users/user_group_list.html:13 users/views/user.py:378
|
||||||
|
#: xpack/plugins/orgs/forms.py:26
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:113
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:14
|
||||||
|
#: xpack/templates/orgs/org_list.html:13
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "用户"
|
msgstr "用户"
|
||||||
|
|
||||||
|
@ -485,9 +500,9 @@ msgstr "手动登录"
|
||||||
#: assets/templates/assets/system_user_asset.html:21
|
#: assets/templates/assets/system_user_asset.html:21
|
||||||
#: assets/views/admin_user.py:29 assets/views/admin_user.py:47
|
#: assets/views/admin_user.py:29 assets/views/admin_user.py:47
|
||||||
#: assets/views/admin_user.py:63 assets/views/admin_user.py:78
|
#: assets/views/admin_user.py:63 assets/views/admin_user.py:78
|
||||||
#: assets/views/admin_user.py:102 assets/views/asset.py:52
|
#: assets/views/admin_user.py:102 assets/views/asset.py:53
|
||||||
#: assets/views/asset.py:99 assets/views/asset.py:159 assets/views/asset.py:176
|
#: assets/views/asset.py:92 assets/views/asset.py:136 assets/views/asset.py:153
|
||||||
#: assets/views/asset.py:200 assets/views/domain.py:29
|
#: assets/views/asset.py:177 assets/views/domain.py:29
|
||||||
#: assets/views/domain.py:45 assets/views/domain.py:61
|
#: assets/views/domain.py:45 assets/views/domain.py:61
|
||||||
#: assets/views/domain.py:74 assets/views/domain.py:98
|
#: assets/views/domain.py:74 assets/views/domain.py:98
|
||||||
#: assets/views/domain.py:126 assets/views/domain.py:145
|
#: assets/views/domain.py:126 assets/views/domain.py:145
|
||||||
|
@ -533,6 +548,7 @@ msgstr "登录模式"
|
||||||
#: terminal/templates/terminal/command_list.html:74
|
#: terminal/templates/terminal/command_list.html:74
|
||||||
#: terminal/templates/terminal/session_list.html:49
|
#: terminal/templates/terminal/session_list.html:49
|
||||||
#: terminal/templates/terminal/session_list.html:73
|
#: terminal/templates/terminal/session_list.html:73
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:19
|
||||||
msgid "System user"
|
msgid "System user"
|
||||||
msgstr "系统用户"
|
msgstr "系统用户"
|
||||||
|
|
||||||
|
@ -621,7 +637,7 @@ msgstr "资产csv文件"
|
||||||
msgid "If set id, will use this id update asset existed"
|
msgid "If set id, will use this id update asset existed"
|
||||||
msgstr "如果设置了id,则会使用该行信息更新该id的资产"
|
msgstr "如果设置了id,则会使用该行信息更新该id的资产"
|
||||||
|
|
||||||
#: assets/templates/assets/_asset_list_modal.html:7 assets/views/asset.py:53
|
#: assets/templates/assets/_asset_list_modal.html:7 assets/views/asset.py:54
|
||||||
#: templates/_nav.html:23
|
#: templates/_nav.html:23
|
||||||
msgid "Asset list"
|
msgid "Asset list"
|
||||||
msgstr "资产列表"
|
msgstr "资产列表"
|
||||||
|
@ -709,7 +725,7 @@ msgid "Submit"
|
||||||
msgstr "提交"
|
msgstr "提交"
|
||||||
|
|
||||||
#: assets/templates/assets/_user_asset_detail_modal.html:11
|
#: assets/templates/assets/_user_asset_detail_modal.html:11
|
||||||
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:201
|
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:178
|
||||||
msgid "Asset detail"
|
msgid "Asset detail"
|
||||||
msgstr "资产详情"
|
msgstr "资产详情"
|
||||||
|
|
||||||
|
@ -791,6 +807,9 @@ msgstr "测试"
|
||||||
#: users/templates/users/user_list.html:77
|
#: users/templates/users/user_list.html:77
|
||||||
#: users/templates/users/user_profile.html:151
|
#: users/templates/users/user_profile.html:151
|
||||||
#: users/templates/users/user_profile.html:180
|
#: users/templates/users/user_profile.html:180
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:25
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:85
|
||||||
|
#: xpack/templates/orgs/org_list.html:43
|
||||||
msgid "Update"
|
msgid "Update"
|
||||||
msgstr "更新"
|
msgstr "更新"
|
||||||
|
|
||||||
|
@ -814,6 +833,9 @@ msgstr "更新"
|
||||||
#: users/templates/users/user_group_list.html:45
|
#: users/templates/users/user_group_list.html:45
|
||||||
#: users/templates/users/user_list.html:81
|
#: users/templates/users/user_list.html:81
|
||||||
#: users/templates/users/user_list.html:85
|
#: users/templates/users/user_list.html:85
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:29
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:87
|
||||||
|
#: xpack/templates/orgs/org_list.html:45
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "删除"
|
msgstr "删除"
|
||||||
|
|
||||||
|
@ -840,6 +862,8 @@ msgstr "选择节点"
|
||||||
#: users/templates/users/user_group_list.html:86
|
#: users/templates/users/user_group_list.html:86
|
||||||
#: users/templates/users/user_list.html:200
|
#: users/templates/users/user_list.html:200
|
||||||
#: users/templates/users/user_profile.html:222
|
#: users/templates/users/user_profile.html:222
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_create_update.html:33
|
||||||
|
#: xpack/templates/orgs/org_list.html:86
|
||||||
msgid "Confirm"
|
msgid "Confirm"
|
||||||
msgstr "确认"
|
msgstr "确认"
|
||||||
|
|
||||||
|
@ -873,6 +897,8 @@ msgstr "比例"
|
||||||
#: terminal/templates/terminal/terminal_list.html:36
|
#: terminal/templates/terminal/terminal_list.html:36
|
||||||
#: users/templates/users/user_group_list.html:15
|
#: users/templates/users/user_group_list.html:15
|
||||||
#: users/templates/users/user_list.html:29
|
#: users/templates/users/user_list.html:29
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:23
|
||||||
|
#: xpack/templates/orgs/org_list.html:15
|
||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr "动作"
|
msgstr "动作"
|
||||||
|
|
||||||
|
@ -928,7 +954,7 @@ msgstr "刷新"
|
||||||
msgid "Update successfully!"
|
msgid "Update successfully!"
|
||||||
msgstr "更新成功"
|
msgstr "更新成功"
|
||||||
|
|
||||||
#: assets/templates/assets/asset_list.html:68 assets/views/asset.py:100
|
#: assets/templates/assets/asset_list.html:68 assets/views/asset.py:93
|
||||||
msgid "Create asset"
|
msgid "Create asset"
|
||||||
msgstr "创建资产"
|
msgstr "创建资产"
|
||||||
|
|
||||||
|
@ -1033,6 +1059,7 @@ msgstr "重命名失败,不可以更改根节点名称"
|
||||||
#: users/templates/users/user_detail.html:461
|
#: users/templates/users/user_detail.html:461
|
||||||
#: users/templates/users/user_group_list.html:81
|
#: users/templates/users/user_group_list.html:81
|
||||||
#: users/templates/users/user_list.html:195
|
#: users/templates/users/user_list.html:195
|
||||||
|
#: xpack/templates/orgs/org_list.html:81
|
||||||
msgid "Are you sure?"
|
msgid "Are you sure?"
|
||||||
msgstr "你确认吗?"
|
msgstr "你确认吗?"
|
||||||
|
|
||||||
|
@ -1179,19 +1206,23 @@ msgstr "更新管理用户"
|
||||||
msgid "Admin user detail"
|
msgid "Admin user detail"
|
||||||
msgstr "管理用户详情"
|
msgstr "管理用户详情"
|
||||||
|
|
||||||
#: assets/views/asset.py:66 templates/_nav_user.html:4
|
#: assets/views/asset.py:67 templates/_nav_user.html:4
|
||||||
msgid "My assets"
|
msgid "My assets"
|
||||||
msgstr "我的资产"
|
msgstr "我的资产"
|
||||||
|
|
||||||
#: assets/views/asset.py:160
|
#: assets/views/asset.py:107
|
||||||
|
msgid "Bulk update asset success"
|
||||||
|
msgstr "批量更新资产成功"
|
||||||
|
|
||||||
|
#: assets/views/asset.py:137
|
||||||
msgid "Bulk update asset"
|
msgid "Bulk update asset"
|
||||||
msgstr "批量更新资产"
|
msgstr "批量更新资产"
|
||||||
|
|
||||||
#: assets/views/asset.py:177
|
#: assets/views/asset.py:154
|
||||||
msgid "Update asset"
|
msgid "Update asset"
|
||||||
msgstr "更新资产"
|
msgstr "更新资产"
|
||||||
|
|
||||||
#: assets/views/asset.py:317
|
#: assets/views/asset.py:294
|
||||||
msgid "already exists"
|
msgid "already exists"
|
||||||
msgstr "已经存在"
|
msgstr "已经存在"
|
||||||
|
|
||||||
|
@ -1658,6 +1689,7 @@ msgid "Become"
|
||||||
msgstr "Become"
|
msgstr "Become"
|
||||||
|
|
||||||
#: ops/models/adhoc.py:161 users/templates/users/user_group_detail.html:59
|
#: ops/models/adhoc.py:161 users/templates/users/user_group_detail.html:59
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:56
|
||||||
msgid "Create by"
|
msgid "Create by"
|
||||||
msgstr "创建者"
|
msgstr "创建者"
|
||||||
|
|
||||||
|
@ -1876,18 +1908,19 @@ msgstr "任务列表"
|
||||||
msgid "Task run history"
|
msgid "Task run history"
|
||||||
msgstr "执行历史"
|
msgstr "执行历史"
|
||||||
|
|
||||||
#: perms/forms.py:20 users/forms.py:265 users/forms.py:270 users/forms.py:282
|
#: perms/forms.py:20 users/forms.py:265 users/forms.py:270 users/forms.py:316
|
||||||
#: users/forms.py:316
|
#: xpack/plugins/orgs/forms.py:30
|
||||||
msgid "Select users"
|
msgid "Select users"
|
||||||
msgstr "选择用户"
|
msgstr "选择用户"
|
||||||
|
|
||||||
#: perms/forms.py:44 perms/models.py:30 perms/models.py:79
|
#: perms/forms.py:44 perms/models.py:30 perms/models.py:79
|
||||||
#: perms/templates/perms/asset_permission_list.html:55
|
#: perms/templates/perms/asset_permission_list.html:55
|
||||||
#: perms/templates/perms/asset_permission_list.html:145 templates/_nav.html:14
|
#: perms/templates/perms/asset_permission_list.html:145 templates/_nav.html:14
|
||||||
#: users/models/group.py:26 users/models/user.py:57
|
#: users/forms.py:282 users/models/group.py:26 users/models/user.py:57
|
||||||
#: users/templates/users/_select_user_modal.html:16
|
#: users/templates/users/_select_user_modal.html:16
|
||||||
#: users/templates/users/user_detail.html:200
|
#: users/templates/users/user_detail.html:200
|
||||||
#: users/templates/users/user_list.html:26
|
#: users/templates/users/user_list.html:26
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:15
|
||||||
msgid "User group"
|
msgid "User group"
|
||||||
msgstr "用户组"
|
msgstr "用户组"
|
||||||
|
|
||||||
|
@ -1906,7 +1939,7 @@ msgstr ""
|
||||||
msgid "Date expired"
|
msgid "Date expired"
|
||||||
msgstr "失效日期"
|
msgstr "失效日期"
|
||||||
|
|
||||||
#: perms/models.py:92 templates/_nav.html:34
|
#: perms/models.py:91 templates/_nav.html:34
|
||||||
msgid "Asset permission"
|
msgid "Asset permission"
|
||||||
msgstr "资产授权"
|
msgstr "资产授权"
|
||||||
|
|
||||||
|
@ -1931,6 +1964,8 @@ msgstr "添加资产"
|
||||||
#: perms/templates/perms/asset_permission_user.html:97
|
#: perms/templates/perms/asset_permission_user.html:97
|
||||||
#: perms/templates/perms/asset_permission_user.html:125
|
#: perms/templates/perms/asset_permission_user.html:125
|
||||||
#: users/templates/users/user_group_detail.html:95
|
#: users/templates/users/user_group_detail.html:95
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:93
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:130
|
||||||
msgid "Add"
|
msgid "Add"
|
||||||
msgstr "添加"
|
msgstr "添加"
|
||||||
|
|
||||||
|
@ -1998,6 +2033,7 @@ msgstr "选择用户组"
|
||||||
|
|
||||||
#: perms/views.py:23 perms/views.py:53 perms/views.py:68 perms/views.py:83
|
#: perms/views.py:23 perms/views.py:53 perms/views.py:68 perms/views.py:83
|
||||||
#: perms/views.py:118 perms/views.py:150 templates/_nav.html:31
|
#: perms/views.py:118 perms/views.py:150 templates/_nav.html:31
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:21
|
||||||
msgid "Perms"
|
msgid "Perms"
|
||||||
msgstr "权限管理"
|
msgstr "权限管理"
|
||||||
|
|
||||||
|
@ -2036,7 +2072,7 @@ msgstr "文档"
|
||||||
#: users/templates/users/user_profile.html:17
|
#: users/templates/users/user_profile.html:17
|
||||||
#: users/templates/users/user_profile_update.html:37
|
#: users/templates/users/user_profile_update.html:37
|
||||||
#: users/templates/users/user_profile_update.html:57
|
#: users/templates/users/user_profile_update.html:57
|
||||||
#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:361
|
#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:360
|
||||||
msgid "Profile"
|
msgid "Profile"
|
||||||
msgstr "个人信息"
|
msgstr "个人信息"
|
||||||
|
|
||||||
|
@ -2089,13 +2125,13 @@ msgstr ""
|
||||||
|
|
||||||
#: templates/_nav.html:10 users/views/group.py:27 users/views/group.py:43
|
#: templates/_nav.html:10 users/views/group.py:27 users/views/group.py:43
|
||||||
#: users/views/group.py:61 users/views/group.py:78 users/views/group.py:94
|
#: users/views/group.py:61 users/views/group.py:78 users/views/group.py:94
|
||||||
#: users/views/login.py:333 users/views/login.py:397 users/views/user.py:68
|
#: users/views/login.py:333 users/views/login.py:397 users/views/user.py:67
|
||||||
#: users/views/user.py:83 users/views/user.py:111 users/views/user.py:193
|
#: users/views/user.py:82 users/views/user.py:110 users/views/user.py:192
|
||||||
#: users/views/user.py:348 users/views/user.py:398 users/views/user.py:433
|
#: users/views/user.py:347 users/views/user.py:397 users/views/user.py:432
|
||||||
msgid "Users"
|
msgid "Users"
|
||||||
msgstr "用户管理"
|
msgstr "用户管理"
|
||||||
|
|
||||||
#: templates/_nav.html:13 users/views/user.py:69
|
#: templates/_nav.html:13 users/views/user.py:68
|
||||||
msgid "User list"
|
msgid "User list"
|
||||||
msgstr "用户列表"
|
msgstr "用户列表"
|
||||||
|
|
||||||
|
@ -2449,7 +2485,7 @@ msgstr "添加到用户组"
|
||||||
msgid "Public key should not be the same as your old one."
|
msgid "Public key should not be the same as your old one."
|
||||||
msgstr "不能和原来的密钥相同"
|
msgstr "不能和原来的密钥相同"
|
||||||
|
|
||||||
#: users/forms.py:114 users/forms.py:247 users/serializers.py:48
|
#: users/forms.py:114 users/forms.py:247 users/serializers.py:49
|
||||||
msgid "Not a valid ssh public key"
|
msgid "Not a valid ssh public key"
|
||||||
msgstr "ssh密钥不合法"
|
msgstr "ssh密钥不合法"
|
||||||
|
|
||||||
|
@ -2799,7 +2835,7 @@ msgid "Very strong"
|
||||||
msgstr "很强"
|
msgstr "很强"
|
||||||
|
|
||||||
#: users/templates/users/user_create.html:4
|
#: users/templates/users/user_create.html:4
|
||||||
#: users/templates/users/user_list.html:16 users/views/user.py:83
|
#: users/templates/users/user_list.html:16 users/views/user.py:82
|
||||||
msgid "Create user"
|
msgid "Create user"
|
||||||
msgstr "创建用户"
|
msgstr "创建用户"
|
||||||
|
|
||||||
|
@ -2808,7 +2844,7 @@ msgid "Reset link will be generated and sent to the user. "
|
||||||
msgstr "生成重置密码连接,通过邮件发送给用户"
|
msgstr "生成重置密码连接,通过邮件发送给用户"
|
||||||
|
|
||||||
#: users/templates/users/user_detail.html:19
|
#: users/templates/users/user_detail.html:19
|
||||||
#: users/templates/users/user_granted_asset.html:18 users/views/user.py:194
|
#: users/templates/users/user_granted_asset.html:18 users/views/user.py:193
|
||||||
msgid "User detail"
|
msgid "User detail"
|
||||||
msgstr "用户详情"
|
msgstr "用户详情"
|
||||||
|
|
||||||
|
@ -2897,6 +2933,7 @@ msgid "After unlocking the user, the user can log in normally."
|
||||||
msgstr "解除用户登录限制后,此用户即可正常登录"
|
msgstr "解除用户登录限制后,此用户即可正常登录"
|
||||||
|
|
||||||
#: users/templates/users/user_group_create_update.html:31
|
#: users/templates/users/user_group_create_update.html:31
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_create_update.html:32
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "取消"
|
msgstr "取消"
|
||||||
|
|
||||||
|
@ -2907,27 +2944,33 @@ msgid "User group detail"
|
||||||
msgstr "用户组详情"
|
msgstr "用户组详情"
|
||||||
|
|
||||||
#: users/templates/users/user_group_detail.html:86
|
#: users/templates/users/user_group_detail.html:86
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:121
|
||||||
msgid "Add user"
|
msgid "Add user"
|
||||||
msgstr "添加用户"
|
msgstr "添加用户"
|
||||||
|
|
||||||
#: users/templates/users/user_group_list.html:5 users/views/group.py:44
|
#: users/templates/users/user_group_list.html:5 users/views/group.py:44
|
||||||
|
#: xpack/templates/orgs/org_list.html:5
|
||||||
msgid "Create user group"
|
msgid "Create user group"
|
||||||
msgstr "创建用户组"
|
msgstr "创建用户组"
|
||||||
|
|
||||||
#: users/templates/users/user_group_list.html:82
|
#: users/templates/users/user_group_list.html:82
|
||||||
|
#: xpack/templates/orgs/org_list.html:82
|
||||||
msgid "This will delete the selected groups !!!"
|
msgid "This will delete the selected groups !!!"
|
||||||
msgstr "删除选择组"
|
msgstr "删除选择组"
|
||||||
|
|
||||||
#: users/templates/users/user_group_list.html:90
|
#: users/templates/users/user_group_list.html:90
|
||||||
|
#: xpack/templates/orgs/org_list.html:90
|
||||||
msgid "UserGroups Deleted."
|
msgid "UserGroups Deleted."
|
||||||
msgstr "用户组删除"
|
msgstr "用户组删除"
|
||||||
|
|
||||||
#: users/templates/users/user_group_list.html:91
|
#: users/templates/users/user_group_list.html:91
|
||||||
#: users/templates/users/user_group_list.html:96
|
#: users/templates/users/user_group_list.html:96
|
||||||
|
#: xpack/templates/orgs/org_list.html:91 xpack/templates/orgs/org_list.html:96
|
||||||
msgid "UserGroups Delete"
|
msgid "UserGroups Delete"
|
||||||
msgstr "用户组删除"
|
msgstr "用户组删除"
|
||||||
|
|
||||||
#: users/templates/users/user_group_list.html:95
|
#: users/templates/users/user_group_list.html:95
|
||||||
|
#: xpack/templates/orgs/org_list.html:95
|
||||||
msgid "UserGroup Deleting failed."
|
msgid "UserGroup Deleting failed."
|
||||||
msgstr "用户组删除失败"
|
msgstr "用户组删除失败"
|
||||||
|
|
||||||
|
@ -2952,8 +2995,8 @@ msgstr "用户删除失败"
|
||||||
msgid "Administrator Settings force MFA login"
|
msgid "Administrator Settings force MFA login"
|
||||||
msgstr "管理员设置强制使用MFA登录"
|
msgstr "管理员设置强制使用MFA登录"
|
||||||
|
|
||||||
#: users/templates/users/user_profile.html:116 users/views/user.py:224
|
#: users/templates/users/user_profile.html:116 users/views/user.py:223
|
||||||
#: users/views/user.py:278
|
#: users/views/user.py:277
|
||||||
msgid "User groups"
|
msgid "User groups"
|
||||||
msgstr "用户组"
|
msgstr "用户组"
|
||||||
|
|
||||||
|
@ -2999,7 +3042,7 @@ msgid ""
|
||||||
"corresponding private key."
|
"corresponding private key."
|
||||||
msgstr "新的公钥已设置成功,请下载对应的私钥"
|
msgstr "新的公钥已设置成功,请下载对应的私钥"
|
||||||
|
|
||||||
#: users/templates/users/user_update.html:4 users/views/user.py:112
|
#: users/templates/users/user_update.html:4 users/views/user.py:111
|
||||||
msgid "Update user"
|
msgid "Update user"
|
||||||
msgstr "更新用户"
|
msgstr "更新用户"
|
||||||
|
|
||||||
|
@ -3157,7 +3200,7 @@ msgstr "用户组授权资产"
|
||||||
msgid "Please enable cookies and try again."
|
msgid "Please enable cookies and try again."
|
||||||
msgstr "设置你的浏览器支持cookie"
|
msgstr "设置你的浏览器支持cookie"
|
||||||
|
|
||||||
#: users/views/login.py:181 users/views/user.py:518 users/views/user.py:543
|
#: users/views/login.py:181 users/views/user.py:517 users/views/user.py:542
|
||||||
msgid "MFA code invalid"
|
msgid "MFA code invalid"
|
||||||
msgstr "MFA码认证失败"
|
msgstr "MFA码认证失败"
|
||||||
|
|
||||||
|
@ -3198,7 +3241,7 @@ msgstr "Token错误或失效"
|
||||||
msgid "Password not same"
|
msgid "Password not same"
|
||||||
msgstr "密码不一致"
|
msgstr "密码不一致"
|
||||||
|
|
||||||
#: users/views/login.py:295 users/views/user.py:127 users/views/user.py:416
|
#: users/views/login.py:295 users/views/user.py:126 users/views/user.py:415
|
||||||
msgid "* Your password does not meet the requirements"
|
msgid "* Your password does not meet the requirements"
|
||||||
msgstr "* 您的密码不符合要求"
|
msgstr "* 您的密码不符合要求"
|
||||||
|
|
||||||
|
@ -3210,82 +3253,101 @@ msgstr "首次登陆"
|
||||||
msgid "Login log list"
|
msgid "Login log list"
|
||||||
msgstr "登录日志"
|
msgstr "登录日志"
|
||||||
|
|
||||||
#: users/views/user.py:144
|
#: users/views/user.py:143
|
||||||
msgid "Bulk update user success"
|
msgid "Bulk update user success"
|
||||||
msgstr "批量更新用户成功"
|
msgstr "批量更新用户成功"
|
||||||
|
|
||||||
#: users/views/user.py:253
|
#: users/views/user.py:173
|
||||||
|
msgid "Bulk update user"
|
||||||
|
msgstr "批量更新用户"
|
||||||
|
|
||||||
|
#: users/views/user.py:252
|
||||||
msgid "Invalid file."
|
msgid "Invalid file."
|
||||||
msgstr "文件不合法"
|
msgstr "文件不合法"
|
||||||
|
|
||||||
#: users/views/user.py:349
|
#: users/views/user.py:348
|
||||||
msgid "User granted assets"
|
msgid "User granted assets"
|
||||||
msgstr "用户授权资产"
|
msgstr "用户授权资产"
|
||||||
|
|
||||||
#: users/views/user.py:380
|
#: users/views/user.py:379
|
||||||
msgid "Profile setting"
|
msgid "Profile setting"
|
||||||
msgstr "个人信息设置"
|
msgstr "个人信息设置"
|
||||||
|
|
||||||
#: users/views/user.py:399
|
#: users/views/user.py:398
|
||||||
msgid "Password update"
|
msgid "Password update"
|
||||||
msgstr "密码更新"
|
msgstr "密码更新"
|
||||||
|
|
||||||
#: users/views/user.py:434
|
#: users/views/user.py:433
|
||||||
msgid "Public key update"
|
msgid "Public key update"
|
||||||
msgstr "密钥更新"
|
msgstr "密钥更新"
|
||||||
|
|
||||||
#: users/views/user.py:475
|
#: users/views/user.py:474
|
||||||
msgid "Password invalid"
|
msgid "Password invalid"
|
||||||
msgstr "用户名或密码无效"
|
msgstr "用户名或密码无效"
|
||||||
|
|
||||||
#: users/views/user.py:569
|
#: users/views/user.py:568
|
||||||
msgid "MFA enable success"
|
msgid "MFA enable success"
|
||||||
msgstr "MFA 绑定成功"
|
msgstr "MFA 绑定成功"
|
||||||
|
|
||||||
#: users/views/user.py:570
|
#: users/views/user.py:569
|
||||||
msgid "MFA enable success, return login page"
|
msgid "MFA enable success, return login page"
|
||||||
msgstr "MFA 绑定成功,返回到登录页面"
|
msgstr "MFA 绑定成功,返回到登录页面"
|
||||||
|
|
||||||
#: users/views/user.py:572
|
#: users/views/user.py:571
|
||||||
msgid "MFA disable success"
|
msgid "MFA disable success"
|
||||||
msgstr "MFA 解绑成功"
|
msgstr "MFA 解绑成功"
|
||||||
|
|
||||||
#: users/views/user.py:573
|
#: users/views/user.py:572
|
||||||
msgid "MFA disable success, return login page"
|
msgid "MFA disable success, return login page"
|
||||||
msgstr "MFA 解绑成功,返回登录页面"
|
msgstr "MFA 解绑成功,返回登录页面"
|
||||||
|
|
||||||
#~ msgid "Admin"
|
#: xpack/plugins/orgs/forms.py:14
|
||||||
#~ msgstr "管理员"
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:76
|
||||||
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:13
|
||||||
|
msgid "Admin"
|
||||||
|
msgstr "管理员"
|
||||||
|
|
||||||
#~ msgid "Select admins"
|
#: xpack/plugins/orgs/forms.py:18
|
||||||
#~ msgstr "选择管理员"
|
msgid "Select admins"
|
||||||
|
msgstr "选择管理员"
|
||||||
|
|
||||||
#~ msgid "Organization"
|
#: xpack/plugins/orgs/meta.py:8
|
||||||
#~ msgstr "组织管理"
|
msgid "Organization"
|
||||||
|
msgstr "组织管理"
|
||||||
|
|
||||||
#~ msgid "Org detail"
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:22
|
||||||
#~ msgstr "组织详情"
|
#: xpack/plugins/orgs/views.py:73
|
||||||
|
msgid "Org detail"
|
||||||
|
msgstr "组织详情"
|
||||||
|
|
||||||
#~ msgid "Add admin"
|
#: xpack/plugins/orgs/templates/orgs/org_detail.html:84
|
||||||
#~ msgstr "添加管理员"
|
msgid "Add admin"
|
||||||
|
msgstr "添加管理员"
|
||||||
|
|
||||||
#~ msgid "Create organization "
|
#: xpack/plugins/orgs/templates/orgs/org_list.html:5
|
||||||
#~ msgstr "创建组织"
|
msgid "Create organization "
|
||||||
|
msgstr "创建组织"
|
||||||
|
|
||||||
#~ msgid "Org"
|
#: xpack/plugins/orgs/views.py:24
|
||||||
#~ msgstr "组织"
|
msgid "Org"
|
||||||
|
msgstr "组织"
|
||||||
|
|
||||||
#~ msgid "Org list"
|
#: xpack/plugins/orgs/views.py:25
|
||||||
#~ msgstr "组织列表"
|
msgid "Org list"
|
||||||
|
msgstr "组织列表"
|
||||||
|
|
||||||
#~ msgid "Orgs"
|
#: xpack/plugins/orgs/views.py:40 xpack/plugins/orgs/views.py:56
|
||||||
#~ msgstr "组织"
|
#: xpack/plugins/orgs/views.py:72
|
||||||
|
msgid "Orgs"
|
||||||
|
msgstr "组织"
|
||||||
|
|
||||||
#~ msgid "Create org"
|
#: xpack/plugins/orgs/views.py:41
|
||||||
#~ msgstr "创建组织"
|
msgid "Create org"
|
||||||
|
msgstr "创建组织"
|
||||||
|
|
||||||
#~ msgid "Update org"
|
#: xpack/plugins/orgs/views.py:57
|
||||||
#~ msgstr "更新组织"
|
msgid "Update org"
|
||||||
|
msgstr "更新组织"
|
||||||
|
|
||||||
#~ msgid "* required Must set exact system platform, Windows, Linux ..."
|
#~ msgid "* required Must set exact system platform, Windows, Linux ..."
|
||||||
#~ msgstr "* required 必须准确设置操作系统平台,如Windows, Linux ..."
|
#~ msgstr "* required 必须准确设置操作系统平台,如Windows, Linux ..."
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
from threading import local
|
|
||||||
|
|
||||||
|
from werkzeug.local import Local
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
import warnings
|
|
||||||
from django.forms import ModelForm
|
from django.forms import ModelForm
|
||||||
from django.http.response import HttpResponseForbidden
|
from django.http.response import HttpResponseForbidden
|
||||||
|
|
||||||
|
@ -14,7 +13,7 @@ from .utils import current_org, set_current_org, set_to_root_org
|
||||||
from .models import Organization
|
from .models import Organization
|
||||||
|
|
||||||
logger = get_logger(__file__)
|
logger = get_logger(__file__)
|
||||||
tl = local()
|
tl = Local()
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin', 'OrgModelForm',
|
'OrgManager', 'OrgViewGenericMixin', 'OrgModelMixin', 'OrgModelForm',
|
||||||
|
@ -55,7 +54,7 @@ class OrgManager(models.Manager):
|
||||||
|
|
||||||
|
|
||||||
class OrgModelMixin(models.Model):
|
class OrgModelMixin(models.Model):
|
||||||
org_id = models.CharField(max_length=36, null=True, blank=True)
|
org_id = models.CharField(max_length=36, null=True, blank=True, default=None)
|
||||||
objects = OrgManager()
|
objects = OrgManager()
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
@ -93,8 +92,8 @@ class RootOrgViewMixin:
|
||||||
class OrgModelForm(ModelForm):
|
class OrgModelForm(ModelForm):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
if 'initial' not in kwargs:
|
# if 'initial' not in kwargs:
|
||||||
return
|
# return
|
||||||
for name, field in self.fields.items():
|
for name, field in self.fields.items():
|
||||||
if not hasattr(field, 'queryset'):
|
if not hasattr(field, 'queryset'):
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -2,16 +2,13 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
from werkzeug.local import Local
|
||||||
|
|
||||||
from common.utils import LocalProxy
|
from common.utils import LocalProxy
|
||||||
from .models import Organization
|
from .models import Organization
|
||||||
|
|
||||||
try:
|
|
||||||
from threading import local
|
|
||||||
except ImportError:
|
|
||||||
from django.utils._threading_local import local
|
|
||||||
|
|
||||||
_thread_locals = local()
|
_thread_locals = Local()
|
||||||
|
|
||||||
|
|
||||||
def get_org_from_request(request):
|
def get_org_from_request(request):
|
||||||
|
|
|
@ -88,5 +88,4 @@ class NodePermission(OrgModelMixin):
|
||||||
return "{}:{}:{}".format(self.node.value, self.user_group.name, self.system_user.name)
|
return "{}:{}:{}".format(self.node.value, self.user_group.name, self.system_user.name)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
unique_together = ('node', 'user_group', 'system_user')
|
|
||||||
verbose_name = _("Asset permission")
|
verbose_name = _("Asset permission")
|
||||||
|
|
|
@ -258,12 +258,12 @@ class UserPublicKeyForm(forms.Form):
|
||||||
UserPublicKeyForm.verbose_name = _("Public key")
|
UserPublicKeyForm.verbose_name = _("Public key")
|
||||||
|
|
||||||
|
|
||||||
class UserBulkUpdateForm(forms.ModelForm):
|
class UserBulkUpdateForm(OrgModelForm):
|
||||||
users = forms.ModelMultipleChoiceField(
|
users = forms.ModelMultipleChoiceField(
|
||||||
required=True,
|
required=True,
|
||||||
help_text='* required',
|
help_text='* required',
|
||||||
label=_('Select users'),
|
label=_('Select users'),
|
||||||
queryset = User.objects.all(),
|
queryset=User.objects.all(),
|
||||||
widget=forms.SelectMultiple(
|
widget=forms.SelectMultiple(
|
||||||
attrs={
|
attrs={
|
||||||
'class': 'select2',
|
'class': 'select2',
|
||||||
|
@ -274,12 +274,12 @@ class UserBulkUpdateForm(forms.ModelForm):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ['users', 'role', 'groups', 'date_expired']
|
fields = ['users', 'groups', 'date_expired']
|
||||||
widgets = {
|
widgets = {
|
||||||
"groups": forms.SelectMultiple(
|
"groups": forms.SelectMultiple(
|
||||||
attrs={
|
attrs={
|
||||||
'class': 'select2',
|
'class': 'select2',
|
||||||
'data-placeholder': _('Select users')
|
'data-placeholder': _('User group')
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ class UserSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||||
'first_name', 'last_name', 'password', '_private_key',
|
'first_name', 'last_name', 'password', '_private_key',
|
||||||
'_public_key', '_otp_secret_key', 'user_permissions'
|
'_public_key', '_otp_secret_key', 'user_permissions'
|
||||||
]
|
]
|
||||||
|
# validators = []
|
||||||
|
|
||||||
def get_field_names(self, declared_fields, info):
|
def get_field_names(self, declared_fields, info):
|
||||||
fields = super(UserSerializer, self).get_field_names(declared_fields, info)
|
fields = super(UserSerializer, self).get_field_names(declared_fields, info)
|
||||||
|
@ -64,6 +65,7 @@ class UserGroupSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||||
model = UserGroup
|
model = UserGroup
|
||||||
list_serializer_class = BulkListSerializer
|
list_serializer_class = BulkListSerializer
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
read_only_fields = ['id', 'created_by']
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_users(obj):
|
def get_users(obj):
|
||||||
|
@ -71,7 +73,7 @@ class UserGroupSerializer(BulkSerializerMixin, serializers.ModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class UserGroupUpdateMemeberSerializer(serializers.ModelSerializer):
|
class UserGroupUpdateMemeberSerializer(serializers.ModelSerializer):
|
||||||
users = serializers.PrimaryKeyRelatedField(many=True, queryset = User.objects.all())
|
users = serializers.PrimaryKeyRelatedField(many=True, queryset=User.objects.all())
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = UserGroup
|
model = UserGroup
|
||||||
|
|
|
@ -24,9 +24,9 @@ from django.views import View
|
||||||
from django.views.generic.base import TemplateView
|
from django.views.generic.base import TemplateView
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.views.generic.edit import (
|
from django.views.generic.edit import (
|
||||||
CreateView, UpdateView, FormMixin, FormView
|
CreateView, UpdateView, FormView
|
||||||
)
|
)
|
||||||
from django.views.generic.detail import DetailView, SingleObjectMixin
|
from django.views.generic.detail import DetailView
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django.contrib.auth import logout as auth_logout
|
from django.contrib.auth import logout as auth_logout
|
||||||
|
|
||||||
|
@ -41,7 +41,6 @@ from ..utils import generate_otp_uri, check_otp_code, \
|
||||||
get_user_or_tmp_user, get_password_check_rules, check_password_rules, \
|
get_user_or_tmp_user, get_password_check_rules, check_password_rules, \
|
||||||
is_need_unblock
|
is_need_unblock
|
||||||
from ..signals import post_user_create
|
from ..signals import post_user_create
|
||||||
from ..tasks import write_login_log_async
|
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
'UserListView', 'UserCreateView', 'UserDetailView',
|
'UserListView', 'UserCreateView', 'UserDetailView',
|
||||||
|
@ -171,7 +170,7 @@ class UserBulkUpdateView(AdminUserRequiredMixin, TemplateView):
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = {
|
context = {
|
||||||
'app': 'Assets',
|
'app': 'Assets',
|
||||||
'action': 'Bulk update asset',
|
'action': _('Bulk update user'),
|
||||||
'form': self.form,
|
'form': self.form,
|
||||||
'users_selected': self.id_list,
|
'users_selected': self.id_list,
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,11 +14,11 @@ coreapi==2.3.3
|
||||||
coreschema==0.0.4
|
coreschema==0.0.4
|
||||||
cryptography==2.1.4
|
cryptography==2.1.4
|
||||||
decorator==4.1.2
|
decorator==4.1.2
|
||||||
Django==2.0.7
|
Django==2.1
|
||||||
django-auth-ldap==1.3.0
|
django-auth-ldap==1.3.0
|
||||||
django-bootstrap3==9.1.0
|
django-bootstrap3==9.1.0
|
||||||
django-celery-beat==1.1.1
|
django-celery-beat==1.1.1
|
||||||
django-filter==1.1.0
|
django-filter==2.0.0
|
||||||
django-formtools==2.1
|
django-formtools==2.1
|
||||||
django-ranged-response==0.2.0
|
django-ranged-response==0.2.0
|
||||||
django-redis-cache==1.7.1
|
django-redis-cache==1.7.1
|
||||||
|
@ -70,3 +70,4 @@ uritemplate==3.0.0
|
||||||
urllib3==1.22
|
urllib3==1.22
|
||||||
vine==1.1.4
|
vine==1.1.4
|
||||||
drf-yasg==1.9.1
|
drf-yasg==1.9.1
|
||||||
|
Werkzeug==0.14.1
|
||||||
|
|
Loading…
Reference in New Issue