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 |
18 from cubicweb.web.form import FieldsForm, EntityFieldsForm |
|
19 from cubicweb.web.formfields import guess_field |
18 from cubicweb.web.formfields import guess_field |
20 from cubicweb.web.views.formrenderers import HTableFormRenderer |
|
21 |
19 |
22 SUBMIT_MSGID = _('Submit bug report') |
20 SUBMIT_MSGID = _('Submit bug report') |
23 MAIL_SUBMIT_MSGID = _('Submit bug report by mail') |
21 MAIL_SUBMIT_MSGID = _('Submit bug report by mail') |
|
22 |
24 |
23 |
25 class SecurityViewMixIn(object): |
24 class SecurityViewMixIn(object): |
26 """display security information for a given schema """ |
25 """display security information for a given schema """ |
27 |
26 |
28 def schema_definition(self, eschema, link=True, access_types=None): |
27 def schema_definition(self, eschema, link=True, access_types=None): |
104 self.require_permission_edit_form(entity) |
103 self.require_permission_edit_form(entity) |
105 |
104 |
106 def owned_by_edit_form(self, entity): |
105 def owned_by_edit_form(self, entity): |
107 self.w('<h3>%s</h3>' % self.req._('ownership')) |
106 self.w('<h3>%s</h3>' % self.req._('ownership')) |
108 msg = self.req._('ownerships have been changed') |
107 msg = self.req._('ownerships have been changed') |
109 form = EntityFieldsForm(self.req, None, entity=entity, submitmsg=msg, |
108 form = self.vreg.select_object('forms', 'base', self.req, entity=entity, |
110 form_buttons=[formwidgets.SubmitButton()], |
109 form_renderer_id='base', |
111 domid='ownership%s' % entity.eid, |
110 submitmsg=msg, |
112 __redirectvid='security', |
111 form_buttons=[formwidgets.SubmitButton()], |
113 __redirectpath=entity.rest_path()) |
112 domid='ownership%s' % entity.eid, |
|
113 __redirectvid='security', |
|
114 __redirectpath=entity.rest_path()) |
114 field = guess_field(entity.e_schema, self.schema.rschema('owned_by')) |
115 field = guess_field(entity.e_schema, self.schema.rschema('owned_by')) |
115 form.append_field(field) |
116 form.append_field(field) |
116 self.w(form.form_render(display_progress_div=False)) |
117 self.w(form.form_render(display_progress_div=False)) |
117 |
118 |
118 def owned_by_information(self, entity): |
119 def owned_by_information(self, entity): |
161 w = self.w |
162 w = self.w |
162 _ = self.req._ |
163 _ = self.req._ |
163 newperm = self.vreg.etype_class('CWPermission')(self.req, None) |
164 newperm = self.vreg.etype_class('CWPermission')(self.req, None) |
164 newperm.eid = self.req.varmaker.next() |
165 newperm.eid = self.req.varmaker.next() |
165 w(u'<p>%s</p>' % _('add a new permission')) |
166 w(u'<p>%s</p>' % _('add a new permission')) |
166 form = EntityFieldsForm(self.req, None, entity=newperm, |
167 form = self.vreg.select_object('forms', 'base', self.req, entity=newperm, |
167 form_buttons=[formwidgets.SubmitButton()], |
168 form_buttons=[formwidgets.SubmitButton()], |
168 domid='reqperm%s' % entity.eid, |
169 domid='reqperm%s' % entity.eid, |
169 __redirectvid='security', |
170 __redirectvid='security', |
170 __redirectpath=entity.rest_path()) |
171 __redirectpath=entity.rest_path()) |
171 form.form_add_hidden('require_permission', entity.eid, role='object', |
172 form.form_add_hidden('require_permission', entity.eid, role='object', |
172 eidparam=True) |
173 eidparam=True) |
173 permnames = getattr(entity, '__permissions__', None) |
174 permnames = getattr(entity, '__permissions__', None) |
174 cwpermschema = newperm.e_schema |
175 cwpermschema = newperm.e_schema |
175 if permnames is not None: |
176 if permnames is not None: |
181 form.append_field(field) |
182 form.append_field(field) |
182 field = guess_field(cwpermschema, self.schema.rschema('label')) |
183 field = guess_field(cwpermschema, self.schema.rschema('label')) |
183 form.append_field(field) |
184 form.append_field(field) |
184 field = guess_field(cwpermschema, self.schema.rschema('require_group')) |
185 field = guess_field(cwpermschema, self.schema.rschema('require_group')) |
185 form.append_field(field) |
186 form.append_field(field) |
186 renderer = HTableFormRenderer(self.req, display_progress_div=False) |
187 renderer = self.select_object('formrenderers', 'htable', self.req, |
|
188 display_progress_div=False) |
187 self.w(form.form_render(renderer=renderer)) |
189 self.w(form.form_render(renderer=renderer)) |
188 |
190 |
189 |
191 |
190 class ErrorView(AnyRsetView): |
192 class ErrorView(AnyRsetView): |
191 """default view when no result has been found""" |
193 """default view when no result has been found""" |
238 w(u"</div>") |
240 w(u"</div>") |
239 # creates a bug submission link if SUBMIT_URL is set |
241 # creates a bug submission link if SUBMIT_URL is set |
240 submiturl = self.config['submit-url'] |
242 submiturl = self.config['submit-url'] |
241 submitmail = self.config['submit-mail'] |
243 submitmail = self.config['submit-mail'] |
242 if submiturl or submitmail: |
244 if submiturl or submitmail: |
243 form = FieldsForm(self.req, set_error_url=False) |
245 form = self.select_object('forms', 'base', self.req, set_error_url=False) |
244 binfo = text_error_description(ex, excinfo, req, eversion, cversions) |
246 binfo = text_error_description(ex, excinfo, req, eversion, cversions) |
245 form.form_add_hidden('description', binfo) |
247 form.form_add_hidden('description', binfo) |
246 form.form_add_hidden('__bugreporting', '1') |
248 form.form_add_hidden('__bugreporting', '1') |
247 if submitmail: |
249 if submitmail: |
248 form.form_buttons = [formwidgets.SubmitButton(MAIL_SUBMIT_MSGID)] |
250 form.form_buttons = [formwidgets.SubmitButton(MAIL_SUBMIT_MSGID)] |