--- a/hooks/syncsession.py Wed Mar 24 10:23:31 2010 +0100
+++ b/hooks/syncsession.py Wed Apr 28 11:54:13 2010 +0200
@@ -1,12 +1,26 @@
+# copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
+# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This file is part of CubicWeb.
+#
+# CubicWeb is free software: you can redistribute it and/or modify it under the
+# terms of the GNU Lesser General Public License as published by the Free
+# Software Foundation, either version 2.1 of the License, or (at your option)
+# any later version.
+#
+# logilab-common is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Lesser General Public License along
+# with CubicWeb. If not, see <http://www.gnu.org/licenses/>.
"""Core hooks: synchronize living session on persistent data changes
-:organization: Logilab
-:copyright: 2001-2010 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.
-:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
-:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
"""
__docformat__ = "restructuredtext en"
+from yams.schema import role_name
from cubicweb import UnknownProperty, ValidationError, BadConnectionId
from cubicweb.selectors import implements
from cubicweb.server import hook
@@ -147,11 +161,13 @@
try:
value = session.vreg.typed_value(key, value)
except UnknownProperty:
+ qname = role_name('pkey', 'subject')
raise ValidationError(self.entity.eid,
- {'pkey': session._('unknown property key')})
+ {qname: session._('unknown property key')})
except ValueError, ex:
+ qname = role_name('value', 'subject')
raise ValidationError(self.entity.eid,
- {'value': session._(str(ex))})
+ {qname: session._(str(ex))})
if not session.user.matching_groups('managers'):
session.add_relation(self.entity.eid, 'for_user', session.user.eid)
else:
@@ -174,7 +190,8 @@
except UnknownProperty:
return
except ValueError, ex:
- raise ValidationError(entity.eid, {'value': session._(str(ex))})
+ qname = role_name('value', 'subject')
+ raise ValidationError(entity.eid, {qname: session._(str(ex))})
if entity.for_user:
for session_ in get_user_sessions(session.repo, entity.for_user[0].eid):
_ChangeCWPropertyOp(session, cwpropdict=session_.user.properties,
@@ -214,8 +231,10 @@
key, value = session.execute('Any K,V WHERE P eid %(x)s,P pkey K,P value V',
{'x': eidfrom}, 'x')[0]
if session.vreg.property_info(key)['sitewide']:
+ qname = role_name('for_user', 'subject')
+ msg = session._("site-wide property can't be set for user")
raise ValidationError(eidfrom,
- {'for_user': session._("site-wide property can't be set for user")})
+ {qname: msg})
for session_ in get_user_sessions(session.repo, self.eidto):
_ChangeCWPropertyOp(session, cwpropdict=session_.user.properties,
key=key, value=value)