def execute(macro, args): formatter = macro.formatter macro.request.page.formatter = formatter request = macro.request _ = request.getText if not args: args = request.page.page_name key = cache_key(request, (macro.name, args, latest_edit(request))) map_text = 'usemap="#%s" ' % (key) if not cache_exists(request, key): succ, data, mappi = draw_topology(request, args, key) if not succ: return mappi mappi = encode_page(mappi) cache.put(request, key, data, content_type='image/png') cache.put(request, key + '-map', mappi, content_type='text/html') else: mappifile = cache._get_datafile(request, key + '-map') mappi = mappifile.read() mappifile.close() div = u'<div class="ClarifiedTopology">\n' + \ u'<img %ssrc="%s" alt="%s">\n</div>\n' % \ (map_text, cache.url(request, key), _('topology')) map = u'<map id="%s" name="%s">\n' % (key, key) map += decode_page(mappi) map += u'</map>\n' return div + map
def __init__(self, name="", type="digraph", strict="", engine="dot", fname="", string="", **attrs): # Initialise root graph. First, handle if fname: self._read(fname=fname) elif string: self._read(string=string) elif name: if strict in ["", "strict"] and type in ["graph", "digraph"]: self.name = encode_page(name) self.handle = getattr(gv, "%s%s" % (strict, type))(name) # print "g = gv.%s%s('%s')" % (strict, type, name) else: raise ValueError("Bad args: " + str(type) + str(name)) else: raise ValueError("Bad args: No name for graph") # Next, attributes if attrs: self._setattrs(self.handle, **attrs) # Then, layout options self.engine = engine # Is relayout necessary? (Initially, yes!) self.changed = 1 # Finally, group classes self.nodes = GraphvizNodes(self, self) self.edges = GraphvizEdges(self, self) self.subg = GraphvizSubgraphs(self, self)
def __contains__(self, item): page = encode_page(item) if page in self.out: return self.out[page] is not self.UNDEFINED if page in self.cache: return True self.readlock() return page in self.db
def __getattr__(self, name): """ Finds the named attribute, returns its value """ handle = self.__dict__['handle'] name = encode_page(name) retval = gv.getv(handle, gv.findattr(handle, name)) # Needed mainly for dict() for work, getattribute excepts # and so __iter__ is called. Non-gv attrs are not returned. if not retval: object.__getattribute__(self, name) return decode_page(retval)
def __getitem__(self, item): page = encode_page(item) if page in self.out: if self.out[page] is self.UNDEFINED: raise KeyError(page) return self.out[page] if page in self.cache: return self.cache[page] self.readlock() self.cache[page] = self.db[page] return self.cache[page]
def formargs(self, form): # format if form.has_key('format'): format = form['format'][0] if format in self.available_formats: self.format = format if form.has_key('view'): if form['view'][0].strip(): self.inline = False if form.has_key('help'): if form['help'][0].strip(): self.help = True if form.has_key('graphengine'): graphengine = encode_page(form['graphengine'][0]) if graphengine in self.available_graphengines: self.graphengine = graphengine if form.has_key('attachment'): self.attachment = form['attachment'][0]
def execute(macro, args): formatter = macro.formatter macro.request.page.formatter = formatter request = macro.request _ = request.getText if not args: args = request.page.page_name key = cache_key(request, (macro.name, args, latest_edit(request))) map_text = 'usemap="#%s" ' % (key) if not cache_exists(request, key): succ, data, mappi = draw_topology(request, args, key) if not succ: return mappi mappi = encode_page(mappi) cache.put(request, key, data, content_type="image/png") cache.put(request, key + "-map", mappi, content_type="text/html") else: mappifile = cache._get_datafile(request, key + "-map") mappi = mappifile.read() mappifile.close() div = u'<div class="ClarifiedTopology">\n' + u'<img %ssrc="%s" alt="%s">\n</div>\n' % ( map_text, cache.url(request, key), _("topology"), ) map = u'<map id="%s" name="%s">\n' % (key, key) map += decode_page(mappi) map += u"</map>\n" return div + map
def delpage(self, pagename): log.debug("delpage %s" % (repr(pagename), )) page = encode_page(pagename) self.out[page] = self.UNDEFINED self.cache.pop(page, None)
def cacheset(self, item, value): page = encode_page(item) self.cache[page] = value
def savepage(self, pagename, pagedict): log.debug("savepage %s = %s" % (repr(pagename), repr(pagedict))) page = encode_page(pagename) self.out[page] = pagedict self.cache.pop(page, None)
def delpage(self, pagename): log.debug("delpage %s" % (repr(pagename),)) page = encode_page(pagename) self.out[page] = self.UNDEFINED self.cache.pop(page, None)