script downgrade placeholders
This commit is contained in:
parent
376021470c
commit
3c1c38ca18
|
@ -0,0 +1,127 @@
|
|||
from ereuse_devicehub.config import DevicehubConfig
|
||||
from ereuse_devicehub.db import db
|
||||
from ereuse_devicehub.devicehub import Devicehub
|
||||
from ereuse_devicehub.inventory.models import Transfer
|
||||
from ereuse_devicehub.parser.models import PlaceholdersLog
|
||||
from ereuse_devicehub.resources.action.models import (
|
||||
ActionDevice,
|
||||
Allocate,
|
||||
DataWipe,
|
||||
Deallocate,
|
||||
Management,
|
||||
Prepare,
|
||||
Ready,
|
||||
Recycling,
|
||||
Refurbish,
|
||||
ToPrepare,
|
||||
ToRepair,
|
||||
Use,
|
||||
)
|
||||
from ereuse_devicehub.resources.device.models import Device, Placeholder
|
||||
from ereuse_devicehub.resources.lot.models import LotDevice
|
||||
|
||||
app = Devicehub(inventory=DevicehubConfig.DB_SCHEMA)
|
||||
app.app_context().push()
|
||||
|
||||
|
||||
def main():
|
||||
manual_actions()
|
||||
change_lot()
|
||||
change_tags()
|
||||
remove_placeholders()
|
||||
|
||||
|
||||
def remove_placeholders():
|
||||
devices = []
|
||||
for placeholder in Placeholder.query.all():
|
||||
device = placeholder.device
|
||||
binding = placeholder.binding
|
||||
if not device or not binding:
|
||||
continue
|
||||
devices.append(placeholder.device.id)
|
||||
|
||||
for dev in Device.query.filter(Device.id.in_(devices)):
|
||||
db.session.delete(dev)
|
||||
|
||||
for placeholder in Placeholder.query.all():
|
||||
device = placeholder.device
|
||||
binding = placeholder.binding
|
||||
if not device or not binding:
|
||||
continue
|
||||
for plog in PlaceholdersLog.query.filter_by(placeholder=placeholder).all():
|
||||
db.session.delete(plog)
|
||||
|
||||
db.session.delete(placeholder)
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def change_lot():
|
||||
for placeholder in Placeholder.query.all():
|
||||
device = placeholder.device
|
||||
binding = placeholder.binding
|
||||
if not device or not binding:
|
||||
continue
|
||||
lots = [x for x in device.lots]
|
||||
for lot in lots:
|
||||
for rel_lot in LotDevice.query.filter_by(
|
||||
lot_id=lot.id, device_id=device.id
|
||||
):
|
||||
if binding:
|
||||
rel_lot.device_id = binding.id
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def change_tags():
|
||||
for placeholder in Placeholder.query.all():
|
||||
device = placeholder.device
|
||||
binding = placeholder.binding
|
||||
if not device or not binding:
|
||||
continue
|
||||
tags = [x for x in device.tags]
|
||||
for tag in tags:
|
||||
tag.device = binding
|
||||
db.session.commit()
|
||||
|
||||
|
||||
def manual_actions():
|
||||
MANUAL_ACTIONS = (
|
||||
Recycling,
|
||||
Use,
|
||||
Refurbish,
|
||||
Management,
|
||||
Allocate,
|
||||
Deallocate,
|
||||
ToPrepare,
|
||||
Prepare,
|
||||
DataWipe,
|
||||
ToRepair,
|
||||
Ready,
|
||||
Transfer,
|
||||
)
|
||||
|
||||
for action in MANUAL_ACTIONS:
|
||||
change_device(action)
|
||||
|
||||
|
||||
def change_device(action):
|
||||
for ac in action.query.all():
|
||||
if hasattr(ac, 'device'):
|
||||
if not ac.device.placeholder:
|
||||
continue
|
||||
if not ac.device.placeholder.binding:
|
||||
continue
|
||||
ac.device = ac.device.placeholder.binding
|
||||
|
||||
if hasattr(ac, 'devices'):
|
||||
for act in ActionDevice.query.filter_by(action_id=ac.id):
|
||||
if not act.device.placeholder:
|
||||
continue
|
||||
if not act.device.placeholder.binding:
|
||||
continue
|
||||
act.device = act.device.placeholder.binding
|
||||
db.session.commit()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
# db.session.commit()
|
Reference in New Issue