Define and run RedHandler
red_exec
red_import
RFLO Init
code
Python Code
code string
Define and run RedHandler
")
if isinstance(element_value, Literal):
response.write("%s" % escape(element_value))
elif store.exists(element_value, TYPE, RDFNS["List"]):
display(element_value)
response.write("%s>" % element_name)
context["display_item"] = display_item
def display(subject):
for item in store.items(subject):
outer_html = first(store.objects(item, RED2["outer_html"]))
if outer_html:
value = first(store.objects(outer_html, RED2["facet"])) or first(store.objects(outer_html, RED["codestr"]))
value = "%s\n" % value
context["inner_html"] = item
exec_module(item, value)
else:
display_item(item)
context["display"] = display
path = URIRef("http://%s%s" % (request.get_header('Host'),
request.get_path_info()))
html = first(store.objects(path, ELEMENT["html"]))
if html:
response.write('''\
''')
display(html)
response.write('''\
''')
else:
response.set_reply_code(404)
response.write("No XHTML found for %s" % path)
response.close()
]]>
Define and run RedHandler
every:
return 1
else:
return 0
def update(self, url):
if not isinstance(url, URIRef):
url = URIRef(url)
print " updating: %s" % url
if not url in self.__stores:
self.index.add(url, TYPE, SPIDER["URL"])
ts = TripleStore()
ts.strict = 0
try:
self.index.remove_triples(url, SPIDER["exception"], None)
ts.load(url)
if url.startswith("http://redfoot.net/") or url.startswith("http://eikeon.com/"):
safe = 1
else:
safe = 0
if not safe:
FACET = URIRef("http://redfoot.net/2002/08/XHTMLinRDF#facet")
CODESTR = URIRef("http://redfoot.net/2002/10/red#codestr")
for s, p, o in ts:
if p==FACET or p==CODESTR:
ts.remove(s, p, o)
self.__stores[url] = ts
self.cache = None
ts.save(self.path(str(hash(url))))
except Exception, e:
print e
self.index.add(url, SPIDER["exception"], Literal("%s" % e))
self.index.remove_triples(url, SPIDER["cached_on"], None)
self.index.add(url, SPIDER["cached_on"], Literal(date_time()))
def remove(self, url):
if not isinstance(url, URIRef):
url = URIRef(url)
if url in self.__stores:
del self.__stores[url]
self.cache = None
def triples(self, subject, predicate, object):
if self.cache==None:
self.cache = cache = TripleStore()
for s, p, o in self.index.triples(None, None, None):
cache.add(s, p, o)
for store in self.__stores.values():
for s, p, o in store.triples(None, None, None):
cache.add(s, p, o)
for triple in self.cache.triples(subject, predicate, object):
yield triple
def save(self, location=None, uri=None):
self.index.save(location, uri)
]]>