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 |