cubicweb/web/schemaviewer.py
changeset 12637 234ca3cbbb46
parent 12567 26744ad37953
child 12638 8466a6dd474e
equal deleted inserted replaced
12636:06faf72cf308 12637:234ca3cbbb46
    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)