schemaviewer.py
changeset 5233 673b63953e7a
parent 4467 0e73d299730a
child 5234 e2476d78b060
equal deleted inserted replaced
5232:78c1a531f7b3 5233:673b63953e7a
    20     """return an ureport layout for some part of a schema"""
    20     """return an ureport layout for some part of a schema"""
    21     def __init__(self, req=None, encoding=None):
    21     def __init__(self, req=None, encoding=None):
    22         self.req = req
    22         self.req = req
    23         if req is not None:
    23         if req is not None:
    24             self.req.add_css('cubicweb.schema.css')
    24             self.req.add_css('cubicweb.schema.css')
    25             self._possible_views = req.vreg['views'].possible_views
       
    26             if not encoding:
    25             if not encoding:
    27                 encoding = req.encoding
    26                 encoding = req.encoding
    28         else:
       
    29             self._possible_views = lambda x: ()
       
    30         self.encoding = encoding
    27         self.encoding = encoding
    31 
    28 
    32     def format_acls(self, schema, access_types):
    29     def format_acls(self, schema, access_types):
    33         """return a layout displaying access control lists"""
    30         """return a layout displaying access control lists"""
    34         data = [self.req._('access type'), self.req._('groups')]
    31         data = [self.req._('access type'), self.req._('groups')]
    96         return self.req.build_url('cwetype/%s' % eschema)
    93         return self.req.build_url('cwetype/%s' % eschema)
    97 
    94 
    98     def rschema_link_url(self, rschema):
    95     def rschema_link_url(self, rschema):
    99         return self.req.build_url('cwrtype/%s' % rschema)
    96         return self.req.build_url('cwrtype/%s' % rschema)
   100 
    97 
   101     def possible_views(self, etype):
       
   102         rset = self.req.etype_rset(etype)
       
   103         return [v for v in self._possible_views(self.req, rset)
       
   104                 if v.category != 'startupview']
       
   105 
       
   106     def stereotype(self, name):
    98     def stereotype(self, name):
   107         return Span((' <<%s>>' % name,), klass='stereotype')
    99         return Span((' <<%s>>' % name,), klass='stereotype')
   108 
   100 
   109     def visit_entityschema(self, eschema, skiptypes=()):
   101     def visit_entityschema(self, eschema, skiptypes=()):
   110         """get a layout for an entity schema"""
   102         """get a layout for an entity schema"""
   111         etype = eschema.type
   103         etype = eschema.type
   112         layout = Section(children=' ', klass='clear')
   104         layout = Section(children=' ', klass='clear')
   113         layout.append(Link(etype,'&#160;' , id=etype)) # anchor
   105         layout.append(Link(etype,'&#160;' , id=etype)) # anchor
   114         title = Link(self.eschema_link_url(eschema), etype)
   106         title = Link(self.eschema_link_url(eschema), etype)
   115         boxchild = [Section(children=(title, ' (%s)'% eschema.display_name(self.req)), klass='title')]
   107         boxchild = [Section(children=(title, ' (%s)'% eschema.display_name(self.req)), klass='title')]
   116         table = Table(cols=4, rheaders=1, klass='listing',
       
   117                       children=self._entity_attributes_data(eschema))
       
   118         boxchild.append(Section(children=(table,), klass='body'))
       
   119         data = []
   108         data = []
   120         data.append(Section(children=boxchild, klass='box'))
   109         data.append(Section(children=boxchild, klass='box'))
   121         data.append(Section(children='', klass='vl'))
   110         data.append(Section(children='', klass='vl'))
   122         data.append(Section(children='', klass='hl'))
   111         data.append(Section(children='', klass='hl'))
   123         t_vars = []
   112         t_vars = []
   150                     t_vars.append(Section(children=(elink,), klass='var'))
   139                     t_vars.append(Section(children=(elink,), klass='var'))
   151                     rels.append(Section(children=(rlink,), klass='rel'))
   140                     rels.append(Section(children=(rlink,), klass='rel'))
   152         data.append(Section(children=rels, klass='rels'))
   141         data.append(Section(children=rels, klass='rels'))
   153         data.append(Section(children=t_vars, klass='vars'))
   142         data.append(Section(children=t_vars, klass='vars'))
   154         layout.append(Section(children=data, klass='entityAttributes'))
   143         layout.append(Section(children=data, klass='entityAttributes'))
   155         if eschema.final: # stop here for final entities
       
   156             return layout
       
   157         _ = self.req._
       
   158         if self.req.user.matching_groups('managers'):
       
   159             # layout.append(self.format_acls(eschema, ('read', 'add', 'delete', 'update')))
       
   160             # possible views for this entity type
       
   161             views = [_(view.title) for view in self.possible_views(etype)]
       
   162             layout.append(Section(children=(Table(cols=1, rheaders=1,
       
   163                                                   children=[_('views')]+views),),
       
   164                                   klass='views'))
       
   165         return layout
   144         return layout
   166 
   145 
   167     def visit_relationschema(self, rschema, title=True):
   146     def visit_relationschema(self, rschema, title=True):
   168         """get a layout for a relation schema"""
   147         """get a layout for a relation schema"""
   169         _ = self.req._
   148         _ = self.req._