Dashboards
This commit is contained in:
parent
aa6313b464
commit
a074cb85ca
|
@ -1,13 +1,27 @@
|
|||
from django.shortcuts import render
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db.models import Q
|
||||
|
||||
from whoisdb.models import ASNumber, InetNum
|
||||
from domains.models import Domain
|
||||
from rrequests.models import Request
|
||||
|
||||
|
||||
@login_required
|
||||
def profile(request):
|
||||
return render(request, "profile/profile.html", {})
|
||||
|
||||
|
||||
@login_required
|
||||
def dashboard(request):
|
||||
return render(request, "dncore/dashboard.html", {})
|
||||
mnts = request.user.maintainer_set.all()
|
||||
asns = ASNumber.objects.filter(Q(mnt_by__in=mnts) | Q(mnt_lower__in=mnts))
|
||||
inetnums = InetNum.objects.filter(Q(mnt_by__in=mnts) | Q(mnt_lower__in=mnts))
|
||||
domains = Domain.objects.filter(mnt_by__in=mnts)
|
||||
rrequests = Request.objects.filter((Q(provider__in=mnts) | Q(applicant__in=mnts)) & Q(status=Request.STATE_OPEN))
|
||||
|
||||
return render(request, "dncore/dashboard.html", {"asns": asns, "inetnums": inetnums, "domains": domains, 'rrequests': rrequests})
|
||||
|
||||
|
||||
def index(request):
|
||||
return render(request, "index.html", {})
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Whois DB <span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="{% url "whoisdb:dashboard" %}">Overview</a></li>
|
||||
<li><a href="{% url "rrequests:dashboard" %}">Resource Requests</a></li>
|
||||
<li><a href="{% url "domains:overview" %}">Domains</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
@ -11,5 +11,94 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><a href="{% url "whoisdb:dashboard" %}">Whois DB <small>(overview)</small></a></div>
|
||||
<div class="panel-body">
|
||||
{% if asns %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>AS Name</th>
|
||||
<th>Number</th>
|
||||
</tr>
|
||||
{% for asn in asns %}
|
||||
<tr>
|
||||
<td>{{ asn.handle }}</td>
|
||||
<td>{{ asn.number }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>You don't have any AS numbers</po>
|
||||
{% endif %}
|
||||
|
||||
{% if inetnums %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>Net Name</th>
|
||||
<th>Prefix</th>
|
||||
</tr>
|
||||
{% for inetnum in inetnums %}
|
||||
<tr>
|
||||
<td>{{ inetnum.handle }}</td>
|
||||
<td>{{ inetnum.prefix }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>You don't have any AS numbers</p>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><a href="{% url "domains:overview" %}">Domains <small>(overview)</small></a></div>
|
||||
<div class="panel-body">
|
||||
{% if domains %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>Domain</th>
|
||||
</tr>
|
||||
{% for domain in domains %}
|
||||
<tr>
|
||||
<td>{{ domain.name }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>You don't have any AS numbers</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading"><a href="{% url "rrequests:dashboard" %}">Requests <small>(overview)</small></a></div>
|
||||
<div class="panel-body">
|
||||
{% if rrequests %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th>From</th>
|
||||
<th>Subject</th>
|
||||
</tr>
|
||||
{% for rrequest in rrequests %}
|
||||
<tr>
|
||||
<td>{{ rrequest.applicant }} <span class="glyphicon glyphicon-arrow-right"></span> {{ rrequest.provider }}</td>
|
||||
<td>{{ rrequest.subject }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>No open requests</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
|
|
@ -146,6 +146,7 @@ class ASBlock(MntdObject):
|
|||
|
||||
return reasons
|
||||
|
||||
|
||||
class ASNumber(MntdObject):
|
||||
handleSuffix = "AS"
|
||||
|
||||
|
@ -166,6 +167,7 @@ class ASNumber(MntdObject):
|
|||
|
||||
return reasons
|
||||
|
||||
|
||||
class InetNum(MntdObject):
|
||||
handleSuffix = "NET"
|
||||
|
||||
|
@ -183,8 +185,12 @@ class InetNum(MntdObject):
|
|||
|
||||
mnt_lower = models.ManyToManyField(Maintainer, related_name='lower_inetnum_set', blank=True)
|
||||
|
||||
def prefix(self):
|
||||
""" Helper function, mainly used in templates """
|
||||
return "%s/%s" % (self.address, self.netmask)
|
||||
|
||||
def getNetwork(self):
|
||||
return ipaddress.ip_network("%s/%s" % (self.address, self.netmask))
|
||||
return ipaddress.ip_network(self.prefix())
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("whoisdb:inetnum-detail", kwargs={"handle": self.handle})
|
||||
|
|
Loading…
Reference in New Issue