diff --git a/src/webui/service/device/forms.py b/src/webui/service/device/forms.py index 3aae96cc05bacb31567e3e0b8f6cda2d5e0ddc88..cfa741ab306dd4a0c7ddc0272a3680891bfe1597 100644 --- a/src/webui/service/device/forms.py +++ b/src/webui/service/device/forms.py @@ -50,7 +50,7 @@ class ConfigForm(FlaskForm): class UpdateDeviceForm(FlaskForm): - config_operational_status = SelectField('Operational Status', + update_operational_status = SelectField('Operational Status', choices=[(-1, 'Select...'), (0, 'Undefined'), (1, 'Disabled'), (2, 'Enabled')], coerce=int, validators=[NumberRange(min=0)]) diff --git a/src/webui/service/device/routes.py b/src/webui/service/device/routes.py index 105fe3b98137ecfa75ae2d657e21d3b0b7dd6923..fe475594b4f0a1a8674ccbbe37c704df02f43621 100644 --- a/src/webui/service/device/routes.py +++ b/src/webui/service/device/routes.py @@ -207,28 +207,23 @@ def update(device_uuid): response = context_client.GetDevice(request) context_client.close() - ## listing enum values - #form.operational_status.choices = [] - #for key, value in DeviceOperationalStatusEnum.DESCRIPTOR.values_by_name.items(): - # form.operational_status.choices.append((DeviceOperationalStatusEnum.Value(key), key.replace('DEVICEOPERATIONALSTATUS_', ''))) -# - #form.operational_status.default = response.device_operational_status - print(form.errors) - if form.is_submitted(): - print("submitted") - if form.validate(): - print("valid") - print(form.errors) - #if form.validate_on_submit(): - # device = Device() - # device.CopyFrom(response) - # device.device_operational_status = form.operational_status.data - # try: - # device_client.connect() - # response: DeviceId = device_client.ConfigureDevice(device) - # device_client.close() - # flash(f'New configuration was created with ID "{response.device_uuid.uuid}".', 'success') - # return redirect(url_for('device.home')) - # except Exception as e: - # flash(f'Problem adding the device. {e.details()}', 'danger') + # listing enum values + form.update_operational_status.choices = [] + for key, value in DeviceOperationalStatusEnum.DESCRIPTOR.values_by_name.items(): + form.update_operational_status.choices.append((DeviceOperationalStatusEnum.Value(key), key.replace('DEVICEOPERATIONALSTATUS_', ''))) + + form.update_operational_status.default = response.device_operational_status + + if form.validate_on_submit(): + device = Device() + device.CopyFrom(response) + device.device_operational_status = form.update_operational_status.data + try: + device_client.connect() + response: DeviceId = device_client.ConfigureDevice(device) + device_client.close() + flash(f'Status of device with ID "{response.device_uuid.uuid}" was updated.', 'success') + return redirect(url_for('device.home')) + except Exception as e: + flash(f'Problem updating the device. {e.details()}', 'danger') return render_template('device/update.html', device=response, form=form, submit_text='Update Device') diff --git a/src/webui/service/templates/device/update.html b/src/webui/service/templates/device/update.html index 3b25da9c189b50603f56a4681ea4c3bd0efe301d..8c474f525c7e206499f65118eced1d9f3c2b4d74 100644 --- a/src/webui/service/templates/device/update.html +++ b/src/webui/service/templates/device/update.html @@ -4,19 +4,20 @@ <h1>Update Device {{ device.device_id.device_uuid.uuid }}</h1> <br /> <form id="update_device" method="POST"> + {{ form.hidden_tag() }} <fieldset> <div class="row mb-3"> - {{ form.config_operational_status.label(class="col-sm-2 col-form-label") }} + {{ form.update_operational_status.label(class="col-sm-2 col-form-label") }} <div class="col-sm-10"> - {% if form.config_operational_status.errors %} - {{ form.config_operational_status(class="form-control is-invalid") }} + {% if form.update_operational_status.errors %} + {{ form.update_operational_status(class="form-control is-invalid") }} <div class="invalid-feedback"> - {% for error in form.config_operational_status.errors %} + {% for error in form.update_operational_status.errors %} <span>{{ error }}</span> {% endfor %} </div> {% else %} - {{ form.config_operational_status(class="form-select") }} + {{ form.update_operational_status(class="form-select") }} {% endif %} </div> </div>