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