web/views/management.py
changeset 2293 7ded2a1416e4
parent 2144 51c84d585456
parent 2270 70c0da0f2181
child 2296 f1b74a34da40
equal deleted inserted replaced
2235:d5987f75c97c 2293:7ded2a1416e4
    12 from logilab.mtconverter import html_escape
    12 from logilab.mtconverter import html_escape
    13 
    13 
    14 from cubicweb.selectors import yes, none_rset, match_user_groups, authenticated_user
    14 from cubicweb.selectors import yes, none_rset, match_user_groups, authenticated_user
    15 from cubicweb.view import AnyRsetView, StartupView, EntityView
    15 from cubicweb.view import AnyRsetView, StartupView, EntityView
    16 from cubicweb.common.uilib import html_traceback, rest_traceback
    16 from cubicweb.common.uilib import html_traceback, rest_traceback
    17 from cubicweb.web import formwidgets
    17 from cubicweb.web import formwidgets as wdgs
    18 from cubicweb.web.formfields import guess_field
    18 from cubicweb.web.formfields import guess_field
    19 
    19 
    20 SUBMIT_MSGID = _('Submit bug report')
    20 SUBMIT_MSGID = _('Submit bug report')
    21 MAIL_SUBMIT_MSGID = _('Submit bug report by mail')
    21 MAIL_SUBMIT_MSGID = _('Submit bug report by mail')
    22 
    22 
   158             w(u'</table>')
   158             w(u'</table>')
   159         else:
   159         else:
   160             self.w(self.req._('no associated permissions'))
   160             self.w(self.req._('no associated permissions'))
   161 
   161 
   162     def require_permission_edit_form(self, entity):
   162     def require_permission_edit_form(self, entity):
   163         w = self.w
       
   164         _ = self.req._
       
   165         newperm = self.vreg.etype_class('CWPermission')(self.req, None)
   163         newperm = self.vreg.etype_class('CWPermission')(self.req, None)
   166         newperm.eid = self.req.varmaker.next()
   164         newperm.eid = self.req.varmaker.next()
   167         w(u'<p>%s</p>' % _('add a new permission'))
   165         self.w(u'<p>%s</p>' % self.req._('add a new permission'))
   168         form = self.vreg.select('forms', 'base', self.req, entity=newperm,
   166         form = self.vreg.select('forms', 'base', self.req, entity=newperm,
   169                                 form_buttons=[formwidgets.SubmitButton()],
   167                                 form_buttons=[formwidgets.SubmitButton()],
   170                                 domid='reqperm%s' % entity.eid,
   168                                 domid='reqperm%s' % entity.eid,
   171                                 __redirectvid='security',
   169                                 __redirectvid='security',
   172                                 __redirectpath=entity.rest_path())
   170                                 __redirectpath=entity.rest_path())
   174                              eidparam=True)
   172                              eidparam=True)
   175         permnames = getattr(entity, '__permissions__', None)
   173         permnames = getattr(entity, '__permissions__', None)
   176         cwpermschema = newperm.e_schema
   174         cwpermschema = newperm.e_schema
   177         if permnames is not None:
   175         if permnames is not None:
   178             field = guess_field(cwpermschema, self.schema.rschema('name'),
   176             field = guess_field(cwpermschema, self.schema.rschema('name'),
   179                                 widget=formwidgets.Select({'size': 1}),
   177                                 widget=wdgs.Select({'size': 1}),
   180                                 choices=permnames)
   178                                 choices=permnames)
   181         else:
   179         else:
   182             field = guess_field(cwpermschema, self.schema.rschema('name'))
   180             field = guess_field(cwpermschema, self.schema.rschema('name'))
   183         form.append_field(field)
   181         form.append_field(field)
   184         field = guess_field(cwpermschema, self.schema.rschema('label'))
   182         field = guess_field(cwpermschema, self.schema.rschema('label'))
   244         submitmail = self.config['submit-mail']
   242         submitmail = self.config['submit-mail']
   245         if submiturl or submitmail:
   243         if submiturl or submitmail:
   246             form = self.vreg.select('forms', 'base', self.req, rset=None,
   244             form = self.vreg.select('forms', 'base', self.req, rset=None,
   247                                     mainform=False)
   245                                     mainform=False)
   248             binfo = text_error_description(ex, excinfo, req, eversion, cversions)
   246             binfo = text_error_description(ex, excinfo, req, eversion, cversions)
   249             form.form_add_hidden('description', binfo)
   247             form.form_add_hidden('description', binfo,
       
   248                                  # we must use a text area to keep line breaks
       
   249                                  widget=wdgs.TextArea({'class': 'hidden'}))
   250             form.form_add_hidden('__bugreporting', '1')
   250             form.form_add_hidden('__bugreporting', '1')
   251             if submitmail:
   251             if submitmail:
   252                 form.form_buttons = [formwidgets.SubmitButton(MAIL_SUBMIT_MSGID)]
   252                 form.form_buttons = [wdgs.SubmitButton(MAIL_SUBMIT_MSGID)]
   253                 form.action = req.build_url('reportbug')
   253                 form.action = req.build_url('reportbug')
   254                 w(form.form_render())
   254                 w(form.form_render())
   255             if submiturl:
   255             if submiturl:
   256                 form.form_add_hidden('description_format', 'text/rest')
   256                 form.form_add_hidden('description_format', 'text/rest')
   257                 form.form_buttons = [formwidgets.SubmitButton(SUBMIT_MSGID)]
   257                 form.form_buttons = [wdgs.SubmitButton(SUBMIT_MSGID)]
   258                 form.action = submiturl
   258                 form.action = submiturl
   259                 w(form.form_render())
   259                 w(form.form_render())
   260 
   260 
   261 
   261 
   262 def exc_message(ex, encoding):
   262 def exc_message(ex, encoding):