web/views/management.py
changeset 2005 e8032965f37a
parent 1995 ec95eaa2b711
child 2040 c865cc7100ca
child 2046 8fce2d25853c
child 2047 6ab574aa5e5f
equal deleted inserted replaced
2004:ea9eab290dcd 2005:e8032965f37a
    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)]