[connection] move last part of undo logic in connection
Now that Connection have a reference to the repo it can handle all of it itself
# 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.## CubicWeb 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/>."""twisted server configurations:* the "twisted" configuration to get a web instance running in a standalone twisted web server which talk to a repository server using Pyro* the "all-in-one" configuration to get a web instance running in a twisted web server integrating a repository server in the same process (only available if the repository part of the software is installed"""__docformat__="restructuredtext en"fromos.pathimportjoinfromlogilab.common.configurationimportMethod,merge_optionsfromcubicweb.cwconfigimportCONFIGURATIONSfromcubicweb.web.webconfigimportWebConfigurationclassTwistedConfiguration(WebConfiguration):"""web instance (in a twisted web server) client of a RQL server"""name='twisted'options=merge_options((# ctl configuration('port',{'type':'int','default':None,'help':'http server port number (default to 8080)','group':'web','level':0,}),('interface',{'type':'string','default':"",'help':'http server address on which to listen (default to everywhere)','group':'web','level':1,}),('max-post-length',{'type':'bytes','default':'100MB','help':'maximum length of HTTP request. Default to 100 MB.','group':'web','level':1,}),('profile',{'type':'string','default':None,'help':'profile code and use the specified file to store stats if this option is set','group':'web','level':3,}),('host',{'type':'string','default':None,'help':'host name if not correctly detectable through gethostname','group':'main','level':1,}),('pid-file',{'type':'string','default':Method('default_pid_file'),'help':'repository\'s pid file','group':'main','level':2,}),('uid',{'type':'string','default':None,'help':'if this option is set, use the specified user to start \the repository rather than the user running the command','group':'main','level':WebConfiguration.mode=='system'}),('pyro-server',{'type':'yn',# pyro is only a recommends by default, so don't activate it here'default':False,'help':'run a pyro server','group':'main','level':1,}),('webserver-threadpool-size',{'type':'int','default':4,'help':"size of twisted's reactor threadpool. It should probably be not too \much greater than connection-poolsize",'group':'web','level':3,}),)+WebConfiguration.options)defserver_file(self):returnjoin(self.apphome,'%s-%s.py'%(self.appid,self.name))defdefault_base_url(self):fromsocketimportgetfqdnreturn'http://%s:%s/'%(self['host']orgetfqdn(),self['port']or8080)CONFIGURATIONS.append(TwistedConfiguration)try:fromcubicweb.server.serverconfigimportServerConfigurationclassAllInOneConfiguration(TwistedConfiguration,ServerConfiguration):"""repository and web instance in the same twisted process"""name='all-in-one'options=merge_options(TwistedConfiguration.options+ServerConfiguration.options)cubicweb_appobject_path=TwistedConfiguration.cubicweb_appobject_path|ServerConfiguration.cubicweb_appobject_pathcube_appobject_path=TwistedConfiguration.cube_appobject_path|ServerConfiguration.cube_appobject_pathdefpyro_enabled(self):"""tell if pyro is activated for the in memory repository"""returnself['pyro-server']CONFIGURATIONS.append(AllInOneConfiguration)exceptImportError:pass