[imp] setup infrastructure for qweb message extraction

bzr revid: nicolas.vanhoren@openerp.com-20110816100940-h7mxs3ajvoem9ujj
This commit is contained in:
niv-openerp 2011-08-16 12:09:40 +02:00
parent da7a365ebf
commit 5b522f5d06
4 changed files with 112 additions and 178 deletions

View File

@ -1,13 +1,6 @@
## Extraction from Python source files
#[python: **.py] [extractors]
## Extraction from Genshi HTML and text templates qweb = npybabel:extract_qweb
#[genshi: **/templates/**.html] [javascript: **.js]
#ignore_tags = script,style [qweb: **.xml]
#include_attrs = alt title summary
#[genshi: **/templates/**.txt]
#template_class = genshi.template:TextTemplate
#encoding = ISO-8819-15
## Extraction from JavaScript files
[javascript: **.js]
[javascript: **.xml]

View File

@ -35,7 +35,7 @@ then
$0 addons/base/static/src/ addons/base/po/base.pot $0 addons/base/static/src/ addons/base/po/base.pot
elif [ -n "$2" ] elif [ -n "$2" ]
then then
pybabel extract -F babel.cfg -o $2 -k _t --no-default-keywords $1 ./npybabel.py extract -F babel.cfg -o $2 -k _t --no-default-keywords $1
else else
usage usage
fi fi

26
npybabel.py Executable file
View File

@ -0,0 +1,26 @@
#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'Babel==0.9.6','console_scripts','pybabel'
__requires__ = 'Babel==0.9.6'
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.exit(
load_entry_point('Babel==0.9.6', 'console_scripts', 'pybabel')()
)
def extract_qweb(fileobj, keywords, comment_tags, options):
"""Extract messages from XXX files.
:param fileobj: the file-like object the messages should be extracted
from
:param keywords: a list of keywords (i.e. function names) that should
be recognized as translation functions
:param comment_tags: a list of translator tags to search for and
include in the results
:param options: a dictionary of additional options (optional)
:return: an iterator over ``(lineno, funcname, message, comments)``
tuples
:rtype: ``iterator``
"""
content = fileobj.read()
return []

245
setup.py Executable file → Normal file
View File

