diff --git a/app/models.py b/app/models.py index 234bd3a..f3c7f4b 100644 --- a/app/models.py +++ b/app/models.py @@ -12,10 +12,12 @@ class User(UserMixin, db.Model): class Network(db.Model): id = db.Column(db.Integer(),primary_key=True,unique=True) + vlan_id = db.Column(db.Integer(),unique=True) prefix = db.Column(db.Integer()) network_address = db.Column(db.String(16),unique=True) hosts = db.Column(db.Integer()) description = db.Column(db.String(32)) + is_blacklisted = db.Column(db.Boolean(),default=False) class Allocation(db.Model): ipv4 = db.Column(db.String(16),primary_key=True,unique=True) diff --git a/app/routes/r_base.py b/app/routes/r_base.py index 552d95c..b958441 100644 --- a/app/routes/r_base.py +++ b/app/routes/r_base.py @@ -20,13 +20,15 @@ def home(): def dashboard(): db_networks = Network.query.count() - db_allocations = Allocation.query.filter_by(is_used=True).count() db_inventory = Inventory.query.count() db_users = User.query.count() available_alloc = 0 + db_allocations = 0 - for available_ip in Network.query.all(): - available_alloc += int(available_ip.hosts) + for network in Network.query.all(): + if network.is_blacklisted == False: + available_alloc += int(network.hosts) + db_allocations += Allocation.query.filter_by(net_id=network.id, is_used=True).count() return render_template( 'panel/dashboard.html', diff --git a/app/routes/r_networks.py b/app/routes/r_networks.py index d735d5b..21194e6 100644 --- a/app/routes/r_networks.py +++ b/app/routes/r_networks.py @@ -202,6 +202,31 @@ def network_delete(net_id): flash("Network Not Found", 'danger') return redirect(url_for('network.networks')) +@network.get('//blacklist/') +@login_required +def network_blacklist(net_id, action): + if current_user.is_reado: + return abort(403) + + db_network = Network.query.filter_by(id=net_id).first() + + if db_network == None: + flash("Network Not Found", 'danger') + return redirect(url_for('network.networks')) + + if action == 'blacklist': + db_network.is_blacklisted = True + db.session.commit() + flash("Network Blacklisted", 'warning') + + elif action == 'unblacklist': + db_network.is_blacklisted = False + db.session.commit() + flash("Network Unblacklisted", 'success') + + + return redirect(url_for('network.networks')) + ## HTMX SEARCH @network.post('//allocations/search') @login_required diff --git a/app/templates/panel/networks.html b/app/templates/panel/networks.html index ba83102..dee7207 100644 --- a/app/templates/panel/networks.html +++ b/app/templates/panel/networks.html @@ -28,6 +28,11 @@ Allocations {% if current_user.is_reado == False %} + {% if network.is_blacklisted %} + UnBlacklist + {% else %} + Blacklist + {% endif %}