Source code for anybox.recipe.openerp.gtkclient

# coding: utf-8
from os.path import join
import sys
import logging
from utils import working_directory_keeper
from anybox.recipe.openerp.base import BaseRecipe

logger = logging.getLogger(__name__)


[docs]class GtkClientRecipe(BaseRecipe): """Recipe for gtk client and config """ release_filenames = {'6.0': 'openerp-client-%s.tar.gz', '6.1': 'openerp-client-%s.tar.gz', '5.0': 'openerp-client-%s.tar.gz'} # neither PyGTK nor PyGObject can be locally built, so we don't put them # in requirements recipe_requirements = () requirements = ('pydot', ) def _create_default_config(self): bin_dir = join(self.openerp_dir, 'bin') with working_directory_keeper: # import translate from openerp instead of python sys.path.insert(0, bin_dir) import gtk.glade # NOQA import release __version__ = release.version import __builtin__ __builtin__.__dict__['openerp_version'] = __version__ import translate translate.setlang() # temp replacing sys.argv to avoid buildout options # being interpreted by gtk client's OptionParser argv_bak = sys.argv sys.argv = [argv_bak[0]] import options options.configmanager(self.config_path).save() sys.argv = argv_bak 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 = [join(self.openerp_dir, 'bin')] paths.extend([egg.location for egg in self.ws]) script = ('#!/bin/sh\n' 'export PYTHONPATH=%s\n' 'cd "%s"\n' 'exec %s openerp-client.py -c %s $@') % ( ':'.join(paths), join(self.openerp_dir, 'bin'), self.buildout['buildout']['executable'], self.config_path) return script