Implement Network display tab

This commit is contained in:
Kumi 2019-02-02 13:20:40 +00:00
parent 22d0726175
commit 21014a6894
4 changed files with 60 additions and 4 deletions

View file

@ -16,7 +16,7 @@ class Network(models.Model):
name = models.CharField("Common Name", max_length=64, blank=True, null=True)
extip = models.CharField("External/Public IP", max_length=15)
intip = models.CharField("Internal/Private IP", max_length=15)
organizations = models.ManyToManyField(Organization)
organization = models.ManyToManyField(Organization)
def __str__(self):
return ("%s" % self.intip + (" (%s)" % self.name if self.name else ""))

View file

@ -1,5 +1,5 @@
from django import template
from manager.models import Organization, Device, Wifi
from manager.models import Organization, Device, Wifi, Network
from django.contrib.auth.models import User
register = template.Library()
@ -11,6 +11,10 @@ def abcSort(inlist):
def allOrgas():
return abcSort(Organization.objects.all())
@register.simple_tag
def allNets():
return abcSort(Network.objects.all())
def orgaObjects(cls, orga):
return abcSort(set(cls.objects.filter(organization__in=orga)))
@ -41,3 +45,6 @@ def userWifis(context):
def userUsers(context):
return orgaObjects(User, userOrgas(context))
@register.simple_tag(takes_context=True)
def userNets(context):
return orgaObjects(Network, userOrgas(context))

View file

@ -74,10 +74,12 @@ function showdevices() {
$("#devicespart").show();
$("#wifipart").hide();
$("#userpart").hide();
$("#netpart").hide();
$("#linkdevices").css("font-weight", "bold");
$("#linkwifi").css("font-weight", "normal");
$("#linkusers").css("font-weight", "normal");
$("#linknets").css("font-weight", "normal");
window.history.pushState("", "", "/devices/");
};
@ -86,10 +88,12 @@ function showwifi() {
$("#devicespart").hide();
$("#wifipart").show();
$("#userpart").hide();
$("#netpart").hide();
$("#linkdevices").css("font-weight", "normal");
$("#linkwifi").css("font-weight", "bold");
$("#linkusers").css("font-weight", "normal");
$("#linknets").css("font-weight", "normal");
window.history.pushState("", "", "/wifi/");
};
@ -98,17 +102,34 @@ function showusers() {
$("#devicespart").hide();
$("#wifipart").hide();
$("#userpart").show();
$("#netpart").hide();
$("#linkdevices").css("font-weight", "normal");
$("#linkwifi").css("font-weight", "normal");
$("#linkusers").css("font-weight", "bold");
$("#linknets").css("font-weight", "normal");
window.history.pushState("", "", "/users/");
};
function shownets() {
$("#devicespart").hide();
$("#wifipart").hide();
$("#userpart").hide();
$("#netpart").show();
$("#linkdevices").css("font-weight", "normal");
$("#linkwifi").css("font-weight", "normal");
$("#linkusers").css("font-weight", "normal");
$("#linknets").css("font-weight", "bold");
window.history.pushState("", "", "/users/");
};
var page = document.location.pathname.substring(1, document.location.pathname.lastIndexOf('/'));
if (page == "users") showusers();
else if (page == "wifi") showwifi();
else if (page == "networks") shownets();
else showdevices();
$("div[id$='-indicator']").each(function() {

View file

@ -6,7 +6,7 @@
<p><b>Organization:</b> {% orgaString %}</p>
<p><b>User:</b> {{ user.first_name }} {{ user.last_name }} ({{ user.username }}) <a href="/users/{{ user.id }}/edit"><i class="fas fa-edit" title="Edit User"></i></a></p>
<div align="center"><b>Manage:</b> <a id="linkdevices" href="#" onclick="showdevices();">Devices</a> &dash; <a id="linkwifi" href="#" onclick="showwifi();">WiFi</a>{% if user.is_staff %} &dash; <a id="linkusers" href="#" onclick="showusers();">Users</a>{% endif %}</div>
<div align="center"><b>Manage:</b> <a id="linkdevices" href="#" onclick="showdevices();">Devices</a> &dash; <a id="linkwifi" href="#" onclick="showwifi();">WiFi</a>{% if user.is_staff %} &dash; <a id="linkusers" href="#" onclick="showusers();">Users</a>{% endif %}{% if user.is_superuser %} &dash; <a id="linknets" href="#" onclick="shownets();">Networks</a>{% endif %}</div>
{% getNotifications %}
@ -95,7 +95,35 @@
</div>
</div>
{% endif %}
{% if request.user.is_superuser %}
<div name ="netpart" id="netpart">
<h2>Networks</h2>
<div class="table-responsive">
<table id="networks" name="networks" class="table">
<thead>
<tr>
<th>Common Name</th>
<th>Internal IP</th>
<th>External IP</th>
<th>Options</th>
</tr>
</thead>
{% userNets as networks %}
{% for network in networks %}
<tr>
<td><div style="display:inline;" title="{% directOrgaString auser %}">{{ network.name }}</div></td>
<td>{{ network.intip }}</td>
<td>{{ network.extip }}</td>
<td></td>
</tr>
{% endfor %}
</table>
</div>
</div>
{% endif %}
<script src="/js/devices.js"></script>
{% endblock %}