Revert "Clean up dashboard zone tabs"

This reverts commit fc39cc40ee.
This commit is contained in:
Matt Scott 2023-03-04 11:27:44 -05:00
parent 9003b3f6c8
commit 5f2fc514df
3 changed files with 37 additions and 51 deletions

View File

@ -227,6 +227,15 @@ def ensure_list(l):
yield from l yield from l
class customBoxes:
boxes = {
"reverse": (" ", " "),
"ip6arpa": ("ip6", "%.ip6.arpa"),
"inaddrarpa": ("in-addr", "%.in-addr.arpa")
}
order = ["reverse", "ip6arpa", "inaddrarpa"]
def pretty_domain_name(domain_name): def pretty_domain_name(domain_name):
# Add a debugging statement to print out the domain name # Add a debugging statement to print out the domain name
print("Received domain name:", domain_name) print("Received domain name:", domain_name)

View File

@ -1,10 +1,10 @@
import datetime import datetime
from collections import namedtuple from flask import Blueprint, render_template, url_for, current_app, request, jsonify, redirect, g, session
from flask import Blueprint, render_template, url_for, current_app, request, jsonify, redirect, g, session, abort
from flask_login import login_required, current_user, login_manager from flask_login import login_required, current_user, login_manager
from sqlalchemy import not_ from sqlalchemy import not_
from ..decorators import operator_role_required from ..decorators import operator_role_required
from ..lib.utils import customBoxes
from ..models.user import User, Anonymous from ..models.user import User, Anonymous
from ..models.account import Account from ..models.account import Account
from ..models.account_user import AccountUser from ..models.account_user import AccountUser
@ -21,31 +21,6 @@ dashboard_bp = Blueprint('dashboard',
url_prefix='/dashboard') url_prefix='/dashboard')
class ZoneTabs:
"""Config data for the zone tabs on the dashboard."""
TabInfo = namedtuple('TabInfo', ['display_name', 'filter_pattern'])
"""Info about a single tab.
`display_name` is the name on the tab.
`filter_pattern` is a SQL LIKE pattern , which is case-insensitively matched against the zone
name (without the final root-dot).
If a filter is present, the tab will show zones that match the filter.
If no filter is present, the tab will show zones that are not matched by any other tab filter.
"""
tabs = {
'forward': TabInfo("", None),
'reverse_ipv4': TabInfo("in-addr.arpa", '%.in-addr.arpa'),
'reverse_ipv6': TabInfo("ip6.arpa", '%.ip6.arpa'),
}
"""Dict of unique tab id to a TabInfo."""
order = ['forward', 'reverse_ipv4', 'reverse_ipv6']
"""List of tab ids in the order they will appear."""
@dashboard_bp.before_request @dashboard_bp.before_request
def before_request(): def before_request():
# Check if user is anonymous # Check if user is anonymous
@ -66,12 +41,9 @@ def before_request():
session.modified = True session.modified = True
@dashboard_bp.route('/domains-custom/<path:tab_id>', methods=['GET']) @dashboard_bp.route('/domains-custom/<path:boxId>', methods=['GET'])
@login_required @login_required
def domains_custom(tab_id): def domains_custom(boxId):
if tab_id not in ZoneTabs.tabs:
abort(404)
if current_user.role.name in ['Administrator', 'Operator']: if current_user.role.name in ['Administrator', 'Operator']:
domains = Domain.query domains = Domain.query
else: else:
@ -111,15 +83,14 @@ def domains_custom(tab_id):
if order_by: if order_by:
domains = domains.order_by(*order_by) domains = domains.order_by(*order_by)
if ZoneTabs.tabs[tab_id].filter_pattern: if boxId == "reverse":
# If the tab has a filter, use only that for boxId in customBoxes.order:
domains = domains.filter(Domain.name.ilike(ZoneTabs.tabs[tab_id].filter_pattern)) if boxId == "reverse": continue
domains = domains.filter(
not_(Domain.name.ilike(customBoxes.boxes[boxId][1])))
else: else:
# If the tab has no filter, use all the other filters in negated form domains = domains.filter(Domain.name.ilike(
for tab_info in ZoneTabs.tabs.values(): customBoxes.boxes[boxId][1]))
if not tab_info.filter_pattern:
continue
domains = domains.filter(not_(Domain.name.ilike(tab_info.filter_pattern)))
total_count = domains.count() total_count = domains.count()
@ -236,7 +207,7 @@ def dashboard():
# Add custom boxes to render_template # Add custom boxes to render_template
return render_template('dashboard.html', return render_template('dashboard.html',
zone_tabs=ZoneTabs, custom_boxes=customBoxes,
domain_count=domain_count, domain_count=domain_count,
user_num=user_num, user_num=user_num,
history_number=history_number, history_number=history_number,

View File

@ -176,11 +176,17 @@
<div class="nav-tabs-custom"> <div class="nav-tabs-custom">
<ul class="nav nav-tabs card-header-tabs" id="custom-content-below-tab" <ul class="nav nav-tabs card-header-tabs" id="custom-content-below-tab"
role="tablist"> role="tablist">
{% for tab_id in zone_tabs.order %} <li class="nav-item">
<a class="nav-link active" href="#tab_{{ custom_boxes.order[0] }}"
data-toggle="pill" role="tab">
Zones <b>{{ custom_boxes.boxes[custom_boxes.order[0]][0] }}</b>
</a>
</li>
{% for boxId in custom_boxes.order[1:] %}
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if loop.first %}active{% endif %}" <a class="nav-link" href="#tab_{{ boxId }}" data-toggle="pill"
href="#tab_{{ tab_id }}" data-toggle="pill" role="tab"> role="tab">
Zones <b>{{ zone_tabs.tabs[tab_id].display_name }}</b> Zones <b>{{ custom_boxes.boxes[boxId][0] }}</b>
</a> </a>
</li> </li>
{% endfor %} {% endfor %}
@ -191,11 +197,10 @@
<!-- /.card-header --> <!-- /.card-header -->
<div class="card-body p-0"> <div class="card-body p-0">
<div class="tab-content"> <div class="tab-content">
{% for tab_id in zone_tabs.order %} {% for boxId in custom_boxes.order %}
<div id='tab_{{ tab_id }}' <div class="tab-pane show" id='tab_{{ boxId }}'>
class="tab-pane show {% if loop.first %}active{% endif %}">
<div class="card-body table-responsive records p-0 pt-2"> <div class="card-body table-responsive records p-0 pt-2">
<table id='tbl_domain_list_{{ tab_id }}' <table id='tbl_domain_list_{{ boxId }}'
class="table table-striped table-hover table-sm records"> class="table table-striped table-hover table-sm records">
<thead> <thead>
<tr> <tr>
@ -269,8 +274,9 @@
}); });
} }
{% for tab_id in zone_tabs.order %} $('#tab_{{custom_boxes.order[0]}}').addClass("active");
setUpDomainList("#tbl_domain_list_{{tab_id}}", "{{url_for('dashboard.domains_custom',tab_id=tab_id)}}"); {% for boxId in custom_boxes.order %}
setUpDomainList("#tbl_domain_list_{{boxId}}", "{{url_for('dashboard.domains_custom',boxId=boxId)}}");
{% endfor %} {% endfor %}
//SYBPATCH END// //SYBPATCH END//