From 6ac391b765da03325868a83717ce48d66745701b Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Tue, 28 Mar 2017 01:56:10 +0200 Subject: [PATCH] More links on handlepage! --- templates/whoisdb/handle_table.html | 2 +- whoisdb/helpers.py | 17 +++++++++++++++++ whoisdb/templatetags/handletags.py | 23 +++++++++++++++++++---- 3 files changed, 37 insertions(+), 5 deletions(-) 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