Make list_images show only selected images

Make list images command show only information of the images the user
has selected in the sidebar.

Improve readability of the information.

Show size and data size attributes rounded

Warn the user if no images have been selected in sidebar
master
Javier Hernandez 2024-02-02 12:30:47 +01:00 committed by OpenGnSys Support Team
parent a41ad5eec6
commit 6a134b6337
2 changed files with 28 additions and 24 deletions

View File

@ -6,15 +6,11 @@
{% block content %}
<h1 class="m-5">{{_('List images')}}</h1>
{% for r in responses %}
{% set server = r['server']['name']%}
{% set repos = r['repos'] %}
{% for repo in repos.values() %}
{% set repo_name = repo['name'] %}
{% set images = repo['images'] %}
{% if images %}
{{ repo_name }} ({{ server }})
<table class="table table-hover">
{% for server in servers %}
<h3 class="mx-5">Server: {{server['name']}}</h3>
{% for repo, images in server['repos'] %}
<h4 class="mx-5">Repo: {{repo}}</h4>
<table class="table table-hover mx-5">
<thead class="thead-light">
<tr>
<th>Name</th>
@ -27,14 +23,13 @@
{% for img in images %}
<tr>
<th>{{img['name']}}</th>
<td>{{img['size'] / 1024 ** 2}}</td>
<td>{{img['datasize'] / 1024 ** 2}}</td>
<td>{{(img['size'] / 1024 ** 2) |round(2, 'floor')}}</td>
<td>{{(img['datasize'] / 1024 ** 2) |round(2, 'floor')}}</td>
<td>{{img['modified']}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endfor %}
{% endfor %}

View File

@ -2516,25 +2516,34 @@ def user_delete_get():
def action_image_list():
params = request.args.to_dict()
ids = parse_elements(params)
ids = [int(id) for id in ids if id.isdigit()]
if not ids:
flash(_('Please, select an image'), category='error')
return redirect(url_for('images'))
server = get_server_from_ip_port(params['image-server'])
r = server.get('/images')
if not r:
return ogserver_down('images')
if r.status_code != requests.codes.ok:
return ogserver_error('images')
tmp = r.json()['images']
images = []
for img in tmp:
if img['id'] in ids:
images.append(img)
try:
images = get_images_grouped_by_repos()
responses = get_images_grouped_by_repos()
servers = []
for server in responses:
repos = []
for unused, repo in server['repos'].items():
images=[]
for img in repo['images']:
if int(img['id']) in ids:
images.append(img)
if images:
repos.append((repo['name'], images))
if repos:
s={}
s['name'] = server['server'].name
s['repos'] = repos
servers.append(s)
except ServerError:
return ogserver_down('images')
except ServerErrorCode:
return ogserver_error('images')
return render_template('actions/list_images.html',
responses=images)
servers=servers, responses=responses)
@app.route('/user/delete', methods=['POST'])
@login_required