From 7ac9c09db79e7c1450f6be8e3ea1f8a0b158e1e2 Mon Sep 17 00:00:00 2001 From: Benjamin Bertrand <benjamin.bertrand@esss.se> Date: Mon, 27 Nov 2017 22:57:54 +0100 Subject: [PATCH] Add Tag table hosttags table required for the many-to-many relationship See http://flask-sqlalchemy.pocoo.org/2.3/models/#many-to-many-relationships --- app/models.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/models.py b/app/models.py index 9e94ca0..7108bfa 100644 --- a/app/models.py +++ b/app/models.py @@ -381,6 +381,18 @@ class Network(db.Model): } +# Table required for Many-to-Many relationships between hosts and tags +hosttags_table = db.Table( + 'hosttags', + db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True), + db.Column('host_id', db.Integer, db.ForeignKey('host.id'), primary_key=True) +) + + +class Tag(QRCodeMixin, db.Model): + pass + + class Host(db.Model): id = db.Column(db.Integer, primary_key=True) network_id = db.Column(db.Integer, db.ForeignKey('network.id'), nullable=False) @@ -390,6 +402,8 @@ class Host(db.Model): mac_id = db.Column(db.Integer, db.ForeignKey('mac.id')) cnames = db.relationship('Cname', backref='host') + tags = db.relationship('Tag', secondary=hosttags_table, lazy='subquery', + backref=db.backref('hosts', lazy=True)) def __init__(self, **kwargs): # Automatically convert network to an instance of Network if it was passed -- GitLab