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,' ' , id=etype)) # anchor |
105 layout.append(Link(etype,' ' , 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._ |