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