Prechádzať zdrojové kódy

磁盘显示页面加入显示域选择

James Iter 9 rokov pred
rodič
commit
f518ea9002
4 zmenil súbory, kde vykonal 36 pridanie a 3 odobranie
  1. 1 0
      docs/todo.md
  2. 1 1
      models/filter.py
  3. 16 1
      templates/disk_show.html
  4. 18 1
      views/disk.py

+ 1 - 0
docs/todo.md

@@ -16,6 +16,7 @@
 - [x] 虚拟机加入用户级的重启作业功能
 - [ ] 提示待做的启动作业
 - [ ] 收集存在于 JimV-N,却不存在于 JimV-C 的 Guest
+- [x] 磁盘页面,默认不显示系统盘,加 CheckBox 来控制
 - [x] 不显示系统级别的启动作业
 - [ ] 添加对 Guest 的IP管理功能
 - [ ] 设计、制作替换 Guest IP 的系统级启动作业

+ 1 - 1
models/filter.py

@@ -34,7 +34,7 @@ class Filter(object):
     @staticmethod
     def get_fit_statement(field_type=None, value=''):
         if field_type == FilterFieldType.INT.value:
-            if not value.isdigit():
+            if not value.lstrip('-').isdigit():
                 raise TypeError(''.join(['Value: ', str(value), ' should be digit']))
             return value
         elif field_type == FilterFieldType.STR.value:

+ 16 - 1
templates/disk_show.html

@@ -64,6 +64,7 @@
     var page = 1;
     var page_size = 10;
     var keyword = '';
+    var show_area = '';
     var resource_path = window.location.pathname;
     var cur_url = resource_path;
 
@@ -162,15 +163,24 @@
                 }
             });
         });
+
+        $('#show_area').on('changed.bs.select', function (me) {
+            $('#content_search').val('');
+            refresh();
+        });
     });
 
     function refresh() {
         keyword = $('#content_search').val();
         page = $('#pagination li.active a').text();
         page_size = $('#page_size').val();
+        show_area = $('#show_area').val();
         cur_url = resource_path + '?page=' + page + '&page_size=' + page_size;
         if (keyword.length > 0) {
-            cur_url = resource_path + '?page=' + page + '&page_size=' + page_size + '&keyword=' + keyword;
+            cur_url += '&keyword=' + keyword;
+        }
+        if (show_area.length > 0) {
+            cur_url += '&show_area=' + show_area;
         }
         window.location.href=cur_url;
     }
@@ -350,6 +360,11 @@
                     <div class="col-sm-12" style="padding-right: 0;">
                         <div id="datatable-row-highlight_filter" class="dataTables_filter" style="display: inline-block;">
                             <input id="content_search" type="search" class="form-control" placeholder="模糊搜索..." value="{%- if keyword -%} {{ keyword }} {%- endif -%}" style="margin-left: 0; border-radius: 0;">
+                            <select id="show_area" name="show_area" title="显示域" class="selectpicker">
+                                <option value="unmount" data-subtext="显示所有未挂载的磁盘" {% if show_area == 'unmount' %} selected {% endif %}>未挂载</option>
+                                <option value="data_disk" data-subtext="显示所有数据盘" {% if show_area == 'data_disk' %} selected {% endif %}>数据盘</option>
+                                <option value="all" data-subtext="显示所有磁盘,包含系统盘" {% if show_area == 'all' %} selected {% endif %}>ALL</option>
+                            </select>
                         </div>
                         <div class="pull-right">
                             <button class="btn btn-default" onclick="refresh()" style="border-radius: 0;"><span class="glyph-icon icon-elusive-arrows-cw"></span></button>

+ 18 - 1
views/disk.py

@@ -32,6 +32,7 @@ def show():
     page = int(request.args.get('page', 1))
     page_size = int(request.args.get('page_size', 10))
     keyword = request.args.get('keyword', None)
+    show_area = request.args.get('show_area', 'unmount')
     guest_uuid = request.args.get('guest_uuid', None)
     sequence = request.args.get('sequence', None)
     order_by = request.args.get('order_by', None)
@@ -48,6 +49,20 @@ def show():
     if keyword is not None:
         args.append('keyword=' + keyword.__str__())
 
+    if show_area in ['unmount', 'data_disk', 'all']:
+        if show_area == 'unmount':
+            filters.append('sequence:eq:-1')
+
+        elif show_area == 'data_disk':
+            filters.append('sequence:gt:0')
+
+        else:
+            pass
+
+    else:
+        # 与前端页面相照应,首次打开时,默认只显示未挂载的磁盘
+        filters.append('sequence:eq:-1')
+
     if guest_uuid is not None:
         filters.append('guest_uuid:in:' + guest_uuid.__str__())
 
@@ -68,6 +83,8 @@ def show():
     disks_url = host_url + url_for('api_disks.r_get_by_filter')
     if keyword is not None:
         disks_url = host_url + url_for('api_disks.r_content_search')
+        # 关键字检索,不支持显示域过滤
+        show_area = 'all'
 
     if args.__len__() > 0:
         disks_url = disks_url + '?' + '&'.join(args)
@@ -118,7 +135,7 @@ def show():
 
     return render_template('disk_show.html', disks_ret=disks_ret, resource_path=resource_path, page=page,
                            page_size=page_size, keyword=keyword, pages=pages, order_by=order_by, order=order,
-                           last_page=last_page)
+                           last_page=last_page, show_area=show_area)
 
 
 def create():