Commit d2e98940 authored by 江世峰's avatar 江世峰

update assets-group

parent 22089282
# ~*~ coding: utf-8 ~*~
from rest_framework import serializers
from rest_framework import viewsets, serializers
from rest_framework import viewsets, serializers,generics
from .models import AssetGroup, Asset, IDC, AssetExtend
......@@ -45,9 +44,11 @@ class AssetViewSet(viewsets.ModelViewSet):
serializer_class = AssetSerializer
class IDCViewSet(viewsets.ModelViewSet):
class IDCViewSet(viewsets.ReadOnlyModelViewSet):
"""
API endpoint that allows IDC to be viewed or edited.
"""
queryset = IDC.objects.all()
serializer_class = IDCSerializer
\ No newline at end of file
serializer_class = IDCSerializer
......@@ -91,7 +91,7 @@ class AssetGroupForm(forms.ModelForm):
class Meta:
model = AssetGroup
fields = [
"name", "comment","system_users"
"name", "comment","system_users",
]
widgets = {
'name' : forms.TextInput(attrs={}),
......
......@@ -37,18 +37,16 @@
{{ form.name|bootstrap_horizontal }}
{{ form.comment|bootstrap_horizontal }}
<div class="hr-line-dashed"></div>
<h3 class="widget-head-color-box">资产</h3>
<div class="form-group">
<label for="assets" class="col-sm-2 control-label">资产</label>
<div class="col-sm-9">
<select name="assets" id="assets" data-placeholder="选择资产" class="select2 form-control m-b" multiple tabindex="2">
{% for asset in assets %}
<option value="{{ asset.id }}">{{ asset.hostname }}</option>
{% endfor %}
</select>
</div>
</div>
<!--{{ form.name|bootstrap_horizontal }}-->
<h3 class="widget-head-color-box">资产数量</h3>
<div class="form-group">
<label for="assets" class="col-sm-2 control-label">已有</label>
<div class="col-sm-9" id="div1">
<button type="button" class="btn btn-info btn-rounded" id="add_asset">
0
</button>
<!--<input type="text" value="" name="id_list" id="id_list"/>-->
</div>
</div>
<div class="hr-line-dashed"></div>
<h3 class="widget-head-color-box">资产用户</h3>
{{ form.system_users|bootstrap_horizontal }}
......@@ -56,6 +54,7 @@
<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>
......@@ -68,13 +67,64 @@
</div>
</div>
</div>
<!-- 模态框(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 %}
{% block custom_foot_js %}
<script>
$(document).ready(function () {
$('.select2').select2();
$('.select2-system-user').select2();
})
</script>
<script type="text/javascript">
$(function(){
$("#id_list").val("");
});
$(document).ready(function () {
$('.select2').select2();
$('.select2-system-user').select2();
})
$('#add_asset').on('click',function(){
//$('#box2').load("{% url 'assets:asset-modal-list' %}");
$('#modal').modal('show');
});
$('#modal').modal({
show:false,
remote:"{% url 'assets:asset-modal-list' %}",
});
$('#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('当远程数据加载完毕后,再触发;')
});
$('#save-btn').on('click',function(){
alert('点击保存按钮时触发;')
$('#modal').modal('hide');
});
</script>
{% endblock %}
\ No newline at end of file
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">分配/回收资产</h4>
</div>
<div class="modal-body">
<table class="table table-hover">
<thead>
<tr>
<th class="text-center">
<input type="checkbox" id="check_all" onclick="checkAll('check_all', 'checked')">
</th>
<th>资产名称</th>
<th>IP</th>
<th>硬件类型</th>
<th>资产组</th>
<th>部门</th>
</tr>
</thead>
<tbody>
{% for asset in asset_modal_list %}
<tr>
<td class="text-center">
<input type="checkbox" name="checked" value="{{ asset.id }}">
</td>
<td>{{ asset.hostname }}</td>
<td>{{ asset.ip }}</td>
<td>虚拟机</td>
<td>网络设备</td>
<td>微信事业部</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" id="close-btn">
关闭
</button>
<button type="button" class="btn btn-primary" id="save-btn">
保存
</button>
</div>
<script type="text/javascript">
$('#close-btn').on('click',function(){
//alert('点击关闭按钮时触发;')
$('#modal').modal('hide');
});
$('#save-btn').on('click',function(){
// alert('点击保存按钮时触发2;')
var box = $("input[name='checked']:checked");
var size=box.length;
$("#add_asset").text(size);
var ids=[];
$("#div1").find("input").remove();
for(var i=0;i<box.length;i++){
var value = $(box[i]).val();
$("#div1").append("<input type='hidden' name='assets' value='"+value+"'>");
}
$('#modal').modal('hide');
});
</script>
......@@ -9,13 +9,10 @@
<th class="text-center">
<input type="checkbox" id="check_all" onclick="checkAll('check_all', 'checked')">
</th>
{# <th class="text-center">{% trans 'ID' %}</th>#}
<th class="text-center"><a href="{% url 'assets:idc-list' %}?sort=name">{% trans 'Name' %}</a></th>
<th class="text-center">{% trans 'Asset num' %}</th>
{# <th class="text-center">{% trans 'Bandwidth' %}</th>#}
<th class="text-center">{% trans 'Contact' %}</th>
<th class="text-center">{% trans 'Phone' %}</th>
{# <th class="text-center">{% trans 'Address' %}</th>#}
<th class="text-center">{% trans 'operation' %}</th>
{% endblock %}
......
# coding:utf-8
from django.conf.urls import url, include
import views
import api
# from .api import (
# AssetGroupViewSet, AssetViewSet, IDCViewSet
# )
......@@ -19,6 +20,7 @@ urlpatterns = [
url(r'^asset/(?P<pk>[0-9]+)$', views.AssetDetailView.as_view(), name='asset-detail'),
url(r'^asset/(?P<pk>[0-9]+)/update', views.AssetUpdateView.as_view(), name='asset-update'),
url(r'^asset/(?P<pk>[0-9]+)/delete$', views.AssetDeleteView.as_view(), name='asset-delete'),
url(r'^asset-modal$', views.AssetModalListView.as_view(), name='asset-modal-list'),
# Resource asset group url
url(r'^asset-group$', views.AssetGroupListView.as_view(), name='asset-group-list'),
......@@ -50,5 +52,13 @@ urlpatterns = [
url(r'^system-user/(?P<pk>[0-9]+)/asset$', views.SystemUserAssetView.as_view(), name='system-user-asset'),
# url(r'^system-user/(?P<pk>[0-9]+)/asset-group$', views.SystemUserAssetGroupView.as_view(),
# name='system-user-asset-group'),
# url(r'^api/v1.0/', include(router.urls)),
]
urlpatterns += [
#json
url(r'^v1/assets/$', api.AssetViewSet.as_view({'get':'list'}), name='assets-list-api'),
url(r'^v1/idc/$', api.IDCViewSet.as_view({'get':'list'}), name='idc-list-json'),
]
# ~*~ coding: utf-8 ~*~
#
from rest_framework import serializers
from models import Asset
......@@ -100,6 +100,11 @@ class AssetDetailView(DetailView):
kwargs.update(context)
return super(AssetDetailView, self).get_context_data(**kwargs)
class AssetModalListView(AdminUserRequiredMixin, ListView):
paginate_by = settings.CONFIG.DISPLAY_PER_PAGE
model = Asset
context_object_name = 'asset_modal_list'
template_name = 'assets/asset_modal_list.html'
class AssetGroupCreateView(AdminUserRequiredMixin, CreateView):
model = AssetGroup
......@@ -119,11 +124,22 @@ class AssetGroupCreateView(AdminUserRequiredMixin, CreateView):
kwargs.update(context)
return super(AssetGroupCreateView, self).get_context_data(**kwargs)
# def form_valid(self, form):
# asset_group = form.save()
# assets_id_list = self.request.POST.getlist('assets', [])
# assets = [get_object_or_404(Asset, id=asset_id) for asset_id in assets_id_list]
# 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)
def form_valid(self, form):
asset_group = form.save()
assets_id_list = self.request.POST.getlist('assets', [])
assets = [get_object_or_404(Asset, id=asset_id) for asset_id in assets_id_list]
assets = [get_object_or_404(Asset, id=int(asset_id)) for asset_id in assets_id_list]
print assets
asset_group.created_by = self.request.user.username or 'Admin'
asset_group.assets.add(*tuple(assets))
asset_group.save()
......@@ -283,6 +299,7 @@ class IDCDeleteView(AdminUserRequiredMixin, DeleteView):
success_url = reverse_lazy('assets:idc-list')
class AdminUserListView(AdminUserRequiredMixin, ListView):
model = AdminUser
paginate_by = settings.CONFIG.DISPLAY_PER_PAGE
......@@ -527,3 +544,5 @@ class SystemUserAssetView(AdminUserRequiredMixin, SingleObjectMixin, ListView):
# kwargs.update(context)
# return super(SystemUserAssetGroupView, self).get_context_data(**kwargs)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment