From a88e5fed7dec1dd41b3feec0905f4c9925515665 Mon Sep 17 00:00:00 2001 From: Alejandro Sirgo Rica Date: Fri, 5 Jul 2024 10:34:27 +0200 Subject: ogcp: select images of selected partition in image/update Select the image field value containing the restored image of the partition selected by the user. Create a dictionary where the key is the value= of the partition field and the value is the id of the image restored in the partition. Add each dictionary entry only only if the corresponding image exists in the repository. Pass the dictionary to the HTML template and convert it to JS. --- ogcp/templates/actions/image_update.html | 43 ++++++++++++++++++++++++++++---- ogcp/views.py | 16 ++++++++++-- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/ogcp/templates/actions/image_update.html b/ogcp/templates/actions/image_update.html index 361165a..352b0d0 100644 --- a/ogcp/templates/actions/image_update.html +++ b/ogcp/templates/actions/image_update.html @@ -13,10 +13,43 @@ {{ macros.cmd_selected_clients(selected_clients) }} -{{ wtf.quick_form(form, - action=url_for('action_image_update'), - method='post', - button_map={'update': 'primary'}, - extra_classes='mx-5') }} +
+ {{ form.hidden_tag() }} + + {{ form.ip }} + +
+ {{ form.os.label(class="form-label") }} + {{ form.os(class="form-control", onchange="onPartitionClicked(this.value)") }} +
+ +
+ {{ form.image.label(class="form-label") }} + {{ form.image(class="form-control") }} +
+ +
+ {{ form.backup(class="form-check-input") }} + {{ form.backup.label(class="form-check-label") }} +
+ +
+ {{ form.update(class="btn btn-primary") }} +
+
+ + {% endblock %} diff --git a/ogcp/views.py b/ogcp/views.py index 097041f..3ceffdf 100644 --- a/ogcp/views.py +++ b/ogcp/views.py @@ -2309,25 +2309,37 @@ def action_image_update(): invalid_part_types = get_invalid_image_partition_types() + part_content = {} for part in r.json()['partitions'][1:]: part_type = PART_TYPE_CODES.get(int(part.get('code')), 'UNKNOWN') if part_type in invalid_part_types: continue + partition_value = f"{part.get('disk')} {part.get('partition')} {part.get('code')}" + partition_text = f"Disk {part.get('disk')} | Partition {part.get('partition')} " + f"| {PART_TYPE_CODES.get(part.get('code'), 'UNKNOWN')} " + f"{FS_CODES.get(part.get('filesystem'), 'UNKNOWN')}" + form.os.choices.append( - (f"{part.get('disk')} {part.get('partition')} {part.get('code')}", + (partition_value, f"Disk {part.get('disk')} | Partition {part.get('partition')} " f"| {PART_TYPE_CODES.get(part.get('code'), 'UNKNOWN')} " f"{FS_CODES.get(part.get('filesystem'), 'UNKNOWN')}") ) + if part['image']: + for image in images[repo_id]: + if image['id'] == part['image']: + part_content[partition_value] = part['image'] + break + scopes, _clients = get_scopes(set(ips)) selected_clients = list(get_selected_clients(scopes['scope']).items()) return render_template('actions/image_update.html', form=form, selected_clients=selected_clients, - scopes=scopes) + scopes=scopes, part_content=part_content) @app.route('/action/reboot', methods=['GET', 'POST']) -- cgit v1.2.3-18-g5258