Adapt images tree to work with several ogServers

Images view fetch images from all ogServers configured and show them in
the left tree as a nested list. ogServers are represented as the parents
of their images.
async-tree
Javier Sánchez Parra 2022-08-24 17:01:27 +02:00
parent 873bee30aa
commit c543ba25a6
2 changed files with 20 additions and 15 deletions

View File

@ -11,14 +11,20 @@
{% endblock %}
{% block sidebar %}
<ul id="images" class="nav flex-column nav-pills">
{% for image in images %}
<li id="{{ image["name"] }}_{{ image["id"] }}" class="nav-item">
<input class="form-check-input" type="checkbox" form="imagesForm"
value="{{ image["id"] }}"
{% if image.get("selected", False) %}checked{% endif %}
name="{{ image["name"] }}_{{ image["id"] }}" />
{{ image["name"] }}
<ul id="servers" class="nav flex-column nav-pills">
{% for response in responses %}
<li class="nav-item"><b>{{ response["server"]["name"] }}</b>
<ul id="images" class="nav flex-column nav-pills">
{% for image in response["json"]["images"] %}
<li id="{{ image["name"] }}_{{ image["id"] }}" class="nav-item">
<input class="form-check-input" type="checkbox" form="imagesForm"
value="{{ image["id"] }}"
{% if image.get("selected", False) %}checked{% endif %}
name="{{ image["name"] }}_{{ image["id"] }}" />
{{ image["name"] }}
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>

View File

@ -1377,9 +1377,8 @@ def commands():
@app.route('/images/', methods=['GET'])
@login_required
def images():
r = g.server.get('/images')
images = r.json()['images']
return render_template('images.html', images=images)
responses = multi_request('get', '/images')
return render_template('images.html', responses=responses)
@app.route('/repositories/', methods=['GET'])
@ -1645,10 +1644,10 @@ def action_image_info():
form.permissions.data = image['permissions']
form.software_id.data = image['software_id']
images = g.server.get('/images').json()['images']
responses = multi_request('get', '/images')
return render_template('actions/image_details.html', form=form,
images=images)
responses=responses)
@app.route('/action/image/delete', methods=['GET', 'POST'])
@login_required
@ -1671,14 +1670,14 @@ def action_image_delete():
if not validate_elements(images, max_len=1):
return redirect(url_for('images'))
image_name, image_id = images[0]
r = g.server.get('/images')
responses = multi_request('get', '/images')
form.ids.data = image_id
if not validate_elements(images, max_len=1):
flash(_('Please select one image to delete'), category='error')
return redirect(url_for('images'))
return render_template('actions/delete_image.html', form=form,
image_name=image_name.split('_', 1)[0], image_id=image_id,
images=r.json()['images'])
responses=responses)
@app.route('/action/log', methods=['GET'])
@login_required