From 3f7fd1b6ecc132afb85d041e7f03dbb3bc7574a3 Mon Sep 17 00:00:00 2001 From: Cayo Puigdefabregas Date: Wed, 9 Mar 2022 14:02:56 +0100 Subject: [PATCH] precommit --- ereuse_devicehub/inventory/forms.py | 21 +++++++++++++- ereuse_devicehub/inventory/views.py | 29 +++++++++++++++++++ .../templates/inventory/device_list.html | 8 +++++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/ereuse_devicehub/inventory/forms.py b/ereuse_devicehub/inventory/forms.py index ae827195..86221aaf 100644 --- a/ereuse_devicehub/inventory/forms.py +++ b/ereuse_devicehub/inventory/forms.py @@ -137,8 +137,15 @@ class FilterForm(FlaskForm): class LotDeviceForm(FlaskForm): - lot = StringField('Lot', [validators.UUID()]) devices = StringField('Devices', [validators.length(min=1)]) + lot = SelectField('Lot', choices=[]) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # TODO + self.lot.choices = [ + (lot.id, lot.name) for lot in Lot.query.filter(Lot.owner_id == g.user.id) + ] def validate(self, extra_validators=None): is_valid = super().validate(extra_validators) @@ -1046,3 +1053,15 @@ class TradeDocumentForm(FlaskForm): db.session.commit() return self._obj + + +class LotDeviceShowForm(FlaskForm): + devices = StringField(render_kw={'class': "devicesList"}) + + def validate(self, extra_validators=None): + is_valid = super().validate(extra_validators) + + device_ids = self.devices.data.split(",") + self._devices = Device.query.filter(Device.id.in_(device_ids)).all() + + return is_valid diff --git a/ereuse_devicehub/inventory/views.py b/ereuse_devicehub/inventory/views.py index 57a67454..05aa8656 100644 --- a/ereuse_devicehub/inventory/views.py +++ b/ereuse_devicehub/inventory/views.py @@ -18,6 +18,7 @@ from ereuse_devicehub.inventory.forms import ( DataWipeForm, FilterForm, LotDeviceForm, + LotDeviceShowForm, LotForm, NewActionForm, NewDeviceForm, @@ -119,6 +120,7 @@ class DeviceListMix(GenericMixView): 'form_new_datawipe': form_new_datawipe, 'form_new_trade': form_new_trade, 'form_filter': form_filter, + 'form_lot_device_del': LotDeviceShowForm(), 'lot': lot, 'tags': tags, 'list_devices': list_devices, @@ -173,6 +175,29 @@ class LotDeviceAddView(View): return flask.redirect(next_url) +class LotDeviceDeleteShowView(GenericMixView): + methods = ['POST'] + decorators = [login_required] + template_name = 'inventory/removeDeviceslot2.html' + title = 'Remove from a lot' + + def dispatch_request(self, lot_id=None): + # import pdb; pdb.set_trace() + next_url = request.referrer or url_for('inventory.devices.devicelist') + form = LotDeviceShowForm() + if not form.validate_on_submit(): + messages.error('Error, you need select one or more devices!') + if lot_id: + next_url = url_for('inventory.devices.lotdevicelist', lot_id=form.id) + + return flask.redirect(next_url) + + lots = self.get_lots() + form_lot = LotDeviceForm(devices=form.devices) + context = {'form': form_lot, 'title': self.title, 'lots': lots} + return flask.render_template(self.template_name, **context) + + class LotDeviceDeleteView(View): methods = ['POST'] decorators = [login_required] @@ -676,6 +701,10 @@ devices.add_url_rule( devices.add_url_rule( '/lot/devices/del/', view_func=LotDeviceDeleteView.as_view('lot_devices_del') ) +devices.add_url_rule( + '/lot/devices/del/show', + view_func=LotDeviceDeleteShowView.as_view('lot_devices_del_show'), +) devices.add_url_rule('/lot/add/', view_func=LotCreateView.as_view('lot_add')) devices.add_url_rule( '/lot//del/', view_func=LotDeleteView.as_view('lot_del') diff --git a/ereuse_devicehub/templates/inventory/device_list.html b/ereuse_devicehub/templates/inventory/device_list.html index eacbda29..9d7986b6 100644 --- a/ereuse_devicehub/templates/inventory/device_list.html +++ b/ereuse_devicehub/templates/inventory/device_list.html @@ -92,6 +92,14 @@ Remove selected devices from a lot +
  • +
    + {% for f in form_lot_device_del %} + {{ f }} + {% endfor %} + +
    +