# HG changeset patch # User Pierre-Yves David # Date 1364919324 -7200 # Node ID 08bb2dd18fd291ba1b9b5b1c2fd54ada0be30e5f # Parent 074f9f385f6baa99eee757131979213df188a484# Parent 49eb84b80b965cfe38b7d30cb1ccbfac4fac49c2 merge with stable fix diff -r 074f9f385f6b -r 08bb2dd18fd2 server/repository.py --- a/server/repository.py Tue Apr 02 16:06:22 2013 +0200 +++ b/server/repository.py Tue Apr 02 18:15:24 2013 +0200 @@ -882,19 +882,24 @@ See :class:`cubicweb.dbapi.Connection.call_service` and :class:`cubicweb.server.Service` """ - def task(): - session = self._get_session(sessionid, setcnxset=True) - service = session.vreg['services'].select(regid, session, **kwargs) - try: - return service.call(**kwargs) - finally: - session.rollback() # free cnxset + session = self._get_session(sessionid) + return self._call_service_with_session(session, regid, async, **kwargs) + + def _call_service_with_session(self, session, regid, async, **kwargs): if async: self.info('calling service %s asynchronously', regid) + def task(): + session.set_cnxset() + try: + service = session.vreg['services'].select(regid, session, **kwargs) + return service.call(**kwargs) + finally: + session.rollback() # free cnxset self.threaded_task(task) else: self.info('calling service %s synchronously', regid) - return task() + service = session.vreg['services'].select(regid, session, **kwargs) + return service.call(**kwargs) def user_info(self, sessionid, props=None): """this method should be used by client to: diff -r 074f9f385f6b -r 08bb2dd18fd2 server/session.py --- a/server/session.py Tue Apr 02 16:06:22 2013 +0200 +++ b/server/session.py Tue Apr 02 18:15:24 2013 +0200 @@ -1142,7 +1142,8 @@ # server-side service call ################################################# def call_service(self, regid, async=False, **kwargs): - return self.repo.call_service(self.id, regid, async, **kwargs) + return self.repo._call_service_with_session(self, regid, async, + **kwargs) # request interface ####################################################### diff -r 074f9f385f6b -r 08bb2dd18fd2 web/data/cubicweb.css --- a/web/data/cubicweb.css Tue Apr 02 16:06:22 2013 +0200 +++ b/web/data/cubicweb.css Tue Apr 02 18:15:24 2013 +0200 @@ -1085,3 +1085,21 @@ margin-left: 0.5em; vertical-align: bottom; } + +/* cubicweb.views.undohistory uses : + * - span.undo around undo link + * - ul.undo-transactions to list transaction + * - ol.undo-actions to list actions in a transaction + */ + +span.undo { + border: 1pt; +} + +ol.undo-actions > li { + margin-left: 2em; + margin-top: 2px; + padding: 0px 0px 2px 0px; + background-image: none; +} + diff -r 074f9f385f6b -r 08bb2dd18fd2 web/data/cubicweb.old.css --- a/web/data/cubicweb.old.css Tue Apr 02 16:06:22 2013 +0200 +++ b/web/data/cubicweb.old.css Tue Apr 02 18:15:24 2013 +0200 @@ -116,7 +116,7 @@ list-style-type: none; } -ul li { +ul > li { margin-top: 2px; padding: 0px 0px 2px 8px; background: url("bullet_orange.png") 0% 6px no-repeat; @@ -1077,3 +1077,21 @@ padding-left:0.5em; color:inherit; } + +/* cubicweb.views.undohistory uses : + * - span.undo around undo link + * - ul.undo-transactions to list transaction + * - ol.undo-actions to list actions in a transaction + */ + +span.undo { + border: 1pt; +} + +ol.undo-actions > li { + margin-left: 2em; + margin-top: 2px; + padding: 0px 0px 2px 0px; + background-image: none; +} + diff -r 074f9f385f6b -r 08bb2dd18fd2 web/views/editcontroller.py --- a/web/views/editcontroller.py Tue Apr 02 16:06:22 2013 +0200 +++ b/web/views/editcontroller.py Tue Apr 02 18:15:24 2013 +0200 @@ -77,6 +77,10 @@ self.restrictions = [] self.kwargs = {} + def __repr__(self): + return ('Query ' % ( + self.edited, self.restrictions, self.kwargs)) + def insert_query(self, etype): if self.edited: rql = 'INSERT %s X: %s' % (etype, ','.join(self.edited))