web/views/cwproperties.py
changeset 2181 94ca417b9b07
parent 2144 51c84d585456
parent 2161 200481e7b156
child 2234 1fbcf202882d
equal deleted inserted replaced
2144:51c84d585456 2181:94ca417b9b07
    12 
    12 
    13 from logilab.common.decorators import cached
    13 from logilab.common.decorators import cached
    14 
    14 
    15 from cubicweb import UnknownProperty
    15 from cubicweb import UnknownProperty
    16 from cubicweb.selectors import (one_line_rset, none_rset, implements,
    16 from cubicweb.selectors import (one_line_rset, none_rset, implements,
    17                                 match_user_groups)
    17                                 match_user_groups, objectify_selector)
    18 from cubicweb.view import StartupView
    18 from cubicweb.view import StartupView
    19 from cubicweb.web import uicfg, stdmsgs
    19 from cubicweb.web import uicfg, stdmsgs
    20 from cubicweb.web.form import FormViewMixIn
    20 from cubicweb.web.form import FormViewMixIn
    21 from cubicweb.web.formfields import FIELDS, StringField
    21 from cubicweb.web.formfields import FIELDS, StringField
    22 from cubicweb.web.formwidgets import Select, TextInput, Button, SubmitButton
    22 from cubicweb.web.formwidgets import Select, TextInput, Button, SubmitButton
   216                                                 eidparam=True))
   216                                                 eidparam=True))
   217         subform.vreg = self.vreg
   217         subform.vreg = self.vreg
   218         subform.form_add_hidden('pkey', key, eidparam=True)
   218         subform.form_add_hidden('pkey', key, eidparam=True)
   219         form.form_add_subform(subform)
   219         form.form_add_subform(subform)
   220         return subform
   220         return subform
   221     
   221 
   222 def is_user_prefs(cls, req, rset, row=None, col=0, **kwargs):
   222 
       
   223 @objectify_selector
       
   224 def is_user_prefs(cls, req, rset=None, row=None, col=0, **kwargs):
   223     return req.user.eid == rset[row or 0][col]
   225     return req.user.eid == rset[row or 0][col]
   224 
   226 
   225 
   227 
   226 class CWPropertiesForm(SystemCWPropertiesForm):
   228 class CWPropertiesForm(SystemCWPropertiesForm):
   227     id = 'propertiesform'
   229     id = 'propertiesform'
   228     __select__ = (
   230     __select__ = (
   229         # we don't want guests to be able to come here
   231         # we don't want guests to be able to come here
   230         match_user_groups('users', 'managers') &
   232         match_user_groups('users', 'managers') &
   231         (none_rset() | ((one_line_rset() & is_user_prefs) &
   233         (none_rset() | ((one_line_rset() & is_user_prefs()) &
   232                         (one_line_rset() & match_user_groups('managers'))))
   234                         (one_line_rset() & match_user_groups('managers'))))
   233         )
   235         )
   234 
   236 
   235     title = _('preferences')
   237     title = _('preferences')
   236 
   238