web/views/cwproperties.py
branchstable
changeset 5502 c342531032a1
parent 5426 0d4853a6e5ee
child 5535 b32b8f56192a
equal deleted inserted replaced
5501:1af69779f597 5502:c342531032a1
    25 
    25 
    26 from logilab.common.decorators import cached
    26 from logilab.common.decorators import cached
    27 
    27 
    28 from cubicweb import UnknownProperty
    28 from cubicweb import UnknownProperty
    29 from cubicweb.selectors import (one_line_rset, none_rset, implements,
    29 from cubicweb.selectors import (one_line_rset, none_rset, implements,
    30                                 match_user_groups, objectify_selector)
    30                                 match_user_groups, objectify_selector,
       
    31                                 logged_user_in_rset)
    31 from cubicweb.view import StartupView
    32 from cubicweb.view import StartupView
    32 from cubicweb.web import uicfg, stdmsgs
    33 from cubicweb.web import uicfg, stdmsgs
    33 from cubicweb.web.form import FormViewMixIn
    34 from cubicweb.web.form import FormViewMixIn
    34 from cubicweb.web.formfields import FIELDS, StringField
    35 from cubicweb.web.formfields import FIELDS, StringField
    35 from cubicweb.web.formwidgets import Select, TextInput, Button, SubmitButton, FieldWidget
    36 from cubicweb.web.formwidgets import (Select, TextInput, Button, SubmitButton,
       
    37                                       FieldWidget)
    36 from cubicweb.web.views import primary, formrenderers
    38 from cubicweb.web.views import primary, formrenderers
    37 
    39 
    38 uicfg.primaryview_section.tag_object_of(('*', 'for_user', '*'), 'hidden')
    40 uicfg.primaryview_section.tag_object_of(('*', 'for_user', '*'), 'hidden')
    39 
    41 
    40 # some string we want to be internationalizable for nicer display of property
    42 # some string we want to be internationalizable for nicer display of property
   231         subform.add_hidden('pkey', key, eidparam=True, role='subject')
   233         subform.add_hidden('pkey', key, eidparam=True, role='subject')
   232         form.add_subform(subform)
   234         form.add_subform(subform)
   233         return subform
   235         return subform
   234 
   236 
   235 
   237 
   236 @objectify_selector
       
   237 def is_user_prefs(cls, req, rset=None, row=None, col=0, **kwargs):
       
   238     return req.user.eid == rset[row or 0][col]
       
   239 
       
   240 
       
   241 class CWPropertiesForm(SystemCWPropertiesForm):
   238 class CWPropertiesForm(SystemCWPropertiesForm):
   242     """user's preferences properties edition form"""
   239     """user's preferences properties edition form"""
   243     __regid__ = 'propertiesform'
   240     __regid__ = 'propertiesform'
   244     __select__ = (
   241     __select__ = (
   245         (none_rset() & match_user_groups('users','managers'))
   242         (none_rset() & match_user_groups('users','managers'))
   246         | (one_line_rset() & match_user_groups('users') & is_user_prefs())
   243         | (one_line_rset() & match_user_groups('users') & logged_user_in_rset())
   247         | (one_line_rset() & match_user_groups('managers') & implements('CWUser'))
   244         | (one_line_rset() & match_user_groups('managers') & implements('CWUser'))
   248         )
   245         )
   249 
   246 
   250     title = _('preferences')
   247     title = _('preferences')
   251 
   248