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
46b1aca5
Commit
46b1aca5
authored
Oct 31, 2015
by
halcyon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
model
parent
8909386d
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
65 deletions
+44
-65
forms.py
jasset/forms.py
+15
-0
models.py
jasset/models.py
+19
-62
views.py
jasset/views.py
+2
-0
settings.py
jumpserver/settings.py
+3
-0
asset_add.html
templates/jasset/asset_add.html
+5
-3
No files found.
jasset/forms.py
0 → 100644
View file @
46b1aca5
# coding:utf-8
from
django
import
forms
from
jasset.models
import
IDC
,
Asset
,
AssetGroup
class
AssetForm
(
forms
.
ModelForm
):
class
Meta
:
model
=
Asset
fields
=
[
"ip"
,
"second_ip"
,
"hostname"
,
"port"
,
"group"
,
"username"
,
"password"
,
"use_default_auth"
,
"idc"
,
"mac"
,
"remote_ip"
,
"brand"
,
"cpu"
,
"memory"
,
"disk"
,
"system_type"
,
"system_version"
,
"cabinet"
,
"position"
,
"number"
,
"status"
,
"asset_type"
,
"env"
,
"sn"
,
"is_active"
,
"comment"
]
\ No newline at end of file
jasset/models.py
View file @
46b1aca5
# coding=utf-8
# coding: utf-8
# coding: utf-8
import
datetime
import
datetime
...
@@ -61,45 +60,22 @@ class AssetGroup(models.Model):
...
@@ -61,45 +60,22 @@ class AssetGroup(models.Model):
return
False
return
False
class
AssetType
(
models
.
Model
):
class
IDC
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
16
,
verbose_name
=
u"机器类型名"
)
name
=
models
.
CharField
(
max_length
=
32
,
verbose_name
=
u'机房名称'
)
comment
=
models
.
CharField
(
max_length
=
16
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"备注"
)
bandwidth
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机房带宽'
)
linkman
=
models
.
CharField
(
max_length
=
16
,
null
=
True
,
verbose_name
=
u'联系人'
)
def
__unicode__
(
self
):
phone
=
models
.
CharField
(
max_length
=
32
,
verbose_name
=
u'联系电话'
)
return
self
.
name
address
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"机房地址"
)
network
=
models
.
TextField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u"IP地址段"
)
class
Meta
:
date_added
=
models
.
DateField
(
auto_now
=
True
,
default
=
datetime
.
datetime
.
now
(),
null
=
True
)
verbose_name
=
u"机器类型"
operator
=
models
.
IntegerField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"运营商"
)
verbose_name_plural
=
verbose_name
comment
=
models
.
TextField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u"备注"
)
class
Project
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'项目名'
)
manager
=
models
.
CharField
(
max_length
=
16
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'项目负责人'
)
comment
=
models
.
TextField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u'项目说明'
)
def
__unicode__
(
self
):
return
self
.
name
class
Meta
:
verbose_name
=
u"项目"
verbose_name_plural
=
verbose_name
class
Service
(
models
.
Model
):
"""
服务,如nginx, haproxy, php....
"""
name
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
blank
=
True
,
verbose_name
=
u"服务名称"
)
port
=
models
.
IntegerField
(
null
=
True
,
blank
=
True
,
verbose_name
=
u"端口"
)
path
=
models
.
CharField
(
max_length
=
64
,
null
=
True
,
blank
=
True
,
verbose_name
=
u"程序路径"
)
comment
=
models
.
TextField
(
null
=
True
,
blank
=
True
,
verbose_name
=
u"备注"
)
def
__unicode__
(
self
):
def
__unicode__
(
self
):
return
self
.
name
return
self
.
name
class
Meta
:
class
Meta
:
verbose_name
=
u"
服务
"
verbose_name
=
u"
IDC机房
"
verbose_name_plural
=
verbose_name
verbose_name_plural
=
verbose_name
...
@@ -116,7 +92,13 @@ class Asset(models.Model):
...
@@ -116,7 +92,13 @@ class Asset(models.Model):
(
1
,
u"未使用"
),
(
1
,
u"未使用"
),
(
2
,
u"报废"
)
(
2
,
u"报废"
)
)
)
ip
=
models
.
IPAddressField
(
unique
=
True
,
verbose_name
=
u"IP1"
)
ASSET_TYPE
=
(
(
0
,
u"服务器"
),
(
2
,
u"网络设备"
),
(
3
,
u"其他"
)
)
ip
=
models
.
IPAddressField
(
unique
=
True
,
verbose_name
=
u"主机IP"
)
second_ip
=
models
.
IPAddressField
(
unique
=
True
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"IP2"
)
second_ip
=
models
.
IPAddressField
(
unique
=
True
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"IP2"
)
hostname
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"主机名"
)
hostname
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"主机名"
)
port
=
models
.
IntegerField
(
max_length
=
6
,
verbose_name
=
u"端口号"
)
port
=
models
.
IntegerField
(
max_length
=
6
,
verbose_name
=
u"端口号"
)
...
@@ -133,19 +115,13 @@ class Asset(models.Model):
...
@@ -133,19 +115,13 @@ class Asset(models.Model):
disk
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'硬盘'
)
disk
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'硬盘'
)
system_type
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"系统类型"
)
system_type
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"系统类型"
)
system_version
=
models
.
CharField
(
max_length
=
8
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"版本号"
)
system_version
=
models
.
CharField
(
max_length
=
8
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"版本号"
)
guarantee_date
=
models
.
DateField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u'保修时间'
)
cabinet
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机柜号'
)
cabinet
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机柜号'
)
position
=
models
.
IntegerField
(
max_length
=
2
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机器位置'
)
position
=
models
.
IntegerField
(
max_length
=
2
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机器位置'
)
number
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'资产编号'
)
number
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'资产编号'
)
project
=
models
.
ManyToManyField
(
Project
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'所属项目'
)
service
=
models
.
ManyToManyField
(
Service
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'运行服务'
)
status
=
models
.
IntegerField
(
max_length
=
2
,
choices
=
SERVER_STATUS
,
default
=
1
,
verbose_name
=
u"机器状态"
)
status
=
models
.
IntegerField
(
max_length
=
2
,
choices
=
SERVER_STATUS
,
default
=
1
,
verbose_name
=
u"机器状态"
)
parent
=
models
.
ForeignKey
(
"self"
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"虚拟机父主机"
)
asset_type
=
models
.
IntegerField
(
max_length
=
2
,
choices
=
ASSET_TYPE
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"主机类型"
)
type
=
models
.
ManyToManyField
(
AssetType
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"主机类型"
)
service_code
=
models
.
CharField
(
max_length
=
16
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"快速服务编码"
)
env
=
models
.
CharField
(
max_length
=
32
,
choices
=
ENVIRONMENT
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"运行环境"
)
env
=
models
.
CharField
(
max_length
=
32
,
choices
=
ENVIRONMENT
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"运行环境"
)
sn
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"SN编号"
)
sn
=
models
.
CharField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"SN编号"
)
switch_port
=
models
.
CharField
(
max_length
=
12
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"交换机端口号"
)
date_added
=
models
.
DateTimeField
(
auto_now
=
True
,
default
=
datetime
.
datetime
.
now
(),
null
=
True
)
date_added
=
models
.
DateTimeField
(
auto_now
=
True
,
default
=
datetime
.
datetime
.
now
(),
null
=
True
)
is_active
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
u"是否激活"
)
is_active
=
models
.
BooleanField
(
default
=
True
,
verbose_name
=
u"是否激活"
)
comment
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"备注"
)
comment
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"备注"
)
...
@@ -170,25 +146,6 @@ class Asset(models.Model):
...
@@ -170,25 +146,6 @@ class Asset(models.Model):
return
user_permed_list
return
user_permed_list
class
IDC
(
models
.
Model
):
name
=
models
.
CharField
(
max_length
=
64
,
verbose_name
=
u'机房名称'
)
bandwidth
=
models
.
CharField
(
max_length
=
64
,
blank
=
True
,
null
=
True
,
verbose_name
=
u'机房带宽'
)
linkman
=
models
.
CharField
(
max_length
=
32
,
null
=
True
,
verbose_name
=
u'联系人'
)
phone
=
models
.
CharField
(
max_length
=
32
,
verbose_name
=
u'联系电话'
)
address
=
models
.
CharField
(
max_length
=
128
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"机房地址"
)
network
=
models
.
TextField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u"IP地址段"
)
create_time
=
models
.
DateField
(
auto_now
=
True
)
operator
=
models
.
IntegerField
(
max_length
=
32
,
blank
=
True
,
null
=
True
,
verbose_name
=
u"运营商"
)
comment
=
models
.
TextField
(
blank
=
True
,
null
=
True
,
verbose_name
=
u"备注"
)
def
__unicode__
(
self
):
return
self
.
name
class
Meta
:
verbose_name
=
u"IDC机房"
verbose_name_plural
=
verbose_name
class
AssetAlias
(
models
.
Model
):
class
AssetAlias
(
models
.
Model
):
user
=
models
.
ForeignKey
(
User
)
user
=
models
.
ForeignKey
(
User
)
asset
=
models
.
ForeignKey
(
Asset
)
asset
=
models
.
ForeignKey
(
Asset
)
...
...
jasset/views.py
View file @
46b1aca5
...
@@ -8,6 +8,7 @@ from django.shortcuts import get_object_or_404
...
@@ -8,6 +8,7 @@ from django.shortcuts import get_object_or_404
from
jasset.asset_api
import
*
from
jasset.asset_api
import
*
from
jumpserver.api
import
*
from
jumpserver.api
import
*
from
jasset.forms
import
AssetForm
@require_role
(
'admin'
)
@require_role
(
'admin'
)
...
@@ -85,6 +86,7 @@ def asset_add(request):
...
@@ -85,6 +86,7 @@ def asset_add(request):
"""
"""
header_title
,
path1
,
path2
=
u'添加资产'
,
u'资产管理'
,
u'添加资产'
header_title
,
path1
,
path2
=
u'添加资产'
,
u'资产管理'
,
u'添加资产'
asset_group_all
=
AssetGroup
.
objects
.
all
()
asset_group_all
=
AssetGroup
.
objects
.
all
()
af
=
AssetForm
()
if
request
.
method
==
'POST'
:
if
request
.
method
==
'POST'
:
ip
=
request
.
POST
.
get
(
'ip'
)
ip
=
request
.
POST
.
get
(
'ip'
)
port
=
request
.
POST
.
get
(
'port'
)
port
=
request
.
POST
.
get
(
'port'
)
...
...
jumpserver/settings.py
View file @
46b1aca5
...
@@ -54,6 +54,7 @@ INSTALLED_APPS = (
...
@@ -54,6 +54,7 @@ INSTALLED_APPS = (
'django.contrib.messages'
,
'django.contrib.messages'
,
'django.contrib.staticfiles'
,
'django.contrib.staticfiles'
,
'django.contrib.humanize'
,
'django.contrib.humanize'
,
"bootstrapform"
,
'jumpserver'
,
'jumpserver'
,
'juser'
,
'juser'
,
'jasset'
,
'jasset'
,
...
@@ -129,4 +130,6 @@ USE_TZ = False
...
@@ -129,4 +130,6 @@ USE_TZ = False
STATIC_URL
=
'/static/'
STATIC_URL
=
'/static/'
BOOTSTRAP_COLUMN_COUNT
=
10
templates/jasset/asset_add.html
View file @
46b1aca5
{% extends 'base.html' %}
{% extends 'base.html' %}
{% load mytags %}
{% load mytags %}
{% load bootstrap %}
{% block content %}
{% block content %}
{% include 'nav_cat_bar.html' %}
{% include 'nav_cat_bar.html' %}
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
...
@@ -39,9 +40,10 @@
...
@@ -39,9 +40,10 @@
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
<div
class=
"alert alert-success text-center"
>
{{ msg }}
</div>
{% endif %}
{% endif %}
<form
id=
"assetForm"
method=
"post"
class=
"form-horizontal"
>
<form
id=
"assetForm"
method=
"post"
class=
"form-horizontal"
>
<div
class=
"form-group"
><label
class=
"col-sm-2 control-label"
>
IP地址
<span
class=
"red-fonts"
>
*
</span>
</label>
<!--<div class="form-group"><label class="col-sm-2 control-label"> IP地址<span class="red-fonts">*</span> </label>-->
<div
class=
"col-sm-8"
><input
type=
"text"
name=
"ip"
placeholder=
"IP"
class=
"form-control"
></div>
<!--<div class="col-sm-8"><input type="text" name="ip" placeholder="IP" class="form-control"></div>-->
</div>
<!--</div>-->
{{ af.ip|bootstrap_horizontal }}
<div
class=
"hr-line-dashed"
></div>
<div
class=
"hr-line-dashed"
></div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
...
...
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