I like different colors to gray... You can add more formats to download:
‘canon’, ‘cmap’, ‘cmapx’, ‘cmapx_np’, ‘dia’, ‘dot’, ‘fig’, ‘gd’, ‘gd2’, ‘gif’, ‘hpgl’, ‘imap’, ‘imap_np’, ‘ismap’, ‘jpe’, ‘jpeg’, ‘jpg’, ‘mif’, ‘mp’, ‘pcl’, ‘pdf’, ‘pic’, ‘plain’, ‘plain-ext’, ‘png’, ‘ps’, ‘ps2’, ‘svg’, ‘svgz’, ‘vml’, ‘vmlz’, ‘vrml’, ‘vtx’, ‘wbmp’, ‘xdot’, ‘xlib’ José --
--- /home/jose/web2py/applications/welcome/views/appadmin.html 2012-12-25 12:11:39.000000000 -0300 +++ /home/jose/web2py/applications/borro3/views/appadmin.html 2012-12-29 20:48:18.000000000 -0300 @@ -229,7 +229,21 @@ {{=T('pygraphviz library not found')}} {{elif not databases:}} {{=T("No databases in this application")}} - {{else:}} + {{else:}} + <div class="btn-group"> + <a class="btn dropdown-toggle" data-toggle="dropdown" href="#"> + <i class="icon-download"></i> {{=T('Save model as...')}} + <span class="caret"></span> + </a> + <ul class="dropdown-menu"> + <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['png'])}}">png</a></li> + <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['svg'])}}">svg</a></li> + <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['pdf'])}}">pdf</a></li> + <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['ps'])}}">ps</a></li> + <li><a href="{{=URL('appadmin', 'bg_graph_model', args=['dot'])}}">dot</a></li> + </ul> + </div> + <br /> {{=IMG(_src=URL('appadmin', 'bg_graph_model'))}} {{pass}} {{pass}}
--- /home/jose/web2py/applications/welcome/controllers/appadmin.py 2012-12-29 10:33:02.000000000 -0300 +++ /home/jose/web2py/applications/borro3/controllers/appadmin.py 2012-12-29 21:11:28.000000000 -0300 @@ -487,18 +487,27 @@ else: return ' ' - # This is horribe HTML but the only one graphiz understands + # This is horribe HTML but the only one graphviz understands rows = [] - cellpadding = 4 - color = "#000000" - bgcolor = "#FFFFFF" + cellpadding = 4 face = "Helvetica" face_bold = "Helvetica Bold" border = 0 - rows.append(TR(TD(FONT(table, _face=face_bold, _color=bgcolor), + if table.startswith('auth_'): + header_color = "#FFFFFF" + header_bgcolor = "#000000" + color = "#000000" + bgcolor = "#FFFFFF" + else: + header_color = "#FFFFFF" + header_bgcolor = "#717171" + color = "#000000" + bgcolor = "#FBFBFB" + + rows.append(TR(TD(FONT(table, _face=face_bold, _color=header_color), _colspan=3, _cellpadding=cellpadding, - _align="center", _bgcolor=color))) + _align="center", _bgcolor=header_bgcolor))) for row in db[table]: rows.append(TR(TD(FONT(row.name, _color=color, _face=face_bold), _align="left", _cellpadding=cellpadding, @@ -532,7 +541,16 @@ graph.add_edge(n1, n2, color="#4C4C4C", label='') graph.layout() - return graph.draw(format='png', prog='dot') + if not request.args: + return graph.draw(format='png', prog='dot') + else: + response.headers['Content-Disposition']='attachment;filename=graph.%s'%request.args(0) + if request.args(0) == 'dot': + return graph.string() + else: + return graph.draw(format=request.args(0), prog='dot') + def graph_model(): - return dict(databases=databases, pgv=pgv) + file_type = SELECT('png', 'svg', 'dot') + return dict(databases=databases, pgv=pgv, file_type=file_type)