"""twisted server configurations:* the "twisted" configuration to get a web application running in a standalone twisted web server which talk to a repository server using Pyro* the "all-in-one" configuration to get a web application 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:organization: Logilab:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr"""__docformat__="restructuredtext en"fromos.pathimportjoinfromcubicweb.web.webconfigimportWebConfiguration,merge_options,MethodclassTwistedConfiguration(WebConfiguration):"""web application (in a twisted web server) client of a RQL server"""name='twisted'options=merge_options((# ctl configuration('host',{'type':'string','default':None,'help':'host name if not correctly detectable through gethostname','group':'main','inputlevel':1,}),('port',{'type':'int','default':None,'help':'http server port number (default to 8080)','group':'main','inputlevel':0,}),('pid-file',{'type':'string','default':Method('default_pid_file'),'help':'repository\'s pid file','group':'main','inputlevel':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','inputlevel':(WebConfiguration.mode=='installed')and0or1,}),('session-time',{'type':'int','default':30*60,'help':'session expiration time, default to 30 minutes','group':'main','inputlevel':1,}),('profile',{'type':'string','default':None,'help':'profile code and use the specified file to store stats if this option is set','group':'main','inputlevel':2,}),('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','inputlevel':1,}),)+WebConfiguration.options)defserver_file(self):returnjoin(self.apphome,'%s-%s.py'%(self.appid,self.name))defdefault_base_url(self):fromsocketimportgethostnamereturn'http://%s:%s/'%(self['host']orgethostname(),self['port']or8080)try:fromcubicweb.server.serverconfigimportServerConfigurationclassAllInOneConfiguration(TwistedConfiguration,ServerConfiguration):"""repository and web application in the same twisted process"""name='all-in-one'repo_method='inmemory'options=merge_options(TwistedConfiguration.options+ServerConfiguration.options)cubicweb_vobject_path=TwistedConfiguration.cubicweb_vobject_path|ServerConfiguration.cubicweb_vobject_pathcube_vobject_path=TwistedConfiguration.cube_vobject_path|ServerConfiguration.cube_vobject_pathdefpyro_enabled(self):"""tell if pyro is activated for the in memory repository"""returnself['pyro-server']exceptImportError:pass