Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
72a82c41
Commit
72a82c41
authored
Jan 09, 2018
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Update] 修改 success message, 添加资产组时可以添加资产
parent
450a9495
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
310 additions
and
486 deletions
+310
-486
forms.py
apps/assets/forms.py
+16
-11
asset.py
apps/assets/models/asset.py
+1
-1
signals_handler.py
apps/assets/signals_handler.py
+5
-4
asset_group_create.html
apps/assets/templates/assets/asset_group_create.html
+18
-107
admin_user.py
apps/assets/views/admin_user.py
+13
-22
asset.py
apps/assets/views/asset.py
+10
-4
cluster.py
apps/assets/views/cluster.py
+12
-7
group.py
apps/assets/views/group.py
+17
-26
system_user.py
apps/assets/views/system_user.py
+14
-28
const.py
apps/common/const.py
+8
-0
settings.py
apps/jumpserver/settings.py
+1
-0
django.mo
apps/locale/zh/LC_MESSAGES/django.mo
+0
-0
django.po
apps/locale/zh/LC_MESSAGES/django.po
+176
-176
views.py
apps/perms/views.py
+3
-57
user_group_create_update.html
apps/users/templates/users/user_group_create_update.html
+3
-15
group.py
apps/users/views/group.py
+6
-18
user.py
apps/users/views/user.py
+7
-10
No files found.
apps/assets/forms.py
View file @
72a82c41
...
@@ -124,20 +124,25 @@ class AssetGroupForm(forms.ModelForm):
...
@@ -124,20 +124,25 @@ class AssetGroupForm(forms.ModelForm):
label
=
_
(
'Asset'
),
label
=
_
(
'Asset'
),
required
=
False
,
required
=
False
,
widget
=
forms
.
SelectMultiple
(
widget
=
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select assets'
)}
)
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select assets'
)}
)
)
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
**
kwargs
):
if
kwargs
.
get
(
'instance'
,
None
):
instance
=
kwargs
.
get
(
'instance'
)
if
instance
:
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
initial
.
update
({
super
(
AssetGroupForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
'assets'
:
instance
.
assets
.
all
(),
})
def
_save_m2m
(
self
):
kwargs
[
'initial'
]
=
initial
super
(
AssetGroupForm
,
self
)
.
_save_m2m
()
super
()
.
__init__
(
**
kwargs
)
assets
=
self
.
cleaned_data
[
'assets'
]
self
.
instance
.
assets
.
clear
()
def
save
(
self
,
commit
=
True
):
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
group
=
super
()
.
save
(
commit
=
commit
)
assets
=
self
.
cleaned_data
[
'assets'
]
group
.
assets
.
set
(
assets
)
return
group
class
Meta
:
class
Meta
:
model
=
AssetGroup
model
=
AssetGroup
...
...
apps/assets/models/asset.py
View file @
72a82c41
...
@@ -44,7 +44,7 @@ class Asset(models.Model):
...
@@ -44,7 +44,7 @@ class Asset(models.Model):
hostname
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Hostname'
))
hostname
=
models
.
CharField
(
max_length
=
128
,
unique
=
True
,
verbose_name
=
_
(
'Hostname'
))
port
=
models
.
IntegerField
(
default
=
22
,
verbose_name
=
_
(
'Port'
))
port
=
models
.
IntegerField
(
default
=
22
,
verbose_name
=
_
(
'Port'
))
groups
=
models
.
ManyToManyField
(
AssetGroup
,
blank
=
True
,
related_name
=
'assets'
,
verbose_name
=
_
(
'Asset groups'
))
groups
=
models
.
ManyToManyField
(
AssetGroup
,
blank
=
True
,
related_name
=
'assets'
,
verbose_name
=
_
(
'Asset groups'
))
cluster
=
models
.
ForeignKey
(
Cluster
,
blank
=
True
,
null
=
True
,
related_name
=
'assets'
,
on_delete
=
models
.
SET_NULL
,
verbose_name
=
_
(
'Cluster'
))
cluster
=
models
.
ForeignKey
(
Cluster
,
related_name
=
'assets'
,
on_delete
=
models
.
PROTECT
,
verbose_name
=
_
(
'Cluster'
))
is_active
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Is active'
))
is_active
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Is active'
))
type
=
models
.
CharField
(
choices
=
TYPE_CHOICES
,
max_length
=
16
,
blank
=
True
,
null
=
True
,
default
=
'Server'
,
verbose_name
=
_
(
'Asset type'
),)
type
=
models
.
CharField
(
choices
=
TYPE_CHOICES
,
max_length
=
16
,
blank
=
True
,
null
=
True
,
default
=
'Server'
,
verbose_name
=
_
(
'Asset type'
),)
env
=
models
.
CharField
(
choices
=
ENV_CHOICES
,
max_length
=
8
,
blank
=
True
,
null
=
True
,
default
=
'Prod'
,
verbose_name
=
_
(
'Asset environment'
),)
env
=
models
.
CharField
(
choices
=
ENV_CHOICES
,
max_length
=
8
,
blank
=
True
,
null
=
True
,
default
=
'Prod'
,
verbose_name
=
_
(
'Asset environment'
),)
...
...
apps/assets/signals_handler.py
View file @
72a82c41
...
@@ -27,10 +27,11 @@ def test_asset_conn_on_created(asset):
...
@@ -27,10 +27,11 @@ def test_asset_conn_on_created(asset):
def
push_cluster_system_users_to_asset
(
asset
):
def
push_cluster_system_users_to_asset
(
asset
):
logger
.
info
(
"Push cluster system user to asset: {}"
.
format
(
asset
))
if
asset
.
cluster
:
task_name
=
_
(
"Push cluster system users to asset"
)
logger
.
info
(
"Push cluster system user to asset: {}"
.
format
(
asset
))
system_users
=
asset
.
cluster
.
systemuser_set
.
all
()
task_name
=
_
(
"Push cluster system users to asset"
)
push_system_user_util
.
delay
(
system_users
,
[
asset
],
task_name
)
system_users
=
asset
.
cluster
.
systemuser_set
.
all
()
push_system_user_util
.
delay
(
system_users
,
[
asset
],
task_name
)
@receiver
(
post_save
,
sender
=
Asset
,
dispatch_uid
=
"my_unique_identifier"
)
@receiver
(
post_save
,
sender
=
Asset
,
dispatch_uid
=
"my_unique_identifier"
)
...
...
apps/assets/templates/assets/asset_group_create.html
View file @
72a82c41
{% extends 'base.html' %}
{% extends '_base_create_update.html' %}
{% load i18n %}
{% load static %}
{% load static %}
{% load bootstrap3 %}
{% load bootstrap3 %}
{% block custom_head_css_js %}
{% load i18n %}
<link
href=
"{% static 'css/plugins/select2/select2.min.css' %}"
rel=
"stylesheet"
>
<script
src=
"{% static 'js/plugins/select2/select2.full.min.js' %}"
></script>
{% endblock %}
{% block content %}
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-sm-10"
>
<div
class=
"ibox float-e-margins"
>
<div
id=
"ibox-content"
class=
"ibox-title"
>
<h5>
{{ action }}
</h5>
<div
class=
"ibox-tools"
>
<a
class=
"collapse-link"
>
<i
class=
"fa fa-chevron-up"
></i>
</a>
<a
class=
"dropdown-toggle"
data-toggle=
"dropdown"
href=
"#"
>
<i
class=
"fa fa-wrench"
></i>
</a>
<a
class=
"close-link"
>
<i
class=
"fa fa-times"
></i>
</a>
</div>
</div>
<div
class=
"ibox-content"
>
{% block form %}
<div
class=
"panel blank-panel"
>
<form
id=
"groupForm"
method=
"post"
class=
"form-horizontal"
>
<div
class=
"panel-body"
>
{% csrf_token %}
<div
class=
"tab-content"
>
{% bootstrap_field form.name layout="horizontal" %}
<form
id=
"groupForm"
method=
"post"
class=
"form-horizontal"
>
{% bootstrap_field form.assets layout="horizontal" %}
{% csrf_token %}
{% bootstrap_field form.comment layout="horizontal" %}
<h3
class=
"widget-head-color-box"
>
资产组信息
</h3>
{% bootstrap_field form.name layout="horizontal" %}
<div
class=
"hr-line-dashed"
></div>
{% bootstrap_field form.comment layout="horizontal" %}
<div
class=
"form-group"
>
{#
<div
class=
"hr-line-dashed"
></div>
#}
<div
class=
"col-sm-4 col-sm-offset-2"
>
{#
<h3
class=
"widget-head-color-box"
>
用户选择的资产
</h3>
#}
<button
class=
"btn btn-default"
type=
"reset"
>
{% trans 'Reset' %}
</button>
{#
<div
class=
"form-group"
>
#}
<button
id=
"submit_button"
class=
"btn btn-primary"
type=
"submit"
>
{% trans 'Submit' %}
</button>
{#
<label
class=
"col-sm-2 control-label"
id=
"asset_on_count"
>
已选({{ assets_count }})
</label>
#}
{#
<div
class=
"col-sm-9"
id=
"asset_sed"
>
#}
{#
<div
class=
"form-asset-on"
id=
"add_asset"
>
#}
{#
<p
id=
"asset_on_p"
>
#}
{# {% for asset in assets_on_list %}#}
{#
<button
name=
'asset_hostname'
title=
'{{ asset.ip }}'
type=
'button'
class=
'btn btn-default btn-xs'
>
{{ asset.hostname }}
</button>
#}
{# {% endfor %}#}
{#
</p>
#}
{#
</div>
#}
{#
</div>
#}
{#
</div>
#}
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"col-sm-4 col-sm-offset-5"
>
<button
class=
"btn btn-white"
type=
"reset"
>
重置
</button>
<button
class=
"btn btn-primary"
type=
"submit"
>
提交
</button>
<div
id=
'box2'
>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<!-- 模态框(Modal) -->
<div
class=
"modal fade"
id=
"modal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"myModalLabel"
aria-hidden=
"true"
>
<div
class=
"modal-dialog modal-lg"
>
<div
class=
"modal-content"
id=
"box"
>
<!--此部分为主体内容,将远程加载进来-->
</div>
</div>
</div>
{% endblock %}
{% endblock %}
{% block custom_foot_js %}
{% block custom_foot_js %}
<script
type=
"text/javascript"
>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
$
(
document
).
ready
(
function
()
{
$
(
'.select2'
).
select2
();
$
(
'.select2'
).
select2
({
$
(
'.select2-system-user'
).
select2
();
closeOnSelect
:
false
});
});
$
(
'#add_asset'
).
on
(
'click'
,
function
(){
$
(
'#modal'
).
modal
(
'show'
);
});
$
(
'#modal'
).
modal
({
show
:
false
,
backdrop
:
'static'
,
keyboard
:
'false'
,
remote
:
"{% url 'assets:asset-modal-list' %}?group_id={{ group_id }}"
});
$
(
'#modal'
).
on
(
'show.bs.modal'
,
function
(){
//alert('当调用show方法时,立即触发;')
});
});
$
(
'#modal'
).
on
(
'shown.bs.modal'
,
function
(){
//alert('当弹窗完全加载完后,再触发;')
});
$
(
'#modal'
).
on
(
'hide.bs.modal'
,
function
(){
//alert('当关闭时,立即触发;')
});
$
(
'#modal'
).
on
(
'hidden.bs.modal'
,
function
(){
//alert('当关完全关闭后,再触发;')
});
$
(
'#modal'
).
on
(
'loaded.bs.modal'
,
function
(){
//alert('当远程数据加载完毕后,再触发;')
});
</script>
</script>
{% endblock %}
{% endblock %}
\ No newline at end of file
apps/assets/views/admin_user.py
View file @
72a82c41
...
@@ -2,20 +2,22 @@
...
@@ -2,20 +2,22 @@
from
__future__
import
absolute_import
,
unicode_literals
from
__future__
import
absolute_import
,
unicode_literals
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
django.conf
import
settings
from
django.conf
import
settings
from
django.views.generic
import
TemplateView
,
ListView
,
View
from
django.views.generic.edit
import
CreateView
,
DeleteView
,
FormView
,
UpdateView
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
from
django.views.generic
import
TemplateView
,
ListView
from
django.views.generic.edit
import
CreateView
,
DeleteView
,
UpdateView
from
django.contrib.messages.views
import
SuccessMessageMixin
from
django.contrib.messages.views
import
SuccessMessageMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
common.const
import
create_success_msg
,
update_success_msg
from
..
import
forms
from
..
import
forms
from
..models
import
A
sset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUs
er
from
..models
import
A
dminUser
,
Clust
er
from
..hands
import
AdminUserRequiredMixin
from
..hands
import
AdminUserRequiredMixin
__all__
=
[
'AdminUserCreateView'
,
'AdminUserDetailView'
,
__all__
=
[
'AdminUserDeleteView'
,
'AdminUserListView'
,
'AdminUserCreateView'
,
'AdminUserDetailView'
,
'AdminUserUpdateView'
,
'AdminUserAssetsView'
,
'AdminUserDeleteView'
,
'AdminUserListView'
,
]
'AdminUserUpdateView'
,
'AdminUserAssetsView'
,
]
class
AdminUserListView
(
AdminUserRequiredMixin
,
TemplateView
):
class
AdminUserListView
(
AdminUserRequiredMixin
,
TemplateView
):
...
@@ -38,6 +40,7 @@ class AdminUserCreateView(AdminUserRequiredMixin,
...
@@ -38,6 +40,7 @@ class AdminUserCreateView(AdminUserRequiredMixin,
form_class
=
forms
.
AdminUserForm
form_class
=
forms
.
AdminUserForm
template_name
=
'assets/admin_user_create_update.html'
template_name
=
'assets/admin_user_create_update.html'
success_url
=
reverse_lazy
(
'assets:admin-user-list'
)
success_url
=
reverse_lazy
(
'assets:admin-user-list'
)
success_message
=
create_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -47,20 +50,13 @@ class AdminUserCreateView(AdminUserRequiredMixin,
...
@@ -47,20 +50,13 @@ class AdminUserCreateView(AdminUserRequiredMixin,
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
success_message
=
_
(
'Create admin user <a href="{url}">{name}</a> successfully.'
.
format
(
url
=
reverse_lazy
(
'assets:admin-user-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
}),
name
=
self
.
object
.
name
,
))
return
success_message
class
AdminUserUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
class
AdminUserUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
model
=
AdminUser
model
=
AdminUser
form_class
=
forms
.
AdminUserForm
form_class
=
forms
.
AdminUserForm
template_name
=
'assets/admin_user_create_update.html'
template_name
=
'assets/admin_user_create_update.html'
success_url
=
reverse_lazy
(
'assets:admin-user-list'
)
success_message
=
update_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -70,11 +66,6 @@ class AdminUserUpdateView(AdminUserRequiredMixin, UpdateView):
...
@@ -70,11 +66,6 @@ class AdminUserUpdateView(AdminUserRequiredMixin, UpdateView):
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_url
(
self
):
success_url
=
reverse_lazy
(
'assets:admin-user-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
})
return
success_url
class
AdminUserDetailView
(
AdminUserRequiredMixin
,
DetailView
):
class
AdminUserDetailView
(
AdminUserRequiredMixin
,
DetailView
):
model
=
AdminUser
model
=
AdminUser
...
...
apps/assets/views/asset.py
View file @
72a82c41
...
@@ -21,10 +21,11 @@ from django.core.cache import cache
...
@@ -21,10 +21,11 @@ from django.core.cache import cache
from
django.utils
import
timezone
from
django.utils
import
timezone
from
django.contrib.auth.mixins
import
LoginRequiredMixin
from
django.contrib.auth.mixins
import
LoginRequiredMixin
from
django.shortcuts
import
redirect
from
django.shortcuts
import
redirect
from
django.contrib.messages.views
import
SuccessMessageMixin
from
common.mixins
import
JSONResponseMixin
from
common.mixins
import
JSONResponseMixin
from
common.utils
import
get_object_or_none
,
get_logger
,
is_uuid
from
common.utils
import
get_object_or_none
,
get_logger
,
is_uuid
from
common.const
import
create_success_msg
,
update_success_msg
from
..
import
forms
from
..
import
forms
from
..models
import
Asset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUser
from
..models
import
Asset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUser
from
..hands
import
AdminUserRequiredMixin
from
..hands
import
AdminUserRequiredMixin
...
@@ -46,7 +47,6 @@ class AssetListView(AdminUserRequiredMixin, TemplateView):
...
@@ -46,7 +47,6 @@ class AssetListView(AdminUserRequiredMixin, TemplateView):
context
=
{
context
=
{
'app'
:
_
(
'Assets'
),
'app'
:
_
(
'Assets'
),
'action'
:
_
(
'Asset list'
),
'action'
:
_
(
'Asset list'
),
# 'groups': AssetGroup.objects.all(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
...
@@ -66,7 +66,7 @@ class UserAssetListView(LoginRequiredMixin, TemplateView):
...
@@ -66,7 +66,7 @@ class UserAssetListView(LoginRequiredMixin, TemplateView):
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
AssetCreateView
(
AdminUserRequiredMixin
,
CreateView
):
class
AssetCreateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
CreateView
):
model
=
Asset
model
=
Asset
form_class
=
forms
.
AssetCreateForm
form_class
=
forms
.
AssetCreateForm
template_name
=
'assets/asset_create.html'
template_name
=
'assets/asset_create.html'
...
@@ -87,6 +87,9 @@ class AssetCreateView(AdminUserRequiredMixin, CreateView):
...
@@ -87,6 +87,9 @@ class AssetCreateView(AdminUserRequiredMixin, CreateView):
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
return
create_success_msg
%
({
"name"
:
cleaned_data
[
"hostname"
]})
class
AssetModalListView
(
AdminUserRequiredMixin
,
ListView
):
class
AssetModalListView
(
AdminUserRequiredMixin
,
ListView
):
paginate_by
=
settings
.
CONFIG
.
DISPLAY_PER_PAGE
paginate_by
=
settings
.
CONFIG
.
DISPLAY_PER_PAGE
...
@@ -147,7 +150,7 @@ class AssetBulkUpdateView(AdminUserRequiredMixin, ListView):
...
@@ -147,7 +150,7 @@ class AssetBulkUpdateView(AdminUserRequiredMixin, ListView):
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
AssetUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
class
AssetUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
Asset
model
=
Asset
form_class
=
forms
.
AssetUpdateForm
form_class
=
forms
.
AssetUpdateForm
template_name
=
'assets/asset_update.html'
template_name
=
'assets/asset_update.html'
...
@@ -161,6 +164,9 @@ class AssetUpdateView(AdminUserRequiredMixin, UpdateView):
...
@@ -161,6 +164,9 @@ class AssetUpdateView(AdminUserRequiredMixin, UpdateView):
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
return
update_success_msg
%
({
"name"
:
cleaned_data
[
"hostname"
]})
class
AssetDeleteView
(
AdminUserRequiredMixin
,
DeleteView
):
class
AssetDeleteView
(
AdminUserRequiredMixin
,
DeleteView
):
model
=
Asset
model
=
Asset
...
...
apps/assets/views/cluster.py
View file @
72a82c41
# coding:utf-8
# coding:utf-8
from
__future__
import
absolute_import
,
unicode_literals
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
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
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.contrib.messages.views
import
SuccessMessageMixin
from
common.const
import
create_success_msg
,
update_success_msg
from
..
import
forms
from
..
import
forms
from
..models
import
Asset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUser
from
..models
import
Asset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUser
from
..hands
import
AdminUserRequiredMixin
from
..hands
import
AdminUserRequiredMixin
__all__
=
[
'ClusterListView'
,
'ClusterCreateView'
,
'ClusterUpdateView'
,
__all__
=
[
'ClusterDetailView'
,
'ClusterDeleteView'
,
'ClusterAssetsView'
]
'ClusterListView'
,
'ClusterCreateView'
,
'ClusterUpdateView'
,
'ClusterDetailView'
,
'ClusterDeleteView'
,
'ClusterAssetsView'
,
]
class
ClusterListView
(
AdminUserRequiredMixin
,
TemplateView
):
class
ClusterListView
(
AdminUserRequiredMixin
,
TemplateView
):
...
@@ -21,17 +25,17 @@ class ClusterListView(AdminUserRequiredMixin, TemplateView):
...
@@ -21,17 +25,17 @@ class ClusterListView(AdminUserRequiredMixin, TemplateView):
context
=
{
context
=
{
'app'
:
_
(
'Assets'
),
'app'
:
_
(
'Assets'
),
'action'
:
_
(
'Cluster list'
),
'action'
:
_
(
'Cluster list'
),
# 'keyword': self.request.GET.get('keyword', '')
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
ClusterCreateView
(
AdminUserRequiredMixin
,
CreateView
):
class
ClusterCreateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
CreateView
):
model
=
Cluster
model
=
Cluster
form_class
=
forms
.
ClusterForm
form_class
=
forms
.
ClusterForm
template_name
=
'assets/cluster_create_update.html'
template_name
=
'assets/cluster_create_update.html'
success_url
=
reverse_lazy
(
'assets:cluster-list'
)
success_url
=
reverse_lazy
(
'assets:cluster-list'
)
success_message
=
create_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -43,17 +47,18 @@ class ClusterCreateView(AdminUserRequiredMixin, CreateView):
...
@@ -43,17 +47,18 @@ class ClusterCreateView(AdminUserRequiredMixin, CreateView):
def
form_valid
(
self
,
form
):
def
form_valid
(
self
,
form
):
cluster
=
form
.
save
(
commit
=
False
)
cluster
=
form
.
save
(
commit
=
False
)
cluster
.
created_by
=
self
.
request
.
user
.
username
or
'System'
cluster
.
created_by
=
self
.
request
.
user
.
username
cluster
.
save
()
cluster
.
save
()
return
super
()
.
form_valid
(
form
)
return
super
()
.
form_valid
(
form
)
class
ClusterUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
class
ClusterUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
Cluster
model
=
Cluster
form_class
=
forms
.
ClusterForm
form_class
=
forms
.
ClusterForm
template_name
=
'assets/cluster_create_update.html'
template_name
=
'assets/cluster_create_update.html'
context_object_name
=
'cluster'
context_object_name
=
'cluster'
success_url
=
reverse_lazy
(
'assets:cluster-list'
)
success_url
=
reverse_lazy
(
'assets:cluster-list'
)
success_message
=
update_success_msg
def
form_valid
(
self
,
form
):
def
form_valid
(
self
,
form
):
cluster
=
form
.
save
(
commit
=
False
)
cluster
=
form
.
save
(
commit
=
False
)
...
...
apps/assets/views/group.py
View file @
72a82c41
...
@@ -7,42 +7,41 @@ from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateVi
...
@@ -7,42 +7,41 @@ from django.views.generic.edit import CreateView, DeleteView, FormView, UpdateVi
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.shortcuts
import
get_object_or_404
,
reverse
,
redirect
from
django.shortcuts
import
get_object_or_404
,
reverse
,
redirect
from
django.contrib.messages.views
import
SuccessMessageMixin
from
common.const
import
create_success_msg
,
update_success_msg
from
..
import
forms
from
..
import
forms
from
..models
import
Asset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUser
from
..models
import
Asset
,
AssetGroup
,
AdminUser
,
Cluster
,
SystemUser
from
..hands
import
AdminUserRequiredMixin
from
..hands
import
AdminUserRequiredMixin
__all__
=
[
'AssetGroupCreateView'
,
'AssetGroupDetailView'
,
__all__
=
[
'AssetGroupUpdateView'
,
'AssetGroupListView'
,
'AssetGroupCreateView'
,
'AssetGroupDetailView'
,
'AssetGroupDeleteView'
,
'AssetGroupUpdateView'
,
'AssetGroupListView'
,
]
'AssetGroupDeleteView'
,
]
class
AssetGroupCreateView
(
AdminUserRequiredMixin
,
CreateView
):
class
AssetGroupCreateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
CreateView
):
model
=
AssetGroup
model
=
AssetGroup
form_class
=
forms
.
AssetGroupForm
form_class
=
forms
.
AssetGroupForm
template_name
=
'assets/asset_group_create.html'
template_name
=
'assets/asset_group_create.html'
success_url
=
reverse_lazy
(
'assets:asset-group-list'
)
success_url
=
reverse_lazy
(
'assets:asset-group-list'
)
success_message
=
create_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
'app'
:
_
(
'Assets'
),
'app'
:
_
(
'Assets'
),
'action'
:
_
(
'Create asset group'
),
'action'
:
_
(
'Create asset group'
),
'assets_count'
:
0
,
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
(
AssetGroupCreateView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
form_valid
(
self
,
form
):
def
form_valid
(
self
,
form
):
asset_group
=
form
.
save
()
group
=
form
.
save
()
assets_id_list
=
self
.
request
.
POST
.
getlist
(
'assets'
,
[])
group
.
created_by
=
self
.
request
.
user
.
username
assets
=
[
get_object_or_404
(
Asset
,
id
=
int
(
asset_id
))
group
.
save
()
for
asset_id
in
assets_id_list
]
return
super
()
.
form_valid
(
form
)
asset_group
.
created_by
=
self
.
request
.
user
.
username
or
'Admin'
asset_group
.
assets
.
add
(
*
tuple
(
assets
))
asset_group
.
save
()
return
super
(
AssetGroupCreateView
,
self
)
.
form_valid
(
form
)
class
AssetGroupListView
(
AdminUserRequiredMixin
,
TemplateView
):
class
AssetGroupListView
(
AdminUserRequiredMixin
,
TemplateView
):
...
@@ -54,7 +53,6 @@ class AssetGroupListView(AdminUserRequiredMixin, TemplateView):
...
@@ -54,7 +53,6 @@ class AssetGroupListView(AdminUserRequiredMixin, TemplateView):
'action'
:
_
(
'Asset group list'
),
'action'
:
_
(
'Asset group list'
),
'assets'
:
Asset
.
objects
.
all
(),
'assets'
:
Asset
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'system_users'
:
SystemUser
.
objects
.
all
(),
'keyword'
:
self
.
request
.
GET
.
get
(
'keyword'
,
''
)
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
(
AssetGroupListView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
(
AssetGroupListView
,
self
)
.
get_context_data
(
**
kwargs
)
...
@@ -77,27 +75,20 @@ class AssetGroupDetailView(AdminUserRequiredMixin, DetailView):
...
@@ -77,27 +75,20 @@ class AssetGroupDetailView(AdminUserRequiredMixin, DetailView):
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
AssetGroupUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
class
AssetGroupUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
AssetGroup
model
=
AssetGroup
form_class
=
forms
.
AssetGroupForm
form_class
=
forms
.
AssetGroupForm
template_name
=
'assets/asset_group_create.html'
template_name
=
'assets/asset_group_create.html'
success_url
=
reverse_lazy
(
'assets:asset-group-list'
)
success_url
=
reverse_lazy
(
'assets:asset-group-list'
)
success_message
=
update_success_msg
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
self
.
object
=
self
.
get_object
(
queryset
=
AssetGroup
.
objects
.
all
())
return
super
(
AssetGroupUpdateView
,
self
)
.
get
(
request
,
*
args
,
**
kwargs
)
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
assets_all
=
self
.
object
.
assets
.
all
()
context
=
{
context
=
{
'app'
:
_
(
'Assets'
),
'app'
:
_
(
'Assets'
),
'action'
:
_
(
'Create asset group'
),
'action'
:
_
(
'Create asset group'
),
'assets_on_list'
:
assets_all
,
'assets_count'
:
len
(
assets_all
),
'group_id'
:
self
.
object
.
id
,
}
}
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
(
AssetGroupUpdateView
,
self
)
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
AssetGroupDeleteView
(
AdminUserRequiredMixin
,
DeleteView
):
class
AssetGroupDeleteView
(
AdminUserRequiredMixin
,
DeleteView
):
...
...
apps/assets/views/system_user.py
View file @
72a82c41
# ~*~ coding: utf-8 ~*~
# ~*~ coding: utf-8 ~*~
from
django.contrib
import
messages
from
django.shortcuts
import
reverse
from
django.shortcuts
import
redirect
,
reverse
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
django.db
import
transaction
from
django.db
import
transaction
from
django.views.generic
import
TemplateView
,
ListView
,
FormView
from
django.views.generic
import
TemplateView
from
django.views.generic.edit
import
CreateView
,
DeleteView
,
UpdateView
from
django.views.generic.edit
import
CreateView
,
DeleteView
,
UpdateView
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
from
django.contrib.messages.views
import
SuccessMessageMixin
from
django.contrib.messages.views
import
SuccessMessageMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.views.generic.detail
import
DetailView
from
..forms
import
SystemUserForm
,
SystemUserUpdateForm
,
SystemUserAuthForm
from
common.const
import
create_success_msg
,
update_success_msg
from
..forms
import
SystemUserForm
,
SystemUserUpdateForm
from
..models
import
SystemUser
,
Cluster
from
..models
import
SystemUser
,
Cluster
from
..hands
import
AdminUserRequiredMixin
from
..hands
import
AdminUserRequiredMixin
__all__
=
[
'SystemUserCreateView'
,
'SystemUserUpdateView'
,
__all__
=
[
'SystemUserDetailView'
,
'SystemUserDeleteView'
,
'SystemUserCreateView'
,
'SystemUserUpdateView'
,
'SystemUserAssetView'
,
'SystemUserListView'
,
'SystemUserDetailView'
,
'SystemUserDeleteView'
,
]
'SystemUserAssetView'
,
'SystemUserListView'
,
]
class
SystemUserListView
(
AdminUserRequiredMixin
,
TemplateView
):
class
SystemUserListView
(
AdminUserRequiredMixin
,
TemplateView
):
...
@@ -38,10 +39,7 @@ class SystemUserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVi
...
@@ -38,10 +39,7 @@ class SystemUserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVi
form_class
=
SystemUserForm
form_class
=
SystemUserForm
template_name
=
'assets/system_user_create.html'
template_name
=
'assets/system_user_create.html'
success_url
=
reverse_lazy
(
'assets:system-user-list'
)
success_url
=
reverse_lazy
(
'assets:system-user-list'
)
success_message
=
create_success_msg
@transaction.atomic
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
return
super
(
SystemUserCreateView
,
self
)
.
post
(
request
,
*
args
,
**
kwargs
)
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -51,20 +49,13 @@ class SystemUserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVi
...
@@ -51,20 +49,13 @@ class SystemUserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVi
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
url
=
reverse
(
'assets:system-user-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
})
success_message
=
_
(
'Create system user <a href="{url}">{name}</a> '
'successfully.'
.
format
(
url
=
url
,
name
=
self
.
object
.
name
)
)
return
success_message
class
SystemUserUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
class
SystemUserUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
SystemUser
model
=
SystemUser
form_class
=
SystemUserUpdateForm
form_class
=
SystemUserUpdateForm
template_name
=
'assets/system_user_update.html'
template_name
=
'assets/system_user_update.html'
success_url
=
reverse_lazy
(
'assets:system-user-list'
)
success_message
=
update_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -74,11 +65,6 @@ class SystemUserUpdateView(AdminUserRequiredMixin, UpdateView):
...
@@ -74,11 +65,6 @@ class SystemUserUpdateView(AdminUserRequiredMixin, UpdateView):
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_url
(
self
):
success_url
=
reverse_lazy
(
'assets:system-user-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
})
return
success_url
class
SystemUserDetailView
(
AdminUserRequiredMixin
,
DetailView
):
class
SystemUserDetailView
(
AdminUserRequiredMixin
,
DetailView
):
template_name
=
'assets/system_user_detail.html'
template_name
=
'assets/system_user_detail.html'
...
...
apps/common/const.py
0 → 100644
View file @
72a82c41
# -*- coding: utf-8 -*-
#
from
django.utils.translation
import
ugettext
as
_
create_success_msg
=
_
(
"<b>
%(name)
s</b> was created successfully"
)
update_success_msg
=
_
(
"<b>
%(name)
s</b> was updated successfully"
)
\ No newline at end of file
apps/jumpserver/settings.py
View file @
72a82c41
...
@@ -374,4 +374,5 @@ BOOTSTRAP3 = {
...
@@ -374,4 +374,5 @@ BOOTSTRAP3 = {
'horizontal_field_class'
:
'col-md-9'
,
'horizontal_field_class'
:
'col-md-9'
,
# Set placeholder attributes to label if no placeholder is provided
# Set placeholder attributes to label if no placeholder is provided
'set_placeholder'
:
True
,
'set_placeholder'
:
True
,
'success_css_class'
:
''
,
}
}
apps/locale/zh/LC_MESSAGES/django.mo
View file @
72a82c41
No preview for this file type
apps/locale/zh/LC_MESSAGES/django.po
View file @
72a82c41
...
@@ -8,7 +8,7 @@ msgid ""
...
@@ -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-01-0
8 15:58
+0800\n"
"POT-Creation-Date: 2018-01-0
9 23: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"
...
@@ -76,22 +76,22 @@ msgstr "端口"
...
@@ -76,22 +76,22 @@ msgstr "端口"
msgid "Asset"
msgid "Asset"
msgstr "资产"
msgstr "资产"
#: assets/forms.py:1
56
perms/forms.py:40
#: assets/forms.py:1
61
perms/forms.py:40
#: perms/templates/perms/asset_permission_detail.html:144 users/forms.py:245
#: perms/templates/perms/asset_permission_detail.html:144 users/forms.py:245
msgid "Select system users"
msgid "Select system users"
msgstr "选择系统用户"
msgstr "选择系统用户"
#: assets/forms.py:1
58
#: assets/forms.py:1
63
#: assets/templates/assets/_asset_group_bulk_update_modal.html:22
#: assets/templates/assets/_asset_group_bulk_update_modal.html:22
#: assets/templates/assets/cluster_list.html:22
#: assets/templates/assets/cluster_list.html:22
msgid "System users"
msgid "System users"
msgstr "系统用户"
msgstr "系统用户"
#: assets/forms.py:16
0
#: assets/forms.py:16
5
msgid "Selected system users will be create at cluster assets"
msgid "Selected system users will be create at cluster assets"
msgstr "选择的系统用户将会在该集群资产上创建"
msgstr "选择的系统用户将会在该集群资产上创建"
#: assets/forms.py:1
68 assets/forms.py:243 assets/forms.py:302
#: assets/forms.py:1
73 assets/forms.py:248 assets/forms.py:307
#: assets/models/cluster.py:18 assets/models/group.py:20
#: assets/models/cluster.py:18 assets/models/group.py:20
#: assets/models/user.py:28 assets/templates/assets/admin_user_detail.html:56
#: assets/models/user.py:28 assets/templates/assets/admin_user_detail.html:56
#: assets/templates/assets/admin_user_list.html:22
#: assets/templates/assets/admin_user_list.html:22
...
@@ -120,15 +120,15 @@ msgstr "选择的系统用户将会在该集群资产上创建"
...
@@ -120,15 +120,15 @@ msgstr "选择的系统用户将会在该集群资产上创建"
msgid "Name"
msgid "Name"
msgstr "名称"
msgstr "名称"
#: assets/forms.py:17
4
#: assets/forms.py:17
9
msgid "Cluster level admin user"
msgid "Cluster level admin user"
msgstr "集群级别管理用户"
msgstr "集群级别管理用户"
#: assets/forms.py:
195
#: assets/forms.py:
200
msgid "Password or private key password"
msgid "Password or private key password"
msgstr "密码或秘钥不合法"
msgstr "密码或秘钥不合法"
#: assets/forms.py:
196
assets/models/user.py:30 users/forms.py:16
#: assets/forms.py:
201
assets/models/user.py:30 users/forms.py:16
#: users/forms.py:24 users/templates/users/login.html:56
#: users/forms.py:24 users/templates/users/login.html:56
#: users/templates/users/reset_password.html:52
#: users/templates/users/reset_password.html:52
#: users/templates/users/user_create.html:11
#: users/templates/users/user_create.html:11
...
@@ -138,19 +138,19 @@ msgstr "密码或秘钥不合法"
...
@@ -138,19 +138,19 @@ msgstr "密码或秘钥不合法"
msgid "Password"
msgid "Password"
msgstr "密码"
msgstr "密码"
#: assets/forms.py:
199
users/models/user.py:46
#: assets/forms.py:
204
users/models/user.py:46
msgid "Private key"
msgid "Private key"
msgstr "ssh私钥"
msgstr "ssh私钥"
#: assets/forms.py:22
4 assets/forms.py:284 assets/forms.py:345
#: assets/forms.py:22
9 assets/forms.py:289 assets/forms.py:350
msgid "Invalid private key"
msgid "Invalid private key"
msgstr "ssh密钥不合法"
msgstr "ssh密钥不合法"
#: assets/forms.py:2
35
#: assets/forms.py:2
40
msgid "Password and private key file must be input one"
msgid "Password and private key file must be input one"
msgstr "密码和私钥, 必须输入一个"
msgstr "密码和私钥, 必须输入一个"
#: assets/forms.py:24
4 assets/forms.py:303
assets/models/user.py:29
#: assets/forms.py:24
9 assets/forms.py:308
assets/models/user.py:29
#: assets/templates/assets/admin_user_detail.html:60
#: assets/templates/assets/admin_user_detail.html:60
#: assets/templates/assets/admin_user_list.html:23
#: assets/templates/assets/admin_user_list.html:23
#: assets/templates/assets/system_user_detail.html:57
#: assets/templates/assets/system_user_detail.html:57
...
@@ -166,23 +166,23 @@ msgstr "密码和私钥, 必须输入一个"
...
@@ -166,23 +166,23 @@ msgstr "密码和私钥, 必须输入一个"
msgid "Username"
msgid "Username"
msgstr "用户名"
msgstr "用户名"
#: assets/forms.py:29
1 assets/forms.py:351
#: assets/forms.py:29
6 assets/forms.py:356
msgid "Auth info required, private_key or password"
msgid "Auth info required, private_key or password"
msgstr "密钥和密码必须填写一个"
msgstr "密钥和密码必须填写一个"
#: assets/forms.py:3
06
#: assets/forms.py:3
11
msgid " Select clusters"
msgid " Select clusters"
msgstr "选择集群"
msgstr "选择集群"
#: assets/forms.py:31
1
#: assets/forms.py:31
6
msgid "If auto push checked, system user will be create at cluster assets"
msgid "If auto push checked, system user will be create at cluster assets"
msgstr "如果选择了自动推送,系统用户将会创建在集群资产上"
msgstr "如果选择了自动推送,系统用户将会创建在集群资产上"
#: assets/forms.py:31
2
#: assets/forms.py:31
7
msgid "Auto push system user to asset"
msgid "Auto push system user to asset"
msgstr "自动推送系统用户到资产"
msgstr "自动推送系统用户到资产"
#: assets/forms.py:31
3
#: assets/forms.py:31
8
msgid ""
msgid ""
"High level will be using login asset as default, if user was granted more "
"High level will be using login asset as default, if user was granted more "
"than 2 system user"
"than 2 system user"
...
@@ -260,12 +260,12 @@ msgid "Hostname"
...
@@ -260,12 +260,12 @@ msgid "Hostname"
msgstr "主机名"
msgstr "主机名"
#: assets/models/asset.py:46 assets/templates/assets/asset_detail.html:213
#: assets/models/asset.py:46 assets/templates/assets/asset_detail.html:213
#: assets/views/asset.py:21
2 assets/views/asset.py:252
#: assets/views/asset.py:21
8 assets/views/asset.py:258
msgid "Asset groups"
msgid "Asset groups"
msgstr "资产组"
msgstr "资产组"
#: assets/models/asset.py:47 assets/models/cluster.py:40
#: assets/models/asset.py:47 assets/models/cluster.py:40
#: assets/models/user.py:21
5
assets/templates/assets/asset_detail.html:85
#: assets/models/user.py:21
9
assets/templates/assets/asset_detail.html:85
#: assets/templates/assets/asset_list.html:33 templates/_nav.html:24
#: assets/templates/assets/asset_list.html:33 templates/_nav.html:24
msgid "Cluster"
msgid "Cluster"
msgstr "集群"
msgstr "集群"
...
@@ -287,7 +287,7 @@ msgid "Asset status"
...
@@ -287,7 +287,7 @@ msgid "Asset status"
msgstr "资产状态"
msgstr "资产状态"
#: assets/models/asset.py:54 assets/models/cluster.py:19
#: assets/models/asset.py:54 assets/models/cluster.py:19
#: assets/models/user.py:1
86
assets/templates/assets/asset_detail.html:73
#: assets/models/user.py:1
90
assets/templates/assets/asset_detail.html:73
#: assets/templates/assets/cluster_list.html:20 templates/_nav.html:25
#: assets/templates/assets/cluster_list.html:20 templates/_nav.html:25
msgid "Admin user"
msgid "Admin user"
msgstr "管理用户"
msgstr "管理用户"
...
@@ -443,7 +443,7 @@ msgstr "运营商"
...
@@ -443,7 +443,7 @@ msgstr "运营商"
msgid "Default"
msgid "Default"
msgstr "默认"
msgstr "默认"
#: assets/models/cluster.py:36 users/models/user.py:2
59
#: assets/models/cluster.py:36 users/models/user.py:2
63
msgid "System"
msgid "System"
msgstr "系统"
msgstr "系统"
...
@@ -468,29 +468,29 @@ msgstr "ssh密钥"
...
@@ -468,29 +468,29 @@ msgstr "ssh密钥"
msgid "SSH public key"
msgid "SSH public key"
msgstr "ssh公钥"
msgstr "ssh公钥"
#: assets/models/user.py:2
16
#: assets/models/user.py:2
20
msgid "Priority"
msgid "Priority"
msgstr "优先级"
msgstr "优先级"
#: assets/models/user.py:2
17
assets/templates/assets/system_user_detail.html:61
#: assets/models/user.py:2
21
assets/templates/assets/system_user_detail.html:61
msgid "Protocol"
msgid "Protocol"
msgstr "协议"
msgstr "协议"
#: assets/models/user.py:2
18
assets/templates/assets/_system_user.html:59
#: assets/models/user.py:2
22
assets/templates/assets/_system_user.html:59
#: assets/templates/assets/system_user_detail.html:113
#: assets/templates/assets/system_user_detail.html:113
#: assets/templates/assets/system_user_update.html:11
#: assets/templates/assets/system_user_update.html:11
msgid "Auto push"
msgid "Auto push"
msgstr "自动推送"
msgstr "自动推送"
#: assets/models/user.py:2
19
assets/templates/assets/system_user_detail.html:65
#: assets/models/user.py:2
23
assets/templates/assets/system_user_detail.html:65
msgid "Sudo"
msgid "Sudo"
msgstr "Sudo"
msgstr "Sudo"
#: assets/models/user.py:22
0
assets/templates/assets/system_user_detail.html:70
#: assets/models/user.py:22
4
assets/templates/assets/system_user_detail.html:70
msgid "Shell"
msgid "Shell"
msgstr "Shell"
msgstr "Shell"
#: assets/models/user.py:26
5
perms/models.py:19
#: assets/models/user.py:26
9
perms/models.py:19
#: perms/templates/perms/asset_permission_detail.html:136
#: perms/templates/perms/asset_permission_detail.html:136
#: perms/templates/perms/asset_permission_list.html:30 templates/_nav.html:26
#: perms/templates/perms/asset_permission_list.html:30 templates/_nav.html:26
#: terminal/backends/command/models.py:12 terminal/models.py:94
#: terminal/backends/command/models.py:12 terminal/models.py:94
...
@@ -508,15 +508,15 @@ msgstr "系统用户"
...
@@ -508,15 +508,15 @@ msgstr "系统用户"
msgid "%(value)s is not an even number"
msgid "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
msgstr "%(value)s is not an even number"
#: assets/signals_handler.py:3
1
#: assets/signals_handler.py:3
2
msgid "Push cluster system users to asset"
msgid "Push cluster system users to asset"
msgstr "推送集群系统用户到资产"
msgstr "推送集群系统用户到资产"
#: assets/signals_handler.py:6
3 assets/signals_handler.py:125
#: assets/signals_handler.py:6
4 assets/signals_handler.py:126
msgid "Push system user to cluster assets: {}->{}"
msgid "Push system user to cluster assets: {}->{}"
msgstr "推送系统用户到: {}->{}"
msgstr "推送系统用户到: {}->{}"
#: assets/signals_handler.py:10
2
#: assets/signals_handler.py:10
3
msgid "Push system user to assets"
msgid "Push system user to assets"
msgstr "推送系统用户到资产"
msgstr "推送系统用户到资产"
...
@@ -552,11 +552,11 @@ msgstr "测试系统用户可连接性: {}"
...
@@ -552,11 +552,11 @@ msgstr "测试系统用户可连接性: {}"
msgid "Test system user connectability period: {}"
msgid "Test system user connectability period: {}"
msgstr "定期测试系统用户可连接性: {}"
msgstr "定期测试系统用户可连接性: {}"
#: assets/tasks.py:37
2
#: assets/tasks.py:37
6
msgid "Push system user to cluster assets: {}"
msgid "Push system user to cluster assets: {}"
msgstr "推送系统用户到资产: {}"
msgstr "推送系统用户到资产: {}"
#: assets/tasks.py:39
3
#: assets/tasks.py:39
7
msgid "Push cluster system users to assets period: {}"
msgid "Push cluster system users to assets period: {}"
msgstr "定期推送集群系统用户到资产: {}"
msgstr "定期推送集群系统用户到资产: {}"
...
@@ -570,16 +570,16 @@ msgstr "仅修改你需要更新的字段"
...
@@ -570,16 +570,16 @@ msgstr "仅修改你需要更新的字段"
#: assets/templates/assets/_asset_group_bulk_update_modal.html:12
#: assets/templates/assets/_asset_group_bulk_update_modal.html:12
#: assets/templates/assets/system_user_asset.html:21
#: assets/templates/assets/system_user_asset.html:21
#: assets/views/admin_user.py:2
7 assets/views/admin_user.py:44
#: assets/views/admin_user.py:2
9 assets/views/admin_user.py:47
#: assets/views/admin_user.py:6
7 assets/views/admin_user.py:88
#: assets/views/admin_user.py:6
3 assets/views/admin_user.py:79
#: assets/views/admin_user.py:1
15 assets/views/asset.py:47
#: assets/views/admin_user.py:1
06 assets/views/asset.py:48
#: assets/views/asset.py:61 assets/views/asset.py:84 assets/views/asset.py:14
1
#: assets/views/asset.py:61 assets/views/asset.py:84 assets/views/asset.py:14
4
#: assets/views/asset.py:1
58 assets/views/asset.py:179
#: assets/views/asset.py:1
61 assets/views/asset.py:185
#: assets/views/cluster.py:2
2 assets/views/cluster.py:80
#: assets/views/cluster.py:2
6 assets/views/cluster.py:85
#: assets/views/cluster.py:
97 assets/views/group.py:30 assets/views/group.py:53
#: assets/views/cluster.py:
102 assets/views/group.py:34
#: assets/views/group.py:
71 assets/views/group.py:93
#: assets/views/group.py:
52 assets/views/group.py:69 assets/views/group.py:87
#: assets/views/system_user.py:
29 assets/views/system_user.py:48
#: assets/views/system_user.py:
30 assets/views/system_user.py:46
#: assets/views/system_user.py:
71 assets/views/system_user.py:91
#: assets/views/system_user.py:
62 assets/views/system_user.py:77
#: templates/_nav.html:19
#: templates/_nav.html:19
msgid "Assets"
msgid "Assets"
msgstr "资产管理"
msgstr "资产管理"
...
@@ -620,7 +620,7 @@ msgstr "如果设置了id,则会使用该行信息更新该id的资产"
...
@@ -620,7 +620,7 @@ msgstr "如果设置了id,则会使用该行信息更新该id的资产"
#: assets/templates/assets/_system_user.html:16
#: assets/templates/assets/_system_user.html:16
#: assets/templates/assets/system_user_list.html:16
#: assets/templates/assets/system_user_list.html:16
#: assets/views/system_user.py:4
9
#: assets/views/system_user.py:4
7
msgid "Create system user"
msgid "Create system user"
msgstr "创建系统用户"
msgstr "创建系统用户"
...
@@ -657,6 +657,7 @@ msgstr "其它"
...
@@ -657,6 +657,7 @@ msgstr "其它"
#: assets/templates/assets/admin_user_create_update.html:45
#: assets/templates/assets/admin_user_create_update.html:45
#: assets/templates/assets/asset_bulk_update.html:23
#: assets/templates/assets/asset_bulk_update.html:23
#: assets/templates/assets/asset_create.html:40
#: assets/templates/assets/asset_create.html:40
#: assets/templates/assets/asset_group_create.html:16
#: assets/templates/assets/asset_update.html:55
#: assets/templates/assets/asset_update.html:55
#: assets/templates/assets/cluster_create_update.html:54
#: assets/templates/assets/cluster_create_update.html:54
#: perms/templates/perms/asset_permission_create_update.html:67
#: perms/templates/perms/asset_permission_create_update.html:67
...
@@ -675,6 +676,7 @@ msgstr "重置"
...
@@ -675,6 +676,7 @@ msgstr "重置"
#: assets/templates/assets/admin_user_create_update.html:46
#: assets/templates/assets/admin_user_create_update.html:46
#: assets/templates/assets/asset_bulk_update.html:24
#: assets/templates/assets/asset_bulk_update.html:24
#: assets/templates/assets/asset_create.html:41
#: assets/templates/assets/asset_create.html:41
#: assets/templates/assets/asset_group_create.html:17
#: assets/templates/assets/asset_list.html:55
#: assets/templates/assets/asset_list.html:55
#: assets/templates/assets/asset_update.html:56
#: assets/templates/assets/asset_update.html:56
#: assets/templates/assets/cluster_create_update.html:55
#: assets/templates/assets/cluster_create_update.html:55
...
@@ -711,6 +713,52 @@ msgstr "详情"
...
@@ -711,6 +713,52 @@ msgstr "详情"
msgid "Assets list"
msgid "Assets list"
msgstr "资产列表"
msgstr "资产列表"
#: assets/templates/assets/admin_user_assets.html:24
#: assets/templates/assets/admin_user_detail.html:24
#: assets/templates/assets/admin_user_list.html:83
#: assets/templates/assets/asset_detail.html:24
#: assets/templates/assets/asset_group_detail.html:18
#: assets/templates/assets/asset_group_detail.html:172
#: assets/templates/assets/asset_group_list.html:42
#: assets/templates/assets/asset_list.html:95
#: assets/templates/assets/cluster_assets.html:170
#: assets/templates/assets/cluster_detail.html:25
#: assets/templates/assets/cluster_list.html:43
#: assets/templates/assets/system_user_asset.html:25
#: assets/templates/assets/system_user_detail.html:26
#: assets/templates/assets/system_user_list.html:84
#: perms/templates/perms/asset_permission_detail.html:30
#: perms/templates/perms/asset_permission_list.html:73
#: terminal/templates/terminal/terminal_detail.html:16
#: terminal/templates/terminal/terminal_list.html:71
#: users/templates/users/user_detail.html:25
#: users/templates/users/user_group_detail.html:28
#: users/templates/users/user_group_list.html:39
#: users/templates/users/user_list.html:76
msgid "Update"
msgstr "更新"
#: assets/templates/assets/admin_user_assets.html:28
#: assets/templates/assets/admin_user_detail.html:28
#: assets/templates/assets/admin_user_list.html:84
#: assets/templates/assets/asset_detail.html:28
#: assets/templates/assets/asset_group_list.html:43
#: assets/templates/assets/asset_list.html:96
#: assets/templates/assets/cluster_detail.html:29
#: assets/templates/assets/cluster_list.html:44
#: assets/templates/assets/system_user_list.html:85
#: ops/templates/ops/task_list.html:71
#: perms/templates/perms/asset_permission_detail.html:34
#: perms/templates/perms/asset_permission_list.html:74
#: terminal/templates/terminal/terminal_list.html:73
#: users/templates/users/user_detail.html:29
#: users/templates/users/user_group_detail.html:32
#: users/templates/users/user_group_list.html:41
#: users/templates/users/user_list.html:80
#: users/templates/users/user_list.html:84
msgid "Delete"
msgstr "删除"
#: assets/templates/assets/admin_user_assets.html:37
#: assets/templates/assets/admin_user_assets.html:37
#: assets/templates/assets/asset_group_detail.html:26
#: assets/templates/assets/asset_group_detail.html:26
#: perms/templates/perms/asset_permission_asset.html:35
#: perms/templates/perms/asset_permission_asset.html:35
...
@@ -760,7 +808,7 @@ msgstr "任务已下发,查看左侧资产状态"
...
@@ -760,7 +808,7 @@ msgstr "任务已下发,查看左侧资产状态"
#: assets/templates/assets/admin_user_create_update.html:16
#: assets/templates/assets/admin_user_create_update.html:16
#: assets/templates/assets/admin_user_list.html:14
#: assets/templates/assets/admin_user_list.html:14
#: assets/views/admin_user.py:4
5
#: assets/views/admin_user.py:4
8
msgid "Create admin user"
msgid "Create admin user"
msgstr "创建管理用户"
msgstr "创建管理用户"
...
@@ -780,7 +828,7 @@ msgstr "使用集群管理用户"
...
@@ -780,7 +828,7 @@ msgstr "使用集群管理用户"
#: users/templates/users/user_detail.html:338
#: users/templates/users/user_detail.html:338
#: users/templates/users/user_detail.html:363
#: users/templates/users/user_detail.html:363
#: users/templates/users/user_detail.html:386
#: users/templates/users/user_detail.html:386
#: users/templates/users/user_group_create_update.html:
46
#: users/templates/users/user_group_create_update.html:
32
#: users/templates/users/user_group_list.html:82
#: users/templates/users/user_group_list.html:82
#: users/templates/users/user_list.html:184
#: users/templates/users/user_list.html:184
#: users/templates/users/user_profile.html:181
#: users/templates/users/user_profile.html:181
...
@@ -817,41 +865,13 @@ msgstr "比例"
...
@@ -817,41 +865,13 @@ msgstr "比例"
msgid "Action"
msgid "Action"
msgstr "动作"
msgstr "动作"
#: assets/templates/assets/admin_user_list.html:83
#: assets/templates/assets/asset_group_detail.html:172
#: assets/templates/assets/asset_group_list.html:42
#: assets/templates/assets/asset_list.html:95
#: assets/templates/assets/cluster_assets.html:170
#: assets/templates/assets/cluster_list.html:43
#: assets/templates/assets/system_user_list.html:84
#: perms/templates/perms/asset_permission_list.html:73
#: terminal/templates/terminal/terminal_list.html:71
#: users/templates/users/user_group_list.html:39
#: users/templates/users/user_list.html:76
msgid "Update"
msgstr "更新"
#: assets/templates/assets/admin_user_list.html:84
#: assets/templates/assets/asset_group_list.html:43
#: assets/templates/assets/asset_list.html:96
#: assets/templates/assets/cluster_list.html:44
#: assets/templates/assets/system_user_list.html:85
#: ops/templates/ops/task_list.html:70
#: perms/templates/perms/asset_permission_list.html:74
#: terminal/templates/terminal/terminal_list.html:73
#: users/templates/users/user_group_list.html:41
#: users/templates/users/user_list.html:80
#: users/templates/users/user_list.html:84
msgid "Delete"
msgstr "删除"
#: assets/templates/assets/asset_create.html:28
#: assets/templates/assets/asset_create.html:28
#: assets/templates/assets/asset_update.html:33
#: assets/templates/assets/asset_update.html:33
msgid "Group"
msgid "Group"
msgstr "组"
msgstr "组"
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:18
0
#: assets/templates/assets/asset_detail.html:20 assets/views/asset.py:18
6
#: assets/views/cluster.py:
98
#: assets/views/cluster.py:
103
msgid "Asset detail"
msgid "Asset detail"
msgstr "资产详情"
msgstr "资产详情"
...
@@ -937,8 +957,8 @@ msgstr "添加"
...
@@ -937,8 +957,8 @@ msgstr "添加"
msgid "Remove"
msgid "Remove"
msgstr "移除"
msgstr "移除"
#: assets/templates/assets/asset_group_list.html:7 assets/views/group.py:3
1
#: assets/templates/assets/asset_group_list.html:7 assets/views/group.py:3
5
#: assets/views/group.py:
94
#: assets/views/group.py:
88
msgid "Create asset group"
msgid "Create asset group"
msgstr "创建资产组"
msgstr "创建资产组"
...
@@ -1062,6 +1082,7 @@ msgid "Test assets connective"
...
@@ -1062,6 +1082,7 @@ msgid "Test assets connective"
msgstr "测试资产可连接性"
msgstr "测试资产可连接性"
#: assets/templates/assets/cluster_assets.html:77
#: assets/templates/assets/cluster_assets.html:77
#: ops/templates/ops/task_list.html:70
msgid "Run"
msgid "Run"
msgstr "执行"
msgstr "执行"
...
@@ -1083,7 +1104,7 @@ msgstr "任务已下发,查看左侧资产状态"
...
@@ -1083,7 +1104,7 @@ msgstr "任务已下发,查看左侧资产状态"
msgid "Settings"
msgid "Settings"
msgstr "设置"
msgstr "设置"
#: assets/templates/assets/cluster_list.html:11 assets/views/cluster.py:
39
#: assets/templates/assets/cluster_list.html:11 assets/views/cluster.py:
43
msgid "Create Cluster"
msgid "Create Cluster"
msgstr "创建Cluster"
msgstr "创建Cluster"
...
@@ -1180,85 +1201,86 @@ msgstr "连接性"
...
@@ -1180,85 +1201,86 @@ msgstr "连接性"
msgid "Connect"
msgid "Connect"
msgstr "连接"
msgstr "连接"
#: assets/views/admin_user.py:
28
#: assets/views/admin_user.py:
30
msgid "Admin user list"
msgid "Admin user list"
msgstr "管理用户列表"
msgstr "管理用户列表"
#: assets/views/admin_user.py:52
#: assets/views/admin_user.py:64
#, python-brace-format
msgid "Create admin user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建管理用户 <a href=\"{url}\">{name}</a> 成功"
#: assets/views/admin_user.py:68
msgid "Update admin user"
msgid "Update admin user"
msgstr "更新管理用户"
msgstr "更新管理用户"
#: assets/views/admin_user.py:8
9 assets/views/admin_user.py:116
#: assets/views/admin_user.py:8
0 assets/views/admin_user.py:107
msgid "Admin user detail"
msgid "Admin user detail"
msgstr "管理用户详情"
msgstr "管理用户详情"
#: assets/views/asset.py:4
8
assets/views/asset.py:62
#: assets/views/asset.py:4
9
assets/views/asset.py:62
msgid "Asset list"
msgid "Asset list"
msgstr "资产列表"
msgstr "资产列表"
#: assets/views/asset.py:14
2
#: assets/views/asset.py:14
5
msgid "Bulk update asset"
msgid "Bulk update asset"
msgstr "批量更新资产"
msgstr "批量更新资产"
#: assets/views/asset.py:1
59
#: assets/views/asset.py:1
62
msgid "Update asset"
msgid "Update asset"
msgstr "编辑资产"
msgstr "编辑资产"
#: assets/views/asset.py:29
2
#: assets/views/asset.py:29
8
msgid "already exists"
msgid "already exists"
msgstr "已经存在"
msgstr "已经存在"
#: assets/views/cluster.py:2
3
#: assets/views/cluster.py:2
7
msgid "Cluster list"
msgid "Cluster list"
msgstr "集群列表"
msgstr "集群列表"
#: assets/views/cluster.py:
38 assets/views/cluster.py:65
#: assets/views/cluster.py:
42 assets/views/cluster.py:70
#: assets/views/system_user.py:
112
#: assets/views/system_user.py:
98
msgid "assets"
msgid "assets"
msgstr "资产管理"
msgstr "资产管理"
#: assets/views/cluster.py:
66
#: assets/views/cluster.py:
71
msgid "Update Cluster"
msgid "Update Cluster"
msgstr "更新Cluster"
msgstr "更新Cluster"
#: assets/views/cluster.py:8
1
#: assets/views/cluster.py:8
6
msgid "Cluster detail"
msgid "Cluster detail"
msgstr "集群详情"
msgstr "集群详情"
#: assets/views/group.py:5
4
#: assets/views/group.py:5
3
msgid "Asset group list"
msgid "Asset group list"
msgstr "资产组列表"
msgstr "资产组列表"
#: assets/views/group.py:7
2
#: assets/views/group.py:7
0
msgid "Asset group detail"
msgid "Asset group detail"
msgstr "资产组详情"
msgstr "资产组详情"
#: assets/views/system_user.py:3
0
#: assets/views/system_user.py:3
1
msgid "System user list"
msgid "System user list"
msgstr "系统用户列表"
msgstr "系统用户列表"
#: assets/views/system_user.py:57
#: assets/views/system_user.py:63
#, python-brace-format
msgid "Create system user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建系统用户 <a href=\"{url}\">{name}</a> 成功"
#: assets/views/system_user.py:72
msgid "Update system user"
msgid "Update system user"
msgstr "更新系统用户"
msgstr "更新系统用户"
#: assets/views/system_user.py:
92
#: assets/views/system_user.py:
78
msgid "System user detail"
msgid "System user detail"
msgstr "系统用户详情"
msgstr "系统用户详情"
#: assets/views/system_user.py:
113
#: assets/views/system_user.py:
99
msgid "System user asset"
msgid "System user asset"
msgstr "系统用户集群资产"
msgstr "系统用户集群资产"
#: common/const.py:6
#, python-format
#| msgid "User group <a href={url}> {name} </a> was created successfully"
msgid "<b>%(name)s</b> was created successfully"
msgstr "<b>%(name)s</b> 创建成功"
#: common/const.py:7
#, python-format
msgid "<b>%(name)s</b> was updated successfully"
msgstr "<b>%(name)s</b> 更新成功"
#: common/mixins.py:29
#: common/mixins.py:29
msgid "is discard"
msgid "is discard"
msgstr ""
msgstr ""
...
@@ -1517,6 +1539,10 @@ msgstr "成功"
...
@@ -1517,6 +1539,10 @@ msgstr "成功"
msgid "Date"
msgid "Date"
msgstr "日期"
msgstr "日期"
#: ops/templates/ops/task_list.html:125
msgid "Task start: "
msgstr "任务开始: "
#: ops/views.py:36 ops/views.py:52 ops/views.py:65 ops/views.py:78
#: ops/views.py:36 ops/views.py:52 ops/views.py:65 ops/views.py:78
#: ops/views.py:91 ops/views.py:104 ops/views.py:117
#: ops/views.py:91 ops/views.py:104 ops/views.py:117
msgid "Ops"
msgid "Ops"
...
@@ -1544,7 +1570,7 @@ msgstr "选择用户"
...
@@ -1544,7 +1570,7 @@ msgstr "选择用户"
#: terminal/templates/terminal/session_list.html:33
#: terminal/templates/terminal/session_list.html:33
#: terminal/templates/terminal/session_list.html:71 users/forms.py:187
#: terminal/templates/terminal/session_list.html:71 users/forms.py:187
#: users/models/user.py:31 users/templates/users/user_group_detail.html:78
#: users/models/user.py:31 users/templates/users/user_group_detail.html:78
#: users/views/user.py:34
8
#: users/views/user.py:34
5
msgid "User"
msgid "User"
msgstr "用户"
msgstr "用户"
...
@@ -1658,47 +1684,32 @@ msgstr "选择用户"
...
@@ -1658,47 +1684,32 @@ msgstr "选择用户"
msgid "Add user group to asset permission"
msgid "Add user group to asset permission"
msgstr "添加用户组"
msgstr "添加用户组"
#: perms/views.py:2
7 perms/views.py:77 perms/views.py:103 perms/views.py:128
#: perms/views.py:2
8 perms/views.py:44 perms/views.py:60 perms/views.py:74
#: perms/views.py:1
65 perms/views.py:195
templates/_nav.html:30
#: perms/views.py:1
11 perms/views.py:141
templates/_nav.html:30
msgid "Perms"
msgid "Perms"
msgstr "权限管理"
msgstr "权限管理"
#: perms/views.py:2
8
#: perms/views.py:2
9
msgid "Asset permission list"
msgid "Asset permission list"
msgstr "资产授权列表"
msgstr "资产授权列表"
#: perms/views.py:63
#: perms/views.py:45
#, python-brace-format
msgid "Create asset permission <a href=\"{url}\"> {name} </a> successfully."
msgstr "创建授权 <a href=\"{url}\"> {name} </a> 成功"
#: perms/views.py:78
msgid "Create asset permission"
msgid "Create asset permission"
msgstr "创建权限规则"
msgstr "创建权限规则"
#: perms/views.py:89
#: perms/views.py:61
#, python-brace-format
msgid "Create asset permission <a href=\"{url}\"> {name} </a> success."
msgstr "创建授权 <a href=\"{url}\"> {name} </a> 成功"
#: perms/views.py:104
msgid "Update asset permission"
msgid "Update asset permission"
msgstr "更新资产授权"
msgstr "更新资产授权"
#: perms/views.py:115
#: perms/views.py:75
#, python-brace-format
msgid "Update asset permission <a href=\"{url}\"> {name} </a> success."
msgstr "更新授权 <a href=\"{url}\"> {name} </a> 成功"
#: perms/views.py:129
msgid "Asset permission detail"
msgid "Asset permission detail"
msgstr "资产授权详情"
msgstr "资产授权详情"
#: perms/views.py:1
66
#: perms/views.py:1
12
msgid "Asset permission user list"
msgid "Asset permission user list"
msgstr "资产授权包含用户"
msgstr "资产授权包含用户"
#: perms/views.py:1
96
#: perms/views.py:1
42
msgid "Asset permission asset list"
msgid "Asset permission asset list"
msgstr "资产组授权包含资产"
msgstr "资产组授权包含资产"
...
@@ -1716,32 +1727,28 @@ msgstr "帮助"
...
@@ -1716,32 +1727,28 @@ 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:32
3
#: users/templates/users/user_pubkey_update.html:37 users/views/user.py:32
0
msgid "Profile"
msgid "Profile"
msgstr "个人信息"
msgstr "个人信息"
#: templates/_header_bar.html:34
#: templates/_header_bar.html:37
msgid "Profile settings"
msgstr "个人信息设置"
#: templates/_header_bar.html:38
msgid "Admin page"
msgid "Admin page"
msgstr "管理页面"
msgstr "管理页面"
#: templates/_header_bar.html:
40
#: templates/_header_bar.html:
39
msgid "User page"
msgid "User page"
msgstr "用户页面"
msgstr "用户页面"
#: templates/_header_bar.html:4
3
#: templates/_header_bar.html:4
2
msgid "Logout"
msgid "Logout"
msgstr "注销登录"
msgstr "注销登录"
#: templates/_header_bar.html:4
7
users/templates/users/login.html:42
#: templates/_header_bar.html:4
6
users/templates/users/login.html:42
#: users/templates/users/login.html:61
#: users/templates/users/login.html:61
msgid "Login"
msgid "Login"
msgstr "登录"
msgstr "登录"
#: templates/_header_bar.html:
60
templates/_nav.html:4
#: templates/_header_bar.html:
59
templates/_nav.html:4
msgid "Dashboard"
msgid "Dashboard"
msgstr "仪表盘"
msgstr "仪表盘"
...
@@ -1775,11 +1782,11 @@ msgstr ""
...
@@ -1775,11 +1782,11 @@ msgstr ""
msgid "Close"
msgid "Close"
msgstr "关闭"
msgstr "关闭"
#: templates/_nav.html:9 users/views/group.py:
30 users/views/group.py:48
#: templates/_nav.html:9 users/views/group.py:
28 users/views/group.py:44
#: users/views/group.py:
74 users/views/group.py:91
users/views/login.py:193
#: users/views/group.py:
62 users/views/group.py:79
users/views/login.py:193
#: users/views/login.py:242 users/views/user.py:5
5 users/views/user.py:70
#: users/views/login.py:242 users/views/user.py:5
7 users/views/user.py:72
#: users/views/user.py:9
5 users/views/user.py:151 users/views/user.py:308
#: users/views/user.py:9
2 users/views/user.py:148 users/views/user.py:305
#: users/views/user.py:3
22 users/views/user.py:366 users/views/user.py:388
#: users/views/user.py:3
19 users/views/user.py:363 users/views/user.py:385
msgid "Users"
msgid "Users"
msgstr "用户管理"
msgstr "用户管理"
...
@@ -2152,7 +2159,7 @@ msgstr "Agent"
...
@@ -2152,7 +2159,7 @@ msgstr "Agent"
msgid "Date login"
msgid "Date login"
msgstr "登录日期"
msgstr "登录日期"
#: users/models/user.py:30 users/models/user.py:25
5
#: users/models/user.py:30 users/models/user.py:25
9
msgid "Administrator"
msgid "Administrator"
msgstr "管理员"
msgstr "管理员"
...
@@ -2191,7 +2198,7 @@ msgstr "二次验证"
...
@@ -2191,7 +2198,7 @@ msgstr "二次验证"
msgid "Public key"
msgid "Public key"
msgstr "ssh公钥"
msgstr "ssh公钥"
#: users/models/user.py:2
58
#: users/models/user.py:2
62
msgid "Administrator is the super user of system"
msgid "Administrator is the super user of system"
msgstr "Administrator是初始的超级管理员"
msgstr "Administrator是初始的超级管理员"
...
@@ -2293,7 +2300,7 @@ msgid "Setting"
...
@@ -2293,7 +2300,7 @@ msgid "Setting"
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:7
0
#: users/templates/users/user_list.html:16 users/views/user.py:7
2
msgid "Create user"
msgid "Create user"
msgstr "创建用户"
msgstr "创建用户"
...
@@ -2304,7 +2311,7 @@ msgstr "生成重置密码连接,通过邮件发送给用户"
...
@@ -2304,7 +2311,7 @@ msgstr "生成重置密码连接,通过邮件发送给用户"
#: users/templates/users/user_detail.html:19
#: users/templates/users/user_detail.html:19
#: users/templates/users/user_granted_asset.html:18
#: users/templates/users/user_granted_asset.html:18
#: users/templates/users/user_group_granted_asset.html:18
#: users/templates/users/user_group_granted_asset.html:18
#: users/views/user.py:1
52
#: users/views/user.py:1
49
msgid "User detail"
msgid "User detail"
msgstr "用户详情"
msgstr "用户详情"
...
@@ -2379,11 +2386,11 @@ msgstr "授权资产"
...
@@ -2379,11 +2386,11 @@ msgstr "授权资产"
msgid "Asset groups granted of "
msgid "Asset groups granted of "
msgstr "授权资产组"
msgstr "授权资产组"
#: users/templates/users/user_group_create_update.html:
45
#: users/templates/users/user_group_create_update.html:
31
msgid "Cancel"
msgid "Cancel"
msgstr "取消"
msgstr "取消"
#: users/templates/users/user_group_detail.html:22 users/views/group.py:
92
#: users/templates/users/user_group_detail.html:22 users/views/group.py:
80
msgid "User group detail"
msgid "User group detail"
msgstr "资产组详情"
msgstr "资产组详情"
...
@@ -2395,7 +2402,7 @@ msgstr "添加用户"
...
@@ -2395,7 +2402,7 @@ msgstr "添加用户"
msgid "Valid"
msgid "Valid"
msgstr "可用"
msgstr "可用"
#: users/templates/users/user_group_list.html:5 users/views/group.py:4
9
#: users/templates/users/user_group_list.html:5 users/views/group.py:4
5
msgid "Create user group"
msgid "Create user group"
msgstr "创建用户组"
msgstr "创建用户组"
...
@@ -2433,8 +2440,8 @@ msgstr "用户删除失败"
...
@@ -2433,8 +2440,8 @@ msgstr "用户删除失败"
msgid "OTP"
msgid "OTP"
msgstr ""
msgstr ""
#: users/templates/users/user_profile.html:100 users/views/user.py:1
81
#: users/templates/users/user_profile.html:100 users/views/user.py:1
78
#: users/views/user.py:23
3
#: users/views/user.py:23
0
msgid "User groups"
msgid "User groups"
msgstr "用户组"
msgstr "用户组"
...
@@ -2458,7 +2465,7 @@ msgstr "指纹"
...
@@ -2458,7 +2465,7 @@ msgstr "指纹"
msgid "Update public key"
msgid "Update public key"
msgstr "更新密钥"
msgstr "更新密钥"
#: users/templates/users/user_update.html:4 users/views/user.py:9
5
#: users/templates/users/user_update.html:4 users/views/user.py:9
2
msgid "Update user"
msgid "Update user"
msgstr "编辑用户"
msgstr "编辑用户"
...
@@ -2592,17 +2599,11 @@ msgstr "禁用或失效"
...
@@ -2592,17 +2599,11 @@ msgstr "禁用或失效"
msgid "Password or SSH public key invalid"
msgid "Password or SSH public key invalid"
msgstr "密码或秘钥不合法"
msgstr "密码或秘钥不合法"
#: users/views/group.py:
31
#: users/views/group.py:
29
msgid "User group list"
msgid "User group list"
msgstr "用户组列表"
msgstr "用户组列表"
#: users/views/group.py:43
#: users/views/group.py:63
#, fuzzy, python-brace-format
#| msgid "Create user <a href=\"{url}\">{name}</a> successfully."
msgid "User group <a href={url}> {name} </a> was created successfully"
msgstr "创建用户 <a href=\"{url}\">{name}</a> 成功"
#: users/views/group.py:75
msgid "Update user group"
msgid "Update user group"
msgstr "编辑用户组"
msgstr "编辑用户组"
...
@@ -2655,37 +2656,36 @@ msgstr "首次登陆"
...
@@ -2655,37 +2656,36 @@ msgstr "首次登陆"
msgid "Login log list"
msgid "Login log list"
msgstr "登录日志"
msgstr "登录日志"
#: users/views/user.py:5
6
#: users/views/user.py:5
8
msgid "User list"
msgid "User list"
msgstr "用户列表"
msgstr "用户列表"
#: users/views/user.py:66 users/views/user.py:335
#: users/views/user.py:102
#, python-brace-format
msgid "Create user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建用户 <a href=\"{url}\">{name}</a> 成功"
#: users/views/user.py:105
msgid "Bulk update user success"
msgid "Bulk update user success"
msgstr "批量更新用户成功"
msgstr "批量更新用户成功"
#: users/views/user.py:2
10
#: users/views/user.py:2
07
msgid "Invalid file."
msgid "Invalid file."
msgstr "文件不合法"
msgstr "文件不合法"
#: users/views/user.py:30
9
#: users/views/user.py:30
6
msgid "User granted assets"
msgid "User granted assets"
msgstr "用户授权资产"
msgstr "用户授权资产"
#: users/views/user.py:349
#: users/views/user.py:332
#, python-brace-format
msgid "Create user <a href=\"{url}\">{name}</a> successfully."
msgstr "创建用户 <a href=\"{url}\">{name}</a> 成功"
#: users/views/user.py:346
msgid "Profile setting"
msgid "Profile setting"
msgstr "个人信息设置"
msgstr "个人信息设置"
#: users/views/user.py:36
7
#: users/views/user.py:36
4
msgid "Password update"
msgid "Password update"
msgstr "密码更新"
msgstr "密码更新"
#: users/views/user.py:38
9
#: users/views/user.py:38
6
msgid "Public key update"
msgid "Public key update"
msgstr "秘钥更新"
msgstr "秘钥更新"
apps/perms/views.py
View file @
72a82c41
...
@@ -11,6 +11,7 @@ from django.contrib.messages.views import SuccessMessageMixin
...
@@ -11,6 +11,7 @@ from django.contrib.messages.views import SuccessMessageMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.contrib
import
messages
from
django.contrib
import
messages
from
common.const
import
create_success_msg
,
update_success_msg
from
.hands
import
AdminUserRequiredMixin
,
User
,
UserGroup
,
SystemUser
,
\
from
.hands
import
AdminUserRequiredMixin
,
User
,
UserGroup
,
SystemUser
,
\
Asset
,
AssetGroup
Asset
,
AssetGroup
from
.models
import
AssetPermission
from
.models
import
AssetPermission
...
@@ -31,46 +32,12 @@ class AssetPermissionListView(AdminUserRequiredMixin, ListView):
...
@@ -31,46 +32,12 @@ class AssetPermissionListView(AdminUserRequiredMixin, ListView):
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
class
MessageMixin
:
def
form_valid
(
self
,
form
):
response
=
super
()
.
form_valid
(
form
)
errors
=
self
.
object
.
check_system_user_in_assets
()
if
errors
:
message
=
self
.
get_warning_messages
(
errors
)
messages
.
warning
(
self
.
request
,
message
)
else
:
message
=
self
.
get_success_message
(
form
.
cleaned_data
)
messages
.
success
(
self
.
request
,
message
)
success_message
=
self
.
get_success_message
(
form
.
cleaned_data
)
if
success_message
:
messages
.
success
(
self
.
request
,
success_message
)
return
response
@staticmethod
def
get_warning_messages
(
errors
):
message
=
"<b><i class='fa fa-warning'></i>WARNING: System user "
\
"should in behind clusters, so that "
\
"system user cat auto push to the cluster assets:</b> <br>"
for
system_user
,
clusters
in
errors
.
items
():
message
+=
" >>> {}: {} "
.
format
(
system_user
.
name
,
", "
.
join
((
cluster
.
name
for
cluster
in
clusters
)))
return
message
def
get_success_message
(
self
,
cleaned_data
):
url
=
reverse_lazy
(
'perms:asset-permission-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
})
success_message
=
_
(
'Create asset permission <a href="{url}"> {name} </a> '
'successfully.'
.
format
(
url
=
url
,
name
=
self
.
object
.
name
))
return
success_message
class
AssetPermissionCreateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
CreateView
):
class
AssetPermissionCreateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
CreateView
):
model
=
AssetPermission
model
=
AssetPermission
form_class
=
AssetPermissionForm
form_class
=
AssetPermissionForm
template_name
=
'perms/asset_permission_create_update.html'
template_name
=
'perms/asset_permission_create_update.html'
success_url
=
reverse_lazy
(
'perms:asset-permission-list'
)
success_url
=
reverse_lazy
(
'perms:asset-permission-list'
)
warning
=
None
success_message
=
create_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -80,23 +47,13 @@ class AssetPermissionCreateView(AdminUserRequiredMixin, SuccessMessageMixin, Cre
...
@@ -80,23 +47,13 @@ class AssetPermissionCreateView(AdminUserRequiredMixin, SuccessMessageMixin, Cre
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
url
=
reverse_lazy
(
'perms:asset-permission-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
}
)
success_message
=
_
(
'Create asset permission <a href="{url}"> {name} </a> '
'success.'
.
format
(
url
=
url
,
name
=
self
.
object
.
name
)
)
return
success_message
class
AssetPermissionUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
class
AssetPermissionUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
AssetPermission
model
=
AssetPermission
form_class
=
AssetPermissionForm
form_class
=
AssetPermissionForm
template_name
=
'perms/asset_permission_create_update.html'
template_name
=
'perms/asset_permission_create_update.html'
success_url
=
reverse_lazy
(
"perms:asset-permission-list"
)
success_url
=
reverse_lazy
(
"perms:asset-permission-list"
)
success_message
=
update_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -106,17 +63,6 @@ class AssetPermissionUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, Upd
...
@@ -106,17 +63,6 @@ class AssetPermissionUpdateView(AdminUserRequiredMixin, SuccessMessageMixin, Upd
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
url
=
reverse_lazy
(
'perms:asset-permission-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
}
)
success_message
=
_
(
'Update asset permission <a href="{url}"> {name} </a> '
'success.'
.
format
(
url
=
url
,
name
=
self
.
object
.
name
)
)
return
success_message
class
AssetPermissionDetailView
(
AdminUserRequiredMixin
,
DetailView
):
class
AssetPermissionDetailView
(
AdminUserRequiredMixin
,
DetailView
):
template_name
=
'perms/asset_permission_detail.html'
template_name
=
'perms/asset_permission_detail.html'
...
...
apps/users/templates/users/user_group_create_update.html
View file @
72a82c41
...
@@ -25,20 +25,6 @@
...
@@ -25,20 +25,6 @@
{% csrf_token %}
{% csrf_token %}
{% bootstrap_field form.name layout="horizontal" %}
{% bootstrap_field form.name layout="horizontal" %}
{% bootstrap_field form.users layout="horizontal" %}
{% bootstrap_field form.users layout="horizontal" %}
{#
<div
class=
"form-group"
>
#}
{#
<label
for=
"users"
class=
"col-sm-2 control-label"
>
{% trans 'Users' %}
</label>
#}
{#
<div
class=
"col-sm-9"
>
#}
{#
<select
name=
"users"
id=
"id_users"
data-placeholder=
"{% trans 'Select User' %}"
class=
"select2 form-control m-b"
multiple
tabindex=
"2"
>
#}
{# {% for user in users %}#}
{# {% if user.id in group_users %}#}
{#
<option
value=
"{{ user.id }}"
selected
>
{{ user.name }}
</option>
#}
{# {% else %}#}
{#
<option
value=
"{{ user.id }}"
>
{{ user.name }}
</option>
#}
{# {% endif %}#}
{# {% endfor %}#}
{#
</select>
#}
{#
</div>
#}
{#
</div>
#}
{% bootstrap_field form.comment layout="horizontal" %}
{% bootstrap_field form.comment layout="horizontal" %}
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<div
class=
"col-sm-4 col-sm-offset-2"
>
<div
class=
"col-sm-4 col-sm-offset-2"
>
...
@@ -57,7 +43,9 @@
...
@@ -57,7 +43,9 @@
{% block custom_foot_js %}
{% block custom_foot_js %}
<script>
<script>
$
(
document
).
ready
(
function
()
{
$
(
document
).
ready
(
function
()
{
$
(
'.select2'
).
select2
();
$
(
'.select2'
).
select2
({
closeOnSelect
:
false
});
})
})
</script>
</script>
{% endblock %}
{% endblock %}
apps/users/views/group.py
View file @
72a82c41
...
@@ -2,17 +2,15 @@
...
@@ -2,17 +2,15 @@
from
__future__
import
unicode_literals
from
__future__
import
unicode_literals
from
django
import
forms
from
django
import
forms
from
django.shortcuts
import
reverse
,
redirect
from
django.utils.translation
import
ugettext
as
_
from
django.utils.translation
import
ugettext
as
_
from
django.urls
import
reverse_lazy
from
django.urls
import
reverse_lazy
from
django.views.generic
import
ListView
from
django.views.generic.base
import
TemplateView
from
django.views.generic.base
import
TemplateView
from
django.views.generic.edit
import
CreateView
,
UpdateView
,
FormMixin
from
django.views.generic.edit
import
CreateView
,
UpdateView
from
django.views.generic.detail
import
DetailView
,
SingleObjectMixin
from
django.views.generic.detail
import
DetailView
from
django.contrib.messages.views
import
SuccessMessageMixin
from
django.contrib.messages.views
import
SuccessMessageMixin
from
common.utils
import
get_logger
from
common.utils
import
get_logger
from
perms.models
import
AssetPermission
from
common.const
import
create_success_msg
,
update_success_msg
from
..models
import
User
,
UserGroup
from
..models
import
User
,
UserGroup
from
..utils
import
AdminUserRequiredMixin
from
..utils
import
AdminUserRequiredMixin
from
..
import
forms
from
..
import
forms
...
@@ -39,9 +37,7 @@ class UserGroupCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVie
...
@@ -39,9 +37,7 @@ class UserGroupCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVie
form_class
=
forms
.
UserGroupForm
form_class
=
forms
.
UserGroupForm
template_name
=
'users/user_group_create_update.html'
template_name
=
'users/user_group_create_update.html'
success_url
=
reverse_lazy
(
'users:user-group-list'
)
success_url
=
reverse_lazy
(
'users:user-group-list'
)
success_message
=
_
(
success_message
=
create_success_msg
'User group <a href={url}> {name} </a> was created successfully'
)
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
context
=
{
...
@@ -51,21 +47,13 @@ class UserGroupCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVie
...
@@ -51,21 +47,13 @@ class UserGroupCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateVie
kwargs
.
update
(
context
)
kwargs
.
update
(
context
)
return
super
()
.
get_context_data
(
**
kwargs
)
return
super
()
.
get_context_data
(
**
kwargs
)
def
get_success_message
(
self
,
cleaned_data
):
url
=
reverse_lazy
(
'users:user-group-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
id
}
)
return
self
.
success_message
.
format
(
url
=
url
,
name
=
self
.
object
.
name
)
class
UserGroupUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
class
UserGroupUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
model
=
UserGroup
model
=
UserGroup
form_class
=
forms
.
UserGroupForm
form_class
=
forms
.
UserGroupForm
template_name
=
'users/user_group_create_update.html'
template_name
=
'users/user_group_create_update.html'
success_url
=
reverse_lazy
(
'users:user-group-list'
)
success_url
=
reverse_lazy
(
'users:user-group-list'
)
success_message
=
update_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
users
=
User
.
objects
.
all
()
users
=
User
.
objects
.
all
()
...
...
apps/users/views/user.py
View file @
72a82c41
...
@@ -27,12 +27,14 @@ from django.views.generic.detail import DetailView, SingleObjectMixin
...
@@ -27,12 +27,14 @@ from django.views.generic.detail import DetailView, SingleObjectMixin
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
from
common.const
import
create_success_msg
,
update_success_msg
from
common.mixins
import
JSONResponseMixin
from
common.utils
import
get_logger
,
get_object_or_none
,
is_uuid
from
..
import
forms
from
..
import
forms
from
..models
import
User
,
UserGroup
from
..models
import
User
,
UserGroup
from
..utils
import
AdminUserRequiredMixin
from
..utils
import
AdminUserRequiredMixin
from
..signals
import
on_user_created
from
..signals
import
on_user_created
from
common.mixins
import
JSONResponseMixin
from
common.utils
import
get_logger
,
get_object_or_none
,
is_uuid
__all__
=
[
__all__
=
[
'UserListView'
,
'UserCreateView'
,
'UserDetailView'
,
'UserListView'
,
'UserCreateView'
,
'UserDetailView'
,
...
@@ -63,7 +65,7 @@ class UserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
...
@@ -63,7 +65,7 @@ class UserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
form_class
=
forms
.
UserCreateUpdateForm
form_class
=
forms
.
UserCreateUpdateForm
template_name
=
'users/user_create.html'
template_name
=
'users/user_create.html'
success_url
=
reverse_lazy
(
'users:user-list'
)
success_url
=
reverse_lazy
(
'users:user-list'
)
success_message
=
_
(
'Create user <a href="{url}">{name}</a> successfully.'
)
success_message
=
create_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
()
.
get_context_data
(
**
kwargs
)
context
=
super
()
.
get_context_data
(
**
kwargs
)
...
@@ -77,19 +79,14 @@ class UserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
...
@@ -77,19 +79,14 @@ class UserCreateView(AdminUserRequiredMixin, SuccessMessageMixin, CreateView):
on_user_created
.
send
(
self
.
__class__
,
user
=
user
)
on_user_created
.
send
(
self
.
__class__
,
user
=
user
)
return
super
()
.
form_valid
(
form
)
return
super
()
.
form_valid
(
form
)
def
get_success_message
(
self
,
cleaned_data
):
url
=
reverse_lazy
(
'users:user-detail'
,
kwargs
=
{
'pk'
:
self
.
object
.
pk
})
return
self
.
success_message
.
format
(
url
=
url
,
name
=
self
.
object
.
name
)
class
UserUpdateView
(
AdminUserRequiredMixin
,
UpdateView
):
class
UserUpdateView
(
AdminUserRequiredMixin
,
SuccessMessageMixin
,
UpdateView
):
model
=
User
model
=
User
form_class
=
forms
.
UserCreateUpdateForm
form_class
=
forms
.
UserCreateUpdateForm
template_name
=
'users/user_update.html'
template_name
=
'users/user_update.html'
context_object_name
=
'user_object'
context_object_name
=
'user_object'
success_url
=
reverse_lazy
(
'users:user-list'
)
success_url
=
reverse_lazy
(
'users:user-list'
)
success_message
=
update_success_msg
def
get_context_data
(
self
,
**
kwargs
):
def
get_context_data
(
self
,
**
kwargs
):
context
=
{
'app'
:
_
(
'Users'
),
'action'
:
_
(
'Update user'
)}
context
=
{
'app'
:
_
(
'Users'
),
'action'
:
_
(
'Update user'
)}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment