[MERGE] Sync with server/trunk.
bzr revid: tde@openerp.com-20121107083807-12i51iax0imkhjf1
This commit is contained in:
commit
ee6e9894a4
26
README
26
README
|
@ -6,17 +6,9 @@ Customer Relationship Management software. More info at:
|
|||
|
||||
http://www.openerp.com
|
||||
|
||||
Installation on Debian Ubuntu
|
||||
Installation on Debian/Ubuntu
|
||||
-----------------------------
|
||||
|
||||
Download the deb file and type:
|
||||
|
||||
$ sudo dpkg -i <openerp-deb-filename>
|
||||
$ sudo apt-get install install -f
|
||||
|
||||
Installation on Debian Ubuntu from nightly build
|
||||
------------------------------------------------
|
||||
|
||||
Add the the apt repository
|
||||
|
||||
deb http://nightly.openerp.com/6.1/deb/ ./
|
||||
|
@ -26,6 +18,11 @@ in your source.list and type:
|
|||
$ sudo apt-get update
|
||||
$ sudo apt-get install openerp
|
||||
|
||||
Or download the deb file and type:
|
||||
|
||||
$ sudo dpkg -i <openerp-deb-filename>
|
||||
$ sudo apt-get install install -f
|
||||
|
||||
Installation on RedHat, Fedora, CentOS
|
||||
--------------------------------------
|
||||
|
||||
|
@ -42,6 +39,8 @@ Install the openerp rpm
|
|||
Installation on Windows
|
||||
-----------------------
|
||||
|
||||
Check the notes in setup.py
|
||||
|
||||
Installation on MacOSX
|
||||
-----------------------
|
||||
|
||||
|
@ -54,14 +53,7 @@ default master password is "admin".
|
|||
Detailed System Requirements
|
||||
----------------------------
|
||||
|
||||
You need the following software installed:
|
||||
|
||||
postgresql-client, python-dateutil, python-feedparser, python-gdata,
|
||||
python-ldap, python-libxslt1, python-lxml, python-mako, python-openid,
|
||||
python-psycopg2, python-pybabel, python-pychart, python-pydot,
|
||||
python-pyparsing, python-reportlab, python-simplejson, python-tz,
|
||||
python-vatnumber, python-vobject, python-webdav, python-werkzeug, python-xlwt,
|
||||
python-yaml, python-zsi
|
||||
The dependencies are listed in setup.py
|
||||
|
||||
For Luxembourg localization, you also need:
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ import logging
|
|||
|
||||
import openerp.modules
|
||||
from openerp.osv import fields, osv
|
||||
from tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -336,6 +337,8 @@ class ir_translation(osv.osv):
|
|||
trans_model = self.pool.get(model)
|
||||
domain = ['&', ('res_id', '=', id), ('name', '=like', model + ',%')]
|
||||
langs_ids = self.pool.get('res.lang').search(cr, uid, [('code', '!=', 'en_US')], context=context)
|
||||
if not langs_ids:
|
||||
raise osv.except_osv(_('Error'), _("Translation features are unavailable until you install an extra OpenERP translation."))
|
||||
langs = [lg.code for lg in self.pool.get('res.lang').browse(cr, uid, langs_ids, context=context)]
|
||||
main_lang = 'en_US'
|
||||
translatable_fields = []
|
||||
|
|
|
@ -264,10 +264,15 @@ class res_partner(osv.osv, format_address):
|
|||
return False
|
||||
|
||||
def _get_default_image(self, cr, uid, is_company, context=None, colorize=False):
|
||||
if is_company:
|
||||
image = open(openerp.modules.get_module_resource('base', 'static/src/img', 'company_image.png')).read()
|
||||
else:
|
||||
image = tools.image_colorize(open(openerp.modules.get_module_resource('base', 'static/src/img', 'avatar.png')).read())
|
||||
img_path = openerp.modules.get_module_resource('base', 'static/src/img',
|
||||
('company_image.png' if is_company else 'avatar.png'))
|
||||
with open(img_path, 'rb') as f:
|
||||
image = f.read()
|
||||
|
||||
# colorize user avatars
|
||||
if not is_company:
|
||||
image = tools.image_colorize(image)
|
||||
|
||||
return tools.image_resize_image_big(image.encode('base64'))
|
||||
|
||||
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
|
|
|
@ -38,7 +38,6 @@ import openerp.osv as osv
|
|||
import openerp.pooler as pooler
|
||||
import openerp.release as release
|
||||
import openerp.tools as tools
|
||||
import openerp.tools.assertion_report as assertion_report
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
from openerp import SUPERUSER_ID
|
||||
|
@ -285,7 +284,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
|
|||
|
||||
# processed_modules: for cleanup step after install
|
||||
# loaded_modules: to avoid double loading
|
||||
report = assertion_report.assertion_report()
|
||||
report = pool._assertion_report
|
||||
loaded_modules, processed_modules = load_module_graph(cr, graph, status, perform_checks=(not update_module), report=report)
|
||||
|
||||
if tools.config['load_language']:
|
||||
|
|
|
@ -32,6 +32,7 @@ import openerp.cron
|
|||
import openerp.tools
|
||||
import openerp.modules.db
|
||||
import openerp.tools.config
|
||||
from openerp.tools import assertion_report
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -49,6 +50,7 @@ class Registry(object):
|
|||
self._store_function = {}
|
||||
self._init = True
|
||||
self._init_parent = {}
|
||||
self._assertion_report = assertion_report.assertion_report()
|
||||
|
||||
# modules fully loaded (maintained during init phase by `loading` module)
|
||||
self._init_modules = set()
|
||||
|
|
|
@ -3861,10 +3861,12 @@ class BaseModel(object):
|
|||
getattr(wf_service, trigger)(uid, self._name, res_id, cr)
|
||||
|
||||
def _workflow_signal(self, cr, uid, ids, signal, context=None):
|
||||
"""Send given workflow signal"""
|
||||
"""Send given workflow signal and return a dict mapping ids to workflow results"""
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
result = {}
|
||||
for res_id in ids:
|
||||
wf_service.trg_validate(uid, self._name, res_id, signal, cr)
|
||||
result[res_id] = wf_service.trg_validate(uid, self._name, res_id, signal, cr)
|
||||
return result
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
|
|
|
@ -189,7 +189,8 @@ class object_proxy(object):
|
|||
object = pooler.get_pool(cr.dbname).get(obj)
|
||||
if not object:
|
||||
raise except_osv('Object Error', 'Object %s doesn\'t exist' % str(obj))
|
||||
return object._workflow_signal(cr, uid, [args[0]], signal)
|
||||
res_id = args[0]
|
||||
return object._workflow_signal(cr, uid, [res_id], signal)[res_id]
|
||||
|
||||
@check
|
||||
def exec_workflow(self, db, uid, obj, signal, *args):
|
||||
|
|
|
@ -34,7 +34,6 @@ import openerp.netsvc
|
|||
import openerp.osv
|
||||
import openerp.tools
|
||||
import openerp.service.wsgi_server
|
||||
import openerp.service.workers
|
||||
|
||||
#.apidoc title: RPC Services
|
||||
|
||||
|
@ -119,6 +118,7 @@ def stop_services():
|
|||
openerp.modules.registry.RegistryManager.delete_all()
|
||||
|
||||
def start_services_workers():
|
||||
import openerp.service.workers
|
||||
openerp.multi_process = True # Nah!
|
||||
|
||||
openerp.service.workers.Multicorn(openerp.service.wsgi_server.application).run()
|
||||
|
|
|
@ -3,20 +3,17 @@
|
|||
# TODO rename class: Multicorn -> Arbiter ?
|
||||
#-----------------------------------------------------------
|
||||
import errno
|
||||
try:
|
||||
import fcntl
|
||||
except ImportError:
|
||||
fcntl = None
|
||||
import fcntl
|
||||
import logging
|
||||
import os
|
||||
import psutil
|
||||
import random
|
||||
import resource
|
||||
import select
|
||||
import socket
|
||||
import time
|
||||
import logging
|
||||
import os
|
||||
import signal
|
||||
import socket
|
||||
import sys
|
||||
import time
|
||||
|
||||
import werkzeug.serving
|
||||
|
||||
|
|
|
@ -0,0 +1,139 @@
|
|||
#!/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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import glob, os, re, setuptools, sys
|
||||
from os.path import join, isfile
|
||||
|
||||
# List all data files
|
||||
def data():
|
||||
files = []
|
||||
for root, dirnames, filenames in os.walk('openerp'):
|
||||
for filename in filenames:
|
||||
if not re.match(r'.*(\.pyc|\.pyo|\~)$',filename):
|
||||
files.append(os.path.join(root, filename))
|
||||
d = {}
|
||||
for v in files:
|
||||
k=os.path.dirname(v)
|
||||
if k in d:
|
||||
d[k].append(v)
|
||||
else:
|
||||
d[k]=[v]
|
||||
r = d.items()
|
||||
if os.name == 'nt':
|
||||
r.append(("Microsoft.VC90.CRT", glob.glob('C:\Microsoft.VC90.CRT\*.*')))
|
||||
|
||||
import babel
|
||||
r.append(("localedata",
|
||||
glob.glob(os.path.join(os.path.dirname(babel.__file__), "localedata" , '*'))))
|
||||
|
||||
return r
|
||||
|
||||
def gen_manifest():
|
||||
file_list="\n".join(data())
|
||||
open('MANIFEST','w').write(file_list)
|
||||
|
||||
if os.name == 'nt':
|
||||
sys.path.append("C:\Microsoft.VC90.CRT")
|
||||
|
||||
def py2exe_options():
|
||||
if os.name == 'nt':
|
||||
import py2exe
|
||||
return {
|
||||
"console" : [ { "script": "openerp-server", "icon_resources": [(1, join("install","openerp-icon.ico"))], }],
|
||||
'options' : {
|
||||
"py2exe": {
|
||||
"skip_archive": 1,
|
||||
"optimize": 2,
|
||||
"dist_dir": 'dist',
|
||||
"packages": [ "DAV", "HTMLParser", "PIL", "asynchat", "asyncore", "commands", "dateutil", "decimal", "email", "encodings", "imaplib", "lxml", "lxml._elementpath", "lxml.builder", "lxml.etree", "lxml.objectify", "mako", "openerp", "poplib", "pychart", "pydot", "pyparsing", "reportlab", "select", "simplejson", "smtplib", "uuid", "vatnumber", "vobject", "xml", "xml.dom", "yaml", ],
|
||||
"excludes" : ["Tkconstants","Tkinter","tcl"],
|
||||
}
|
||||
}
|
||||
}
|
||||
else:
|
||||
return {}
|
||||
|
||||
execfile(join(os.path.dirname(__file__), 'openerp', 'release.py'))
|
||||
|
||||
# Notes for OpenERP developer on windows:
|
||||
#
|
||||
# To setup a windows developer evironement install python2.7 then pip and use
|
||||
# "pip install <depencey>" for every dependency listed below.
|
||||
#
|
||||
# Dependecies that requires DLLs are not installable with pip install, for
|
||||
# them we added comments with links where you can find the installers.
|
||||
#
|
||||
# OpenERP on windows also require the pywin32, the binary can be found at
|
||||
# http://pywin32.sf.net
|
||||
#
|
||||
# Both python2.7 32bits and 64bits are known to work.
|
||||
|
||||
setuptools.setup(
|
||||
name = 'openerp',
|
||||
version = version,
|
||||
description = description,
|
||||
long_description = long_desc,
|
||||
url = url,
|
||||
author = author,
|
||||
author_email = author_email,
|
||||
classifiers = filter(None, classifiers.split("\n")),
|
||||
license = license,
|
||||
scripts = ['openerp-server'],
|
||||
data_files = data(),
|
||||
packages = setuptools.find_packages(),
|
||||
dependency_links = ['http://download.gna.org/pychart/'],
|
||||
#include_package_data = True,
|
||||
install_requires = [
|
||||
'pychart', # not on pypi, use: pip install http://download.gna.org/pychart/PyChart-1.39.tar.gz
|
||||
'babel',
|
||||
'docutils',
|
||||
'feedparser',
|
||||
'gdata',
|
||||
'lxml < 3', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/
|
||||
'mako',
|
||||
'PIL', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/
|
||||
'psutil', # windows binary code.google.com/p/psutil/downloads/list
|
||||
'psycopg2',
|
||||
'pydot',
|
||||
'python-dateutil < 2',
|
||||
'python-ldap', # optional
|
||||
'python-openid',
|
||||
'pytz',
|
||||
'pywebdav',
|
||||
'pyyaml',
|
||||
'reportlab', # windows binary pypi.python.org/pypi/reportlab
|
||||
'simplejson',
|
||||
'vatnumber',
|
||||
'vobject',
|
||||
'werkzeug',
|
||||
'xlwt',
|
||||
'zsi', # optional
|
||||
],
|
||||
extras_require = {
|
||||
'SSL' : ['pyopenssl'],
|
||||
},
|
||||
tests_require = ['unittest2'],
|
||||
**py2exe_options()
|
||||
)
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
Loading…
Reference in New Issue