@ -1,174 +1,89 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
# setup from TinERP
# taken from straw http://www.nongnu.org/straw/index.html
# taken from gnomolicious http://www.nongnu.org/gnomolicious/
# adapted by Nicolas Évrard <nicoe@altern.org>
#
# doc/migrate is not included since about 6.1-dev
# doc/tests is not included
# python25-compat/*py should be in the openerp (and imported appropriately)
import sys
import os import os
from os.path import join, isfile import re
import glob import sys
from setuptools import setup
from setuptools import setup, find_packages name = 'openerp-web-proto'
version = '6.0.1'
description = "Web Client of OpenERP, the Enterprise Management Software"
long_description = "OpenERP Web is the web client of the OpenERP, a free enterprise management software"
author = "OpenERP S.A."
author_email = "info@openerp.com"
support_email = 'support@openerp.com'
url = "http://www.openerp.com/"
download_url = ''
license = "OEPL"
# Backports os.walk with followlinks from python 2.6. version_dash_incompatible = False
# Needed to add all addons files to data_files for Windows packaging. if 'bdist_rpm' in sys.argv:
def walk_followlinks(top, topdown=True, onerror=None, followlinks=False): version_dash_incompatible = True
from os.path import join, isdir, islink try:
from os import listdir, error
try:
names = listdir(top)
except error, err:
if onerror is not None:
onerror(err)
return
dirs, nondirs = [], []
for name in names:
if isdir(join(top, name)):
dirs.append(name)
else:
nondirs.append(name)
if topdown:
yield top, dirs, nondirs
for name in dirs:
path = join(top, name)
if followlinks or not islink(path):
for x in walk_followlinks(path, topdown, onerror, followlinks):
yield x
if not topdown:
yield top, dirs, nondirs
if sys.version_info < (2, 6):
os.walk = walk_followlinks
py2exe_keywords = {}
py2exe_data_files = []
if os.name == 'nt':
import py2exe import py2exe
py2exe_keywords['console'] = [ from py2exe_utils import opts
{ "script": "openerp-server", version_dash_incompatible = True
"icon_resources": [(1, join("pixmaps","openerp-icon.ico"))], except ImportError:
}] opts = {}
py2exe_keywords['options'] = { if version_dash_incompatible:
"py2exe": { version = version.split('-')[0]
"skip_archive": 1,
"optimize": 2,
"dist_dir": 'dist',
"packages": [
"lxml", "lxml.builder", "lxml._elementpath", "lxml.etree",
"lxml.objectify", "decimal", "xml", "xml", "xml.dom", "xml.xpath",
"encodings", "dateutil", "pychart", "PIL", "pyparsing",
"pydot", "asyncore","asynchat", "reportlab", "vobject",
"HTMLParser", "select", "mako", "poplib",
"imaplib", "smtplib", "email", "yaml", "DAV",
"uuid", "commands", "openerp",
],
"excludes" : ["Tkconstants","Tkinter","tcl"],
}
}
# TODO is it still necessary now that we don't use the library.zip file?
def data_files():
'''For Windows, we consider all the addons as data files.
It seems also that package_data below isn't honored by py2exe.'''
files = []
os.chdir('openerp')
for (dp, dn, names) in os.walk('addons'):
files.append((join('openerp',dp), map(lambda x: join('openerp', dp, x), names)))
os.chdir('..')
files.append(('openerp', [join('openerp', 'import_xml.rng'),]))
# copy pytz/timzeone FILE_PATTERNS = \
# TODO check if we have to also copy dateutil's timezone data. r'.+\.(py|cfg|po|pot|mo|txt|rst|gif|png|jpg|ico|mako|html|js|css|htc|swf)$'
import pytz def find_data_files(source, patterns=FILE_PATTERNS):
# Make sure the layout of pytz hasn't changed file_matcher = re.compile(patterns, re.I)
assert (pytz.__file__.endswith('__init__.pyc') or out = []
pytz.__file__.endswith('__init__.py')), pytz.__file__ for base, _, files in os.walk(source):
pytz_dir = os.path.dirname(pytz.__file__) cur_files = []
for f in files:
if file_matcher.match(f):
cur_files.append(os.path.join(base, f))
if cur_files:
out.append(
(base, cur_files))
saved_dir = os.getcwd() return out
os.chdir(pytz_dir)
for dp, dn, names in os.walk('zoneinfo'):
files.append((join('pytz',dp), map(lambda x: join(pytz_dir, dp, x), names)))
os.chdir(saved_dir)
return files setup(
py2exe_data_files = data_files() name=name,
version=version,
execfile(join('openerp', 'release.py')) description=description,
long_description=long_description,
setup(name = name, author=author,
version = version, author_email=author_email,
description = description, url=url,
long_description = long_desc, download_url=download_url,
url = url, license=license,
author = author, install_requires=[
author_email = author_email, "CherryPy >= 3.1.2",
classifiers = filter(None, classifiers.split("\n")), "Babel >= 0.9.6",
license = license, "simplejson >= 2.0.9",
data_files = [ "python-dateutil >= 1.4.1",
(join('man', 'man1'), ['man/openerp-server.1']), "pytz",
(join('man', 'man5'), ['man/openerp_serverrc.5']), ],
('doc', filter(isfile, glob.glob('doc/*'))), tests_require=[
] + py2exe_data_files, 'unittest2',
scripts = ['openerp-server'], 'mock',
packages = find_packages(), ],
include_package_data = True, test_suite = 'unittest2.collector',
package_data = { zip_safe=False,
'': ['*.yml', '*.xml', '*.po', '*.pot', '*.csv'], packages=[
}, 'addons',
dependency_links = ['http://download.gna.org/pychart/'], 'addons.base',
install_requires = [ 'addons.base.controllers',
# We require the same version as caldav for lxml. 'addons.base_calendar',
'lxml==2.1.5', 'addons.base_hello',
'mako', 'openerpweb',
'python-dateutil', ],
'psycopg2', classifiers=[
# TODO the pychart package we include in openerp corresponds to PyChart 1.37. 'Development Status :: 6 - Production/Stable',
# It seems there is a single difference, which is a spurious print in generate_docs.py. 'Operating System :: OS Independent',
# It is probably safe to move to PyChart 1.39 (the latest one). 'Programming Language :: Python',
# (Let setup.py choose the latest one, and we should check we can remove pychart from 'Environment :: Web Environment',
# our tree.) 'Topic :: Office/Business :: Financial',
'pychart', ],
'pydot', scripts=['scripts/openerp-web'],
'pytz', data_files=(find_data_files('addons')
'reportlab', + opts.pop('data_files', [])
'caldav', ),
'pyyaml', **opts
'pywebdav',
'feedparser',
'simplejson >= 2.0',
],
extras_require = {
'SSL' : ['pyopenssl'],
},
**py2exe_keywords
) )