mirror of https://github.com/jumpserver/jumpserver
asset add html
parent
fa07f4ee8a
commit
b531d9eeb2
|
@ -2,6 +2,7 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
from .models import IDC, Asset, AssetGroup
|
from .models import IDC, Asset, AssetGroup
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class AssetForm(forms.ModelForm):
|
class AssetForm(forms.ModelForm):
|
||||||
|
@ -15,6 +16,10 @@ class AssetForm(forms.ModelForm):
|
||||||
"number", "status", "type", "env", "sn", "is_active", "comment"
|
"number", "status", "type", "env", "sn", "is_active", "comment"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
widgets = {
|
||||||
|
'groups': forms.SelectMultiple(attrs={'class': 'select2', 'data-placeholder': _('Join assetgroups')}),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class AssetGroupForm(forms.ModelForm):
|
class AssetGroupForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -114,12 +114,12 @@ class Asset(models.Model):
|
||||||
cabinet_no = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Cabinet number'))
|
cabinet_no = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Cabinet number'))
|
||||||
cabinet_pos = models.IntegerField(null=True, blank=True, verbose_name=_('Cabinet position'))
|
cabinet_pos = models.IntegerField(null=True, blank=True, verbose_name=_('Cabinet position'))
|
||||||
number = models.CharField(max_length=32, null=True, blank=True, unique=True, verbose_name=_('Asset number'))
|
number = models.CharField(max_length=32, null=True, blank=True, unique=True, verbose_name=_('Asset number'))
|
||||||
status = models.ManyToManyField(AssetExtend, null=True, blank=True,
|
status = models.ForeignKey(AssetExtend, related_name="asset_extend_status", null=True,
|
||||||
related_name="asset_status_extend", verbose_name=_('Asset status'))
|
blank=True, verbose_name=_('Asset status'))
|
||||||
type = models.ManyToManyField(AssetExtend, null=True, blank=True,
|
type = models.ForeignKey(AssetExtend, related_name="asset_extend_type", null=True,
|
||||||
related_name="asset_type_extend", verbose_name=_('Asset type'))
|
blank=True, verbose_name=_('Asset type'))
|
||||||
env = models.ManyToManyField(AssetExtend, null=True, blank=True,
|
env = models.ForeignKey(AssetExtend, related_name="asset_extend_env", null=True,
|
||||||
related_name="asset_env_extend", verbose_name=_('Asset environment'))
|
blank=True, verbose_name=_('Asset environment'))
|
||||||
sn = models.CharField(max_length=128, null=True, blank=True, unique=True, verbose_name=_('Serial number'))
|
sn = models.CharField(max_length=128, null=True, blank=True, unique=True, verbose_name=_('Serial number'))
|
||||||
created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by'))
|
created_by = models.CharField(max_length=32, null=True, blank=True, verbose_name=_('Created by'))
|
||||||
is_active = models.BooleanField(default=True, verbose_name=_('Is active'))
|
is_active = models.BooleanField(default=True, verbose_name=_('Is active'))
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
{% load static %}
|
||||||
{% load bootstrap %}
|
{% load bootstrap %}
|
||||||
|
{% block custom_head_css_js %}
|
||||||
|
<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 %}
|
{% block content %}
|
||||||
<div class="wrapper wrapper-content animated fadeInRight">
|
<div class="wrapper wrapper-content animated fadeInRight">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -40,12 +45,14 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group" id="id_type">
|
{# <div class="form-group" id="id_type">#}
|
||||||
<label class="col-sm-2 control-label">资产类型</label>
|
{# <label class="col-sm-2 control-label">资产类型</label>#}
|
||||||
<div class="col-sm-9">
|
{# <div class="col-sm-9">#}
|
||||||
<input type="text" placeholder="" name="type" class="form-control">
|
{# <input type="text" placeholder="" name="type" class="form-control">#}
|
||||||
</div>
|
{# </div>#}
|
||||||
</div>
|
{# </div>#}
|
||||||
|
|
||||||
|
{{ form.type|bootstrap_horizontal }}
|
||||||
|
|
||||||
{{ form.comment|bootstrap_horizontal }}
|
{{ form.comment|bootstrap_horizontal }}
|
||||||
|
|
||||||
|
@ -79,7 +86,7 @@
|
||||||
<h3>所属</h3>
|
<h3>所属</h3>
|
||||||
{{ form.idc|bootstrap_horizontal }}
|
{{ form.idc|bootstrap_horizontal }}
|
||||||
|
|
||||||
{{ form.group|bootstrap_horizontal }}
|
{{ form.groups|bootstrap_horizontal }}
|
||||||
|
|
||||||
<div class="hr-line-dashed"></div>
|
<div class="hr-line-dashed"></div>
|
||||||
<h3>标签</h3>
|
<h3>标签</h3>
|
||||||
|
@ -103,85 +110,10 @@
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block self_footer_js %}
|
{% block custom_foot_js %}
|
||||||
{#<script>#}
|
<script>
|
||||||
{# $('document').ready(function(){#}
|
$(document).ready(function () {
|
||||||
{# var check_default = "{{ default_setting.name }}";#}
|
$('.select2').select2();
|
||||||
{# console.log(check_default);#}
|
})
|
||||||
{# if (check_default != 'default'){#}
|
</script>
|
||||||
{# $('#id_use_default_auth').attr('disabled', true);#}
|
|
||||||
{# $('#id_use_default_auth').attr('checked', false);#}
|
|
||||||
{# $('#admin_account').css('display', 'block');#}
|
|
||||||
{# } else {#}
|
|
||||||
{# $('#id_use_default_auth').click(function(){#}
|
|
||||||
{# if ($(this).is(':checked')){#}
|
|
||||||
{# $('#admin_account').css('display', 'none');#}
|
|
||||||
{# }#}
|
|
||||||
{# else {#}
|
|
||||||
{# $('#admin_account').css('display', 'block');#}
|
|
||||||
{# }#}
|
|
||||||
{# })#}
|
|
||||||
{# }#}
|
|
||||||
{##}
|
|
||||||
{# });#}
|
|
||||||
{##}
|
|
||||||
{# var required_fields = ["id_ip", "id_hostname", "id_port"];#}
|
|
||||||
{# required_fields.forEach(function(field) {#}
|
|
||||||
{# $('label[for="' + field + '"]').parent().addClass("required");#}
|
|
||||||
{# });#}
|
|
||||||
{##}
|
|
||||||
{# $('#assetForm').validator({#}
|
|
||||||
{# timely: 2,#}
|
|
||||||
{# theme: "yellow_right_effect",#}
|
|
||||||
{# rules: {#}
|
|
||||||
{# check_ip: [/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/, 'ip地址不正确'],#}
|
|
||||||
{# check_port: [/^\d{1,5}$/, '端口号不正确'],#}
|
|
||||||
{# use_default_auth: function() {#}
|
|
||||||
{# var str1 = $("#id_use_default_auth").is(":checked");#}
|
|
||||||
{# if (str1 == true){#}
|
|
||||||
{# var decide = false;#}
|
|
||||||
{# } else {#}
|
|
||||||
{# var decide = true;#}
|
|
||||||
{# }#}
|
|
||||||
{# return decide}#}
|
|
||||||
{# },#}
|
|
||||||
{# fields: {#}
|
|
||||||
{# "ip": {#}
|
|
||||||
{# rule: "check_ip;",#}
|
|
||||||
{# tip: "输入IP",#}
|
|
||||||
{# ok: "",#}
|
|
||||||
{# msg: {required: "必须填写!"}#}
|
|
||||||
{# },#}
|
|
||||||
{# "hostname": {#}
|
|
||||||
{# rule: "required;length[0~53]",#}
|
|
||||||
{# tip: "填写主机名",#}
|
|
||||||
{# ok: "",#}
|
|
||||||
{# msg: {required: "必须填写!"}#}
|
|
||||||
{# },#}
|
|
||||||
{# "port": {#}
|
|
||||||
{# rule: "required",#}
|
|
||||||
{# tip: "输入端口号",#}
|
|
||||||
{# ok: "",#}
|
|
||||||
{# msg: {required: "必须填写!"}#}
|
|
||||||
{# },#}
|
|
||||||
{# "username": {#}
|
|
||||||
{# rule: "required(use_default_auth)",#}
|
|
||||||
{# tip: "输入用户名",#}
|
|
||||||
{# ok: "",#}
|
|
||||||
{# msg: {required: "必须填写!"}#}
|
|
||||||
{# },#}
|
|
||||||
{# "password": {#}
|
|
||||||
{# rule: "required(use_default_auth);length[0~64]",#}
|
|
||||||
{# tip: "输入密码",#}
|
|
||||||
{# ok: "",#}
|
|
||||||
{# msg: {required: "必须填写!"}#}
|
|
||||||
{# }#}
|
|
||||||
{# },#}
|
|
||||||
{# valid: function(form) {#}
|
|
||||||
{# form.submit();#}
|
|
||||||
{# }#}
|
|
||||||
{# });#}
|
|
||||||
{##}
|
|
||||||
{#</script>#}
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -1,10 +1,8 @@
|
||||||
# coding:utf-8
|
# coding:utf-8
|
||||||
from django.conf.urls import url, include
|
from django.conf.urls import url, include
|
||||||
from .views import *
|
|
||||||
# from .api import (
|
# from .api import (
|
||||||
# AssetGroupViewSet, AssetViewSet, IDCViewSet
|
# AssetGroupViewSet, AssetViewSet, IDCViewSet
|
||||||
# )
|
# )
|
||||||
from django.conf.urls import url,include
|
|
||||||
import views
|
import views
|
||||||
# from rest_framework import routers
|
# from rest_framework import routers
|
||||||
# router = routers.DefaultRouter()
|
# router = routers.DefaultRouter()
|
||||||
|
@ -14,18 +12,16 @@ import views
|
||||||
app_name = 'assets'
|
app_name = 'assets'
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^$', AssetListView.as_view(), name='asset-list'),
|
# url(r'^$', views.AssetListView.as_view(), name='asset-index'),
|
||||||
url(r'^(?P<pk>[0-9]+)/delete/$', AssetDeleteView.as_view(), name='asset-delete'),
|
# url(r'^asset', views.AssetListView.as_view(), name='asset-list'),
|
||||||
url(r'^(?P<pk>[0-9]+)/detail/$', AssetDetailView.as_view(), name='asset-detail'),
|
|
||||||
url(r'^asset', views.AssetListView.as_view(), name='asset-list'),
|
|
||||||
url(r'^asset/add$', views.AssetAddView.as_view(), name='asset-add'),
|
url(r'^asset/add$', views.AssetAddView.as_view(), name='asset-add'),
|
||||||
url(r'^asset/(?P<pk>[0-9]+)$', views.AssetDetailView.as_view(), name='asset-detail'),
|
url(r'^asset/(?P<pk>[0-9]+)$', views.AssetDetailView.as_view(), name='asset-detail'),
|
||||||
url(r'^asset/(?P<pk>[0-9]+)$/edit', views.AssetEditView.as_view(), name='asset-edit'),
|
url(r'^asset/(?P<pk>[0-9]+)$/edit', views.AssetEditView.as_view(), name='asset-edit'),
|
||||||
url(r'^asset/(?P<pk>[0-9]+)/delete$', views.AssetDeleteView.as_view(), name='asset-delete'),
|
url(r'^asset/(?P<pk>[0-9]+)/delete$', views.AssetDeleteView.as_view(), name='asset-delete'),
|
||||||
url(r'^asset-group', views.AssetGroupListView.as_view(), name='assetgroup-list'),
|
url(r'^asset-group', views.AssetGroupListView.as_view(), name='asset-group-list'),
|
||||||
url(r'^asset-group/add$', views.AssetAddView.as_view(), name='asset-add'),
|
url(r'^asset-group/add$', views.AssetGroupAddView.as_view(), name='asset-group-add'),
|
||||||
url(r'^asset-group/(?P<pk>[0-9]+)$', views.AssetDetailView.as_view(), name='asset-detail'),
|
url(r'^asset-group/(?P<pk>[0-9]+)$', views.AssetDetailView.as_view(), name='asset-group-detail'),
|
||||||
url(r'^asset-group/(?P<pk>[0-9]+)$/edit', views.AssetEditView.as_view(), name='asset-edit'),
|
url(r'^asset-group/(?P<pk>[0-9]+)$/edit', views.AssetEditView.as_view(), name='asset-group-edit'),
|
||||||
url(r'^asset-group/(?P<pk>[0-9]+)/delete$', views.AssetDeleteView.as_view(), name='asset-delete'),
|
url(r'^asset-group/(?P<pk>[0-9]+)/delete$', views.AssetDeleteView.as_view(), name='asset-group-delete'),
|
||||||
# url(r'^api/v1.0/', include(router.urls)),
|
# url(r'^api/v1.0/', include(router.urls)),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue