web/views/startup.py
changeset 2381 caad2367d940
parent 2293 7ded2a1416e4
parent 2368 b41aef0e63a7
child 2387 ea1defea9636
equal deleted inserted replaced
2374:ea1a44e4ad62 2381:caad2367d940
    72                 href = rset.get_entity(0, 0).absolute_url(vid='edition')
    72                 href = rset.get_entity(0, 0).absolute_url(vid='edition')
    73                 label = self.req._('edit the index page')
    73                 label = self.req._('edit the index page')
    74             else:
    74             else:
    75                 href = req.build_url('view', vid='creation', etype='Card', wikiid='index')
    75                 href = req.build_url('view', vid='creation', etype='Card', wikiid='index')
    76                 label = self.req._('create an index page')
    76                 label = self.req._('create an index page')
    77             self.w(u'<br/><a href="%s">%s</a>\n' % (html_escape(href), label))
    77             self.w(u'<br/><a href="%s">%s</a>\n' % (xml_escape(href), label))
    78 
    78 
    79     def folders(self):
    79     def folders(self):
    80         self.w(u'<h4>%s</h4>\n' % self.req._('Browse by category'))
    80         self.w(u'<h4>%s</h4>\n' % self.req._('Browse by category'))
    81         self.vreg.select('views', 'tree', self.req).render(w=self.w)
    81         self.vreg.select('views', 'tree', self.req).render(w=self.w)
    82 
    82 
    87     def startupviews_table(self):
    87     def startupviews_table(self):
    88         for v in self.vreg.possible_views(self.req, None):
    88         for v in self.vreg.possible_views(self.req, None):
    89             if v.category != 'startupview' or v.id in ('index', 'tree', 'manage'):
    89             if v.category != 'startupview' or v.id in ('index', 'tree', 'manage'):
    90                 continue
    90                 continue
    91             self.w('<p><a href="%s">%s</a></p>' % (
    91             self.w('<p><a href="%s">%s</a></p>' % (
    92                 html_escape(v.url()), html_escape(self.req._(v.title).capitalize())))
    92                 xml_escape(v.url()), xml_escape(self.req._(v.title).capitalize())))
    93 
    93 
    94     def entities(self):
    94     def entities(self):
    95         schema = self.schema
    95         schema = self.schema
    96         self.w(u'<h4>%s</h4>\n' % self.req._('The repository holds the following entities'))
    96         self.w(u'<h4>%s</h4>\n' % self.req._('The repository holds the following entities'))
    97         manager = self.req.user.matching_groups('managers')
    97         manager = self.req.user.matching_groups('managers')
   142                                         rset=req.etype_rset(etype))
   142                                         rset=req.etype_rset(etype))
   143                 url = view.url()
   143                 url = view.url()
   144             else:
   144             else:
   145                 url = self.build_url('view', rql='%s X' % etype)
   145                 url = self.build_url('view', rql='%s X' % etype)
   146             etypelink = u'&nbsp;<a href="%s">%s</a> (%d)' % (
   146             etypelink = u'&nbsp;<a href="%s">%s</a> (%d)' % (
   147                 html_escape(url), label, nb)
   147                 xml_escape(url), label, nb)
   148             yield (label, etypelink, self.add_entity_link(eschema, req))
   148             yield (label, etypelink, self.add_entity_link(eschema, req))
   149 
   149 
   150     def add_entity_link(self, eschema, req):
   150     def add_entity_link(self, eschema, req):
   151         """creates a [+] link for adding an entity if user has permission to do so"""
   151         """creates a [+] link for adding an entity if user has permission to do so"""
   152         if not eschema.has_perm(req, 'add'):
   152         if not eschema.has_perm(req, 'add'):
   153             return u''
   153             return u''
   154         return u'[<a href="%s" title="%s">+</a>]' % (
   154         return u'[<a href="%s" title="%s">+</a>]' % (
   155             html_escape(self.create_url(eschema.type)),
   155             xml_escape(self.create_url(eschema.type)),
   156             self.req.__('add a %s' % eschema))
   156             self.req.__('add a %s' % eschema))
   157 
   157 
   158 
   158 
   159 class IndexView(ManageView):
   159 class IndexView(ManageView):
   160     id = 'index'
   160     id = 'index'
   161     title = _('index')
   161     title = _('view_index')
   162 
   162 
   163     def display_folders(self):
   163     def display_folders(self):
   164         return 'Folder' in self.schema and self.req.execute('Any COUNT(X) WHERE X is Folder')[0][0]
   164         return 'Folder' in self.schema and self.req.execute('Any COUNT(X) WHERE X is Folder')[0][0]
   165 
   165 
   166 class SchemaView(tabs.TabsMixin, StartupView):
   166 class SchemaView(tabs.TabsMixin, StartupView):
   182 
   182 
   183     def call(self):
   183     def call(self):
   184         self.w(_(u'<div>This schema of the data model <em>excludes</em> the '
   184         self.w(_(u'<div>This schema of the data model <em>excludes</em> the '
   185                  u'meta-data, but you can also display a <a href="%s">complete '
   185                  u'meta-data, but you can also display a <a href="%s">complete '
   186                  u'schema with meta-data</a>.</div>')
   186                  u'schema with meta-data</a>.</div>')
   187                % html_escape(self.build_url('view', vid='schemagraph', skipmeta=0)))
   187                % xml_escape(self.build_url('view', vid='schemagraph', withmeta=1)))
   188         self.w(u'<img src="%s" alt="%s"/>\n' % (
   188         self.w(u'<img src="%s" alt="%s"/>\n' % (
   189             html_escape(self.req.build_url('view', vid='schemagraph', skipmeta=1)),
   189             xml_escape(self.req.build_url('view', vid='schemagraph', skipmeta=1)),
   190             self.req._("graphical representation of the application'schema")))
   190             self.req._("graphical representation of the application'schema")))
   191 
   191 
   192 
   192 
   193 class SchemaTabTextView(StartupView):
   193 class SchemaTabTextView(StartupView):
   194     id = 'schema-text'
   194     id = 'schema-text'
   226         _ = self.req._
   226         _ = self.req._
   227         self.w(u'<div id="schema_security"><a id="index" href="index"/>')
   227         self.w(u'<div id="schema_security"><a id="index" href="index"/>')
   228         self.w(u'<h2 class="schema">%s</h2>' % _('index').capitalize())
   228         self.w(u'<h2 class="schema">%s</h2>' % _('index').capitalize())
   229         self.w(u'<h4>%s</h4>' %   _('Entities').capitalize())
   229         self.w(u'<h4>%s</h4>' %   _('Entities').capitalize())
   230         ents = []
   230         ents = []
   231         for eschema in entities:
   231         for eschema in sorted(entities):
   232             url = html_escape(self.build_url('schema', **formparams))
   232             url = xml_escape(self.build_url('schema', **formparams))
   233             ents.append(u'<a class="grey" href="%s#%s">%s</a> (%s)' % (
   233             ents.append(u'<a class="grey" href="%s#%s">%s</a> (%s)' % (
   234                 url,  eschema.type, eschema.type, _(eschema.type)))
   234                 url,  eschema.type, eschema.type, _(eschema.type)))
   235         self.w(u', '.join(ents))
   235         self.w(u', '.join(ents))
   236         self.w(u'<h4>%s</h4>' % (_('relations').capitalize()))
   236         self.w(u'<h4>%s</h4>' % (_('relations').capitalize()))
   237         rels = []
   237         rels = []
   238         for rschema in relations:
   238         for rschema in sorted(relations):
   239             url = html_escape(self.build_url('schema', **formparams))
   239             url = xml_escape(self.build_url('schema', **formparams))
   240             rels.append(u'<a class="grey" href="%s#%s">%s</a> (%s), ' %  (
   240             rels.append(u'<a class="grey" href="%s#%s">%s</a> (%s), ' %  (
   241                 url , rschema.type, rschema.type, _(rschema.type)))
   241                 url , rschema.type, rschema.type, _(rschema.type)))
   242         self.w(u', '.join(ents))
   242         self.w(u', '.join(ents))
   243         # entities
   243         # entities
   244         self.display_entities(entities, formparams)
   244         self.display_entities(entities, formparams)
   252         self.w(u'<a id="entities" href="entities"/>')
   252         self.w(u'<a id="entities" href="entities"/>')
   253         self.w(u'<h2 class="schema">%s</h2>' % _('permissions for entities').capitalize())
   253         self.w(u'<h2 class="schema">%s</h2>' % _('permissions for entities').capitalize())
   254         for eschema in entities:
   254         for eschema in entities:
   255             self.w(u'<a id="%s" href="%s"/>' %  (eschema.type, eschema.type))
   255             self.w(u'<a id="%s" href="%s"/>' %  (eschema.type, eschema.type))
   256             self.w(u'<h3 class="schema">%s (%s) ' % (eschema.type, _(eschema.type)))
   256             self.w(u'<h3 class="schema">%s (%s) ' % (eschema.type, _(eschema.type)))
   257             url = html_escape(self.build_url('schema', **formparams) + '#index')
   257             url = xml_escape(self.build_url('schema', **formparams) + '#index')
   258             self.w(u'<a href="%s"><img src="%s" alt="%s"/></a>' % (
   258             self.w(u'<a href="%s"><img src="%s" alt="%s"/></a>' % (
   259                 url,  self.req.external_resource('UP_ICON'), _('up')))
   259                 url,  self.req.external_resource('UP_ICON'), _('up')))
   260             self.w(u'</h3>')
   260             self.w(u'</h3>')
   261             self.w(u'<div style="margin: 0px 1.5em">')
   261             self.w(u'<div style="margin: 0px 1.5em">')
   262             self.schema_definition(eschema, link=False)
   262             self.schema_definition(eschema, link=False)
   279         self.w(u'<a id="relations" href="relations"/>')
   279         self.w(u'<a id="relations" href="relations"/>')
   280         self.w(u'<h2 class="schema">%s </h2>' % _('permissions for relations').capitalize())
   280         self.w(u'<h2 class="schema">%s </h2>' % _('permissions for relations').capitalize())
   281         for rschema in relations:
   281         for rschema in relations:
   282             self.w(u'<a id="%s" href="%s"/>' %  (rschema.type, rschema.type))
   282             self.w(u'<a id="%s" href="%s"/>' %  (rschema.type, rschema.type))
   283             self.w(u'<h3 class="schema">%s (%s) ' % (rschema.type, _(rschema.type)))
   283             self.w(u'<h3 class="schema">%s (%s) ' % (rschema.type, _(rschema.type)))
   284             url = html_escape(self.build_url('schema', **formparams) + '#index')
   284             url = xml_escape(self.build_url('schema', **formparams) + '#index')
   285             self.w(u'<a href="%s"><img src="%s" alt="%s"/></a>' % (
   285             self.w(u'<a href="%s"><img src="%s" alt="%s"/></a>' % (
   286                 url,  self.req.external_resource('UP_ICON'), _('up')))
   286                 url,  self.req.external_resource('UP_ICON'), _('up')))
   287             self.w(u'</h3>')
   287             self.w(u'</h3>')
   288             self.w(u'<div style="margin: 0px 1.5em">')
   288             self.w(u'<div style="margin: 0px 1.5em">')
   289             subjects = [str(subj) for subj in rschema.subjects()]
   289             subjects = [str(subj) for subj in rschema.subjects()]