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 |