>
> I've moved the table style to web2py.css and changed the xml generation 
> with helpers to cleanup appadmin. Attached are the proposed diffs for 
> appadmin.py and web2py.css.
>
>
Oops! That would never work (sorry, I didn't know the library requires 
special html input). This new patch instead uses helpers for creating the 
model image. Forget about the css diff (it's useless).

-- 



diff -r ae21c7198a55 applications/welcome/controllers/appadmin.py
--- a/applications/welcome/controllers/appadmin.py	Mon Dec 24 16:14:04 2012 -0600
+++ b/applications/welcome/controllers/appadmin.py	Tue Dec 25 17:38:13 2012 -0300
@@ -10,6 +10,7 @@
 import copy
 import gluon.contenttype
 import gluon.fileutils
+
 try:
     import pygraphviz as pgv
 except ImportError:
@@ -466,8 +467,10 @@
                 ram=ram, disk=disk, object_stats=hp != False)
 
 
-
 def table_template(table):
+    from gluon.html import TR, TD, TABLE, TAG
+    def FONT(*args, **kwargs):
+        return TAG.font(*args, **kwargs)
     def types(field):
         f_type = field.type
         if not isinstance(f_type,str):
@@ -481,13 +484,31 @@
             return B('fk')
         else:
             return ' '
-    # this is horribe HTML but the only one graphiz understands
-    header = '<TR><TD COLSPAN="3" CELLPADDING="4" ALIGN="CENTER" BGCOLOR="#F\
-FA21F"><FONT FACE="Helvetica Bold" COLOR="white">%s</FONT></TD></TR>' % table
-    fields = []                                                                
-    for field in db[table]:
-        fields.append('<TR><TD ALIGN="LEFT" CELLPADDING="4" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica Bold">%s</FONT></TD><TD ALIGN="LEFT" CELLPADDING="4" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica">%s</FONT></TD><TD ALIGN="CENTER" CELLPADDING="4" BORDER="0"><FONT COLOR="#7B7B7B" FACE="Helvetica">%s</FONT></TD></TR>' % (field.name,field.type,types(field)))
-    return '< <TABLE BGCOLOR="#F1F2AD" BORDER="1" CELLBORDER="0" CELLSPACING="0">%s %s</TABLE> >' % (header, ' '.join(fields))
+
+    # This is horribe HTML but the only one graphiz understands
+    rows = []
+    cellpadding = 4
+    color = "#7B7B7B"
+    bgcolor = "#F1F2AD"
+    face = "Helvetica Bold"
+    border = 0
+    
+    rows.append(TR(TD(FONT(table, _face=face, _color="white"),
+                           _colspan=3, _cellpadding=cellpadding,
+                           _align="center", _bgcolor="#FFA21F")))
+    for row in db[table]:
+        rows.append(TR(TD(FONT(row.name, _color=color, _face=face),
+                              _align="left", _cellpadding=cellpadding,
+                              _border=border),
+                       TD(FONT(row.type, _color=color, _face=face),
+                               _align="left", _cellpadding=cellpadding,
+                               _border=border),
+                       TD(FONT(types(row), _color=color, _face=face),
+                               _align="center", _cellpadding=cellpadding,
+                               _border=border)))
+    return "< %s >" % TABLE(*rows, _bgcolor=bgcolor, _border=1,
+                            _cellborder=0, _cellspacing=0).xml()
+
 
 def bg_graph_model():
     graph = pgv.AGraph(layout='dot', directed=True, strict=False, rankdir='LR')

Reply via email to