From 17d98a557f7fedb6753dc11474c25f28ab66f3e3 Mon Sep 17 00:00:00 2001
From: Benjamin Bertrand <benjamin.bertrand@esss.se>
Date: Wed, 3 Jan 2018 14:55:48 +0100
Subject: [PATCH] Add admin_only field to Tag table

Some tags (like gateway) should only be selectable by admin users.
---
 app/models.py        | 2 +-
 app/network/forms.py | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/app/models.py b/app/models.py
index 4a2690e..89ed072 100644
--- a/app/models.py
+++ b/app/models.py
@@ -527,7 +527,7 @@ interfacetags_table = db.Table(
 
 
 class Tag(QRCodeMixin, db.Model):
-    pass
+    admin_only = db.Column(db.Boolean, nullable=False, default=False)
 
 
 class Host(CreatedMixin, db.Model):
diff --git a/app/network/forms.py b/app/network/forms.py
index 145a8a9..2a228b0 100644
--- a/app/network/forms.py
+++ b/app/network/forms.py
@@ -121,11 +121,14 @@ class InterfaceForm(CSEntryForm):
         self.host_id.choices = utils.get_model_choices(models.Host)
         if current_user.is_admin:
             network_query = models.Network.query
+            tags_query = models.Tag.query
         else:
             network_query = models.Network.query.filter(models.Network.admin_only.is_(False))
+            tags_query = models.Tag.query.filter(models.Tag.admin_only.is_(False))
         self.network_id.choices = utils.get_model_choices(models.Network, allow_none=False,
                                                           attr='vlan_name', query=network_query)
-        self.tags.choices = utils.get_model_choices(models.Tag, allow_none=True, attr='name')
+        self.tags.choices = utils.get_model_choices(models.Tag, allow_none=True,
+                                                    attr='name', query=tags_query)
 
 
 class HostInterfaceForm(HostForm, InterfaceForm):
-- 
GitLab