Source code for anybox.recipe.openerp.webclient
# coding: utf-8
from os.path import join
import logging
import shutil
import re
from zc.buildout import UserError
from anybox.recipe.openerp.base import BaseRecipe
logger = logging.getLogger(__name__)
[docs]class WebClientRecipe(BaseRecipe):
"""Recipe for web client install and config
"""
release_filenames = {'6.0': 'openerp-web-%s.tar.gz'}
requirements = ('setuptools',)
[docs] def preinstall_version_check(self):
split = self.version_wanted.split()
if len(split) != 1:
# not much to say before any attempt for custom or vcs versions
return
try:
version = re.match(r'(\d+)[.](\d+)', split[0])
version = int(version.group(1)), int(version.group(2))
except (ValueError, TypeError, AttributeError):
logger.info("Version not understood: %r. Skipped before install "
"checks", self.version_wanted)
return
if version >= (6, 1):
raise UserError("Aborting: don't use the openerp webclient recipe "
"for versions >= 6.1, as there is no separate web "
"client in these versions."
"Simply use the web part of the OpenERP server.")
def _create_default_config(self):
if self.major_version == (6, 0):
shutil.copyfile(join(self.openerp_dir, 'doc', 'openerp-web.cfg'),
self.config_path)
def _install_startup_scripts(self):
script_name = self.options.get('script_name', 'start_' + self.name)
self._install_script(script_name, self._create_startup_script())
def _create_startup_script(self):
"""Return startup_script content
"""
paths = [self.openerp_dir]
paths.extend([egg.location for egg in self.ws])
if self.major_version == (6, 0):
ext = '.py'
config = '-c %s' % self.config_path
else:
ext = ''
config = ''
script = ('#!/bin/sh\n'
'export PYTHONPATH=%s\n'
'cd "%s"\n'
'exec %s openerp-web%s %s $@') % (
':'.join(paths),
self.openerp_dir,
self.buildout['buildout']['executable'],
ext,
config)
return script