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
3da33a57
Commit
3da33a57
authored
Jan 07, 2017
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[Bugfix] 修改tab -> space, 删除system user的 as default
parent
dbdb8a58
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
282 additions
and
283 deletions
+282
-283
forms.py
apps/assets/forms.py
+281
-282
models.py
apps/assets/models.py
+1
-1
No files found.
apps/assets/forms.py
View file @
3da33a57
...
@@ -20,305 +20,305 @@ from common.utils import validate_ssh_private_key, ssh_pubkey_gen
...
@@ -20,305 +20,305 @@ from common.utils import validate_ssh_private_key, ssh_pubkey_gen
# 'groups': forms.SelectMultiple(attrs={'class': 'select2-groups', 'data-placeholder': _('Select asset groups')}),
# 'groups': forms.SelectMultiple(attrs={'class': 'select2-groups', 'data-placeholder': _('Select asset groups')}),
# 'system_user': forms.SelectMultiple(attrs={'class': 'select2-system-user', 'data-placeholder': _('Select asset system user')}),
# 'system_user': forms.SelectMultiple(attrs={'class': 'select2-system-user', 'data-placeholder': _('Select asset system user')}),
# 'admin_user': forms.SelectMultiple(attrs={'class': 'select2-admin-user', 'data-placeholder': _('Select asset admin user')}),
# 'admin_user': forms.SelectMultiple(attrs={'class': 'select2-admin-user', 'data-placeholder': _('Select asset admin user')}),
# }
# }
#
#
class
AssetCreateForm
(
forms
.
ModelForm
):
class
AssetCreateForm
(
forms
.
ModelForm
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
instance
=
kwargs
.
get
(
'instance'
,
None
)
instance
=
kwargs
.
get
(
'instance'
,
None
)
if
instance
:
if
instance
:
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'tags'
]
=
[
t
.
pk
for
t
in
kwargs
[
'instance'
]
.
tags
.
all
()]
initial
[
'tags'
]
=
[
t
.
pk
for
t
in
kwargs
[
'instance'
]
.
tags
.
all
()]
super
(
AssetCreateForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
AssetCreateForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
def
_save_m2m
(
self
):
super
(
AssetCreateForm
,
self
)
.
_save_m2m
()
super
(
AssetCreateForm
,
self
)
.
_save_m2m
()
tags
=
self
.
cleaned_data
[
'tags'
]
tags
=
self
.
cleaned_data
[
'tags'
]
self
.
instance
.
tags
.
clear
()
self
.
instance
.
tags
.
clear
()
self
.
instance
.
tags
.
add
(
*
tuple
(
tags
))
self
.
instance
.
tags
.
add
(
*
tuple
(
tags
))
def
clean
(
self
):
def
clean
(
self
):
clean_data
=
super
(
AssetCreateForm
,
self
)
.
clean
()
clean_data
=
super
(
AssetCreateForm
,
self
)
.
clean
()
ip
=
clean_data
.
get
(
'ip'
)
ip
=
clean_data
.
get
(
'ip'
)
port
=
clean_data
.
get
(
'port'
)
port
=
clean_data
.
get
(
'port'
)
query
=
Asset
.
objects
.
filter
(
ip
=
ip
,
port
=
port
)
query
=
Asset
.
objects
.
filter
(
ip
=
ip
,
port
=
port
)
if
query
:
if
query
:
raise
forms
.
ValidationError
(
'this asset has exists.'
)
raise
forms
.
ValidationError
(
'this asset has exists.'
)
class
Meta
:
class
Meta
:
model
=
Asset
model
=
Asset
tags
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Tag
.
objects
.
all
())
tags
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Tag
.
objects
.
all
())
fields
=
[
fields
=
[
'hostname'
,
'ip'
,
'port'
,
'type'
,
'comment'
,
'admin_user'
,
'system_users'
,
'idc'
,
'groups'
,
'hostname'
,
'ip'
,
'port'
,
'type'
,
'comment'
,
'admin_user'
,
'system_users'
,
'idc'
,
'groups'
,
'other_ip'
,
'remote_card_ip'
,
'mac_address'
,
'brand'
,
'cpu'
,
'memory'
,
'disk'
,
'os'
,
'cabinet_no'
,
'other_ip'
,
'remote_card_ip'
,
'mac_address'
,
'brand'
,
'cpu'
,
'memory'
,
'disk'
,
'os'
,
'cabinet_no'
,
'cabinet_pos'
,
'number'
,
'status'
,
'env'
,
'sn'
,
'tags'
,
'cabinet_pos'
,
'number'
,
'status'
,
'env'
,
'sn'
,
'tags'
,
]
]
widgets
=
{
widgets
=
{
'groups'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'groups'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset groups'
)}),
'data-placeholder'
:
_
(
'Select asset groups'
)}),
'tags'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'tags'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset tags'
)}),
'data-placeholder'
:
_
(
'Select asset tags'
)}),
'system_users'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'system_users'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset system users'
)}),
'data-placeholder'
:
_
(
'Select asset system users'
)}),
'admin_user'
:
forms
.
Select
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset admin user'
)}),
'admin_user'
:
forms
.
Select
(
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset admin user'
)}),
}
}
help_texts
=
{
help_texts
=
{
'hostname'
:
'* required'
,
'hostname'
:
'* required'
,
'ip'
:
'* required'
,
'ip'
:
'* required'
,
'system_users'
:
_
(
'System user will be granted for user to login assets (using ansible create automatic)'
),
'system_users'
:
_
(
'System user will be granted for user to login assets (using ansible create automatic)'
),
'admin_user'
:
_
(
'Admin user should be exist on asset already, And have sudo ALL permission'
),
'admin_user'
:
_
(
'Admin user should be exist on asset already, And have sudo ALL permission'
),
'tags'
:
'最多5个标签,单个标签最长8个汉字,按回车确认'
'tags'
:
'最多5个标签,单个标签最长8个汉字,按回车确认'
}
}
class
AssetGroupForm
(
forms
.
ModelForm
):
class
AssetGroupForm
(
forms
.
ModelForm
):
# See AdminUserForm comment same it
# See AdminUserForm comment same it
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
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
,
*
args
,
**
kwargs
):
if
kwargs
.
get
(
'instance'
,
None
):
if
kwargs
.
get
(
'instance'
,
None
):
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
super
(
AssetGroupForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
AssetGroupForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
def
_save_m2m
(
self
):
super
(
AssetGroupForm
,
self
)
.
_save_m2m
()
super
(
AssetGroupForm
,
self
)
.
_save_m2m
()
assets
=
self
.
cleaned_data
[
'assets'
]
assets
=
self
.
cleaned_data
[
'assets'
]
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
class
Meta
:
class
Meta
:
model
=
AssetGroup
model
=
AssetGroup
fields
=
[
fields
=
[
"name"
,
"comment"
,
"system_users"
,
"name"
,
"comment"
,
"system_users"
,
]
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{}),
'name'
:
forms
.
TextInput
(
attrs
=
{}),
'system_users'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2-system-user'
,
'data-placeholder'
:
_
(
'Select asset system user'
)}),
'system_users'
:
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2-system-user'
,
'data-placeholder'
:
_
(
'Select asset system user'
)}),
}
}
help_texts
=
{
help_texts
=
{
'name'
:
'* required'
,
'name'
:
'* required'
,
}
}
class
IDCForm
(
forms
.
ModelForm
):
class
IDCForm
(
forms
.
ModelForm
):
# See AdminUserForm comment same it
# See AdminUserForm comment same it
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
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
,
*
args
,
**
kwargs
):
if
kwargs
.
get
(
'instance'
):
if
kwargs
.
get
(
'instance'
):
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
super
(
IDCForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
IDCForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
def
_save_m2m
(
self
):
super
(
IDCForm
,
self
)
.
_save_m2m
()
super
(
IDCForm
,
self
)
.
_save_m2m
()
assets
=
self
.
cleaned_data
[
'assets'
]
assets
=
self
.
cleaned_data
[
'assets'
]
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
class
Meta
:
class
Meta
:
model
=
IDC
model
=
IDC
fields
=
[
'name'
,
"bandwidth"
,
"operator"
,
'contact'
,
'phone'
,
'address'
,
'intranet'
,
'extranet'
,
'comment'
]
fields
=
[
'name'
,
"bandwidth"
,
"operator"
,
'contact'
,
'phone'
,
'address'
,
'intranet'
,
'extranet'
,
'comment'
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'intranet'
:
forms
.
Textarea
(
'intranet'
:
forms
.
Textarea
(
attrs
=
{
'placeholder'
:
'IP段之间用逗号隔开,如:192.168.1.0/24,192.168.1.0/24'
}),
attrs
=
{
'placeholder'
:
'IP段之间用逗号隔开,如:192.168.1.0/24,192.168.1.0/24'
}),
'extranet'
:
forms
.
Textarea
(
'extranet'
:
forms
.
Textarea
(
attrs
=
{
'placeholder'
:
'IP段之间用逗号隔开,如:201.1.32.1/24,202.2.32.1/24'
})
attrs
=
{
'placeholder'
:
'IP段之间用逗号隔开,如:201.1.32.1/24,202.2.32.1/24'
})
}
}
class
AdminUserForm
(
forms
.
ModelForm
):
class
AdminUserForm
(
forms
.
ModelForm
):
# Admin user assets define, let user select, save it in form not in view
# Admin user assets define, let user select, save it in form not in view
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
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'
)})
)
)
# Form field name can not start with `_`, so redefine it,
# Form field name can not start with `_`, so redefine it,
password
=
forms
.
CharField
(
widget
=
forms
.
PasswordInput
,
max_length
=
100
,
min_length
=
8
,
strip
=
True
,
password
=
forms
.
CharField
(
widget
=
forms
.
PasswordInput
,
max_length
=
100
,
min_length
=
8
,
strip
=
True
,
help_text
=
_
(
'If also set private key, use that first'
),
required
=
False
)
help_text
=
_
(
'If also set private key, use that first'
),
required
=
False
)
# Need use upload private key file except paste private key content
# Need use upload private key file except paste private key content
private_key_file
=
forms
.
FileField
(
required
=
False
)
private_key_file
=
forms
.
FileField
(
required
=
False
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
# When update a admin user instance, initial it
# When update a admin user instance, initial it
if
kwargs
.
get
(
'instance'
):
if
kwargs
.
get
(
'instance'
):
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
super
(
AdminUserForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
AdminUserForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
def
_save_m2m
(
self
):
# Save assets relation with admin user
# Save assets relation with admin user
super
(
AdminUserForm
,
self
)
.
_save_m2m
()
super
(
AdminUserForm
,
self
)
.
_save_m2m
()
assets
=
self
.
cleaned_data
[
'assets'
]
assets
=
self
.
cleaned_data
[
'assets'
]
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
def
save
(
self
,
commit
=
True
):
def
save
(
self
,
commit
=
True
):
# Because we define custom field, so we need rewrite :method: `save`
# Because we define custom field, so we need rewrite :method: `save`
admin_user
=
super
(
AdminUserForm
,
self
)
.
save
(
commit
=
commit
)
admin_user
=
super
(
AdminUserForm
,
self
)
.
save
(
commit
=
commit
)
password
=
self
.
cleaned_data
[
'password'
]
password
=
self
.
cleaned_data
[
'password'
]
private_key
=
self
.
cleaned_data
[
'private_key_file'
]
private_key
=
self
.
cleaned_data
[
'private_key_file'
]
public_key
=
ssh_pubkey_gen
(
private_key
)
public_key
=
ssh_pubkey_gen
(
private_key
)
if
password
:
if
password
:
admin_user
.
password
=
password
admin_user
.
password
=
password
if
private_key
:
if
private_key
:
admin_user
.
private_key
=
private_key
admin_user
.
private_key
=
private_key
admin_user
.
public_key
=
public_key
admin_user
.
public_key
=
public_key
admin_user
.
save
()
admin_user
.
save
()
return
admin_user
return
admin_user
def
clean_private_key_file
(
self
):
def
clean_private_key_file
(
self
):
private_key_file
=
self
.
cleaned_data
[
'private_key_file'
]
private_key_file
=
self
.
cleaned_data
[
'private_key_file'
]
if
private_key_file
:
if
private_key_file
:
private_key
=
private_key_file
.
read
()
private_key
=
private_key_file
.
read
()
if
not
validate_ssh_private_key
(
private_key
):
if
not
validate_ssh_private_key
(
private_key
):
raise
forms
.
ValidationError
(
_
(
'Invalid private key'
))
raise
forms
.
ValidationError
(
_
(
'Invalid private key'
))
return
private_key
return
private_key
return
private_key_file
return
private_key_file
def
clean
(
self
):
def
clean
(
self
):
password
=
self
.
cleaned_data
[
'password'
]
password
=
self
.
cleaned_data
[
'password'
]
private_key_file
=
self
.
cleaned_data
.
get
(
'private_key_file'
,
''
)
private_key_file
=
self
.
cleaned_data
.
get
(
'private_key_file'
,
''
)
if
not
(
password
or
private_key_file
):
if
not
(
password
or
private_key_file
):
raise
forms
.
ValidationError
(
_
(
'Password and private key file must be input one'
))
raise
forms
.
ValidationError
(
_
(
'Password and private key file must be input one'
))
class
Meta
:
class
Meta
:
model
=
AdminUser
model
=
AdminUser
fields
=
[
'name'
,
'username'
,
'password'
,
'private_key_file'
,
'comment'
]
fields
=
[
'name'
,
'username'
,
'password'
,
'private_key_file'
,
'comment'
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'username'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Username'
)}),
'username'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Username'
)}),
}
}
help_texts
=
{
help_texts
=
{
'name'
:
'* required'
,
'name'
:
'* required'
,
'username'
:
'* required'
,
'username'
:
'* required'
,
}
}
class
SystemUserForm
(
forms
.
ModelForm
):
class
SystemUserForm
(
forms
.
ModelForm
):
# Admin user assets define, let user select, save it in form not in view
# Admin user assets define, let user select, save it in form not in view
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
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'
)})
)
)
asset_groups
=
forms
.
ModelMultipleChoiceField
(
queryset
=
AssetGroup
.
objects
.
all
(),
asset_groups
=
forms
.
ModelMultipleChoiceField
(
queryset
=
AssetGroup
.
objects
.
all
(),
label
=
_
(
'Asset group'
),
label
=
_
(
'Asset group'
),
required
=
False
,
required
=
False
,
widget
=
forms
.
SelectMultiple
(
widget
=
forms
.
SelectMultiple
(
attrs
=
{
'class'
:
'select2'
,
attrs
=
{
'class'
:
'select2'
,
'data-placeholder'
:
_
(
'Select asset groups'
)})
'data-placeholder'
:
_
(
'Select asset groups'
)})
)
)
auto_generate_key
=
forms
.
BooleanField
(
initial
=
True
)
auto_generate_key
=
forms
.
BooleanField
(
initial
=
True
)
# Form field name can not start with `_`, so redefine it,
# Form field name can not start with `_`, so redefine it,
password
=
forms
.
CharField
(
widget
=
forms
.
PasswordInput
,
max_length
=
100
,
min_length
=
8
,
strip
=
True
,
password
=
forms
.
CharField
(
widget
=
forms
.
PasswordInput
,
max_length
=
100
,
min_length
=
8
,
strip
=
True
,
help_text
=
_
(
'If also set private key, use that first'
),
required
=
False
)
help_text
=
_
(
'If also set private key, use that first'
),
required
=
False
)
# Need use upload private key file except paste private key content
# Need use upload private key file except paste private key content
private_key_file
=
forms
.
FileField
(
required
=
False
)
private_key_file
=
forms
.
FileField
(
required
=
False
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
def
__init__
(
self
,
*
args
,
**
kwargs
):
# When update a admin user instance, initial it
# When update a admin user instance, initial it
if
kwargs
.
get
(
'instance'
):
if
kwargs
.
get
(
'instance'
):
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
assets
.
all
()
initial
[
'asset_groups'
]
=
kwargs
[
'instance'
]
.
asset_groups
.
all
()
initial
[
'asset_groups'
]
=
kwargs
[
'instance'
]
.
asset_groups
.
all
()
super
(
SystemUserForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
SystemUserForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
def
_save_m2m
(
self
):
# Save assets relation with admin user
# Save assets relation with admin user
super
(
SystemUserForm
,
self
)
.
_save_m2m
()
super
(
SystemUserForm
,
self
)
.
_save_m2m
()
assets
=
self
.
cleaned_data
[
'assets'
]
assets
=
self
.
cleaned_data
[
'assets'
]
asset_groups
=
self
.
cleaned_data
[
'asset_groups'
]
asset_groups
=
self
.
cleaned_data
[
'asset_groups'
]
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
self
.
instance
.
asset_groups
.
clear
()
self
.
instance
.
asset_groups
.
clear
()
self
.
instance
.
asset_groups
.
add
(
*
tuple
(
asset_groups
))
self
.
instance
.
asset_groups
.
add
(
*
tuple
(
asset_groups
))
def
save
(
self
,
commit
=
True
):
def
save
(
self
,
commit
=
True
):
# Because we define custom field, so we need rewrite :method: `save`
# Because we define custom field, so we need rewrite :method: `save`
system_user
=
super
(
SystemUserForm
,
self
)
.
save
(
commit
=
commit
)
system_user
=
super
(
SystemUserForm
,
self
)
.
save
(
commit
=
commit
)
password
=
self
.
cleaned_data
[
'password'
]
password
=
self
.
cleaned_data
[
'password'
]
private_key_file
=
self
.
cleaned_data
[
'private_key_file'
]
private_key_file
=
self
.
cleaned_data
[
'private_key_file'
]
if
password
:
if
password
:
system_user
.
password
=
password
system_user
.
password
=
password
print
(
password
)
print
(
password
)
# Todo: Validate private key file, and generate public key
# Todo: Validate private key file, and generate public key
# Todo: Auto generate private key and public key
# Todo: Auto generate private key and public key
if
private_key_file
:
if
private_key_file
:
system_user
.
private_key
=
private_key_file
.
read
()
.
strip
()
system_user
.
private_key
=
private_key_file
.
read
()
.
strip
()
system_user
.
save
()
system_user
.
save
()
return
self
.
instance
return
self
.
instance
class
Meta
:
class
Meta
:
model
=
SystemUser
model
=
SystemUser
fields
=
[
fields
=
[
'name'
,
'username'
,
'protocol'
,
'auto_generate_key'
,
'password'
,
'private_key_file'
,
'as_default
'
,
'name'
,
'username'
,
'protocol'
,
'auto_generate_key'
,
'password'
,
'private_key_file
'
,
'auto_push'
,
'auto_update'
,
'sudo'
,
'comment'
,
'shell'
,
'home'
,
'uid'
,
'auto_push'
,
'auto_update'
,
'sudo'
,
'comment'
,
'shell'
,
'home'
,
'uid'
,
]
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'name'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Name'
)}),
'username'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Username'
)}),
'username'
:
forms
.
TextInput
(
attrs
=
{
'placeholder'
:
_
(
'Username'
)}),
}
}
help_texts
=
{
help_texts
=
{
'name'
:
'* required'
,
'name'
:
'* required'
,
'username'
:
'* required'
,
'username'
:
'* required'
,
'auth_push'
:
'Auto push system user to asset'
,
'auth_push'
:
'Auto push system user to asset'
,
'auth_update'
:
'Auto update system user ssh key'
,
'auth_update'
:
'Auto update system user ssh key'
,
}
}
class
AssetTagForm
(
forms
.
ModelForm
):
class
AssetTagForm
(
forms
.
ModelForm
):
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
assets
=
forms
.
ModelMultipleChoiceField
(
queryset
=
Asset
.
objects
.
all
(),
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
,
*
args
,
**
kwargs
):
if
kwargs
.
get
(
'instance'
,
None
):
if
kwargs
.
get
(
'instance'
,
None
):
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
=
kwargs
.
get
(
'initial'
,
{})
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
asset_set
.
all
()
initial
[
'assets'
]
=
kwargs
[
'instance'
]
.
asset_set
.
all
()
super
(
AssetTagForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
super
(
AssetTagForm
,
self
)
.
__init__
(
*
args
,
**
kwargs
)
def
_save_m2m
(
self
):
def
_save_m2m
(
self
):
assets
=
self
.
cleaned_data
[
'assets'
]
assets
=
self
.
cleaned_data
[
'assets'
]
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
clear
()
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
self
.
instance
.
assets
.
add
(
*
tuple
(
assets
))
super
(
AssetTagForm
,
self
)
.
_save_m2m
()
super
(
AssetTagForm
,
self
)
.
_save_m2m
()
class
Meta
:
class
Meta
:
model
=
Tag
model
=
Tag
fields
=
[
fields
=
[
"name"
,
"name"
,
]
]
widgets
=
{
widgets
=
{
'name'
:
forms
.
TextInput
(
attrs
=
{}),
'name'
:
forms
.
TextInput
(
attrs
=
{}),
}
}
help_texts
=
{
help_texts
=
{
'name'
:
'* required'
,
'name'
:
'* required'
,
}
}
class
FileForm
(
forms
.
Form
):
class
FileForm
(
forms
.
Form
):
file
=
forms
.
FileField
()
file
=
forms
.
FileField
()
\ No newline at end of file
apps/assets/models.py
View file @
3da33a57
...
@@ -144,7 +144,6 @@ class SystemUser(models.Model):
...
@@ -144,7 +144,6 @@ class SystemUser(models.Model):
protocol
=
models
.
CharField
(
max_length
=
16
,
choices
=
PROTOCOL_CHOICES
,
default
=
'ssh'
,
verbose_name
=
_
(
'Protocol'
))
protocol
=
models
.
CharField
(
max_length
=
16
,
choices
=
PROTOCOL_CHOICES
,
default
=
'ssh'
,
verbose_name
=
_
(
'Protocol'
))
_private_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH private key'
))
_private_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH private key'
))
_public_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH public key'
))
_public_key
=
models
.
CharField
(
max_length
=
4096
,
blank
=
True
,
verbose_name
=
_
(
'SSH public key'
))
as_default
=
models
.
BooleanField
(
default
=
False
,
verbose_name
=
_
(
'As default'
))
auto_push
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto push'
))
auto_push
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto push'
))
auto_update
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto update pass/key'
))
auto_update
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
_
(
'Auto update pass/key'
))
sudo
=
models
.
TextField
(
max_length
=
4096
,
default
=
'/user/bin/whoami'
,
verbose_name
=
_
(
'Sudo'
))
sudo
=
models
.
TextField
(
max_length
=
4096
,
default
=
'/user/bin/whoami'
,
verbose_name
=
_
(
'Sudo'
))
...
@@ -269,6 +268,7 @@ class AssetGroup(models.Model):
...
@@ -269,6 +268,7 @@ class AssetGroup(models.Model):
def
get_default_idc
():
def
get_default_idc
():
return
IDC
.
initial
()
return
IDC
.
initial
()
class
Tag
(
models
.
Model
):
class
Tag
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
64
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
name
=
models
.
CharField
(
max_length
=
64
,
unique
=
True
,
verbose_name
=
_
(
'Name'
))
created_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
_
(
'Create time'
))
created_time
=
models
.
DateTimeField
(
auto_now_add
=
True
,
verbose_name
=
_
(
'Create time'
))
...
...
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