parent
25f0e78cab
commit
baa2dcc38b
@ -0,0 +1,30 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% load crispy_forms_tags %}
|
||||||
|
{% load handletags %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">Whois Database Objects</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<h3>Create Database Objects</h3>
|
||||||
|
<ul>
|
||||||
|
<li><a href="{% url "whoisdb:mnt-create" %}">Create new Maintainer</a></li>
|
||||||
|
<li><a href="{% url "whoisdb:contact-create" %}">Create new Role/Person</a></li>
|
||||||
|
<li><a href="{% url "rrequests:dashboard" %}">Request resources</a></li>
|
||||||
|
{% if netblocks %}
|
||||||
|
<li><a href="{% url "whoisdb:inetnum-create" %}">Create Subnet</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% if asblocks %}
|
||||||
|
<li><a href="{% url "whoisdb:asnumber-create" %}">Create AS</a></li>
|
||||||
|
<li><a href="{% url "whoisdb:asblock-create" %}">Create ASblock</a></li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% load handletags %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">{{ object }} <small>({{ object.getClassName }})</small></div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table">
|
||||||
|
{% for field in object|getFields:user %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ field.0 }}</td>
|
||||||
|
<td>{% if field.1.through %}{{ field.1.all|linkObjects }}{% else %}{{ field.1 }}{% endif %}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% if object|userCanEdit:user %}
|
||||||
|
<tr>
|
||||||
|
<td>Actions</td>
|
||||||
|
{% with "whoisdb:"|add:object.getClassName|lower|add:"-edit" as editView %}
|
||||||
|
{% with "whoisdb:"|add:object.getClassName|lower|add:"-delete" as deleteView %}
|
||||||
|
<td><a href="{% url editView handle=object.handle %}">Edit object<a/>, <a href="{% url deleteView handle=object.handle %}">Delete object</a></td>
|
||||||
|
{% endwith %}
|
||||||
|
{% endwith %}
|
||||||
|
</tr>
|
||||||
|
{% endif %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
||||||
|
|
@ -0,0 +1,33 @@
|
|||||||
|
import whoisdb.models
|
||||||
|
|
||||||
|
def _addFields(fields, obj, fieldNames):
|
||||||
|
for fieldName in fieldNames:
|
||||||
|
fields.append((fieldName.capitalize(), getattr(obj, fieldName)))
|
||||||
|
|
||||||
|
|
||||||
|
def getWhoisObjectFields(obj, owner):
|
||||||
|
fields = []
|
||||||
|
|
||||||
|
if getattr(obj, "handle"):
|
||||||
|
_addFields(fields, obj, ["handle"])
|
||||||
|
|
||||||
|
c = type(obj)
|
||||||
|
if c == whoisdb.models.Maintainer:
|
||||||
|
_addFields(fields, obj, ["admin_c"])
|
||||||
|
if owner:
|
||||||
|
_addFields(fields, obj, ["auth"])
|
||||||
|
elif c == whoisdb.models.Contact:
|
||||||
|
_addFields(fields, obj, ["name", "mnt_by"])
|
||||||
|
elif c == whoisdb.models.ASBlock:
|
||||||
|
_addFields(fields, obj, ["name"])
|
||||||
|
fields.append(("AS Range", "%s - %s" % (obj.asBegin, obj.asEnd)))
|
||||||
|
_addFields(fields, obj, ["description", "mnt_by", "mnt_lower", "admin_c"])
|
||||||
|
elif c == whoisdb.models.ASNumber:
|
||||||
|
_addFields(fields, obj, ["name", "number", "description", "mnt_by", "mnt_lower", "admin_c"])
|
||||||
|
elif c == whoisdb.models.InetNum:
|
||||||
|
_addFields(fields, obj, ["name"])
|
||||||
|
fields.append(("Address CIDR", obj.prefix()))
|
||||||
|
_addFields(fields, obj, ["description", "mnt_by", "mnt_lower", "admin_c"])
|
||||||
|
|
||||||
|
return fields
|
||||||
|
|
@ -1,67 +0,0 @@
|
|||||||
from django.db import models
|
|
||||||
|
|
||||||
from dncore.models import User
|
|
||||||
from .validators import HandleValidator
|
|
||||||
|
|
||||||
class ExtraFields(models.Model):
|
|
||||||
name = models.CharField(max_length=64)
|
|
||||||
value = models.CharField(max_length=128)
|
|
||||||
|
|
||||||
order = models.PositiveSmallIntegerField()
|
|
||||||
|
|
||||||
class WhoisObject(models.Model):
|
|
||||||
handle_suffix = None
|
|
||||||
whois_fields = None
|
|
||||||
whois_extra_field_names = None
|
|
||||||
|
|
||||||
handle = models.SlugField(max_length='32', unique=True, validators=[HandleValidator()])
|
|
||||||
created = models.DateTimeField(auto_add_now=True)
|
|
||||||
last_modified = models.DateTimeField(auto_add_now=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
abstract = True
|
|
||||||
|
|
||||||
class Maintainer(WhoisObject):
|
|
||||||
auth = models.ManyToManyField(User)
|
|
||||||
|
|
||||||
admin_c = models.ManyToManyField("Contact")
|
|
||||||
|
|
||||||
class MntdObject(WhoisObject):
|
|
||||||
mnt_by = models.ManyToManyField(Maintainer)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
abstract = True
|
|
||||||
|
|
||||||
|
|
||||||
class Contact(MntdObject):
|
|
||||||
TYPE = (('person', 'person'), ('role', 'role'))
|
|
||||||
|
|
||||||
name = models.CharField(max_length=128)
|
|
||||||
|
|
||||||
class MntdCObject(MntdObject)
|
|
||||||
admin_c = models.ManyToManyField("Contact")
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
abstract = True
|
|
||||||
|
|
||||||
class MntdObject(WhoisObject):
|
|
||||||
admin_c = models.ManyToManyField(Contact)
|
|
||||||
mnt_by = models
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
abstract = True
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class ASNumber(WhoisObject):
|
|
||||||
number = models.PositiveIntegerField(unique=True, db_index=True)
|
|
||||||
|
|
||||||
|
|
||||||
class InetNum(WhoisObject):
|
|
||||||
PROTO = (('ipv4', 'ipv4'), ('ipv6', 'ipv6'))
|
|
||||||
protocol = models.CharField(max_length=4, choices=PROTO)
|
|
||||||
netmask = models.PositiveIntegerField()
|
|
||||||
|
|
||||||
#class ASBlock(WhoisObject):
|
|
||||||
# pass
|
|
@ -0,0 +1,37 @@
|
|||||||
|
from django import template
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
|
from whoisdb.helpers import getWhoisObjectFields
|
||||||
|
|
||||||
|
register = template.Library()
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def linkObject(value):
|
||||||
|
return mark_safe('<a href="%s">%s</a>' % (value.get_absolute_url(), str(value)))
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def linkObjects(value):
|
||||||
|
links = []
|
||||||
|
for obj in value:
|
||||||
|
if hasattr(obj, "get_absolute_url"):
|
||||||
|
links.append('<a href="%s">%s</a>' % (obj.get_absolute_url(), str(obj)))
|
||||||
|
else:
|
||||||
|
links.append(str(obj))
|
||||||
|
|
||||||
|
return mark_safe(", ".join(links))
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def getFields(value, user):
|
||||||
|
print("User is", user)
|
||||||
|
|
||||||
|
owner = value.canEdit(user)
|
||||||
|
|
||||||
|
return getWhoisObjectFields(value, owner)
|
||||||
|
#return [("Handle", value.handle), ("Auth", value.auth)]
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def userCanEdit(value, user):
|
||||||
|
if hasattr(value, "canEdit"):
|
||||||
|
return value.canEdit(user)
|
||||||
|
return False
|
Loading…
Reference in new issue