commit
ad4e36d09b
|
@ -179,7 +179,7 @@
|
|||
<form string="Company">
|
||||
<group colspan="4" col="6">
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field name="partner_id" select="1"/>
|
||||
<field name="partner_id" readonly="1" select="1" required="0"/>
|
||||
<field name="parent_id" select="1" groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:49+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:26+0000\n"
|
||||
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
|
||||
"Language-Team: openerp-translators\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:43+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:23+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:44+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -8,13 +8,13 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-server\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:51+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:18+0000\n"
|
||||
"Last-Translator: Harry (Open ERP) <hmo@tinyerp.com>\n"
|
||||
"Language-Team: Japanese <ja@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: pt_BR\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:44+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:28+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"Language-Team: <pt@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:56+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:14+0000\n"
|
||||
"Last-Translator: Anders Wallenquist <anders.wallenquist@vertel.se>\n"
|
||||
"Language-Team: <>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:47+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:22+0000\n"
|
||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -7,13 +7,13 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
|
||||
"PO-Revision-Date: 2010-08-18 12:53+0000\n"
|
||||
"PO-Revision-Date: 2010-08-23 06:24+0000\n"
|
||||
"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-19 03:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-08-24 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: base
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -606,8 +606,20 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Role">
|
||||
<field colspan="4" name="name" select="1"/>
|
||||
<field colspan="4" name="parent_id"/>
|
||||
<field name="name" select="1"/>
|
||||
<field name="parent_id"/>
|
||||
<separator string="Description" colspan="4"/>
|
||||
<field name="description" nolabel="1" colspan="4"/>
|
||||
<separator string="Workflow transitions" colspan="4"/>
|
||||
<field name="workflow_transition_ids" nolabel="1" colspan="4">
|
||||
<tree string="Workflow transitions">
|
||||
<field name="wkf_id"/>
|
||||
<field name="act_from"/>
|
||||
<field name="act_to"/>
|
||||
<field name="signal"/>
|
||||
<field name="condition"/>
|
||||
</tree>
|
||||
</field>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -619,6 +631,8 @@
|
|||
<field name="arch" type="xml">
|
||||
<tree string="Roles">
|
||||
<field name="name"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="description"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -151,6 +151,7 @@ class wkf_transition(osv.osv):
|
|||
'condition': fields.char('Condition', required=True, size=128),
|
||||
'act_from': fields.many2one('workflow.activity', 'Source Activity', required=True, select=True, ondelete='cascade'),
|
||||
'act_to': fields.many2one('workflow.activity', 'Destination Activity', required=True, select=True, ondelete='cascade'),
|
||||
'wkf_id': fields.related('act_from','wkf_id', type='many2one', relation='workflow', string='Workflow', select=True),
|
||||
}
|
||||
_defaults = {
|
||||
'condition': lambda *a: 'True',
|
||||
|
|
|
@ -33,7 +33,7 @@ view_form="""<?xml version="1.0"?>
|
|||
<field name="name" width="200"/>
|
||||
<field name="code"/>
|
||||
<field name="data" colspan="4"/>
|
||||
<label string="You have to import a .CSV file wich is encoded in UTF-8.\n
|
||||
<label string="You have to import a .CSV file which is encoded in UTF-8.\n
|
||||
Please check that the first line of your file is one of the following:" colspan="4" align="0.0"/>
|
||||
<label string="type,name,res_id,src,value" colspan="4"/>
|
||||
<label string="module,type,name,res_id,src,value" colspan="4"/>
|
||||
|
|
|
@ -396,6 +396,7 @@
|
|||
<field name="domain">[]</field>
|
||||
<field name="context">{'default_customer':0, 'search_default_supplier': 1, 'default_supplier':1}</field>
|
||||
<field name="filter" eval="True"/>
|
||||
<field name="help">With the Suppliers menu, you have access to all informations regarding your suppliers, including an history to track event (crm) and his accounting properties.</field>
|
||||
</record>
|
||||
|
||||
<record id="action_partner_employee_form" model="ir.actions.act_window">
|
||||
|
|
|
@ -42,7 +42,7 @@ class multi_company_default(osv.osv):
|
|||
'company_dest_id': fields.many2one('res.company', 'Default Company', required=True,
|
||||
help='Company to store the current record'),
|
||||
'object_id': fields.many2one('ir.model', 'Object', required=True,
|
||||
help='Object affect by this rules'),
|
||||
help='Object affected by this rule'),
|
||||
'expression': fields.char('Expression', size=256, required=True,
|
||||
help='Expression, must be True to match\nuse context.get or user (browse)'),
|
||||
'field_id': fields.many2one('ir.model.fields', 'Field', help='Select field property'),
|
||||
|
@ -162,9 +162,17 @@ class res_company(osv.osv):
|
|||
def cache_restart(self, cr):
|
||||
self._get_company_children.clear_cache(cr.dbname)
|
||||
|
||||
def create(self, cr, *args, **argv):
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
if not vals.get('name', False) or vals.get('partner_id', False):
|
||||
self.cache_restart(cr)
|
||||
return super(res_company, self).create(cr, uid, vals, context=context)
|
||||
obj_partner = self.pool.get('res.partner')
|
||||
partner_id = obj_partner.create(cr, uid, {'name': vals['name']}, context=context)
|
||||
vals.update({'partner_id': partner_id})
|
||||
self.cache_restart(cr)
|
||||
return super(res_company, self).create(cr, *args, **argv)
|
||||
company_id = super(res_company, self).create(cr, uid, vals, context=context)
|
||||
obj_partner.write(cr, uid, partner_id, {'company_id': company_id}, context=context)
|
||||
return company_id
|
||||
|
||||
def write(self, cr, *args, **argv):
|
||||
self.cache_restart(cr)
|
||||
|
|
|
@ -10,5 +10,24 @@
|
|||
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Record Rule For Company -->
|
||||
|
||||
<record id="res_company_rule" model="ir.rule">
|
||||
<field name="name">company rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_company"/>
|
||||
<field eval="True" name="global"/>
|
||||
<field name="domain_force">['|',('user_ids','=',user.id),('parent_id','=',user.company_id.id)]</field>
|
||||
</record>
|
||||
|
||||
<!-- Record Rule For User -->
|
||||
<record id="res_users_rule" model="ir.rule">
|
||||
<field name="name">user rule</field>
|
||||
<field model="ir.model" name="model_id" ref="model_res_users"/>
|
||||
<field eval="True" name="global"/>
|
||||
<field name="domain_force">['|',('company_id','=',user.company_id.id),('company_id','child_of',[user.company_id.id])]</field>
|
||||
</record>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -93,13 +93,19 @@ class roles(osv.osv):
|
|||
_name = "res.roles"
|
||||
_columns = {
|
||||
'name': fields.char('Role Name', size=64, required=True),
|
||||
'parent_id': fields.many2one('res.roles', 'Parent', select=True),
|
||||
'parent_id': fields.many2one('res.roles', 'Parent', select=True,
|
||||
help="The parent role can be used to construct a hierarchy of roles. Parent roles inherit from the roles of their descendants."),
|
||||
'child_id': fields.one2many('res.roles', 'parent_id', 'Children'),
|
||||
'users': fields.many2many('res.users', 'res_roles_users_rel', 'rid', 'uid', 'Users'),
|
||||
}
|
||||
_defaults = {
|
||||
'description': fields.text('Description', help="Description of this role and where it is relevant in workflows and processes"),
|
||||
'workflow_transition_ids': fields.one2many('workflow.transition', 'role_id', 'Workflow Transitions',
|
||||
help="The workflow transitions associated with this role"),
|
||||
}
|
||||
def check(self, cr, uid, ids, role_id):
|
||||
"""Verifies that the role with id ``role_id`` is granted directly or indirectly to a
|
||||
user that possesses the roles with ids ``ids``. Indirectly means that one of the
|
||||
roles with id in ``ids`` is an ancestor role of the role with id ``role_id``.
|
||||
"""
|
||||
if role_id in ids:
|
||||
return True
|
||||
cr.execute('select parent_id from res_roles where id=%s', (role_id,))
|
||||
|
|
|
@ -103,10 +103,12 @@ class ExportService(object):
|
|||
|
||||
_services = {}
|
||||
_groups = {}
|
||||
_logger = logging.getLogger('web-services')
|
||||
|
||||
def __init__(self, name, audience=''):
|
||||
ExportService._services[name] = self
|
||||
self.__name = name
|
||||
self._logger.info("Exported service registered: %s" % name)
|
||||
|
||||
def joinGroup(self, name):
|
||||
ExportService._groups.setdefault(name, {})[self.__name] = self
|
||||
|
|
|
@ -115,6 +115,7 @@ class expression(object):
|
|||
if self._is_operator(e) or e == self.__DUMMY_LEAF:
|
||||
continue
|
||||
left, operator, right = e
|
||||
operator = operator.lower()
|
||||
working_table = table
|
||||
main_table = table
|
||||
fargs = left.split('.', 1)
|
||||
|
@ -278,15 +279,34 @@ class expression(object):
|
|||
dom = _rec_get(ids2, working_table, parent=left)
|
||||
self.__exp = self.__exp[:i] + dom + self.__exp[i+1:]
|
||||
else:
|
||||
if isinstance(right, basestring): # and not isinstance(field, fields.related):
|
||||
def _get_expression(field_obj,cr, uid, left, right, operator, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
c = context.copy()
|
||||
c['active_test'] = False
|
||||
dict_op = {'not in':'!=','in':'='}
|
||||
if isinstance(right,tuple):
|
||||
right = list(right)
|
||||
if (not isinstance(right,list)) and operator in ['not in','in']:
|
||||
operator = dict_op[operator]
|
||||
res_ids = field_obj.name_search(cr, uid, right, [], operator, limit=None, context=c)
|
||||
if not res_ids:
|
||||
self.__exp[i] = ('id','=',0)
|
||||
return ('id','=',0)
|
||||
else:
|
||||
right = map(lambda x: x[0], res_ids)
|
||||
self.__exp[i] = (left, 'in', right)
|
||||
return (left, 'in', right)
|
||||
|
||||
m2o_str = False
|
||||
if isinstance(right, basestring): # and not isinstance(field, fields.related):
|
||||
m2o_str = True
|
||||
elif isinstance(right, list) or isinstance(right, tuple):
|
||||
m2o_str = True
|
||||
for ele in right:
|
||||
if not isinstance(ele, basestring):
|
||||
m2o_str = False
|
||||
break
|
||||
if m2o_str:
|
||||
self.__exp[i] = _get_expression(field_obj,cr, uid, left, right, operator, context=context)
|
||||
else:
|
||||
# other field type
|
||||
# add the time part to datetime field when it's not there:
|
||||
|
|
114
setup.py
114
setup.py
|
@ -32,8 +32,8 @@ import os
|
|||
from os.path import join, isfile, basename
|
||||
import glob
|
||||
|
||||
from distutils.core import setup, Command
|
||||
from distutils.command.install import install
|
||||
from setuptools import setup, find_packages
|
||||
from setuptools.command.install import install
|
||||
from distutils.sysconfig import get_python_lib
|
||||
|
||||
has_py2exe = False
|
||||
|
@ -51,54 +51,10 @@ if 'bdist_rpm' in sys.argv:
|
|||
# get python short version
|
||||
py_short_version = '%s.%s' % sys.version_info[:2]
|
||||
|
||||
required_modules = [
|
||||
('lxml', 'lxml module: pythonic libxml2 and libxslt bindings'),
|
||||
('mako', 'Mako template engine'),
|
||||
('dateutil', "Extensions to the standard datetime module"),
|
||||
('psycopg2', 'PostgreSQL module'),
|
||||
('pychart', 'pychart module'),
|
||||
('pydot', 'pydot module'),
|
||||
('pytz', 'Timezone handling library for Python'),
|
||||
('reportlab', 'reportlab module'),
|
||||
('yaml', 'YAML parser and emitter for Python'),
|
||||
('DAV', 'PyWebDAV is a standards compliant WebDAV server and library written in Python'),
|
||||
]
|
||||
|
||||
def check_modules():
|
||||
errors = []
|
||||
for modname, desc in required_modules:
|
||||
try:
|
||||
imp.find_module(modname)
|
||||
except ImportError:
|
||||
errors.append(
|
||||
'Error: python module %s (%s) is required' % (modname, desc))
|
||||
|
||||
if errors:
|
||||
print '\n'.join(errors)
|
||||
sys.exit(1)
|
||||
|
||||
def find_addons():
|
||||
for root, _, names in os.walk(join('bin', 'addons')):
|
||||
for root, _, names in os.walk(join('bin', 'addons'), followlinks=True):
|
||||
if '__openerp__.py' in names or '__terp__.py' in names:
|
||||
yield basename(root), root
|
||||
#look for extra modules
|
||||
try:
|
||||
empath = os.getenv('EXTRA_MODULES_PATH', '../addons/')
|
||||
for mname in open(join(empath, 'server_modules.list')):
|
||||
mname = mname.strip()
|
||||
if not mname:
|
||||
continue
|
||||
|
||||
terp = join(empath, mname, '__openerp__.py')
|
||||
if not os.path.exists(terp):
|
||||
terp = join(empath, mname, '__terp__.py')
|
||||
|
||||
if os.path.exists(terp):
|
||||
yield mname, join(empath, mname)
|
||||
else:
|
||||
print "Module %s specified, but no valid path." % mname
|
||||
except:
|
||||
pass
|
||||
|
||||
def data_files():
|
||||
'''Build list of data files to be installed'''
|
||||
|
@ -145,9 +101,6 @@ def data_files():
|
|||
|
||||
return files
|
||||
|
||||
if not os.getenv('NO_CHECK_MODULES') :
|
||||
check_modules()
|
||||
|
||||
f = file('openerp-server','w')
|
||||
f.write("""#!/bin/sh
|
||||
echo "Error: the content of this file should have been replaced during "
|
||||
|
@ -173,6 +126,8 @@ class openerp_server_install(install):
|
|||
f.close()
|
||||
install.run(self)
|
||||
|
||||
|
||||
|
||||
options = {
|
||||
"py2exe": {
|
||||
"compressed": 1,
|
||||
|
@ -201,37 +156,42 @@ setup(name = name,
|
|||
license = license,
|
||||
data_files = data_files(),
|
||||
cmdclass = {
|
||||
'install' : openerp_server_install,
|
||||
'install' : openerp_server_install,
|
||||
},
|
||||
scripts = ['openerp-server'],
|
||||
packages = ['openerp-server',
|
||||
'openerp-server.addons',
|
||||
'openerp-server.ir',
|
||||
'openerp-server.osv',
|
||||
'openerp-server.pychart',
|
||||
'openerp-server.pychart.afm',
|
||||
'openerp-server.report',
|
||||
'openerp-server.report.printscreen',
|
||||
'openerp-server.report.pyPdf',
|
||||
'openerp-server.report.render',
|
||||
'openerp-server.report.render.html2html',
|
||||
'openerp-server.report.render.makohtml2html',
|
||||
'openerp-server.report.render.odt2odt',
|
||||
'openerp-server.report.render.rml2html',
|
||||
'openerp-server.report.render.rml2pdf',
|
||||
'openerp-server.report.render.rml2txt',
|
||||
'openerp-server.service',
|
||||
'openerp-server.tools',
|
||||
'openerp-server.wizard',
|
||||
'openerp-server.workflow'] + \
|
||||
[('openerp-server.addons.' + name)
|
||||
for name, _ in find_addons()],
|
||||
packages = [
|
||||
'.'.join(['openerp-server'] + package.split('.')[1:]) for package in find_packages()
|
||||
],
|
||||
package_dir = find_package_dirs(),
|
||||
console = [{"script": join("bin", "openerp-server.py"),
|
||||
"icon_resources": [(1,join("pixmaps","openerp-icon.ico"))]
|
||||
}],
|
||||
console = [
|
||||
{
|
||||
"script": join("bin", "openerp-server.py"),
|
||||
"icon_resources": [(1, join("pixmaps","openerp-icon.ico"))]
|
||||
}
|
||||
],
|
||||
options = options,
|
||||
)
|
||||
install_requires = ['lxml',
|
||||
'mako',
|
||||
'python-dateutil',
|
||||
'psycopg2',
|
||||
'pychart',
|
||||
'pydot',
|
||||
'pytz',
|
||||
'reportlab',
|
||||
'caldav',
|
||||
'pyyaml',
|
||||
'sqlalchemy',
|
||||
'django',
|
||||
'pywebdav'
|
||||
'cx_Oracle',
|
||||
'mysqldb',
|
||||
'feedparser',
|
||||
'bsddb3',
|
||||
'egenix-mx-base'],
|
||||
extras_require={
|
||||
'SSL' : ['pyopenssl'],
|
||||
}
|
||||
)
|
||||
|
||||
if has_py2exe:
|
||||
# Sometime between pytz-2008a and pytz-2008i common_timezones started to
|
||||
|
|
Loading…
Reference in New Issue