Bladeren bron

Guest详情页加入磁盘个数导航

James Iter 9 jaren geleden
bovenliggende
commit
34652c65e2
4 gewijzigde bestanden met toevoegingen van 29 en 2 verwijderingen
  1. 2 1
      models/guest.py
  2. 8 0
      templates/guest_detail.html
  3. 12 0
      views/disk.py
  4. 7 1
      views/guest.py

+ 2 - 1
models/guest.py

@@ -117,6 +117,7 @@ class Disk(ORM):
             'remark': FilterFieldType.STR.value,
             'size': FilterFieldType.INT.value,
             'state': FilterFieldType.INT.value,
+            'sequence': FilterFieldType.INT.value,
             'guest_uuid': FilterFieldType.STR.value
         }
 
@@ -126,7 +127,7 @@ class Disk(ORM):
 
     @staticmethod
     def get_allow_content_search_keywords():
-        return ['remark', 'size']
+        return ['remark', 'size', 'guest_uuid', 'uuid']
 
 
 class GuestMigrateInfo(ORM):

+ 8 - 0
templates/guest_detail.html

@@ -947,6 +947,14 @@
                                 </span>
                             </td>
                         </tr>
+                        <tr>
+                            <td>
+                                <span class="guest-label">磁盘&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                <span class="guest-desc">
+                                <a href="/disks?guest_uuid={{ guest_ret.data.uuid }}" style="color: #0275d8;">{{ disks_ret.data|length }}</a>
+                                </span>
+                            </td>
+                        </tr>
                         <tr>
                             <td>
                                 <span class="guest-label">操作系统:&nbsp;&nbsp;&nbsp;&nbsp;</span>

+ 12 - 0
views/disk.py

@@ -32,8 +32,11 @@ def show():
     page = int(request.args.get('page', 1))
     page_size = int(request.args.get('page_size', 10))
     keyword = request.args.get('keyword', None)
+    guest_uuid = request.args.get('guest_uuid', None)
+    sequence = request.args.get('sequence', None)
     order_by = request.args.get('order_by', None)
     order = request.args.get('order', None)
+    filters = list()
     resource_path = request.path
 
     if page is not None:
@@ -45,12 +48,21 @@ def show():
     if keyword is not None:
         args.append('keyword=' + keyword.__str__())
 
+    if guest_uuid is not None:
+        filters.append('guest_uuid:in:' + guest_uuid.__str__())
+
+    if sequence is not None:
+        filters.append('sequence:in:' + sequence.__str__())
+
     if order_by is not None:
         args.append('order_by=' + order_by)
 
     if order is not None:
         args.append('order=' + order)
 
+    if filters.__len__() > 0:
+        args.append('filter=' + ','.join(filters))
+
     host_url = request.host_url.rstrip('/')
 
     disks_url = host_url + url_for('api_disks.r_get_by_filter')

+ 7 - 1
views/guest.py

@@ -182,7 +182,13 @@ def detail(uuid):
     os_template_ret = requests.get(url=os_template_url)
     os_template_ret = json.loads(os_template_ret.content)
 
-    return render_template('guest_detail.html', uuid=uuid, guest_ret=guest_ret, os_template_ret=os_template_ret)
+    disks_url = host_url + url_for('api_disks.r_get_by_filter')
+    disks_url = disks_url + '?filter=guest_uuid:in:' + guest_ret['data']['uuid']
+    disks_ret = requests.get(url=disks_url)
+    disks_ret = json.loads(disks_ret.content)
+
+    return render_template('guest_detail.html', uuid=uuid, guest_ret=guest_ret, os_template_ret=os_template_ret,
+                           disks_ret=disks_ret)
 
 
 def success():