web/views/schema.py
branchstable
changeset 9542 79b9bf88be28
parent 9383 7b3fa5a7a5a3
child 10405 7b27a7443180
--- a/web/views/schema.py	Fri Feb 14 17:52:49 2014 +0100
+++ b/web/views/schema.py	Mon Feb 17 11:13:27 2014 +0100
@@ -24,6 +24,7 @@
 
 import tempfile
 import os, os.path as osp
+import codecs
 
 from logilab.common.graph import GraphGenerator, DotBackend
 from logilab.common.ureports import Section, Table
@@ -40,7 +41,6 @@
 from cubicweb.view import EntityView, StartupView
 from cubicweb import tags, uilib
 from cubicweb.web import action, facet, schemaviewer
-from cubicweb.web.views import TmpFileViewMixin
 from cubicweb.web.views import uicfg, primary, baseviews, tabs, tableview, ibreadcrumbs
 
 ALWAYS_SKIP_TYPES = BASE_TYPES | SCHEMA_TYPES
@@ -225,6 +225,7 @@
             {'x': entity.eid})
         self.wview('table', rset, 'null',
                    cellvids={0: 'rdef-name-cell',
+                             2: 'etype-attr-defaultval-cell',
                              3: 'etype-attr-cardinality-cell',
                              4: 'rdef-constraints-cell',
                              6: 'rdef-options-cell'},
@@ -271,6 +272,14 @@
             self.w(self._cw._(u'no'))
 
 
+class CWETypeAttributeDefaultValCell(baseviews.FinalView):
+    __regid__ = 'etype-attr-defaultval-cell'
+
+    def cell_call(self, row, col):
+        defaultval = self.cw_rset.rows[row][col]
+        if defaultval is not None:
+            self.w(unicode(self.cw_rset.rows[row][col].unzpickle()))
+
 class CWETypeRelationCardinalityCell(baseviews.FinalView):
     __regid__ = 'etype-rel-cardinality-cell'
 
@@ -616,6 +625,8 @@
     __regid__ = 'schemagraph'
 
     def call(self, etype=None, rtype=None, alt=''):
+        if 'MSIE 8' in self._cw.useragent():
+            return
         schema = self._cw.vreg.schema
         if etype:
             assert rtype is None
@@ -643,22 +654,12 @@
                                                   'splines':'true',
                                                   'sep':'0.2',
                                               }))
-        # map file
-        pmap, mapfile = tempfile.mkstemp(".map")
-        os.close(pmap)
-        # image file
-        fd, tmpfile = tempfile.mkstemp('.png')
+        # svg image file
+        fd, tmpfile = tempfile.mkstemp('.svg')
         os.close(fd)
-        generator.generate(visitor, prophdlr, tmpfile, mapfile)
-        filekeyid = make_uid()
-        self._cw.session.data[filekeyid] = tmpfile
-        self.w(u'<img src="%s" alt="%s" usemap="#schema" />' % (
-            xml_escape(self._cw.build_url(vid='tmppng', tmpfile=filekeyid)),
-            xml_escape(self._cw._(alt))))
-        stream = open(mapfile, 'r').read()
-        stream = stream.decode(self._cw.encoding)
-        self.w(stream)
-        os.unlink(mapfile)
+        generator.generate(visitor, prophdlr, tmpfile)
+        with codecs.open(tmpfile, 'rb', encoding='utf-8') as svgfile:
+            self.w(svgfile.read())
 
 # breadcrumbs ##################################################################