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
class customBoxes:
boxes = {
"reverse": (" ", " "),
"ip6arpa": ("ip6", "%.ip6.arpa"),
"inaddrarpa": ("in-addr", "%.in-addr.arpa")
}
order = ["reverse", "ip6arpa", "inaddrarpa"]
def pretty_domain_name(domain_name):
# Add a debugging statement to print out the domain name
print("Received domain name:", domain_name)

View File

@ -1,10 +1,10 @@
import datetime
from collections import namedtuple
from flask import Blueprint, render_template, url_for, current_app, request, jsonify, redirect, g, session, abort
from flask import Blueprint, render_template, url_for, current_app, request, jsonify, redirect, g, session
from flask_login import login_required, current_user, login_manager
from sqlalchemy import not_
from ..decorators import operator_role_required
from ..lib.utils import customBoxes
from ..models.user import User, Anonymous
from ..models.account import Account
from ..models.account_user import AccountUser
@ -21,31 +21,6 @@ dashboard_bp = Blueprint('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
def before_request():
# Check if user is anonymous
@ -66,12 +41,9 @@ def before_request():
session.modified = True
@dashboard_bp.route('/domains-custom/<path:tab_id>', methods=['GET'])
@dashboard_bp.route('/domains-custom/<path:boxId>', methods=['GET'])
@login_required
def domains_custom(tab_id):
if tab_id not in ZoneTabs.tabs:
abort(404)
def domains_custom(boxId):
if current_user.role.name in ['Administrator', 'Operator']:
domains = Domain.query
else:
@ -111,15 +83,14 @@ def domains_custom(tab_id):
if order_by:
domains = domains.order_by(*order_by)
if ZoneTabs.tabs[tab_id].filter_pattern:
# If the tab has a filter, use only that
domains = domains.filter(Domain.name.ilike(ZoneTabs.tabs[tab_id].filter_pattern))
if boxId == "reverse":
for boxId in customBoxes.order:
if boxId == "reverse": continue
domains = domains.filter(
not_(Domain.name.ilike(customBoxes.boxes[boxId][1])))
else:
# If the tab has no filter, use all the other filters in negated form
for tab_info in ZoneTabs.tabs.values():
if not tab_info.filter_pattern:
continue
domains = domains.filter(not_(Domain.name.ilike(tab_info.filter_pattern)))
domains = domains.filter(Domain.name.ilike(
customBoxes.boxes[boxId][1]))
total_count = domains.count()
@ -236,7 +207,7 @@ def dashboard():
# Add custom boxes to render_template
return render_template('dashboard.html',
zone_tabs=ZoneTabs,
custom_boxes=customBoxes,
domain_count=domain_count,
user_num=user_num,
history_number=history_number,

View File

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