From f88c149076d9de228e76d8ab8caaf48a3666bc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E4=B8=96=E5=B3=B0?= <93648765@qq.com> Date: Tue, 25 Oct 2016 02:16:20 +0800 Subject: [PATCH] asset:add assets_bulk --- apps/assets/forms.py | 1 - .../assets/templates/assets/asset_create.html | 4 +- apps/assets/templates/assets/asset_list.html | 134 ++++--------- .../templates/assets/asset_modal_update.html | 188 ++++++++++++++---- apps/assets/views.py | 33 ++- apps/static/css/jumpserver.css | 29 ++- 6 files changed, 253 insertions(+), 136 deletions(-) diff --git a/apps/assets/forms.py b/apps/assets/forms.py index 99e12104f..00e63ba73 100644 --- a/apps/assets/forms.py +++ b/apps/assets/forms.py @@ -52,7 +52,6 @@ class AssetCreateForm(forms.ModelForm): 'groups': forms.SelectMultiple(attrs={'class': 'select2', 'data-placeholder': _('Select asset groups')}), 'tags': forms.SelectMultiple(attrs={'class': 'select2', - 'id':'tags', 'data-placeholder': _('Select asset tags')}), 'system_users': forms.SelectMultiple(attrs={'class': 'select2', 'data-placeholder': _('Select asset system users')}), diff --git a/apps/assets/templates/assets/asset_create.html b/apps/assets/templates/assets/asset_create.html index e47393c4c..e49540738 100644 --- a/apps/assets/templates/assets/asset_create.html +++ b/apps/assets/templates/assets/asset_create.html @@ -42,10 +42,10 @@ {% endblock %} \ No newline at end of file diff --git a/apps/assets/templates/assets/asset_modal_update.html b/apps/assets/templates/assets/asset_modal_update.html index 138f7ed98..85165537e 100644 --- a/apps/assets/templates/assets/asset_modal_update.html +++ b/apps/assets/templates/assets/asset_modal_update.html @@ -5,61 +5,173 @@ {% block form %} -
-
-
-

- - - {% for f in form %} - {{ f.hostname }} - - {% endfor %} - 移除选择 -

-
-
-
-
- {% csrf_token %} - - -
- {{ form.hostname|bootstrap_horizontal }} - {{ form.ip|bootstrap_horizontal }} + +
+ +
+ +
+
+

+ {% for asset in assets_on_list %} + + {% endfor %} +

+
+
+
+
+
-
-
+
+

选择属性

+ +
+ + +
+
+ {% csrf_token %} +
-
+ + {% endblock %} {% block custom_foot_js %} - + $('#add_asset').on('click',function(){ + $('#modal').modal('show'); + }); + + $('#modal').modal({ + show: false, + backdrop: 'static', + keyboard: 'false', + remote:"{% url 'assets:asset-modal-list' %}?plain_id_lists={{ plain_id_lists }}", + }); + + $('#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('当远程数据加载完毕后,再触发;') + }); + + function SetSelect2(){ + $('.select2').select2(); + $("#id_tags").select2({ + tags: true, + maximumSelectionLength: 8, //最多能够选择的个数 + //closeOnSelect: false + }); + }; + function AddForm(obj,id_form) { + var oHiddenForms = document.getElementById("ridd"); + var parentElem = document.getElementById("add_form"); + var oH = document.getElementById(id_form); + var oNew = oH.parentNode.parentNode + var aDiv = parentElem.getElementsByClassName('form-group'); + if(oNew.parentNode.id=='ridd') { + obj.className="tagBtn2 label label-warning"; + parentElem.insertBefore(oNew,aDiv[0]); + SetSelect2(); + }else{ + oHiddenForms.appendChild(oNew); + obj.className="tagBtn2 label label-default"; + SetSelect2(); + }; + }; + + function ChangeBtnCss(class_var){ + var changebtns = $("#formlists").find("a[name='changebtn']") + for (var i=0; i {% endblock %} diff --git a/apps/assets/views.py b/apps/assets/views.py index edda4172d..884a93b50 100644 --- a/apps/assets/views.py +++ b/apps/assets/views.py @@ -75,12 +75,32 @@ class AssetCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,CreateView): return super(AssetCreateView, self).get_context_data(**kwargs) -class AssetModalCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,CreateView): +class AssetModalCreateView(AdminUserRequiredMixin,CreateAssetTagsMiXin,ListView): model = Asset # tag_type = 'asset' form_class = AssetCreateForm template_name = 'assets/asset_modal_update.html' success_url = reverse_lazy('assets:asset-list') + def get_queryset(self): + self.queryset = super(AssetModalCreateView,self).get_queryset() + self.s = self.request.GET.get('plain_id_lists') + if "," in str(self.s): + self.plain_id_lists = [int(x) for x in self.s.split(',')] + else: + self.plain_id_lists = [self.s] + + return self.queryset + def get_context_data(self, **kwargs): + asset_on_list = Asset.objects.filter(id__in = self.plain_id_lists) + context = { + 'app': 'Assets', + 'action': 'Bulk Update asset', + 'assets_on_list': asset_on_list, + 'assets_count': len(asset_on_list), + 'plain_id_lists':self.s, + } + kwargs.update(context) + return super(AssetModalCreateView, self).get_context_data(**kwargs) class AssetUpdateView(AdminUserRequiredMixin,UpdateAssetTagsMiXin,UpdateView): model = Asset @@ -134,6 +154,17 @@ class AssetModalListView(AdminUserRequiredMixin, ListView): def get_context_data(self, **kwargs): group_id = self.request.GET.get('group_id') tag_id = self.request.GET.get('tag_id') + plain_id_lists = self.request.GET.get('plain_id_lists') + self.s = self.request.GET.get('plain_id_lists') + if "," in str(self.s): + self.plain_id_lists = [int(x) for x in self.s.split(',')] + else: + self.plain_id_lists = [self.s] + print plain_id_lists + if plain_id_lists: + context = { + 'all_assets':plain_id_lists + } if group_id: group = AssetGroup.objects.get(id=group_id) context = { diff --git a/apps/static/css/jumpserver.css b/apps/static/css/jumpserver.css index 0881bb3da..c5b14b63b 100644 --- a/apps/static/css/jumpserver.css +++ b/apps/static/css/jumpserver.css @@ -206,6 +206,7 @@ table.dataTable tbody td.selected td i.text-navy display: block; background: #f4f4f4; padding-left: 10px; + padding-bottom: 15px; } .mar { margin-left: 2px; @@ -216,6 +217,10 @@ table.dataTable tbody td.selected td i.text-navy margin-right: 3px; } +.form-asset-on p{ + margin-bottom:0px; +} + .form-asset-on button{ background: #f1f1f1; margin-right: 2px; @@ -229,6 +234,24 @@ table.dataTable tbody td.selected td i.text-navy min-height:34px; height: 100%; } -.form-asset-on p{ - margin-bottom:0px; -} \ No newline at end of file + +.mgl-5 { + margin-left: 5px; + font-size: 12px; +} +.c02 { + color: #999; +} + +.tagBtnList { + font-size: 12px; + line-height: 32px; + margin: -5px 0 0 0; + padding-left: 0px; +} + +.tagBtn2 { + margin: 0 5px 5px 0; + font-size: 12px; + vertical-align: middle; +}