22 |
22 |
23 from logilab.common.ureports import Section, Title, Table, Link, Span, Text |
23 from logilab.common.ureports import Section, Title, Table, Link, Span, Text |
24 |
24 |
25 from yams.schema2dot import CARD_MAP |
25 from yams.schema2dot import CARD_MAP |
26 from yams.schema import RelationDefinitionSchema |
26 from yams.schema import RelationDefinitionSchema |
27 from operator import attrgetter |
27 from operator import attrgetter, itemgetter |
28 |
28 |
29 TYPE_GETTER = attrgetter('type') |
29 TYPE_GETTER = attrgetter('type') |
30 |
30 |
31 I18NSTRINGS = [_('read'), _('add'), _('delete'), _('update'), _('order')] |
31 I18NSTRINGS = [_('read'), _('add'), _('delete'), _('update'), _('order')] |
32 |
32 |
87 rsection = Section(children=(title,)) |
87 rsection = Section(children=(title,)) |
88 layout.append(rsection) |
88 layout.append(rsection) |
89 relations = [rschema for rschema in sorted(schema.relations(), key=TYPE_GETTER) |
89 relations = [rschema for rschema in sorted(schema.relations(), key=TYPE_GETTER) |
90 if not (rschema.final or rschema.type in skiptypes)] |
90 if not (rschema.final or rschema.type in skiptypes)] |
91 keys = [(rschema.type, rschema) for rschema in relations] |
91 keys = [(rschema.type, rschema) for rschema in relations] |
92 for key, rschema in sorted(keys, cmp=(lambda x, y: cmp(x[1], y[1]))): |
92 for key, rschema in sorted(keys, key=itemgetter(1)): |
93 relstr = self.visit_relationschema(rschema) |
93 relstr = self.visit_relationschema(rschema) |
94 rsection.append(relstr) |
94 rsection.append(relstr) |
95 return layout |
95 return layout |
96 |
96 |
97 def _entity_attributes_data(self, eschema): |
97 def _entity_attributes_data(self, eschema): |
98 _ = self._ |
98 _ = self._ |
99 data = [_('attribute'), _('type'), _('default'), _('constraints')] |
99 data = [_('attribute'), _('type'), _('default'), _('constraints')] |
100 attributes = sorted(eschema.attribute_definitions(), cmp=(lambda x, y: cmp(x[0].type, y[0].type))) |
100 attributes = sorted(eschema.attribute_definitions(), |
|
101 key=lambda el: el[0].type) |
101 for rschema, aschema in attributes: |
102 for rschema, aschema in attributes: |
102 rdef = eschema.rdef(rschema) |
103 rdef = eschema.rdef(rschema) |
103 if not self.may_read(rdef): |
104 if not self.may_read(rdef): |
104 continue |
105 continue |
105 aname = rschema.type |
106 aname = rschema.type |
138 t_vars = [] |
139 t_vars = [] |
139 rels = [] |
140 rels = [] |
140 first = True |
141 first = True |
141 |
142 |
142 rel_defs = sorted(eschema.relation_definitions(), |
143 rel_defs = sorted(eschema.relation_definitions(), |
143 cmp=(lambda x, y: cmp((x[0].type, x[0].cardinality), |
144 key=lambda el: (el[0].type, el[0].cardinality)) |
144 (y[0].type, y[0].cardinality)))) |
145 |
145 for rschema, targetschemas, role in rel_defs: |
146 for rschema, targetschemas, role in rel_defs: |
146 if rschema.type in skiptypes: |
147 if rschema.type in skiptypes: |
147 continue |
148 continue |
148 for oeschema in sorted(targetschemas, key=TYPE_GETTER): |
149 for oeschema in sorted(targetschemas, key=TYPE_GETTER): |
149 rdef = rschema.role_rdef(eschema, oeschema, role) |
150 rdef = rschema.role_rdef(eschema, oeschema, role) |