####
from rdflib.nodes import URIRef, Literal
from rdflib.const import TYPE, LABEL, COMMENT
from redfootlib.server.module import App
from sniffer import SNIFFED, SNIFFABLE, SNIFFED_ON, SNIFFED_FROM
class LinkApp(App):
def handle_request(self, request, response):
start = int(request.get_parameter("start", "0"))
end = int(request.get_parameter("end", "30"))
rednode = self.rednode
response.write("""\
Link Sniffer
Links
""")
# TODO: split into two comparators... reverse and chron
def reverse_chron(s1, s2):
date_a = rednode.get_first_value(s1, SNIFFED_ON, '')
date_b = rednode.get_first_value(s2, SNIFFED_ON, '')
return 0-cmp(str(date_a), str(date_b))
links = list(rednode.subjects(TYPE, SNIFFED))
links.sort(reverse_chron)
links = links[start:end]
for link in links:
label = rednode.label(link)
sniffed_on = rednode.get_first_value(link, SNIFFED_ON, '??')
sniffed_from = rednode.get_first_value(link, SNIFFED_FROM, None)
if sniffed_from:
sniffed_from = rednode.label(sniffed_from)
else:
sniffed_from = "unknown"
response.write("""\
%s
from: %s on: %s
""" % (link, label, link, sniffed_from, sniffed_on))
response.write("""\
""");
response.close()