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): |