made one automatic note when add/remove one device of one lot
This commit is contained in:
parent
a0981d1430
commit
6822c5bbf8
|
@ -15,6 +15,7 @@ from ereuse_devicehub.query import things_response
|
||||||
from ereuse_devicehub.resources.deliverynote.models import Deliverynote
|
from ereuse_devicehub.resources.deliverynote.models import Deliverynote
|
||||||
from ereuse_devicehub.resources.device.models import Device, Computer
|
from ereuse_devicehub.resources.device.models import Device, Computer
|
||||||
from ereuse_devicehub.resources.lot.models import Lot, Path
|
from ereuse_devicehub.resources.lot.models import Lot, Path
|
||||||
|
from ereuse_devicehub.resources.action.models import TradeNote
|
||||||
|
|
||||||
|
|
||||||
class LotFormat(Enum):
|
class LotFormat(Enum):
|
||||||
|
@ -224,7 +225,32 @@ class LotDeviceView(LotBaseChildrenView):
|
||||||
id = ma.fields.List(ma.fields.Integer())
|
id = ma.fields.List(ma.fields.Integer())
|
||||||
|
|
||||||
def _post(self, lot: Lot, ids: Set[int]):
|
def _post(self, lot: Lot, ids: Set[int]):
|
||||||
|
if lot.trade:
|
||||||
|
lot_device_ids = [d.id for d in lot.devices]
|
||||||
|
new_device_ids = {d for d in ids if not d in lot_device_ids}
|
||||||
|
devices = set(Device.query.filter(Device.id.in_(new_device_ids)).all())
|
||||||
|
txt = 'Adding new device in lot of trade {}'.format(lot.trade.id)
|
||||||
|
note = TradeNote(description=txt,
|
||||||
|
devices=devices,
|
||||||
|
trade=lot.trade)
|
||||||
|
db.session.add(note)
|
||||||
|
|
||||||
lot.devices.update(Device.query.filter(Device.id.in_(ids)))
|
lot.devices.update(Device.query.filter(Device.id.in_(ids)))
|
||||||
|
|
||||||
|
if lot.trade:
|
||||||
|
lot.trade.devices = lot.devices
|
||||||
|
|
||||||
|
|
||||||
def _delete(self, lot: Lot, ids: Set[int]):
|
def _delete(self, lot: Lot, ids: Set[int]):
|
||||||
|
if lot.trade:
|
||||||
|
devices = set(Device.query.filter(Device.id.in_(ids)).all())
|
||||||
|
txt = 'Removing device from lot of trade {}'.format(lot.trade.id)
|
||||||
|
note = TradeNote(description=txt,
|
||||||
|
devices=devices,
|
||||||
|
trade=lot.trade)
|
||||||
|
db.session.add(note)
|
||||||
|
|
||||||
lot.devices.difference_update(Device.query.filter(Device.id.in_(ids)))
|
lot.devices.difference_update(Device.query.filter(Device.id.in_(ids)))
|
||||||
|
|
||||||
|
if lot.trade:
|
||||||
|
lot.trade.devices = lot.devices
|
||||||
|
|
Reference in a new issue