From da1feef74636c359594503e9f08fe69172181700 Mon Sep 17 00:00:00 2001 From: Cayo Puigdefabregas Date: Tue, 13 Dec 2022 14:29:52 +0100 Subject: [PATCH] fix migration --- .../93daff872771_add_hash_hid_to_device.py | 13 +-- ereuse_devicehub/resources/device/models.py | 91 +++++-------------- 2 files changed, 26 insertions(+), 78 deletions(-) diff --git a/ereuse_devicehub/migrations/versions/93daff872771_add_hash_hid_to_device.py b/ereuse_devicehub/migrations/versions/93daff872771_add_hash_hid_to_device.py index e6c436d9..ea1d2037 100644 --- a/ereuse_devicehub/migrations/versions/93daff872771_add_hash_hid_to_device.py +++ b/ereuse_devicehub/migrations/versions/93daff872771_add_hash_hid_to_device.py @@ -5,11 +5,11 @@ Revises: 564952310b17 Create Date: 2022-12-13 10:14:45.500087 """ -from alembic import context, op -import sqlalchemy as sa -import citext import hashlib +import citext +import sqlalchemy as sa +from alembic import context, op # revision identifiers, used by Alembic. revision = '93daff872771' @@ -54,12 +54,7 @@ def upgrade(): upgrade_data() - op.alter_column( - 'computer', - 'user_trusts', - nullable=False, - schema=f'{get_inv()}' - ) + op.alter_column('computer', 'user_trusts', nullable=False, schema=f'{get_inv()}') def downgrade(): diff --git a/ereuse_devicehub/resources/device/models.py b/ereuse_devicehub/resources/device/models.py index df331e70..0b13d733 100644 --- a/ereuse_devicehub/resources/device/models.py +++ b/ereuse_devicehub/resources/device/models.py @@ -183,6 +183,7 @@ class Device(Thing): phid_bk = db.Column(db.CIText(), nullable=True, unique=False) active = db.Column(Boolean, default=True) family = db.Column(db.CIText()) + chid = db.Column(db.CIText()) _NON_PHYSICAL_PROPS = { 'id', @@ -212,6 +213,7 @@ class Device(Thing): 'active', 'phid_bk', 'dhid_bk', + 'chid', } __table_args__ = ( @@ -745,76 +747,14 @@ class Device(Thing): return "" - def set_new_hid(self): - """ - The order is important - # product_vendor, is a manufacturer - # product_family, is a new field of lshw - # product_chassis, is a type of chassis - # product_number, is a model - # product_version, - # product_sku, - # product_serial, is a serial number - # product_uuid, - # board_vendor, - # board_number, - # board_serial, - # board_version - """ - with suppress(TypeError): - family = (self.family or '').replace(' ', '_') - model = ((self.model or '').replace(' ', '_'),) - chassis = self.type - if hasattr(self, 'chassis'): - chassis = self.chassis and self.chassis.name or '' - version = (self.version or '').replace(' ', '_') - sku = (self.sku or '').replace(' ', '_') - system_uuid = '' - if hasattr(self, 'system_uuid'): - system_uuid = str(self.system_uuid or '') - if not system_uuid or not self.manufacturer: - return '' - - board = None - board_serial_number = '' - board_version = '' - board_manufacturer = '' - board_model = '' - - if hasattr(self, 'components'): - for c in self.components: - if c.type == 'Motherboard': - board = c - break - - if board: - board_manufacturer = (board.manufacturer or '').replace(' ', '_') - board_model = (board.model or '').replace(' ', '_') - board_serial_number = (board.serial_number or '').replace(' ', '_') - board_version = (board.version or '').replace(' ', '_') - - self.hid = '-'.join( - [ - (self.manufacturer or '').replace(' ', '_'), - family, - chassis, - model, - version, - sku, - self.serial_number, - system_uuid, - board_manufacturer, - board_model, - board_serial_number, - board_version, - ] - ).lower() - - def get_hid(self): - if self.hid: - return hashlib.sha3_512(self.hid.encode()).hexdigest() - def get_from_db(self): + try: + from modules.device.utils import get_from_db + + return get_from_db(self) + except Exception: + pass + if not self.hid: return @@ -826,11 +766,23 @@ class Device(Thing): ).first() def set_hid(self): + try: + from modules.device.utils import set_hid + + self.hid = set_hid(self) + return + except Exception: + pass + with suppress(TypeError): self.hid = Naming.hid( self.type, self.manufacturer, self.model, self.serial_number ) + def set_chid(self): + if self.hid: + self.chid = hashlib.sha3_256(self.hid.encode()).hexdigest() + def last_action_of(self, *types): """Gets the last action of the given types. @@ -1107,6 +1059,7 @@ class Computer(Device): receiver_id = db.Column(UUID(as_uuid=True), db.ForeignKey(User.id), nullable=True) receiver = db.relationship(User, primaryjoin=receiver_id == User.id) system_uuid = db.Column(UUID(as_uuid=True), nullable=True) + user_trusts = db.Column(Boolean(), default=True) def __init__(self, *args, **kwargs) -> None: if args: