From 1996e8fa7a711263f6d6d4cd8fe8f98e878c6e84 Mon Sep 17 00:00:00 2001 From: Cayo Puigdefabregas Date: Fri, 5 Aug 2022 16:42:07 +0200 Subject: [PATCH] new concept of status abstract of a device --- ereuse_devicehub/parser/models.py | 7 ++++++- ereuse_devicehub/resources/device/models.py | 13 ++++++++++++- .../templates/inventory/device_list.html | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/ereuse_devicehub/parser/models.py b/ereuse_devicehub/parser/models.py index 69cd574c..2bd28eb8 100644 --- a/ereuse_devicehub/parser/models.py +++ b/ereuse_devicehub/parser/models.py @@ -2,6 +2,7 @@ from citext import CIText from flask import g from sqlalchemy import BigInteger, Column, Sequence, SmallInteger from sqlalchemy.dialects.postgresql import UUID +from sqlalchemy.orm import backref from ereuse_devicehub.db import db from ereuse_devicehub.resources.action.models import Snapshot @@ -56,7 +57,11 @@ class PlaceholdersLog(Thing): placeholder_id = Column(BigInteger, db.ForeignKey(Placeholder.id), nullable=True) placeholder = db.relationship( - Placeholder, primaryjoin=placeholder_id == Placeholder.id + Placeholder, + backref=backref( + 'placeholder_logs', lazy=True, cascade="all, delete-orphan", uselist=True + ), + primaryjoin=placeholder_id == Placeholder.id, ) owner_id = db.Column( UUID(as_uuid=True), diff --git a/ereuse_devicehub/resources/device/models.py b/ereuse_devicehub/resources/device/models.py index 3b27b327..76f1d2ad 100644 --- a/ereuse_devicehub/resources/device/models.py +++ b/ereuse_devicehub/resources/device/models.py @@ -666,6 +666,15 @@ class Device(Thing): action = next(e for e in reversed(actions) if e.type == 'VisualTest') action.functionality_range = value + def is_abstract(self): + if not self.placeholder: + return '' + if self.placeholder.is_abstract: + return 'Abstract' + if self.placeholder.binding: + return 'Twin' + return 'Real' + def is_status(self, action): from ereuse_devicehub.resources.device import states @@ -883,7 +892,9 @@ class Placeholder(Thing): ) device = db.relationship( Device, - backref=backref('placeholder', lazy=True, cascade="all, delete-orphan", uselist=False), + backref=backref( + 'placeholder', lazy=True, cascade="all, delete-orphan", uselist=False + ), primaryjoin=device_id == Device.id, ) device_id.comment = "datas of the placeholder" diff --git a/ereuse_devicehub/templates/inventory/device_list.html b/ereuse_devicehub/templates/inventory/device_list.html index cd8f35a2..9ed4eb2d 100644 --- a/ereuse_devicehub/templates/inventory/device_list.html +++ b/ereuse_devicehub/templates/inventory/device_list.html @@ -448,7 +448,7 @@ {{ dev.binding and dev.binding.phid or dev.placeholder and dev.placeholder.phid or '' }} - {{ dev.binding and dev.binding.is_abstract and '✓' or dev.placeholder and dev.placeholder.is_abstract and '✓' or '' }} + {{ dev.is_abstract() }} {% for t in dev.tags | sort(attribute="id") %}