diff --git a/templates/whoisdb/handle_table.html b/templates/whoisdb/handle_table.html
index 305b51e..1d84e37 100644
--- a/templates/whoisdb/handle_table.html
+++ b/templates/whoisdb/handle_table.html
@@ -3,7 +3,7 @@
{% for field in object|getFields:user %}
{{ field.0 }} |
- {% if field.1.through %}{{ field.1.all|linkObjects|default:"-" }}{% else %}{{ field.1|default:"-" }}{% endif %} |
+ {% if field.1.through %}{{ field.1.all|linkObjects|default:"-" }}{% else %}{{ field.1|tryLinkHandle|default:"-" }}{% endif %} |
{% endfor %}
{% if object|userCanEdit:user %}
diff --git a/whoisdb/helpers.py b/whoisdb/helpers.py
index d913a30..406f258 100644
--- a/whoisdb/helpers.py
+++ b/whoisdb/helpers.py
@@ -133,3 +133,20 @@ def findInDatabase(rawValue):
results.extend(obj)
return results
+
+def findHandleFromStr(rawValue):
+ handleObjs = [
+ whoisdb.models.Contact,
+ whoisdb.models.Maintainer,
+ whoisdb.models.InetNum,
+ whoisdb.models.ASBlock,
+ whoisdb.models.ASNumber,
+ ]
+
+ for handleObj in handleObjs:
+ try:
+ return handleObj.objects.get(handle=rawValue)
+ except handleObj.DoesNotExist:
+ pass
+
+ return None
diff --git a/whoisdb/templatetags/handletags.py b/whoisdb/templatetags/handletags.py
index 3dec8f5..ecfbe69 100644
--- a/whoisdb/templatetags/handletags.py
+++ b/whoisdb/templatetags/handletags.py
@@ -1,7 +1,9 @@
from django import template
from django.utils.safestring import mark_safe
-from whoisdb.helpers import getWhoisObjectFields
+from whoisdb.helpers import getWhoisObjectFields, findHandleFromStr
+from whoisdb.validators import HandleValidator
+
register = template.Library()
@@ -9,6 +11,22 @@ register = template.Library()
def linkObject(value):
return mark_safe('%s' % (value.get_absolute_url(), str(value)))
+@register.filter
+def tryLinkHandle(handle):
+ try:
+ if not handle:
+ raise ValueError()
+ HandleValidator()(str(handle))
+ obj = findHandleFromStr(handle)
+ if obj:
+ return linkObject(obj)
+ except:
+ pass
+
+ return handle
+
+
+
@register.filter
def linkObjects(value):
links = []
@@ -22,12 +40,9 @@ def linkObjects(value):
@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