[MERGE]: Merged with latest trunk-server

bzr revid: rpa@tinyerp.com-20120925051541-thkbb8xn8oc9yyi0
This commit is contained in:
Rucha (Open ERP)
2012-09-25 10:45:41 +05:30
98 changed files with 4841 additions and 1198 deletions
+1
View File
@@ -24,6 +24,7 @@ Depends:
python-lxml,
python-mako,
python-openid,
python-psutil,
python-psycopg2,
python-pybabel,
python-pychart,
-63
View File
@@ -1,63 +0,0 @@
# Gunicorn sample configuration file.
# See http://gunicorn.org/configure.html for more details.
#
# To run the OpenERP server via Gunicorn, change the appropriate
# settings below, in order to provide the parameters that
# would normally be passed in the command-line,
# (at least `bind` and `conf['addons_path']`), then execute:
# $ gunicorn openerp:wsgi.core.application -c gunicorn.conf.py
# or if you want to run it behind a reverse proxy, add the line
# import openerp.wsgi.proxied
# in this file and execute:
# $ gunicorn openerp:wsgi.proxied.application -c gunicorn.conf.py
import openerp
# Standard OpenERP XML-RPC port is 8069
bind = '127.0.0.1:8069'
pidfile = '.gunicorn.pid'
# Gunicorn recommends 2-4 x number_of_cpu_cores, but
# you'll want to vary this a bit to find the best for your
# particular work load.
workers = 4
# Some application-wide initialization is needed.
on_starting = openerp.wsgi.core.on_starting
when_ready = openerp.wsgi.core.when_ready
pre_request = openerp.wsgi.core.pre_request
post_request = openerp.wsgi.core.post_request
# openerp request-response cycle can be quite long for
# big reports for example
timeout = 240
max_requests = 2000
# Equivalent of --load command-line option
openerp.conf.server_wide_modules = ['web']
# internal TODO: use openerp.conf.xxx when available
conf = openerp.tools.config
# Path to the OpenERP Addons repository (comma-separated for
# multiple locations)
conf['addons_path'] = '/home/openerp/addons/trunk,/home/openerp/web/trunk/addons'
# Optional database config if not using local socket
#conf['db_name'] = 'mycompany'
#conf['db_host'] = 'localhost'
#conf['db_user'] = 'foo'
#conf['db_port'] = 5432
#conf['db_password'] = 'secret'
# OpenERP Log Level
# DEBUG=10, DEBUG_RPC=8, DEBUG_RPC_ANSWER=6, DEBUG_SQL=5, INFO=20,
# WARNING=30, ERROR=40, CRITICAL=50
# conf['log_level'] = 20
# If --static-http-enable is used, path for the static web directory
#conf['static_http_document_root'] = '/var/www'
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+11 -17
View File
@@ -91,7 +91,7 @@ def setup_pid_file():
def preload_registry(dbname):
""" Preload a registry, and start the cron."""
try:
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False)
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=openerp.tools.config['init'] or openerp.tools.config['update'], pooljobs=False)
# jobs will start to be processed later, when openerp.cron.start_master_thread() is called by openerp.service.start_services()
registry.schedule_cron_jobs()
@@ -110,7 +110,6 @@ def run_test_file(dbname, test_file):
except Exception:
_logger.exception('Failed to initialize database `%s` and run test file `%s`.', dbname, test_file)
def export_translation():
config = openerp.tools.config
dbname = config['db_name']
@@ -205,6 +204,7 @@ def quit_on_signals():
except KeyboardInterrupt:
pass
config = openerp.tools.config
if config['pidfile']:
os.unlink(config['pidfile'])
@@ -217,8 +217,7 @@ def configure_babel_localedata_path():
import babel
babel.localedata._dirname = os.path.join(os.path.dirname(sys.executable), 'localedata')
if __name__ == "__main__":
def main():
os.environ["TZ"] = "UTC"
check_root_user()
@@ -247,20 +246,13 @@ if __name__ == "__main__":
sys.exit(0)
if not config["stop_after_init"]:
setup_pid_file()
# Some module register themselves when they are loaded so we need the
# services to be running before loading any registry.
openerp.service.start_services()
for m in openerp.conf.server_wide_modules:
try:
openerp.modules.module.load_openerp_module(m)
except Exception:
msg = ''
if m == 'web':
msg = """
The `web` module is provided by the addons found in the `openerp-web` project.
Maybe you forgot to add those addons in your addons_path configuration."""
_logger.exception('Failed to load server-wide module `%s`.%s', m, msg)
if config['workers']:
openerp.service.start_services_workers()
else:
openerp.service.start_services()
if config['db_name']:
for dbname in config['db_name'].split(','):
@@ -269,8 +261,10 @@ Maybe you forgot to add those addons in your addons_path configuration."""
if config["stop_after_init"]:
sys.exit(0)
setup_pid_file()
_logger.info('OpenERP server is running, waiting for connections...')
quit_on_signals()
if __name__ == "__main__":
main()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/python
# WSGI Handler sample configuration file.
#
# Change the appropriate settings below, in order to provide the parameters
# that would normally be passed in the command-line.
# (at least conf['addons_path'])
#
# For generic wsgi handlers a global application is defined.
# For uwsgi this should work:
# $ uwsgi_python --http :9090 --pythonpath . --wsgi-file openerp-wsgi.py
#
# For gunicorn additional globals need to be defined in the Gunicorn section.
# Then the following command should run:
# $ gunicorn openerp:service.wsgi_server.application -c openerp-wsgi.py
import openerp
#----------------------------------------------------------
# Common
#----------------------------------------------------------
openerp.multi_process = True # Nah!
# Equivalent of --load command-line option
openerp.conf.server_wide_modules = ['web']
conf = openerp.tools.config
# Path to the OpenERP Addons repository (comma-separated for
# multiple locations)
conf['addons_path'] = '../../addons/trunk,../../web/trunk/addons'
# Optional database config if not using local socket
#conf['db_name'] = 'mycompany'
#conf['db_host'] = 'localhost'
#conf['db_user'] = 'foo'
#conf['db_port'] = 5432
#conf['db_password'] = 'secret'
#----------------------------------------------------------
# Generic WSGI handlers application
#----------------------------------------------------------
application = openerp.service.wsgi_server.application
#----------------------------------------------------------
# Gunicorn
#----------------------------------------------------------
# Standard OpenERP XML-RPC port is 8069
bind = '127.0.0.1:8069'
pidfile = '.gunicorn.pid'
workers = 4
timeout = 240
max_requests = 2000
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+10 -2
View File
@@ -38,11 +38,19 @@ import run_tests
import service
import sql_db
import test
import tiny_socket
import tools
import wizard
import workflow
import wsgi
# backward compatilbility
# TODO: This is for the web addons, can be removed later.
wsgi = service
wsgi.register_wsgi_handler = wsgi.wsgi_server.register_wsgi_handler
# Is the server running in multi-process mode (e.g. behind Gunicorn).
# If this is True, the processes have to communicate some events,
# e.g. database update or cache invalidation. Each process has also
# its own copy of the data structure and we don't need to care about
# locks between threads.
multi_process = False
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1 -1
View File
@@ -36,7 +36,7 @@ The kernel of OpenERP, needed for all installation.
'data': [
'base_data.xml',
'currency_data.xml',
'country_data.xml',
'res/res_country_data.xml',
'security/base_security.xml',
'base_menu.xml',
'res/res_security.xml',
-2
View File
@@ -62,8 +62,6 @@
<field name="name">Your Company</field>
<field name="partner_id" ref="main_partner"/>
<field name="rml_header1">Your Company Slogan</field>
<field name="rml_footer1">Web: http://www.yourcompany.com - Tel: +33 1 49 51 23 94</field>
<field name="rml_footer2">Bank Accounts... to be configured in menu Settings > Accounting/Invoicing.</field>
<field name="currency_id" ref="base.EUR"/>
</record>
+7
View File
@@ -14,5 +14,12 @@
<field name="company_id" ref="main_company"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_user')])]"/>
</record>
<!-- new rate for demo transactions in multi currency -->
<record id="rateUSDbis" model="res.currency.rate">
<field name="rate">1.5289</field>
<field name="currency_id" ref="USD"/>
<field eval="time.strftime('%Y-06-06')" name="name"/>
</record>
</data>
</openerp>
+12
View File
@@ -29,5 +29,17 @@
<menuitem id="menu_ir_property" name="Parameters" parent="menu_custom" sequence="24"/>
<menuitem id="next_id_4" name="Low Level Objects" parent="menu_custom" sequence="30"/>
<record id="action_client_base_menu" model="ir.actions.client">
<field name="name">Open Settings Menu</field>
<field name="tag">reload</field>
<field name="params" eval="{'menu_id': ref('base.menu_administration')}"/>
</record>
<record id="open_menu" model="ir.actions.todo">
<field name="action_id" ref="action_client_base_menu"/>
<field name="type">automatic</field>
<field name="sequence">100</field>
<field name="state">done</field>
</record>
</data>
</openerp>
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -794,7 +794,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3701,7 +3701,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5480,7 +5480,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -11014,7 +11014,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11134,7 +11134,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -798,7 +798,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3769,7 +3769,7 @@ msgstr "GPL-2 أو إصدار أحدث"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5573,7 +5573,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "رمز الولاية (ثلاثة حروف).\n"
#. module: base
@@ -11138,7 +11138,7 @@ msgstr "المتواليات"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11261,7 +11261,7 @@ msgstr "مرشح الفرز"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "السيدة"
#. module: base
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -799,7 +799,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3753,8 +3753,8 @@ msgstr "GPL версия 2 или по-нова"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5554,7 +5554,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Кодът на държавата в три букви.\n"
#. module: base
@@ -11117,7 +11117,7 @@ msgstr "Последователност"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11237,7 +11237,7 @@ msgstr "Филтър"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Г-жа"
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -783,7 +783,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3690,7 +3690,7 @@ msgstr "GPL-2 ili novija verzija"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5469,7 +5469,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -11003,7 +11003,7 @@ msgstr "Sekvence"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11123,7 +11123,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -807,7 +807,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3805,7 +3805,7 @@ msgstr "GPL-2 o versió posterior"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Sr."
#. module: base
@@ -5641,7 +5641,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "El codi de la província de 3 caràcters.\n"
#. module: base
@@ -11259,7 +11259,7 @@ msgstr "Seqüències"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Sra."
#. module: base
@@ -11385,7 +11385,7 @@ msgstr "Filtre"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Sra."
#. module: base
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Language: Czech\n"
#. module: base
@@ -805,7 +805,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3835,8 +3835,8 @@ msgstr "GPL-2 nebo pozdější verze"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5650,7 +5650,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Kód státu ve třech znacích.\n"
#. module: base
@@ -11276,7 +11276,7 @@ msgstr "Posloupnosti"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Paní"
#. module: base
@@ -11398,7 +11398,7 @@ msgstr "Filtr"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Pan"
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr "Sekvenser"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+223 -10
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -869,7 +869,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr "Manuell: manuell gestartet"
@@ -4345,7 +4345,7 @@ msgstr "GPL-2 oder höher"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Hr."
#. module: base
@@ -6486,7 +6486,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Der 3 stellige Staatencode\n"
#. module: base
@@ -7492,7 +7492,7 @@ msgstr "Arbeitstage"
#. module: base
#: model:ir.module.module,shortdesc:base.module_multi_company
msgid "Multi-Company"
msgstr ""
msgstr "Mehrfach-Unternehmen"
#. module: base
#: field:ir.actions.report.xml,report_rml_content:0
@@ -8331,6 +8331,21 @@ msgid ""
"Secondly, price differences between actual purchase price and fixed product "
"standard price are booked on a separate account"
msgstr ""
"\n"
"Dieses Modul unterstützt die Angelsächsische Buchungsmethodik durch Änderung "
"der Buchungslogik bei Lagerbewegungen.\n"
"============================================================================="
"=========================\n"
"\n"
"Der Unterschied zwischen Angelsächsischer und der \"Rheinischen\" (auch "
"kontinentale genannt) Buchungsmethoden liegt im Bewertungsansatz. "
"Angelsächsisch werden die Kosten im Moment des Verkaufs, Kontinental werden "
"die Kosten bis zum Versand herangezogen. Dieses Modul fügt diese "
"Funktionalität durch Hinzufügen eines Interimskontos ein, in dem der Wert "
"der ausgelieferten Ware gegengebucht wird, wenn die Rechnung erstellt wird "
"und der Gegenwert auf das Debtoren- bzw. Kreditorenkonto wertgestellt wird.\n"
"Zweitens werden Preisunterschiede zwischen aktuellen Einkaufspreis und dem "
"vorgegebenen Einstandspreis auf einem separaten Konto verbucht."
#. module: base
#: field:res.partner,title:0
@@ -8689,6 +8704,95 @@ msgid ""
"from Gate A\n"
" "
msgstr ""
"\n"
"Dieses Modul ergänzt das Lager-Verwaltungs-Modul durch Umsetzung Push- und "
"Pull-Warenflüsse.\n"
"============================================================================="
"=====\n"
"\n"
"Typischerweise kann dies verwendet werden für:\n"
"* Verwaltung von Produkt-Fertigungs-Flüssen\n"
"* Verwaltung von Standard-Lagerorten je Produkt\n"
"* Waren-Routing innerhalb der Lager an betriebliche Erfordernisse anpassen, "
"wie z. B.\n"
" - Qualitätskontrollen\n"
" - \"After Sales\" Dienstleistungen\n"
" - Retouren an Lieferanten\n"
"\n"
"* Unterstützen von Vermietungsverwaltung, durch Erzeugen von automatischen "
"Retouren für Mietobjekte\n"
"\n"
"Nach der Installation dieses Moduls erscheint ein zusätzlicher Reiter im "
"Produkt-Formular, in dem Sie Push-/Pull-Flüsse festlegen können. Die "
"Demodaten des Produktes CPU1 zeigen dies:\n"
"\n"
"Push-Flüsse\n"
"----------\n"
"Push-Flüsse sind sinnvoll, wenn der Warenzugang immer eine entsprechende "
"Warenbewegung \n"
"an einen anderen Ort, ggf. mit Zeitverzögerung, zur Folge haben soll. Die "
"ursprüngliche\n"
"Lagerverwaltung sieht bereits Push-Flüsse per Lagerort vor, diese können "
"jedoch nicht per\n"
"Produkt detailliert werden.\n"
"\n"
"Ein Push-Fluss wird durch die Festlegung der Verkettung der Lagerorte und "
"der jeweiligen \n"
"Parameter. Sobald eine vorgegebene Anzahl Produkte am Quellort bewegt "
"wurden, wird eine \n"
"verkettete Bewegung gemäß der Fluss-Parameter (Zielort, Verzögerung, "
"Bewegungsart, \n"
"Berichtsinhalt, ...) vorgesehen. Die neue Lagerbewegung kann, je nach "
"Angaben, automatisch\n"
"geschehen oder aber manuell bestätigt und angestossen werden.\n"
"\n"
"Pull-Flüsse\n"
"----------\n"
"Pull-Flüsse sind ein wenig anders als Push-Flüsse, in dem sie nicht so sehr "
"in Bezug stehen \n"
"zu Lagerbewegungen, sondern vielmehr aus Bedarfen abgeleitet werden.\n"
"Was \"bezogen\" wird erzeugt einen Bedarf, nicht notwendigerweise ein "
"Produkt.\n"
"Ein klassisches Beispiel für einen Pull-Fluss ist ein Unternehmen mit "
"Verkaufsfilialen (Outlets).\n"
"Das Mutterhaus ist für die Belieferung der Filialen zuständig.\n"
"\n"
"[Kunde] <- A [Filiale A] <- B [Holding] <~ C [Lieferant]\n"
"\n"
"Wenn ein Beschaffungsauftrag in der Filiale A (z. B. durch einen "
"Verkauf/Auftrag) eintrifft, wird\n"
"daraus ein weiterer Beschaffungsauftrag erstellt, welcher an \"Holding B\" "
"eine Anforderung\n"
"bewirkt (Bezugsanforderung). Hier wird lediglich ein Lagertransfer von der "
"Holding B nach \n"
"Filiale A angestossen.\n"
"Wenn die Bedarfsanforderung der Filiale in der Holding bearbeitet wird und, "
"sollte der\n"
"Bestand in der Holding ausverkauft sein, so kann daraus ein "
"Beschaffungsauftrag an den\n"
"Lieferanten C erstellt werden (Pull/Bezug).\n"
"Im Ergebnis wird der Bezug des Kunden in der Filiale Bedarfsanforderungen "
"bis hin zum \n"
"Lieferanten bewirken.\n"
"\n"
"Technisch erlaubt ein Pull-Fluss eine andere Behandlung von Beschaffungen in "
"Abhängigkeit\n"
"nicht nur des betrachteten Produktes selbst, sondern auch vom Ort an dem der "
"Bedarf\n"
"auftritt bzw. dessen Ziel.\n"
"\n"
"Anwendungsfall:\n"
"--------\n"
"\n"
"Sie können die Demonstrationsdaten folgendemassen verwenden:\n"
"CPU1: Eine CPU1 im Shop 1 verkaufen und die Terminierung laufen lassen\n"
"- Lager: Lieferschein, Shop 1: Wareneingang\n"
"CPU3:\n"
"- Bei Erhalt des Produktes wird dies der Qualitätskontrolle zugeführt, "
"danach im Regal 2 abgelegt.\n"
"- Bei Lieferung an den Kunden: Warenentnahmeschein -> Packliste -> "
"Lieferschein von Tor A\n"
" "
#. module: base
#: model:ir.module.module,description:base.module_marketing
@@ -8880,6 +8984,21 @@ msgid ""
"invoice and send propositions for membership renewal.\n"
" "
msgstr ""
"\n"
"Dieses Modul ermöglicht die Mitglieder-Verwaltung.\n"
"==============================================\n"
"\n"
"Es werden verschiedene Arten von Mitgliedern unterstützt:\n"
"* Beitragsfreie Mitglieder\n"
"* Gruppenmitglieder (z. B. Teilnehmer-Gruppen zur Mitgliedschaft aller "
"Gruppenmitglieder)\n"
"* Beitragspflichtige Mitglieder\n"
"* Sonderpreise für bestimmte Mitglieder\n"
"\n"
"Integriert wird dieses Modul in das Verkaufsmodul und die Buchhaltung und "
"erlaubt automatische\n"
"Rechnungsstellung und das Versenden von Mitgliedschaftsverlängerungen.\n"
" "
#. module: base
#: model:ir.module.module,description:base.module_hr_attendance
@@ -8892,6 +9011,13 @@ msgid ""
"actions(Sign in/Sign out) performed by them.\n"
" "
msgstr ""
"\n"
"Dieses Modul verwaltet die Anwesenheitszeiten von Mitarbeitern.\n"
"=========================================================\n"
"\n"
"Führt Konten über die Anwesenheiten der Mitarbeiter aus Basis von Aktionen \n"
"(An- und Abmeldung) durch diese.\n"
" "
#. module: base
#: field:ir.module.module,maintainer:0
@@ -8961,6 +9087,21 @@ msgid ""
" * Number Padding\n"
" "
msgstr ""
"\n"
"Dieses Modul verwaltet intern verwendete Folgen-/Sequenznummern für Einträge "
"der Buchhaltung.\n"
"============================================================================="
"======\n"
"\n"
"Ermöglich Ihnen die Einstellung der geführten Buchungssequenzen.\n"
"\n"
"Sie können dabei folgende Einstellungen vornehmen:\n"
" * Präfix\n"
" * Postfix (Anhang)\n"
" * Nächste Zahl\n"
" * Inkrement / Erhöhungswert\n"
" * Ziffernanzahl / führende Nullen\n"
" "
#. module: base
#: model:res.country,name:base.to
@@ -9309,7 +9450,7 @@ msgstr "Dominika"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_module_record
msgid "Record and Create Modules"
msgstr ""
msgstr "Module Aufzeichnen und Erzeugen"
#. module: base
#: model:ir.model,name:base.model_partner_sms_send
@@ -9353,6 +9494,45 @@ msgid ""
" Administration / Users / Users\n"
" for example, you maybe will do it for the user 'admin'.\n"
msgstr ""
"\n"
"Dieses Modul dient der Verwaltung von Urlaub und Urlaubsanträgen.\n"
"=========================================================\n"
"\n"
"Setzt eine Pinwand für die Personalverwaltung um, welches folgen Inhalt "
"hat:\n"
" * Abwesenheiten / Urlaub\n"
"\n"
"Nehmen Sie zur Kenntnis:\n"
" - Eine Synchronisation mit internen Terminkalendern (Kundenverwaltung) "
"ist möglich: Um automatisch\n"
" ein Ereignis anzulegen, wenn ein Urlaubsantrag genehmigt wird, müssen "
"Sie den Urlaubsstatus mit\n"
" mit einer Ereigniskategorie verknüpfen. Diese Information und Ihre "
"Farbwahl treffen Sie in:\n"
" Personal->Konfiguration->Abwesenheiten->Abwesenheitsarten\n"
" - Ein Mitarbeiter kann eine Anfrage nach mehr freien Tagen, abhängig von "
"der Abwesenheitsart, stellen.\n"
" Die Gesamtzahl der Abwesenheitstage wird entsprechend erhöht, wenn der "
"Antrag gewährt wird.\n"
" - Es gibt zwei Wege die Abwesenheiten eines Mitarbeiters zu drucken:\n"
" * Mitarbeiter können nach Abteilungen ausgewählt werden, bei Auswahl "
"im Menü:\n"
" Personal->Berichtswesen->Urlaubstage->Urlaube nach Abteilung\n"
" * Mitarbeiterspezifisch kann eine Übersicht zur Urlaubsnahme und "
"Abwesenheiten erstellt werden:\n"
" Personal->Personal->Mitarbeiter\n"
" dort wählen Sie die Mitarbeiter aus, die Sie interessieren. "
"Anschließend wählen Sie den \n"
" Bericht \"Mitarbieter Urlaub\"\n"
" - Der Assistent \"Mitarbieter Urlaub\" erlaubt Ihnen die Auswahl der "
"Urlaube nach Status \"bestätigt\" \n"
" oder \"bestätigt und genehmigt\". Dieser Status muss durch einen "
"Mitarbeiter der Zuständigkeitsgruppe\n"
" Peronalverwaltung vorgenommen werden. Diese Einstellungen nehmen Sie "
"im Menü:\n"
" Einstellungen -> Benutzer -> Benutzer (Zugriffsrechte)\n"
" vor. Als Benutzer \"admin\" können Sie diese Eintragungen "
"beispielsweise auf jeden Fall vornehmen.\n"
#. module: base
#: field:ir.actions.report.xml,report_xsl:0
@@ -9372,7 +9552,7 @@ msgstr "Erweiterte Lieferketten"
#. module: base
#: model:ir.module.module,shortdesc:base.module_pad
msgid "Collaborative Pads"
msgstr ""
msgstr "Plattform für Zusammenarbeit"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
@@ -9786,6 +9966,30 @@ msgid ""
"created\n"
" CALENDAR_NAME: Name of calendar to access\n"
msgstr ""
"\n"
"Dieses Modul fügt die Funktionalität eines CalDAV-System hinzu.\n"
"========================================================\n"
"\n"
" - WebDAV-Server liefert den Zugang zu Kalendern\n"
" - Synchronisation von Kalendern mittels WebDAV\n"
" - Ereignis-Kategorien und Aufgaben-Attribute des Kalenders anpassen\n"
" - Liefert iCal -import und -export-Funktionalität\n"
"\n"
"Um auf Kalender mittels CalDAV-Anwendungen zuzugreifen, tragen Sie folgende "
"Adresse ein:\n"
" http://HOST:PORT/webdav/DATENBANK/calendars/users/BENUTZER/c\n"
"\n"
"Für den Zugriff auf den OpenERP-Kalender mittels WebCal von entferntem Ort, "
"benutzen Sie eine URL wie:\n"
" http://HOST:PORT/webdav/DATENBANK/Calendars/KALENDER_NAME.ics\n"
"\n"
"Wobei \n"
"- HOST Die Adresse des Servers auf dem WebDAV läuft\n"
"- PORT: TCP-Port des OpenERP-Server, Standardmässig 8069\n"
"- DATENBANK: Name der Datenbank, in der der OpenERP-Kalender erstellt ist "
"(und die gerade \n"
" von OpenERP im Einsatz ist!)\n"
"- KALENDER_NAME Name des zu verwendenden Kalenders\n"
#. module: base
#: field:ir.model.fields,selectable:0
@@ -9821,6 +10025,15 @@ msgid ""
"mail into mail.message with attachments.\n"
" "
msgstr ""
"\n"
"Dieses Modul stellt ein Outlook-Plugin zur Verfügung.\n"
"=============================================\n"
"\n"
"Das Outlook-Plugin erlaubt Ihnen die Auswahl eines Objektes, dem Sie Ihre\n"
"E-Mail oder Anhänge hinzufügen möchten. Sie können einen Partner, eine\n"
"Aufgabe ein Projekt, eine Kostenstelle/Kostenart oder ein anderes Objekt \n"
"auswählen, dem Sie Mail oder Anhänge hinzufügen möchten.\n"
" "
#. module: base
#: view:ir.attachment:0
@@ -12558,7 +12771,7 @@ msgstr "Sequenzen"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Frau"
#. module: base
@@ -12683,7 +12896,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Frau"
#. module: base
+7 -7
View File
@@ -12,8 +12,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"
@@ -795,7 +795,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3776,7 +3776,7 @@ msgstr "GPL-2 ή μεταγενέστερη έκδοση"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5589,7 +5589,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Ο κωδικός κατάστασης με 3 χαρακτήρες\n"
#. module: base
@@ -11159,7 +11159,7 @@ msgstr "Ιεραρχήσεις"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11281,7 +11281,7 @@ msgstr "Φίλτρο"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Κα/Δς"
#. module: base
+15 -15
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -862,7 +862,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manual: Launched manually.\n"
@@ -4355,8 +4355,8 @@ msgstr "GPL-2 or later version"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5024,7 +5024,7 @@ msgstr "`code` must be unique."
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_expense
msgid "Expenses Management"
msgstr ""
msgstr "Expenses Management"
#. module: base
#: view:workflow.activity:0
@@ -5035,7 +5035,7 @@ msgstr "Incoming Transitions"
#. module: base
#: field:ir.values,value_unpickle:0
msgid "Default value or action reference"
msgstr ""
msgstr "Default value or action reference"
#. module: base
#: model:res.country,name:base.sr
@@ -5045,7 +5045,7 @@ msgstr "Suriname"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_timesheet
msgid "Bill Time on Tasks"
msgstr ""
msgstr "Bill Time on Tasks"
#. module: base
#: model:ir.module.category,name:base.module_category_marketing
@@ -5062,7 +5062,7 @@ msgstr "Bank account"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_gr
msgid "Greece - Accounting"
msgstr ""
msgstr "Greece - Accounting"
#. module: base
#: selection:base.language.install,lang:0
@@ -6310,8 +6310,8 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgstr "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "The state code in three chars.\n"
#. module: base
#: model:res.country,name:base.sj
@@ -11913,8 +11913,8 @@ msgstr "Sequences"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "Mss"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -12038,8 +12038,8 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgstr "Mrs."
msgid "Ms."
msgstr "Ms."
#. module: base
#: view:base.module.import:0
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -853,7 +853,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manual: Se lanza manualmente.\n"
@@ -4029,7 +4029,7 @@ msgstr "GPL-2 o versión posterior"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Sr."
#. module: base
@@ -5868,7 +5868,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "El código de la provincia de 3 caracteres.\n"
#. module: base
@@ -11486,7 +11486,7 @@ msgstr "Secuencias"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Sra."
#. module: base
@@ -11613,7 +11613,7 @@ msgstr "Filtro"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Sra."
#. module: base
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -835,7 +835,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3843,7 +3843,7 @@ msgstr "GPL-2 o versión posterior"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Sr."
#. module: base
@@ -5682,7 +5682,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "El código de la provincia de 3 caracteres.\n"
#. module: base
@@ -11300,7 +11300,7 @@ msgstr "Secuencias"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Sra."
#. module: base
@@ -11427,7 +11427,7 @@ msgstr "Filtro"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Sra."
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"Language: \n"
#. module: base
@@ -879,7 +879,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manual: Lanzado manualmente.\n"
@@ -4442,7 +4442,7 @@ msgstr "GPL-2 o versión posterior"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Sr."
#. module: base
@@ -6736,7 +6736,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "El código de la provincia de 3 caracteres.\n"
#. module: base
@@ -13818,7 +13818,7 @@ msgstr "Secuencias"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Sra."
#. module: base
@@ -13945,7 +13945,7 @@ msgstr "Filtro"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Sra."
#. module: base
+116 -9
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -847,7 +847,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manual: Se lanza manualmente.\n"
@@ -1229,6 +1229,23 @@ msgid ""
"At the end of the month, the planning manager can also check if the encoded "
"timesheets are respecting the planned time on each analytic account.\n"
msgstr ""
"Realizar un seguimiento de su planificación\n"
"Este módulo le ayuda a gestionar sus planificaciones.\n"
"===============================================\n"
"\n"
"Este módulo es la base de la contabilidad analítica y está totalmente "
"integrado con\n"
"* Hojas de servicio\n"
"* Gestión de ausencias\n"
"* Gestión de proyectos\n"
"\n"
"Así, cada director de departamento puede saber si alguien en su equipo aún "
"tiene tiempo asignado para una planificación determinada (teniendo en cuenta "
"las hojas de validación) o si todavía necesita codificar tareas.\n"
"\n"
"Al final del mes, el encargado de la planificación también puede comprobar "
"si la tabla de tiempos codificados están respetando los plazos previstos en "
"cada cuenta analítica.\n"
#. module: base
#: selection:ir.property,type:0
@@ -1496,6 +1513,26 @@ msgid ""
"database,\n"
" but in the servers rootpad like /server/bin/filestore.\n"
msgstr ""
"\n"
"Este es un sistema de gestión documental completo.\n"
"==============================================\n"
"\n"
" * Autenticación de usuarios\n"
" * Indexación de documentos: -.. Pptx y docx no son compatibles con la "
"plataforma Windows.\n"
" * El tablero de documentos que incluye:\n"
" * Nuevos archivos (lista)\n"
" * Los archivos por tipo de recurso (gráfico)\n"
" * Los archivos por empresa (gráfico)\n"
" * Tamaño de archivos por mes (gráfico)\n"
"\n"
"ATENCIÓN:\n"
" - Al instalar este módulo en una compañía en funcionamiento que que "
"tienen ya PDF almacenados en la base de datos, \n"
" los pierde todos.\n"
" - Después de instalar este módulo los PDF ya no se almacenan en la base "
"de datos,\n"
" si no en los servidores rootpad como / server / bin / filestore.\n"
#. module: base
#: view:res.lang:0
@@ -1564,6 +1601,15 @@ msgid ""
"Web.\n"
" "
msgstr ""
"\n"
"Este es el módulo test que permite mostrar etiquetas HTML en vistas de "
"formulario en XML.\n"
"============================================================================="
"\n"
"\n"
"Crea una vista de formulario ejemplo utilizando etiquetas HTML. Esto es "
"visible solo en el cliente Web.\n"
" "
#. module: base
#: model:ir.module.category,description:base.module_category_purchase_management
@@ -1776,6 +1822,24 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Este módulo agrega herramientas para compartir genéricas a su base de datos "
"de OpenERP.\n"
"========================================================================\n"
"\n"
"Específicamente agrega un botón 'compartir' disponible en el cliente Web "
"para\n"
"compartir cualquier tipo de datos OpenERP con colegas, clientes, amigos, "
"etc.\n"
"\n"
"El sistema funciona creando nuevos usuarios y grupos sobre la marcha, y\n"
"combinando los derechos de acceso adecuados y reglas para asegurar que los\n"
"usuarios compartidos sólo tienen acceso a los datos compartidos con ellos.\n"
"\n"
"Esto es muy útil para el trabajo colaborativo, compartir conocimientos,\n"
"sincronización con otras empresas, etc\n"
"\n"
" "
#. module: base
#: field:res.currency,accuracy:0
@@ -1856,6 +1920,49 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Validación de IVA para números IVA de las empresas\n"
"========================================\n"
"\n"
"Después de instalar este módulo, los valores ingresados en el campo IVA de "
"Empresas\n"
"serán validados para todos los países soportados. El país se infiere del "
"código\n"
"de país de 2 letras que es prefijo del número IVA, por ejemplo "
"\"BE0477472701\"\n"
"se validará usando las reglas belgas.\n"
"\n"
"Hay dos niveles diferentes de validación de números IVA:\n"
"\n"
" * Por defecto, se ejecuta una validación simple fuera de línea usando las "
"reglas de\n"
" validación conocidas para el país, usualmente un simple control de "
"dígitos. Esto es \n"
" rápido y está siempre disponible, pero permite números que quizá no "
"están\n"
" verdaderamente asignados, o que ya no son válidos.\n"
" * Cuando la opción \"Verificación VAT VIES\" está activada (en la "
"configuración de la\n"
" compañía del usuario), los números IVA se enviarán a la base de datos en "
"línea\n"
" VIES de la UE, que verificará realmente si el número es válido y está "
"asignado\n"
" actualmente a una empresa de la UE. Esto es un poco mas lento que la "
"validación\n"
" simple fuera de línea, requiere una conexión a Internet, y podría no "
"estar disponible\n"
" todo el tiempo. Si el servicio no está disponible o no es compatible con "
"el país\n"
" requerido (por ejemplo, para países no comunitarios), se ejecutará en su "
"lugar una\n"
" validación simple.\n"
"\n"
"Los países soportados actualmente son los países de la UE, y algunos países "
"no\n"
"comunitarios como Chile, Colombia, México, Noruega o Rusia. Para países no\n"
"soportados, solo se validará el código de país.\n"
"\n"
" "
#. module: base
#: view:ir.sequence:0
@@ -4019,8 +4126,8 @@ msgstr "GPL-2 o versión posterior"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5872,7 +5979,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "El código de la provincia de 3 caracteres.\n"
#. module: base
@@ -11535,8 +11642,8 @@ msgstr "Secuencias"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "Mss"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -11662,7 +11769,7 @@ msgstr "Filtro"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Sra."
#. module: base
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-08 04:54+0000\n"
"X-Generator: Launchpad (build 15914)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -788,7 +788,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3713,7 +3713,7 @@ msgstr "GPL-2 või hilisem versioon"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5499,7 +5499,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Maakonna kolmekohaline kood.\n"
#. module: base
@@ -11043,7 +11043,7 @@ msgstr "Jadad"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11163,7 +11163,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -9,8 +9,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-Language: Persian\n"
@@ -786,7 +786,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3715,7 +3715,7 @@ msgstr "مجوز GPL-2 یا نگارش بالاتر"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5502,7 +5502,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "کد استان در ۳ نویسه‌ای.\n"
#. module: base
@@ -11048,7 +11048,7 @@ msgstr "دنباله‌ها"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11168,7 +11168,7 @@ msgstr "پالایه"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -805,7 +805,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3799,7 +3799,7 @@ msgstr "GPL-2 tai myöhäisempi versio"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5630,7 +5630,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Osavaltion koodi kolmella kirjaimella.\n"
#. module: base
@@ -11278,7 +11278,7 @@ msgstr "Jaksot"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11404,8 +11404,8 @@ msgstr "Suodin"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgstr "Mrs."
msgid "Ms."
msgstr "Ms."
#. module: base
#: view:base.module.import:0
+9 -9
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -879,7 +879,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manuel : lancé manuellement.\n"
@@ -4422,7 +4422,7 @@ msgstr "GPL-2 ou version supérieure"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "M."
#. module: base
@@ -6659,7 +6659,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Le code état en trois caractères.\n"
#. module: base
@@ -13001,8 +13001,8 @@ msgstr "Séquences"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Mlle"
msgid "Mss"
msgstr "Mme"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -13129,8 +13129,8 @@ msgstr "Filtre"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgstr "Mme"
msgid "Ms."
msgstr "Mlle"
#. module: base
#: view:base.module.import:0
+9 -9
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -808,7 +808,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3805,8 +3805,8 @@ msgstr "GPL-2 ou versión posterior"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5635,7 +5635,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "O código de estado en tres caracteres.\n"
#. module: base
@@ -11245,8 +11245,8 @@ msgstr "Secuencias"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "MSS"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -11372,7 +11372,7 @@ msgstr "Filtro"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Ms"
#. module: base
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -785,7 +785,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3702,7 +3702,7 @@ msgstr "גרסא GPL-2 או מאוחרת יותר."
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5487,7 +5487,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "ביטוי הקוד בשלוש תוים.\n"
#. module: base
@@ -11030,7 +11030,7 @@ msgstr "רציפות"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11150,7 +11150,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"Language: hr\n"
#. module: base
@@ -840,7 +840,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3835,7 +3835,7 @@ msgstr "GPL-2 ili novija verzija"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "g."
#. module: base
@@ -5646,7 +5646,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Troznamenkasta šifra države/pokrajine/županije.\n"
#. module: base
@@ -11218,7 +11218,7 @@ msgstr "Sekvence"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "gđica"
#. module: base
@@ -11344,7 +11344,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "gđa."
#. module: base
+13 -13
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -804,7 +804,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -1821,7 +1821,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_evaluation
msgid "Employee Appraisals"
msgstr ""
msgstr "Munkavállaló értékelése"
#. module: base
#: selection:ir.actions.server,state:0
@@ -3141,7 +3141,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
msgid "Employee Contracts"
msgstr ""
msgstr "Munkavállalói szerződések"
#. module: base
#: model:ir.module.module,description:base.module_wiki_faq
@@ -3792,7 +3792,7 @@ msgstr "GPL-2 vagy korábbi verzió"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Úr"
#. module: base
@@ -5625,7 +5625,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Az állam kódja három karakterben.\n"
#. module: base
@@ -6487,7 +6487,7 @@ msgstr "Automatikus frissítést ad a nézethez."
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if the partner is an Employee."
msgstr "Jelölje be, ha a partner egy alkalmazott."
msgstr "Jelölje be, ha a partner egy alkalmazott"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_profiling
@@ -11243,8 +11243,8 @@ msgstr "Sorszámok"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "Mss"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -11372,8 +11372,8 @@ msgstr "Szűrő"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgstr "Mrs."
msgid "Ms."
msgstr "Ms."
#. module: base
#: view:base.module.import:0
@@ -15321,7 +15321,7 @@ msgstr "Wrong ID for the browse record, got %r, expected an integer."
#: field:res.partner.address,function:0
#: selection:workflow.activity,kind:0
msgid "Function"
msgstr "Függvény"
msgstr "Beosztás"
#. module: base
#: view:res.widget:0
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -779,7 +779,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3686,7 +3686,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5465,7 +5465,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10999,7 +10999,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11119,7 +11119,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -793,7 +793,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Handvirkt: Keyrt handvirkt\n"
@@ -3716,7 +3716,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5495,7 +5495,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -11033,7 +11033,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11153,7 +11153,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+9 -9
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -847,7 +847,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manuale: Esegui manualmente\n"
@@ -3855,8 +3855,8 @@ msgstr "GPL-2 o successiva"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5690,7 +5690,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Il codice dello stato in 3 caratteri\n"
#. module: base
@@ -11312,8 +11312,8 @@ msgstr "Sequenze"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "Mss"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -11439,7 +11439,7 @@ msgstr "Filtro"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Sig.ra"
#. module: base
+6 -6
View File
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-08-20 15:37+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"PO-Revision-Date: 2012-09-20 05:23+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\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: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -193,7 +193,7 @@ msgstr "販売分析の配布"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_process
msgid "Process"
msgstr "プロセス"
msgstr "処理"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
@@ -17384,7 +17384,7 @@ msgstr ""
" ・ 各アクションが手動の検証を必要とする場合は、手動で実際のキャンペーンを開始することもできます。\n"
" ・ 最後にキャンペーンを実際に起動し、キャンペーンの全てが完全に自動的に行われるよう統計値を監視します。\n"
"\n"
"キャンペーンの実行中にも、ちろんパラメータ、入力セグメント、ワークフローなどの微調整を続ける事ができます。\n"
"キャンペーンの実行中にも、もちろんパラメータ、入力セグメント、ワークフローなどの微調整を続ける事ができます。\n"
"\n"
"注記:デモデータが必要なら、marketing_campaign_crm_demoモジュールをインストールできます。それはCRMリードに依存するため、CR"
"Mアプリケーションもインストールすることになります。\n"
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr "Сүзгі"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "миссис"
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -784,7 +784,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3729,7 +3729,7 @@ msgstr "GPL-2 또는 이후 버젼"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5518,7 +5518,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "3문자의 상태 코드\n"
#. module: base
@@ -11056,7 +11056,7 @@ msgstr "시퀀스"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11176,7 +11176,7 @@ msgstr "필터"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -778,7 +778,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3694,7 +3694,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5483,7 +5483,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Savivaldybės kodas iš trijų simbolių.\n"
#. module: base
@@ -11029,7 +11029,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11149,7 +11149,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Ponia"
#. module: base
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -786,7 +786,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3693,7 +3693,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5472,7 +5472,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -11006,7 +11006,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11126,7 +11126,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -860,7 +860,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Гараар: Гараар ажилуулна.\n"
@@ -4217,8 +4217,8 @@ msgstr "GPL-2 болон дараагийн хувилбар"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -6338,7 +6338,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Мужийн код гурван тэмдэгтээр.\n"
#. module: base
@@ -13104,7 +13104,7 @@ msgstr "Дараалал"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Хатагтай"
#. module: base
@@ -13230,7 +13230,7 @@ msgstr "Шүүлт"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Хатагтай."
#. module: base
+8 -8
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -807,7 +807,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3746,8 +3746,8 @@ msgstr "GPL-2 eller senere versjon"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5545,7 +5545,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Koden til staten med tre karakterer.\n"
#. module: base
@@ -11093,7 +11093,7 @@ msgstr "Sekvenser"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11213,7 +11213,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+218 -59
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -97,7 +97,7 @@ msgstr "Code (bijv: nl__NL)"
#: field:workflow.transition,wkf_id:0
#: field:workflow.workitem,wkf_id:0
msgid "Workflow"
msgstr "Werkschema"
msgstr "Workflow"
#. module: base
#: selection:ir.sequence,implementation:0
@@ -363,6 +363,13 @@ msgid ""
" - tree_but_open\n"
"For defaults, an optional condition"
msgstr ""
"Voor acties, een van deze mogelijke acties:\n"
" - client_action_multi\n"
" - client_print_multi\n"
" - client_action_relate\n"
" - tree_but_open\n"
"Voor standaard waarden:\n"
" - een optionele conditie"
#. module: base
#: sql_constraint:res.lang:0
@@ -572,7 +579,7 @@ msgstr ""
#. module: base
#: view:ir.values:0
msgid "Action Binding"
msgstr ""
msgstr "Actie koppeling"
#. module: base
#: model:res.country,name:base.gf
@@ -836,7 +843,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Handmatig: Start handmatig.\n"
@@ -2811,7 +2818,7 @@ msgstr "Overgeërfd"
#. module: base
#: field:ir.model.fields,serialization_field_id:0
msgid "Serialization Field"
msgstr ""
msgstr "Reeks veld"
#. module: base
#: model:ir.module.category,description:base.module_category_report_designer
@@ -2873,7 +2880,7 @@ msgstr "Fout!"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_fr_rib
msgid "French RIB Bank Details"
msgstr ""
msgstr "Franse RIB bank details"
#. module: base
#: view:res.lang:0
@@ -2954,7 +2961,7 @@ msgstr "Bangladesh"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_retro_planning
msgid "Project Retro-planning"
msgstr ""
msgstr "Project Retro-planning"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_planning
@@ -3005,7 +3012,7 @@ msgstr ""
#. module: base
#: field:ir.actions.client,params_store:0
msgid "Params storage"
msgstr ""
msgstr "Parameters opslag"
#. module: base
#: code:addons/base/module/module.py:409
@@ -3036,6 +3043,10 @@ msgid ""
"since it's the same which has been renamed.\n"
" "
msgstr ""
"\n"
"Met deze module kunt u relaties segmenten/indelen op basis van vragen.\n"
"===========================================================\n"
" "
#. module: base
#: code:addons/report_sxw.py:434
@@ -3160,7 +3171,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
msgid "Wiki: Quality Manual"
msgstr ""
msgstr "Wiki: Kwaliteit handleiding"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@@ -3274,7 +3285,7 @@ msgstr "OpenERP web-diagram weergave"
#. module: base
#: model:res.groups,name:base.group_hr_user
msgid "HR Officer"
msgstr ""
msgstr "HR Officer"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
@@ -3633,7 +3644,7 @@ msgstr "Mayotte"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_todo
msgid "Tasks on CRM"
msgstr ""
msgstr "Relatiebeheer taken"
#. module: base
#: model:ir.module.category,name:base.module_category_generic_modules_accounting
@@ -3940,7 +3951,7 @@ msgstr "GPL-2 of latere versie"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Hr."
#. module: base
@@ -4219,6 +4230,9 @@ msgid ""
"its dependencies are satisfied. If the module has no dependency, it is "
"always installed."
msgstr ""
"Een auto-installatie module wordt automatisch geïnstalleerd door het systeem "
"als aan alle afhankelijkheden zijn voldaan. Als de module geen "
"afhankelijkheden heeft, wordt de module altijd geïnstalleerd."
#. module: base
#: model:ir.actions.act_window,name:base.res_lang_act_window
@@ -4605,6 +4619,20 @@ msgid ""
"above. Specify the interval information and partner to be invoice.\n"
" "
msgstr ""
"\n"
"Maak herhalende documenten (abonnementen).\n"
"=======================================\n"
"\n"
"Met deze module kunt u een nieuw document maken en een abonnement hieraan "
"koppelen.\n"
"\n"
"U kunt bijvoorbeeld een factuur automatisch periodiek laten aanmaken. Dit "
"doet u door:\n"
"* Maak een document type gebaseerd op het object factuur\n"
"* Maak een abonnement aan waarvan de bron het document is, zoals aangemaakt "
"bij stap 1.\n"
"* Specificeer het interval en de klant voor de factuur\n"
" "
#. module: base
#: field:ir.actions.server,srcmodel_id:0
@@ -4826,7 +4854,7 @@ msgstr "BTW nummer validatie"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_partner_assign
msgid "Partners Geo-Localization"
msgstr ""
msgstr "Partners Geo-Localisatie"
#. module: base
#: model:res.country,name:base.ke
@@ -5334,6 +5362,13 @@ msgid ""
" those assets. And it allows to create Move's of the depreciation lines.\n"
" "
msgstr ""
"Financieel beheer van uw activa.\n"
"=========================\n"
"Met deze module beheert u, uw activa van uw bedrijf of van een individu. U "
"beheert uw afschrijvingen van \n"
"deze activa. Deze afschrijvingen worden als journaalposten verwerkt in uw "
"financiële administratie.\n"
" "
#. module: base
#: model:res.country,name:base.bv
@@ -5640,6 +5675,31 @@ msgid ""
"Budgets per Budgets.\n"
"\n"
msgstr ""
"\n"
"Deze module geeft accountants de mogelijkheid om kostenplaats- en "
"overlappende budgetten te beheren.\n"
"============================================================================="
"==========\n"
"\n"
"Wanneer de hoofdbudgetten en onderliggende budgetten zijn gedefinieerd (in "
"financieel/budgetten)\n"
"kunnen de projectmanagers de geplande bedragen invoeren per kostenplaats.\n"
"\n"
"De accountant heeft de mogelijkheid om alle gebudgetteerde bedragen te zien "
"van ieder\n"
"budget en hoofdbudget, zodat het totale gebudgetteerde bedrag niet groter of "
"lager \n"
"is dan wat was gebudgetteerd. deze informatie kan ook als grafiek worden "
"bekeken.\n"
"\n"
"Er zijn drie rapportages beschikbaar:\n"
"1. Deze is beschikbaar bij de lijst van budgetten. Het geeft de spreiding "
"van deze budgetten weer over de kostenplaatsen per hoofdbudget.\n"
"2. Dit is een totaal van het eerste rapport. het geeft alleen de spreiding "
"weer voor de geselecteerde budgetten van de kostenplaatsen.\n"
"3. Dit rapport is beschikbaar bij de kostenplaats. Het geeft de spreiding "
"weer van de geselecteerde kostenplaats van het hoofdbudget, per budget.\n"
"\n"
#. module: base
#: help:res.lang,iso_code:0
@@ -5803,7 +5863,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "De provinciecode in drie karakters.\n"
#. module: base
@@ -5968,6 +6028,8 @@ msgid ""
"How many times the method is called,\n"
"a negative number indicates no limit."
msgstr ""
"Hoeveel keer deze regel wordt aangeroepen,\n"
"een negatieve waarde geeft aan dat er geen limiet is."
#. module: base
#: field:res.partner.bank.type.field,bank_type_id:0
@@ -6025,7 +6087,7 @@ msgstr "Vul aub de sleutelcode in die staat in uw contract document:"
#: view:workflow.activity:0
#: field:workflow.activity,flow_start:0
msgid "Flow Start"
msgstr "Begin werkschema"
msgstr "Begin workflow"
#. module: base
#: model:ir.model,name:base.model_res_partner_title
@@ -6453,6 +6515,11 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Met deze module kunt u aangeven welk factureerproduct moet worden gebruikt "
"als een werknemer uren boekt op het contract/kostenplaats.\n"
"\n"
" "
#. module: base
#: model:ir.module.module,shortdesc:base.module_audittrail
@@ -6601,7 +6668,7 @@ msgstr "Ongelezen"
#. module: base
#: field:res.users,id:0
msgid "ID"
msgstr ""
msgstr "ID"
#. module: base
#: field:ir.cron,doall:0
@@ -6676,7 +6743,7 @@ msgstr "Vink aan als de relatie een werknemer is."
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_profiling
msgid "Customer Profiling"
msgstr ""
msgstr "Klant profiling"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_issue
@@ -6712,6 +6779,8 @@ msgid ""
"Please check that all your lines have %d columns.Stopped around line %d "
"having %d columns."
msgstr ""
"Controleer of al uw regels %d kolommen hebben. Gestopt bij regel %d met %d "
"kolommen."
#. module: base
#: field:base.language.export,advice:0
@@ -6853,6 +6922,7 @@ msgstr "Controle"
#: help:ir.values,company_id:0
msgid "If set, action binding only applies for this company"
msgstr ""
"Indien aangevinkt is deze regel alleen van toepassing voor dit bedrijf."
#. module: base
#: model:res.country,name:base.lc
@@ -6866,6 +6936,9 @@ msgid ""
"password, otherwise leave empty. After a change of password, the user has to "
"login again."
msgstr ""
"Specificeer een waarde alleen wanneer u een gebruiker aanmaakt of als u het "
"wachtwoord van de gebruiker wijzigt. Laat anders de waarde leeg. Na het "
"wijzigen van het wachtwoord, dient de gebruiker opnieuw in te loggen."
#. module: base
#: view:publisher_warranty.contract:0
@@ -6915,7 +6988,7 @@ msgstr "Bewerken"
#. module: base
#: field:ir.actions.client,params:0
msgid "Supplementary arguments"
msgstr ""
msgstr "Aanvullende argumenten"
#. module: base
#: field:res.users,view:0
@@ -7067,6 +7140,8 @@ msgid ""
"Action bound to this entry - helper field for binding an action, will "
"automatically set the correct reference"
msgstr ""
"Actie gekoppeld aan deze regel. Hulp veld voor het koppelen van een actie. "
"De referentie wordt automatisch correct ingevuld."
#. module: base
#: model:ir.ui.menu,name:base.menu_project_long_term
@@ -7384,7 +7459,7 @@ msgstr "Lezen"
#. module: base
#: model:ir.module.module,shortdesc:base.module_association
msgid "Associations Management"
msgstr ""
msgstr "Verenigingenbeheer"
#. module: base
#: help:ir.model,modules:0
@@ -7425,7 +7500,7 @@ msgstr ""
#. module: base
#: view:workflow.workitem:0
msgid "Workflow Workitems"
msgstr "Werkschema taken"
msgstr "Workflow taken"
#. module: base
#: model:res.country,name:base.vc
@@ -7543,7 +7618,7 @@ msgstr "Myanmar (Birma)"
#. module: base
#: help:ir.model.fields,modules:0
msgid "List of modules in which the field is defined"
msgstr ""
msgstr "Lijst van modules waarin het veld wordt gebruikt."
#. module: base
#: selection:base.language.install,lang:0
@@ -7666,6 +7741,13 @@ msgid ""
"all the tasks will change accordingly.\n"
" "
msgstr ""
"\n"
"Verander de data op basis van een verandering in de einddatum.\n"
"===================================================\n"
"\n"
"Indien de einddatun van een project is gewijzigd, dan worden de deadline "
"datum en de startdatum van alle taken ook gewijzgd.\n"
" "
#. module: base
#: help:res.users,view:0
@@ -7710,7 +7792,7 @@ msgstr "Dutch / Nederlands"
#. module: base
#: selection:res.company,paper_format:0
msgid "US Letter"
msgstr ""
msgstr "US Letter"
#. module: base
#: model:ir.module.module,description:base.module_stock_location
@@ -7813,6 +7895,12 @@ msgid ""
"Contains the installer for marketing-related modules.\n"
" "
msgstr ""
"\n"
"Menu voor marketing.\n"
"==================\n"
"\n"
"Bevat de installer voor marketing gerelateerde modules.\n"
" "
#. module: base
#: model:ir.module.category,name:base.module_category_knowledge_management
@@ -7996,6 +8084,9 @@ msgid ""
"the same values as those available in the condition field, e.g. `Hello [[ "
"object.partner_id.name ]]`"
msgstr ""
"Het e-mail onderwerp kan expressies bevatten welke worden gekenmerkt door "
"rechte haken. De velden zijn gebaseerd op dezelfde waarden zoals beschikbaar "
"in de conditievelden. Bijv.: `Hallo [[ object.partner_id.name ]]`"
#. module: base
#: model:ir.module.module,description:base.module_account_sequence
@@ -8027,11 +8118,14 @@ msgid ""
"serialization field, instead of having its own database column. This cannot "
"be changed after creation."
msgstr ""
"Indien aangevinkt wordt dit veld opgeslagen in vrije ruimte van het reeks "
"veld in plaats dat het veld een eigen database kolom heeft. Dit kan achteraf "
"niet worden veranderd!"
#. module: base
#: view:res.partner.bank:0
msgid "Bank accounts belonging to one of your companies"
msgstr ""
msgstr "Bankrekening welke behoort aan één van uw bedrijven."
#. module: base
#: help:res.users,action_id:0
@@ -8058,6 +8152,8 @@ msgid ""
"The field on the current object that links to the target object record (must "
"be a many2one, or an integer field with the record ID)"
msgstr ""
"Het veld van het huidige object wat is gekoppeld aan het doel object record "
"(moet een many2one, of een integer veld zijn met het record ID)"
#. module: base
#: code:addons/base/module/module.py:423
@@ -8194,6 +8290,8 @@ msgid ""
"You cannot have multiple records with the same external ID in the same "
"module!"
msgstr ""
"Het is niet toegestaan om meerdere records te hebben met dezelfde externe ID "
"in hetzelfde model."
#. module: base
#: selection:ir.property,type:0
@@ -8287,6 +8385,9 @@ msgid ""
"Model to which this entry applies - helper field for setting a model, will "
"automatically set the correct model name"
msgstr ""
"Model waarover deze regel gaat. Deze zoekwaarde helpt u bij het instellen "
"van het juiste modelnaam. Na de keuze wordt de modelnaam automatisch voor u "
"ingevuld."
#. module: base
#: view:res.lang:0
@@ -8419,7 +8520,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
msgid "Anglo-Saxon Accounting"
msgstr ""
msgstr "Angelsaksische boekhouding"
#. module: base
#: model:res.country,name:base.np
@@ -8470,7 +8571,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_values_form_action
#: view:ir.values:0
msgid "Action Bindings"
msgstr ""
msgstr "Actie koppeling"
#. module: base
#: view:ir.sequence:0
@@ -8850,7 +8951,7 @@ msgstr "Herhaling"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_planning
msgid "Resources Planing"
msgstr ""
msgstr "Resource planing"
#. module: base
#: field:ir.module.module,complexity:0
@@ -8860,7 +8961,7 @@ msgstr "Complexiteit"
#. module: base
#: selection:ir.actions.act_window,target:0
msgid "Inline"
msgstr ""
msgstr "Inline"
#. module: base
#: model:res.partner.bank.type.field,name:base.bank_normal_field_bic
@@ -8967,7 +9068,7 @@ msgstr "Reparatie management"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_asset
msgid "Assets Management"
msgstr ""
msgstr "Beheer van activa"
#. module: base
#: view:ir.model.access:0
@@ -9358,7 +9459,7 @@ msgstr "Referentiegids"
#. module: base
#: view:ir.values:0
msgid "Default Value Scope"
msgstr ""
msgstr "Bereik standaard waarde"
#. module: base
#: view:ir.ui.view:0
@@ -9468,7 +9569,7 @@ msgstr "Aanmaakdatum"
#. module: base
#: help:ir.actions.server,trigger_name:0
msgid "The workflow signal to trigger"
msgstr ""
msgstr "Het workflow signaal om te triggeren"
#. module: base
#: model:ir.module.module,description:base.module_mrp
@@ -9517,7 +9618,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,description:base.module_google_base_account
msgid "The module adds google user in res user"
msgstr ""
msgstr "De module voegt een Google gebruiker toe aan het gebruikers bestand"
#. module: base
#: selection:base.language.install,state:0
@@ -9554,7 +9655,7 @@ msgstr "Algerije"
#. module: base
#: model:ir.module.module,shortdesc:base.module_plugin
msgid "CRM Plugins"
msgstr ""
msgstr "Relatiebeheer plugins"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_model
@@ -9657,7 +9758,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp_jit
msgid "Just In Time Scheduling"
msgstr ""
msgstr "Just In Time Planning"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
@@ -10047,7 +10148,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_synchro
msgid "Multi-DB Synchronization"
msgstr ""
msgstr "Meerdere databases synchronisatie"
#. module: base
#: selection:ir.module.module,complexity:0
@@ -10088,6 +10189,9 @@ msgid ""
"Todo list for CRM leads and opportunities.\n"
" "
msgstr ""
"\n"
"TODO lijst voor relatiebeheer leads en prospects.\n"
" "
#. module: base
#: field:ir.actions.act_window.view,view_id:0
@@ -10100,7 +10204,7 @@ msgstr "Weergave"
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_sale_faq
msgid "Wiki: Sale FAQ"
msgstr ""
msgstr "Wiki: Verkoop FAQ"
#. module: base
#: selection:ir.module.module,state:0
@@ -10266,6 +10370,20 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Deze module geeft u de mogelijkheid om het standaard factuurtarief te "
"definiëren per kostenplaats.\n"
"============================================================================="
"====\n"
"\n"
"Dit wordt vaak gebruikt wanneer een werknemer zijn urenstaat invult. De "
"waarden worden dan automatisch ingevuld, maar de mogelijkheid om deze aan te "
"passen blijft bestaan.\n"
"\n"
"Indien geen gegevens zijn ingevoerd voor de rekening, wordt de standaard "
"waarde van de kostenplaats gebruikt.\n"
"\n"
" "
#. module: base
#: model:ir.ui.menu,name:base.menu_fundrising
@@ -10316,7 +10434,7 @@ msgstr "res.log"
#: view:workflow.activity:0
#: field:workflow.activity,flow_stop:0
msgid "Flow Stop"
msgstr "Einde werkschema"
msgstr "Einde workflow"
#. module: base
#: selection:ir.cron,interval_type:0
@@ -10344,7 +10462,7 @@ msgstr "Fout !"
#. module: base
#: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo
msgid "Marketing Campaign - Demo"
msgstr ""
msgstr "Marketing Campagne - Demo gegevens"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_hr_recruitment
@@ -10376,7 +10494,7 @@ msgstr "Deze methode bestaat niet meer"
#. module: base
#: model:ir.module.module,shortdesc:base.module_import_google
msgid "Google Import"
msgstr ""
msgstr "Google Import"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_12
@@ -10594,7 +10712,7 @@ msgstr ""
"Maak een claim van een uitgaande levering.\n"
"===================================\n"
"\n"
"Voegt claim link toe aan een uitgaande order.\n"
"Voegt claim link toe aan een uitgaande levering.\n"
#. module: base
#: view:ir.model:0
@@ -10632,6 +10750,7 @@ msgstr "%A - Volledige naam van de dag."
#: help:ir.values,user_id:0
msgid "If set, action binding only applies for this user."
msgstr ""
"Indien aangevinkt is deze regel alleen van toepassing voor deze gebruiker."
#. module: base
#: model:res.country,name:base.gw
@@ -10699,6 +10818,8 @@ msgstr "Voltooid"
msgid ""
"Specify if missed occurrences should be executed when the server restarts."
msgstr ""
"Specificeert of gemiste acties, opnieuw moeten worden gestart als de server "
"herstart."
#. module: base
#: model:res.partner.title,name:base.res_partner_title_miss
@@ -11367,7 +11488,7 @@ msgstr "Alles stoppen"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_user_function
msgid "Jobs on Contracts"
msgstr ""
msgstr "Werknemerfunctie per contract/kostenplaats"
#. module: base
#: model:ir.module.module,description:base.module_import_sugarcrm
@@ -11472,7 +11593,7 @@ msgstr "Contract bevestiging fout"
#. module: base
#: field:ir.values,key2:0
msgid "Qualifier"
msgstr ""
msgstr "Kwalificatie"
#. module: base
#: field:res.country.state,name:0
@@ -11528,7 +11649,7 @@ msgstr "Reeksen"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Mej."
#. module: base
@@ -11655,7 +11776,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Mw."
#. module: base
@@ -11717,7 +11838,7 @@ msgstr "ir.wizard.screen"
#. module: base
#: model:ir.model,name:base.model_workflow
msgid "workflow"
msgstr "Werkschema"
msgstr "workflow"
#. module: base
#: code:addons/base/ir/ir_model.py:255
@@ -11949,7 +12070,7 @@ msgstr "Tunesië"
#. module: base
#: view:ir.actions.todo:0
msgid "Wizards to be Launched"
msgstr ""
msgstr "Wizards welke worden gestart"
#. module: base
#: model:ir.module.category,name:base.module_category_manufacturing
@@ -12083,7 +12204,7 @@ msgstr ""
#. module: base
#: field:res.groups,trans_implied_ids:0
msgid "Transitively inherits"
msgstr ""
msgstr "Transitieve overerving"
#. module: base
#: field:ir.default,ref_table:0
@@ -12293,7 +12414,7 @@ msgstr "Guatemala - Boekhouding"
#. module: base
#: help:ir.cron,args:0
msgid "Arguments to be passed to the method, e.g. (uid,)."
msgstr ""
msgstr "Argumenten welke worden doorgegeven aan de methodes, bijv. (uid)."
#. module: base
#: model:res.partner.category,name:base.res_partner_category_5
@@ -12704,7 +12825,7 @@ msgstr "ir.actions.client"
#. module: base
#: help:ir.values,value:0
msgid "Default value (pickled) or reference to an action"
msgstr ""
msgstr "Standaardwaarde of verwijzing naar een actie"
#. module: base
#: sql_constraint:res.groups:0
@@ -12763,7 +12884,7 @@ msgstr ""
#. module: base
#: view:ir.rule:0
msgid "Rule definition (domain filter)"
msgstr ""
msgstr "Regel definitie (domein filter)"
#. module: base
#: model:ir.model,name:base.model_workflow_instance
@@ -12862,7 +12983,7 @@ msgstr "Low Level-objecten"
#. module: base
#: help:ir.values,model:0
msgid "Model to which this entry applies"
msgstr ""
msgstr "Model waarover deze regel gaat."
#. module: base
#: field:res.country,address_format:0
@@ -13012,6 +13133,9 @@ msgid ""
" OpenERP Web kanban view.\n"
" "
msgstr ""
"\n"
" OpenERP Web kanban weergave.\n"
" "
#. module: base
#: model:ir.ui.menu,name:base.menu_project_management_time_tracking
@@ -13209,6 +13333,9 @@ msgid ""
"Python code to be executed if condition is met.\n"
"It is a Python block that can use the same values as for the condition field"
msgstr ""
"Python code welke wordt gestart als aan de conditie is voldaan.\n"
"Het is een Python block dat dezelfde waardes kan gebruiken als voor een "
"conditie veld."
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_supplier_form
@@ -13352,7 +13479,7 @@ msgstr "Stel bankrekeningen in"
#. module: base
#: field:ir.actions.client,tag:0
msgid "Client action tag"
msgstr ""
msgstr "Client actie tag"
#. module: base
#: code:addons/base/res/res_lang.py:189
@@ -13363,7 +13490,7 @@ msgstr "U kunt geen taal verwijderen die gebruikers voorkeurstaal is !"
#. module: base
#: field:ir.values,model_id:0
msgid "Model (change only)"
msgstr ""
msgstr "Model"
#. module: base
#: model:ir.module.module,description:base.module_marketing_campaign_crm_demo
@@ -13432,6 +13559,8 @@ msgid ""
"The object that should receive the workflow signal (must have an associated "
"workflow)"
msgstr ""
"et object dat het workflow signaal moet ontvangen (moet een verbonden "
"workflow heben)"
#. module: base
#: model:ir.module.category,description:base.module_category_account_voucher
@@ -13690,6 +13819,18 @@ msgid ""
"supplier in the routing of the assembly operation.\n"
" "
msgstr ""
"\n"
"Deze module maakt het mogelijk een tussentijdse verzamelproces mogelijk voor "
"de ontvangst van grondstoffen aan productieorders.\n"
"============================================================================="
"================\n"
"\n"
"Dit kunt u bijvoorbeeld gebruiken indien u productie uitbesteed aan uw "
"leverancier/onderaannemer.\n"
"Zet in dit geval bij de grondstof de optie \"Automatisch verzamelen\" uit en "
"zet de locatie van de leverancier\n"
"in de routing van de assemblage verwerking.\n"
" "
#. module: base
#: view:ir.actions.server:0
@@ -13703,6 +13844,9 @@ msgid ""
"are available. To add a new language, you can use the 'Load an Official "
"Translation' wizard available from the 'Administration' menu."
msgstr ""
"De standaard taal welke wordt gebruikt in de user interface, wanneer "
"vertalingen aanwezig zijn. Om een nieuwe taal toe te voegen kunt u de \"Laad "
"een officiële vertaling\" gebruiken vanuit het instellingen menu."
#. module: base
#: model:ir.module.module,description:base.module_l10n_es
@@ -13999,6 +14143,8 @@ msgid ""
"This cron task is currently being executed and may not be modified, please "
"try again in a few minutes"
msgstr ""
"Deze planner taak wordt op dit moment uitgevoerd en kan zodoende niet worden "
"aangepast. Probeert u het over enkele minuten opnieuw."
#. module: base
#: model:ir.module.module,description:base.module_product_expiry
@@ -14378,6 +14524,8 @@ msgstr "TLS (STARTTLS)"
#: help:ir.actions.act_window,usage:0
msgid "Used to filter menu and home actions from the user form."
msgstr ""
"Wordt gebruikt om het menu en home acties te filteren van het "
"gebruikersbestand."
#. module: base
#: model:res.country,name:base.sa
@@ -14394,7 +14542,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_crm_claim
msgid "eMail Gateway for CRM Claim"
msgstr "E-mail gateway voor CRM Claims"
msgstr "E-mail Gateway voor CRM Claims"
#. module: base
#: help:res.partner,supplier:0
@@ -14498,7 +14646,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,description:base.module_auth_openid
msgid "Allow users to login through OpenID."
msgstr ""
msgstr "Geeft gebruikers de mogelijkheid om in te loggen met OpenID."
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_payment
@@ -14605,6 +14753,8 @@ msgstr "En"
msgid ""
"Database identifier of the record to which this applies. 0 = for all records"
msgstr ""
"Database identifier van het record waar dit toe behoort. 0 = voor alle "
"records"
#. module: base
#: field:ir.model.fields,relation:0
@@ -14687,7 +14837,7 @@ msgstr "Onderliggend veld"
#. module: base
#: view:ir.rule:0
msgid "Detailed algorithm:"
msgstr ""
msgstr "Gedetailleerde algoritme:"
#. module: base
#: field:ir.actions.act_window,usage:0
@@ -14856,6 +15006,10 @@ msgid ""
" This module provides the core of the OpenERP web client.\n"
" "
msgstr ""
"\n"
" OpenERP Web core module.\n"
" deze module bevat de core functionaliteiten van de web cliënt.\n"
" "
#. module: base
#: sql_constraint:res.country:0
@@ -15061,7 +15215,7 @@ msgstr ""
#: code:addons/orm.py:791
#, python-format
msgid "Serialization field `%s` not found for sparse field `%s`!"
msgstr ""
msgstr "Reeks veld '%s' niet gevonden voor sparse veld '%s'!"
#. module: base
#: model:res.country,name:base.jm
@@ -15335,11 +15489,14 @@ msgid ""
" OpenERP Web test suite.\n"
" "
msgstr ""
"\n"
" OpenERP Web test suite.\n"
" "
#. module: base
#: view:ir.values:0
msgid "Action Bindings/Defaults"
msgstr ""
msgstr "Acties/Standaard waarden"
#. module: base
#: view:ir.rule:0
@@ -15713,7 +15870,7 @@ msgstr "Maanden"
#. module: base
#: view:workflow.instance:0
msgid "Workflow Instances"
msgstr "Exemplaren werkschema"
msgstr "Workflow instanties"
#. module: base
#: code:addons/base/res/res_partner.py:284
@@ -15805,6 +15962,8 @@ msgid ""
"This field is computed automatically based on bank accounts defined, having "
"the display on footer checkbox set."
msgstr ""
"Dit veld wordt automatisch berekend, gebaseerd op de gedefinieerde "
"bankrekeningen, indien het veld voor het weergeven in de voet is aangevinkt."
#. module: base
#: model:ir.module.module,description:base.module_mrp_subproduct
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -790,7 +790,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3697,7 +3697,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5476,7 +5476,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -11010,7 +11010,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11130,7 +11130,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -797,7 +797,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3778,7 +3778,7 @@ msgstr "GPL-2 lub wersja późniejsza"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5599,7 +5599,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Trzyliterowy kod regionu\n"
#. module: base
@@ -11196,7 +11196,7 @@ msgstr "Numeracje"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11318,7 +11318,7 @@ msgstr "Filtr"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Pani"
#. module: base
+2 -2
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+6 -6
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-12 04:36+0000\n"
"X-Generator: Launchpad (build 15930)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -73,17 +73,17 @@ msgid ""
msgstr ""
"\n"
"Módulo de gerenciamento de projetos acompanha projetos multinível, tarefas, "
"tabalhos \n"
"realizados em taredas, etc.\n"
"trabalhos \n"
"realizados em tarefas, etc.\n"
"============================================================================="
"=========\n"
"\n"
"Viabiliza o planejamento, ordenamento de tarefasm etc.\n"
"Viabiliza o planejamento, ordenamento de tarefas etc.\n"
"\n"
"Painel para membros de projetos incluindo:\n"
"--------------------------------------------\n"
" * Lista das minhas tarefas\n"
" * Lista das minhas tarefas delagadas\n"
" * Lista das minhas tarefas delegadas\n"
" * Grafico dos Meus projetos: Planejadas vs Horas Totais\n"
" * Grafico das minhas horas restantes por projeto\n"
" "
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -460,7 +460,7 @@ msgstr "Obiect Sursa"
#. module: base
#: model:res.partner.bank.type,format_layout:base.bank_normal
msgid "%(bank_name)s: %(acc_number)s"
msgstr "%(nume_banca)s: %(numar_de_cont)s"
msgstr "%(bank_name)s: %(acc_number)s"
#. module: base
#: view:ir.actions.todo:0
@@ -877,7 +877,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manual: Lansat manual.\n"
@@ -4414,7 +4414,7 @@ msgstr "GPL-2 sau o versiune mai noua"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "Dl."
#. module: base
@@ -6695,7 +6695,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Codul statului, din trei caractere.\n"
#. module: base
@@ -13750,7 +13750,7 @@ msgstr "Secvente"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "D-ra"
#. module: base
@@ -13878,7 +13878,7 @@ msgstr "Filtru"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Dna."
#. module: base
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -792,7 +792,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3760,7 +3760,7 @@ msgstr "GPL-2 alebo novšia verzia"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "pán"
#. module: base
@@ -5574,7 +5574,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Kód štátu na 3 znaky.\n"
#. module: base
@@ -11163,7 +11163,7 @@ msgstr "Postupnosti"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "slečna"
#. module: base
@@ -11290,7 +11290,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "pani"
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -801,7 +801,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3789,7 +3789,7 @@ msgstr "GPL-2 ali naslednja verzija"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "G."
#. module: base
@@ -5617,7 +5617,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Koda zvezne države v treh znakih.\n"
#. module: base
@@ -11220,7 +11220,7 @@ msgstr "Zaporedja"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Gospodična"
#. module: base
@@ -11348,7 +11348,7 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Ga."
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -774,7 +774,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3681,7 +3681,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5460,7 +5460,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10994,7 +10994,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11114,7 +11114,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+10 -10
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -795,7 +795,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3758,8 +3758,8 @@ msgstr "GPL-2 ili novija verzija"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5561,7 +5561,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Šifra države u ti karaktera.\n"
#. module: base
@@ -11139,8 +11139,8 @@ msgstr "Sekvence"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "Mss"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -11259,8 +11259,8 @@ msgstr "Filter"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgstr "Mrs."
msgid "Ms."
msgstr "Ms."
#. module: base
#: view:base.module.import:0
+2 -2
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -842,7 +842,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manuell: Starta manuellt.\n"
@@ -4000,8 +4000,8 @@ msgstr "GPL-2 eller senare version"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5862,7 +5862,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Landskod, tre tecken\n"
#. module: base
@@ -11651,7 +11651,7 @@ msgstr "Nummerserier"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Fru"
#. module: base
@@ -11775,7 +11775,7 @@ msgstr "Filtrera"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Frk."
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr "ลำดับ"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -774,7 +774,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3681,7 +3681,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5460,7 +5460,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10994,7 +10994,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11114,7 +11114,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -806,7 +806,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3824,8 +3824,8 @@ msgstr "GPL-2 veya sonraki sürümü"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgstr "Mr."
msgid "M."
msgstr "M."
#. module: base
#: code:addons/base/module/module.py:519
@@ -5662,7 +5662,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Üç karakterden oluşan eyalet kodu.\n"
#. module: base
@@ -11280,7 +11280,7 @@ msgstr "Silsileler"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr "Bayan"
#. module: base
@@ -11404,7 +11404,7 @@ msgstr "Süzgeç"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "Bayan"
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -796,7 +796,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3717,7 +3717,7 @@ msgstr "GPL-2 або пізніша версія"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5507,7 +5507,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "Код області довжиною в три букви.\n"
#. module: base
@@ -11046,7 +11046,7 @@ msgstr "Послідовності"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11166,7 +11166,7 @@ msgstr "Фільтр"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -799,7 +799,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3709,7 +3709,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5490,7 +5490,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -11028,7 +11028,7 @@ msgstr "Sequences"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11150,7 +11150,7 @@ msgstr "Bộ lọc"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+8 -8
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -821,7 +821,7 @@ msgstr "OpenERP的翻译在Launchpad.net网站上进行,OpenERP项目本身也
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"手动:手动执行\n"
@@ -4083,7 +4083,7 @@ msgstr "GPL-2 或更新版本"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr "先生"
#. module: base
@@ -5993,7 +5993,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "三个字符的省/州代码\n"
#. module: base
@@ -11847,8 +11847,8 @@ msgstr "序列"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgstr "Miss"
msgid "Mss"
msgstr "Mss"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view
@@ -11967,7 +11967,7 @@ msgstr "过滤"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "女士"
#. module: base
+7 -7
View File
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -775,7 +775,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3682,7 +3682,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5461,7 +5461,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr ""
#. module: base
@@ -10995,7 +10995,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11115,7 +11115,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr ""
#. module: base
+7 -7
View File
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n"
"X-Generator: Launchpad (build 15901)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -779,7 +779,7 @@ msgstr ""
msgid ""
"Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after having been launched manually, it sets "
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
@@ -3687,7 +3687,7 @@ msgstr "GPL-2 或更新版本"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "Mr."
msgid "M."
msgstr ""
#. module: base
@@ -5470,7 +5470,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in max. three chars."
msgid "The state code in three chars.\n"
msgstr "三個字元之省或州代碼\n"
#. module: base
@@ -11013,7 +11013,7 @@ msgstr "序列"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Miss"
msgid "Mss"
msgstr ""
#. module: base
@@ -11133,7 +11133,7 @@ msgstr "過濾器"
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Mrs."
msgid "Ms."
msgstr "女士"
#. module: base
+99
View File
@@ -266,6 +266,105 @@ class ir_cron(osv.osv):
cr.commit()
cr.close()
def _process_job(self, cr, job):
""" Run a given job taking care of the repetition.
The cursor has a lock on the job (aquired by _acquire_job()).
:param job: job to be run (as a dictionary).
"""
try:
now = datetime.now()
nextcall = datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT)
numbercall = job['numbercall']
ok = False
while nextcall < now and numbercall:
if numbercall > 0:
numbercall -= 1
if not ok or job['doall']:
self._callback(cr, job['user_id'], job['model'], job['function'], job['args'], job['id'])
if numbercall:
nextcall += _intervalTypes[job['interval_type']](job['interval_number'])
ok = True
addsql = ''
if not numbercall:
addsql = ', active=False'
cr.execute("UPDATE ir_cron SET nextcall=%s, numbercall=%s"+addsql+" WHERE id=%s",
(nextcall.strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id']))
finally:
cr.commit()
cr.close()
@classmethod
def _acquire_job(cls, db_name):
# TODO remove 'check' argument from addons/base_action_rule/base_action_rule.py
""" Try to process one cron job.
This selects in database all the jobs that should be processed. It then
tries to lock each of them and, if it succeeds, run the cron job (if it
doesn't succeed, it means the job was already locked to be taken care
of by another thread) and return.
If a job was processed, returns True, otherwise returns False.
"""
db = openerp.sql_db.db_connect(db_name)
cr = db.cursor()
try:
# Careful to compare timestamps with 'UTC' - everything is UTC as of v6.1.
cr.execute("""SELECT * FROM ir_cron
WHERE numbercall != 0
AND active AND nextcall <= (now() at time zone 'UTC')
ORDER BY priority""")
for job in cr.dictfetchall():
task_cr = db.cursor()
try:
# Try to grab an exclusive lock on the job row from within the task transaction
acquired_lock = False
task_cr.execute("""SELECT *
FROM ir_cron
WHERE id=%s
FOR UPDATE NOWAIT""",
(job['id'],), log_exceptions=False)
acquired_lock = True
except psycopg2.OperationalError, e:
if e.pgcode == '55P03':
# Class 55: Object not in prerequisite state; 55P03: lock_not_available
_logger.debug('Another process/thread is already busy executing job `%s`, skipping it.', job['name'])
continue
else:
# Unexpected OperationalError
raise
finally:
if not acquired_lock:
# we're exiting due to an exception while acquiring the lot
task_cr.close()
# Got the lock on the job row, run its code
_logger.debug('Starting job `%s`.', job['name'])
openerp.modules.registry.RegistryManager.check_registry_signaling(db_name)
registry = openerp.pooler.get_pool(db_name)
registry[cls._name]._process_job(task_cr, job)
openerp.modules.registry.RegistryManager.signal_caches_change(db_name)
return True
except psycopg2.ProgrammingError, e:
if e.pgcode == '42P01':
# Class 42 — Syntax Error or Access Rule Violation; 42P01: undefined_table
# The table ir_cron does not exist; this is probably not an OpenERP database.
_logger.warning('Tried to poll an undefined table on database %s.', db_name)
else:
raise
except Exception, ex:
_logger.warning('Exception in cron:', exc_info=True)
finally:
cr.commit()
cr.close()
return False
def update_running_cron(self, cr):
""" Schedule as soon as possible a wake-up for this database. """
# Verify whether the server is already started and thus whether we need to commit
+1 -2
View File
@@ -192,7 +192,6 @@ class view(osv.osv):
def write(self, cr, uid, ids, vals, context=None):
if not isinstance(ids, (list, tuple)):
ids = [ids]
result = super(view, self).write(cr, uid, ids, vals, context)
# drop the corresponding view customizations (used for dashboards for example), otherwise
# not all users would see the updated views
@@ -200,7 +199,7 @@ class view(osv.osv):
if custom_view_ids:
self.pool.get('ir.ui.view.custom').unlink(cr, uid, custom_view_ids)
return result
return super(view, self).write(cr, uid, ids, vals, context)
def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node, label, scale, context=None):
nodes=[]
+24 -26
View File
@@ -172,37 +172,35 @@ class res_partner_bank(osv.osv):
('required', field.required)]
return res
def _prepare_name_get(self, cr, uid, bank_type_obj, bank_obj, context=None):
def _prepare_name_get(self, cr, uid, bank_dicts, context=None):
""" Format the name of a res.partner.bank.
This function is designed to be inherited to add replacement fields.
:param bank_dicts: a list of res.partner.bank dicts, as returned by the method read()
:return: [(id, name), ...], as returned by the method name_get()
"""
Format the name of a res.partner.bank.
This function is designed to be inherited to add replacement fields.
:param browse_record bank_type_obj: res.partner.bank.type object
:param browse_record bank_obj: res.partner.bank object
:rtype: str
:return: formatted name of a res.partner.bank record
"""
return bank_type_obj.format_layout % bank_obj._data[bank_obj.id]
# prepare a mapping {code: format_layout} for all bank types
bank_type_obj = self.pool.get('res.partner.bank.type')
bank_types = bank_type_obj.browse(cr, uid, bank_type_obj.search(cr, uid, []), context=context)
bank_code_format = dict((bt.code, bt.format_layout) for bt in bank_types)
res = []
for data in bank_dicts:
name = data['acc_number']
if data['state'] and bank_code_format.get(data['state']):
try:
if not data.get('bank_name'):
data['bank_name'] = _('BANK')
name = bank_code_format[data['state']] % data
except Exception:
raise osv.except_osv(_("Formating Error"), _("Invalid Bank Account Type Name format."))
res.append((data.get('id', False), name))
return res
def name_get(self, cr, uid, ids, context=None):
if not len(ids):
return []
bank_type_obj = self.pool.get('res.partner.bank.type')
res = []
for val in self.browse(cr, uid, ids, context=context):
result = val.acc_number
if val.state:
type_ids = bank_type_obj.search(cr, uid, [('code','=',val.state)])
if type_ids:
t = bank_type_obj.browse(cr, uid, type_ids[0], context=context)
try:
# avoid the default format_layout to result in "False: ..."
if not val._data[val.id]['bank_name']:
val._data[val.id]['bank_name'] = _('BANK')
result = self._prepare_name_get(cr, uid, t, val, context=context)
except Exception:
raise osv.except_osv(_("Formating Error"), _("Invalid Bank Account Type Name format."))
res.append((val.id, result))
return res
bank_dicts = self.read(cr, uid, ids, context=context)
return self._prepare_name_get(cr, uid, bank_dicts, context=context)
def onchange_company_id(self, cr, uid, ids, company_id, context=None):
result = {}
+23 -37
View File
@@ -111,8 +111,8 @@ class res_company(osv.osv):
'rml_header1': fields.char('Company Slogan', size=200, help="Appears by default on the top right corner of your printed documents (report header)."),
'rml_header2': fields.text('RML Internal Header', required=True),
'rml_header3': fields.text('RML Internal Header for Landscape Reports', required=True),
'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports. Automatically set based on company details, "\
"but may also be customized by directly editing it."),
'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports."),
'rml_footer_readonly': fields.related('rml_footer', type='text', string='Report Footer', readonly=True),
'custom_footer': fields.boolean('Custom Footer', help="Check this to define the report footer manually. Otherwise it will be filled in automatically."),
'logo': fields.related('partner_id', 'image', string="Logo", type="binary"),
'currency_id': fields.many2one('res.currency', 'Currency', required=True),
@@ -138,36 +138,28 @@ class res_company(osv.osv):
('name_uniq', 'unique (name)', 'The company name must be unique !')
]
def onchange_footer(self, cr, uid, ids, context=None):
# when touched, the footer becomes custom
return {'value': {'custom_footer': True}}
def onchange_footer(self, cr, uid, ids, custom_footer, phone, fax, email, website, vat, company_registry, bank_ids, context=None):
if custom_footer:
return {}
def set_auto_footer(self, cr, uid, ids, context=None):
# unset the flag 'custom_footer'; this will automatically compute the footer
return self.write(cr, uid, ids, {'custom_footer': False}, context=context)
def compute_footer(self, cr, uid, ids, context=None):
# first line (notice that missing elements are filtered out before the join)
res = ' | '.join(filter(bool, [
phone and '%s: %s' % (_('Phone'), phone),
fax and '%s: %s' % (_('Fax'), fax),
email and '%s: %s' % (_('Email'), email),
website and '%s: %s' % (_('Website'), website),
vat and '%s: %s' % (_('TIN'), vat),
company_registry and '%s: %s' % (_('Reg'), company_registry),
]))
# second line: bank accounts
res_partner_bank = self.pool.get('res.partner.bank')
for company in self.browse(cr, uid, ids, context):
if not company.custom_footer:
# first line (notice that missing elements are filtered out before the join)
res = ' | '.join(filter(bool, [
company.phone and '%s: %s' % (_('Phone'), company.phone),
company.fax and '%s: %s' % (_('Fax'), company.fax),
company.email and '%s: %s' % (_('Email'), company.email),
company.website and '%s: %s' % (_('Website'), company.website),
company.vat and '%s: %s' % (_('TIN'), company.vat),
company.company_registry and '%s: %s' % (_('Reg'), company.company_registry),
]))
# second line: bank accounts
account_ids = [acc.id for acc in company.bank_ids if acc.footer]
account_names = res_partner_bank.name_get(cr, uid, account_ids, context=context)
if account_names:
title = _('Bank Accounts') if len(account_names) > 1 else _('Bank Account')
res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names))
# update footer
self.write(cr, uid, [company.id], {'rml_footer': res}, context=context)
return True
account_data = self.resolve_2many_commands(cr, uid, 'bank_ids', bank_ids, context=context)
account_names = res_partner_bank._prepare_name_get(cr, uid, account_data, context=context)
if account_names:
title = _('Bank Accounts') if len(account_names) > 1 else _('Bank Account')
res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names))
return {'value': {'rml_footer': res, 'rml_footer_readonly': res}}
def on_change_country(self, cr, uid, ids, country_id, context=None):
currency_id = self._get_euro(cr, uid, context=context)
@@ -248,17 +240,11 @@ class res_company(osv.osv):
self.cache_restart(cr)
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)
self.compute_footer(cr, uid, [company_id], context=context)
return company_id
def write(self, cr, uid, ids, values, context=None):
self.cache_restart(cr)
if isinstance(ids, (int, long)):
ids = [ids]
super(res_company, self).write(cr, uid, ids, values, context=context)
if 'rml_footer' not in values:
self.compute_footer(cr, uid, ids, context=context)
return True
return super(res_company, self).write(cr, uid, ids, values, context=context)
def _get_euro(self, cr, uid, context=None):
rate_obj = self.pool.get('res.currency.rate')
+12 -15
View File
@@ -55,29 +55,26 @@
<div>
<field name="rml_header1" placeholder="e.g. Global Business Solutions"/>
</div>
<field name="website" widget="url" placeholder="e.g. www.openerp.com"/>
<field name="website" widget="url" placeholder="e.g. www.openerp.com"
on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
</group>
<group>
<field name="phone"/>
<field name="fax"/>
<field name="email"/>
<field name="vat"/>
<field name="company_registry"/>
<field name="phone" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="fax" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="email" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="vat" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="company_registry" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
</group>
</group>
<group string="Bank Accounts">
<field name="bank_ids" nolabel="1"
context="{'default_company_id': active_id, 'footer_hide': False}"/>
<field name="bank_ids" nolabel="1" context="{'default_company_id': active_id, 'footer_hide': False}"
on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
</group>
<group string="Report Footer Configuration">
<field name="paper_format" on_change="onchange_paper_format(paper_format)"/>
<field name="custom_footer" invisible="1"/>
<label for="rml_footer"/>
<div>
<field name="rml_footer" on_change="onchange_footer()"/>
<button string="Set Automatic Footer" type="object" name="set_auto_footer"
attrs="{'invisible': [('custom_footer','=',False)]}" class="oe_edit_only"/>
</div>
<field name="custom_footer" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="rml_footer" attrs="{'invisible': [('custom_footer','=',False)]}"/>
<field name="rml_footer_readonly" attrs="{'invisible': [('custom_footer','=',True)]}"/>
</group>
</page>
<page string="Header/Footer" groups="base.group_no_one">
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="ad" model="res.country">
<field name="name">Andorra, Principality of</field>
<field name="code">ad</field>
@@ -106,7 +106,7 @@
<record id="be" model="res.country">
<field name="name">Belgium</field>
<field name="code">be</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="currency_id" ref="EUR"/>
</record>
<record id="bf" model="res.country">
@@ -386,7 +386,7 @@
<record id="fr" model="res.country">
<field name="name">France</field>
<field name="code">fr</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="currency_id" ref="EUR"/>
</record>
<record id="ga" model="res.country">
@@ -532,7 +532,7 @@
<record id="in" model="res.country">
<field name="name">India</field>
<field name="code">in</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(zip)s\n%(state_name)s\n%(country_name)s'" />
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(zip)s\n%(state_name)s\n%(country_name)s'" />
<field name="currency_id" ref="INR"/>
</record>
<record id="io" model="res.country">
@@ -838,7 +838,7 @@
<record id="nl" model="res.country">
<field name="name">Netherlands</field>
<field name="code">nl</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="currency_id" ref="EUR"/>
</record>
<record id="no" model="res.country">
@@ -1174,7 +1174,7 @@
</record>
<record id="uk" model="res.country">
<field name="name">United Kingdom</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(state_name)s\n%(zip)s\n%(country_name)s'" />
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(state_name)s\n%(zip)s\n%(country_name)s'" />
<field name="code">gb</field>
<field name="currency_id" ref="GBP"/>
</record>
@@ -1186,7 +1186,7 @@
<record id="us" model="res.country">
<field name="name">United States</field>
<field name="code">us</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" />
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" />
<field name="currency_id" ref="USD"/>
</record>
<record id="uy" model="res.country">
@@ -1281,5 +1281,5 @@
<field name="code">zw</field>
<field name="currency_id" ref="ZWD"/>
</record>
</data>
</data>
</openerp>
+47 -4
View File
@@ -28,6 +28,48 @@ from tools.translate import _
import logging
import pooler
import pytz
from lxml import etree
class format_address(object):
def fields_view_get_address(self, cr, uid, arch, context={}):
user_obj = self.pool.get('res.users')
fmt = user_obj.browse(cr, uid, uid,context).company_id.country_id
fmt = fmt and fmt.address_format
layouts = {
'%(city)s %(state_code)s\n%(zip)s': """
<div class="address_format">
<field name="city" placeholder="City" style="width: 50%%"/>
<field name="state_id" class="oe_no_button" placeholder="State" style="width: 47%%" options='{"no_open": true}'/>
<br/>
<field name="zip" placeholder="ZIP"/>
</div>
""",
'%(zip)s %(city)s': """
<div class="address_format">
<field name="zip" placeholder="ZIP" style="width: 40%%"/>
<field name="city" placeholder="City" style="width: 57%%"/>
<br/>
<field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/>
</div>
""",
'%(city)s\n%(state_name)s\n%(zip)s': """
<div class="address_format">
<field name="city" placeholder="City"/>
<field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/>
<field name="zip" placeholder="ZIP"/>
</div>
"""
}
for k,v in layouts.items():
if fmt and (k in fmt):
doc = etree.fromstring(arch)
for node in doc.xpath("//div[@class='address_format']"):
tree = etree.fromstring(v)
node.getparent().replace(node, tree)
arch = etree.tostring(doc)
break
return arch
def _tz_get(self,cr,uid, context=None):
return [(x, x) for x in pytz.all_timezones]
@@ -119,7 +161,7 @@ def _lang_get(self, cr, uid, context=None):
POSTAL_ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id')
ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang')
class res_partner(osv.osv):
class res_partner(osv.osv, format_address):
_description = 'Partner'
_name = "res.partner"
@@ -226,9 +268,10 @@ class res_partner(osv.osv):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
if (not view_id) and (view_type=='form') and context and context.get('force_email', False):
view_id = self.pool.get('ir.model.data').get_object_reference(cr, user, 'base', 'view_partner_simple_form')[1]
return super(res_partner, self).fields_view_get(cr, user, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
res = super(res_partner,self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
res['arch'] = self.fields_view_get_address(cr, user, res['arch'], context=context)
return res
_defaults = {
'active': True,
+1 -1
View File
@@ -313,7 +313,7 @@
<record id="res_partner_17" model="res.partner">
<field name="name">Nebula Business</field>
<field eval="0" name="supplier"/>
<field eval="1" name="supplier"/>
<field eval="1" name="customer"/>
<field name="is_company">1</field>
<field name="city">Rosario</field>
-3
View File
@@ -12,9 +12,6 @@
<record model="ir.ui.menu" id="menu_base_config">
<field eval="[(6,0,[ref('group_system'), ref('group_partner_manager')])]" name="groups_id"/>
</record>
<record model="ir.ui.menu" id="menu_base_partner">
<field eval="[(6,0,[ref('group_partner_manager')])]" name="groups_id"/>
</record>
<!-- Record Rule For Company -->
<record id="res_company_rule" model="ir.rule">
-30
View File
@@ -1,30 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2011 OpenERP s.a. (<http://openerp.com>).
#
# 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/>.
#
##############################################################################
""" Lower-level database access.
This module provides access to the underlying database without going
through the ORM. The goal is to gather sql_db.py and other various db
code.
"""
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+10 -3
View File
@@ -3045,11 +3045,11 @@ class BaseModel(object):
cr.commit()
if f._type == 'text':
# FIXME: for fields.text columns we should try creating GIN indexes instead (seems most suitable for an ERP context)
msg = "Table '%s': Adding (b-tree) index for text column '%s'."\
msg = "Table '%s': Adding (b-tree) index for %s column '%s'."\
"This is probably useless (does not work for fulltext search) and prevents INSERTs of long texts"\
" because there is a length limit for indexable btree values!\n"\
"Use a search view instead if you simply want to make the field searchable."
_schema.warning(msg, self._table, k, f._type)
_schema.warning(msg, self._table, f._type, k)
if res2 and not f.select:
cr.execute('DROP INDEX "%s_%s_index"' % (self._table, k))
cr.commit()
@@ -3412,7 +3412,8 @@ class BaseModel(object):
if context is None:
context = {}
write_access = self.check_access_rights(cr, user, 'write') or self.check_access_rights(cr, user, 'create')
write_access = self.check_access_rights(cr, user, 'write', raise_exception=False) \
or self.check_access_rights(cr, user, 'create', raise_exception=False)
res = {}
@@ -3791,6 +3792,12 @@ class BaseModel(object):
for res_id in ids:
getattr(wf_service, trigger)(uid, self._name, res_id, cr)
def _workflow_signal(self, cr, uid, ids, signal, context=None):
"""Send given workflow signal"""
wf_service = netsvc.LocalService("workflow")
for res_id in ids:
wf_service.trg_validate(uid, self._name, res_id, signal, cr)
def unlink(self, cr, uid, ids, context=None):
"""
Delete records with given ids
+7 -5
View File
@@ -184,16 +184,18 @@ class object_proxy(object):
cr.close()
return res
def exec_workflow_cr(self, cr, uid, obj, method, *args):
wf_service = netsvc.LocalService("workflow")
return wf_service.trg_validate(uid, obj, args[0], method, cr)
def exec_workflow_cr(self, cr, uid, obj, signal, *args):
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)
@check
def exec_workflow(self, db, uid, obj, method, *args):
def exec_workflow(self, db, uid, obj, signal, *args):
cr = pooler.get_db(db).cursor()
try:
try:
res = self.exec_workflow_cr(cr, uid, obj, method, *args)
res = self.exec_workflow_cr(cr, uid, obj, signal, *args)
cr.commit()
except Exception:
cr.rollback()
@@ -65,6 +65,7 @@ TTFSearchPath_Linux = [
'/usr/share/fonts/dejavu', '/usr/share/fonts/liberation', # Fedora, RHEL
'/usr/share/fonts/truetype/*', # Ubuntu,
'/usr/share/fonts/TTF/*', # at Mandriva/Mageia
'/usr/share/fonts/TTF', # Arch Linux
]
TTFSearchPath_Windows = [
+33 -12
View File
@@ -33,7 +33,8 @@ import openerp.modules
import openerp.netsvc
import openerp.osv
import openerp.tools
import openerp.wsgi
import openerp.service.wsgi_server
import openerp.service.workers
#.apidoc title: RPC Services
@@ -48,22 +49,38 @@ import openerp.wsgi
_logger = logging.getLogger(__name__)
# TODO block until the server is really up, accepting connections
# TODO be idemptotent (as long as stop_service was not called).
def start_services():
""" Start all services.
def load_server_wide_modules():
for m in openerp.conf.server_wide_modules:
try:
openerp.modules.module.load_openerp_module(m)
except Exception:
msg = ''
if m == 'web':
msg = """
The `web` module is provided by the addons found in the `openerp-web` project.
Maybe you forgot to add those addons in your addons_path configuration."""
_logger.exception('Failed to load server-wide module `%s`.%s', m, msg)
Services include the different servers and cron threads.
start_internal_done = False
"""
def start_internal():
global start_internal_done
if start_internal_done:
return
openerp.netsvc.init_logger()
openerp.modules.loading.open_openerp_namespace()
# Instantiate local services (this is a legacy design).
openerp.osv.osv.start_object_proxy()
# Export (for RPC) services.
web_services.start_web_services()
load_server_wide_modules()
start_internal_done = True
def start_services():
""" Start all services including http, netrpc and cron """
start_internal()
# Initialize the HTTP stack.
#http_server.init_servers()
#http_server.init_static_http()
netrpc_server.init_servers()
# Start the main cron thread.
@@ -73,8 +90,7 @@ def start_services():
openerp.netsvc.Server.startAll()
# Start the WSGI server.
openerp.wsgi.core.start_server()
openerp.service.wsgi_server.start_server()
def stop_services():
""" Stop all services. """
@@ -82,7 +98,7 @@ def stop_services():
openerp.cron.cancel_all()
openerp.netsvc.Server.quitAll()
openerp.wsgi.core.stop_server()
openerp.service.wsgi_server.stop_server()
config = openerp.tools.config
_logger.info("Initiating shutdown")
_logger.info("Hit CTRL-C again or send a second signal to force the shutdown.")
@@ -101,6 +117,11 @@ def stop_services():
openerp.modules.registry.RegistryManager.delete_all()
def start_services_workers():
openerp.multi_process = True # Nah!
openerp.service.workers.Multicorn(openerp.service.wsgi_server.application).run()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+2 -2
View File
@@ -32,8 +32,8 @@ import sys
import threading
import traceback
import openerp
import openerp.service.netrpc_socket
import openerp.netsvc as netsvc
import openerp.tiny_socket as tiny_socket
import openerp.tools as tools
_logger = logging.getLogger(__name__)
@@ -52,7 +52,7 @@ class TinySocketClientThread(threading.Thread):
def run(self):
self.running = True
try:
ts = tiny_socket.mysocket(self.sock)
ts = openerp.server.netrpc_socket.mysocket(self.sock)
except Exception:
self.threads.remove(self)
self.running = False
@@ -23,14 +23,11 @@ import socket
import cPickle
import cStringIO
import netsvc
#.apidoc title: Net-RPC classes
import openerp.netsvc as netsvc
# Pickle protocol version 2 is optimized compared to default (version 0)
PICKLE_PROTOCOL = 2
class Myexception(Exception):
"""
custom exception object store
+371
View File
@@ -0,0 +1,371 @@
#-----------------------------------------------------------
# Multicorn, multiprocessing inspired by gunicorn
# TODO rename class: Multicorn -> Arbiter ?
#-----------------------------------------------------------
import errno
try:
import fcntl
except ImportError:
fcntl = None
import psutil
import random
import resource
import select
import socket
import time
import logging
import os
import signal
import sys
import werkzeug.serving
import openerp
import openerp.tools.config as config
_logger = logging.getLogger(__name__)
class Multicorn(object):
""" Multiprocessing inspired by (g)unicorn.
Multicorn currently uses accept(2) as dispatching method between workers
but we plan to replace it by a more intelligent dispatcher to will parse
the first HTTP request line.
"""
def __init__(self, app):
# config
self.address = (config['xmlrpc_interface'] or '0.0.0.0', config['xmlrpc_port'])
self.population = config['workers']
self.timeout = config['limit_time_real']
self.limit_request = config['limit_request']
# working vars
self.beat = 4
self.app = app
self.pid = os.getpid()
self.socket = None
self.workers_http = {}
self.workers_cron = {}
self.workers = {}
self.generation = 0
self.queue = []
def pipe_new(self):
pipe = os.pipe()
for fd in pipe:
# non_blocking
flags = fcntl.fcntl(fd, fcntl.F_GETFL) | os.O_NONBLOCK
fcntl.fcntl(fd, fcntl.F_SETFL, flags)
# close_on_exec
flags = fcntl.fcntl(fd, fcntl.F_GETFD) | fcntl.FD_CLOEXEC
fcntl.fcntl(fd, fcntl.F_SETFD, flags)
return pipe
def pipe_ping(self, pipe):
try:
os.write(pipe[1], '.')
except IOError, e:
if e.errno not in [errno.EAGAIN, errno.EINTR]:
raise
def signal_handler(self, sig, frame):
if len(self.queue) < 5 or sig == signal.SIGCHLD:
self.queue.append(sig)
self.pipe_ping(self.pipe)
else:
_logger.warn("Dropping signal: %s", sig)
def worker_spawn(self, klass, workers_registry):
self.generation += 1
worker = klass(self)
pid = os.fork()
if pid != 0:
worker.pid = pid
self.workers[pid] = worker
workers_registry[pid] = worker
return worker
else:
worker.run()
sys.exit(0)
def worker_pop(self, pid):
if pid in self.workers:
_logger.debug("Worker (%s) unregistered",pid)
try:
self.workers_http.pop(pid,None)
self.workers_cron.pop(pid,None)
u = self.workers.pop(pid)
u.close()
except OSError:
return
def worker_kill(self, pid, sig):
try:
os.kill(pid, sig)
except OSError, e:
if e.errno == errno.ESRCH:
self.worker_pop(pid)
def process_signals(self):
while len(self.queue):
sig = self.queue.pop(0)
if sig in [signal.SIGINT,signal.SIGTERM]:
raise KeyboardInterrupt
def process_zombie(self):
# reap dead workers
while 1:
try:
wpid, status = os.waitpid(-1, os.WNOHANG)
if not wpid:
break
if (status >> 8) == 3:
msg = "Critial worker error (%s)"
_logger.critical(msg, wpid)
raise Exception(msg % wpid)
self.worker_pop(wpid)
except OSError, e:
if e.errno == errno.ECHILD:
break
raise
def process_timeout(self):
now = time.time()
for (pid, worker) in self.workers.items():
if now - worker.watchdog_time >= worker.watchdog_timeout:
_logger.error("Worker (%s) timeout", pid)
self.worker_kill(pid, signal.SIGKILL)
def process_spawn(self):
while len(self.workers_http) < self.population:
self.worker_spawn(WorkerHTTP, self.workers_http)
while len(self.workers_cron) < 1: # config option ?
self.worker_spawn(WorkerCron, self.workers_cron)
def sleep(self):
try:
# map of fd -> worker
fds = dict([(w.watchdog_pipe[0],w) for k,w in self.workers.items()])
fd_in = fds.keys() + [self.pipe[0]]
# check for ping or internal wakeups
ready = select.select(fd_in, [], [], self.beat)
# update worker watchdogs
for fd in ready[0]:
if fd in fds:
fds[fd].watchdog_time = time.time()
try:
# empty pipe
while os.read(fd, 1):
pass
except OSError, e:
if e.errno not in [errno.EAGAIN]:
raise
except select.error, e:
if e[0] not in [errno.EINTR]:
raise
def start(self):
# wakeup pipe, python doesnt throw EINTR when a syscall is interrupted
# by a signal simulating a pseudo SA_RESTART. We write to a pipe in the
# signal handler to overcome this behaviour
self.pipe = self.pipe_new()
# set signal
signal.signal(signal.SIGINT, self.signal_handler)
signal.signal(signal.SIGTERM, self.signal_handler)
signal.signal(signal.SIGCHLD, self.signal_handler)
# listen to socket
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.setblocking(0)
self.socket.bind(self.address)
self.socket.listen(8)
def stop(self, graceful=True):
if graceful:
_logger.info("Stopping gracefully")
limit = time.time() + self.timeout
for pid in self.workers.keys():
self.worker_kill(pid, signal.SIGTERM)
while self.workers and time.time() < limit:
self.process_zombie()
time.sleep(0.1)
else:
_logger.info("Stopping forcefully")
for pid in self.workers.keys():
self.worker_kill(pid, signal.SIGTERM)
self.socket.close()
import __main__
__main__.quit_signals_received = 1
def run(self):
self.start()
_logger.debug("Multiprocess starting")
while 1:
try:
#_logger.debug("Multiprocess beat (%s)",time.time())
self.process_signals()
self.process_zombie()
self.process_timeout()
self.process_spawn()
self.sleep()
except KeyboardInterrupt:
_logger.debug("Multiprocess clean stop")
self.stop()
break
except Exception,e:
_logger.exception(e)
self.stop(False)
sys.exit(-1)
class Worker(object):
""" Workers """
def __init__(self, multi):
self.multi = multi
self.watchdog_time = time.time()
self.watchdog_pipe = multi.pipe_new()
self.watchdog_timeout = multi.timeout
self.ppid = os.getpid()
self.pid = None
self.alive = True
# should we rename into lifetime ?
self.request_max = multi.limit_request
self.request_count = 0
def close(self):
os.close(self.watchdog_pipe[0])
os.close(self.watchdog_pipe[1])
def signal_handler(self, sig, frame):
self.alive = False
def sleep(self):
try:
ret = select.select([self.multi.socket], [], [], self.multi.beat)
except select.error, e:
if e[0] not in [errno.EINTR]:
raise
def process_limit(self):
# If our parent changed sucide
if self.ppid != os.getppid():
_logger.info("Worker (%s) Parent changed", self.pid)
self.alive = False
# check for lifetime
if self.request_count >= self.request_max:
_logger.info("Worker (%d) max request (%s) reached.", self.pid, self.request_count)
self.alive = False
# Reset the worker if it consumes too much memory (e.g. caused by a memory leak).
rss, vms = psutil.Process(os.getpid()).get_memory_info()
if vms > config['limit_memory_soft']:
_logger.info('Virtual memory consumption too high, rebooting the worker.')
self.alive = False # Commit suicide after the request.
# VMS and RLIMIT_AS are the same thing: virtual memory, a.k.a. address space
soft, hard = resource.getrlimit(resource.RLIMIT_AS)
resource.setrlimit(resource.RLIMIT_AS, (config['limit_memory_hard'], hard))
# SIGXCPU (exceeded CPU time) signal handler will raise an exception.
r = resource.getrusage(resource.RUSAGE_SELF)
cpu_time = r.ru_utime + r.ru_stime
def time_expired(n, stack):
_logger.info('CPU time limit exceeded.')
raise Exception('CPU time limit exceeded.')
signal.signal(signal.SIGXCPU, time_expired)
soft, hard = resource.getrlimit(resource.RLIMIT_CPU)
resource.setrlimit(resource.RLIMIT_CPU, (cpu_time + config['limit_time_cpu'], hard))
def process_work(self):
pass
def start(self):
self.pid = os.getpid()
_logger.info("Worker %s (%s) alive", self.__class__.__name__, self.pid)
# Reseed the random number generator
random.seed()
# Prevent fd inherientence close_on_exec
flags = fcntl.fcntl(self.multi.socket, fcntl.F_GETFD) | fcntl.FD_CLOEXEC
fcntl.fcntl(self.multi.socket, fcntl.F_SETFD, flags)
# reset blocking status
self.multi.socket.setblocking(0)
signal.signal(signal.SIGINT, self.signal_handler)
signal.signal(signal.SIGTERM, signal.SIG_DFL)
signal.signal(signal.SIGCHLD, signal.SIG_DFL)
def stop(self):
pass
def run(self):
try:
self.start()
while self.alive:
self.process_limit()
self.multi.pipe_ping(self.watchdog_pipe)
self.sleep()
self.process_work()
_logger.info("Worker (%s) exiting...",self.pid)
self.stop()
except Exception,e:
_logger.exception("Worker (%s) Exception occured, exiting..."%self.pid)
# should we use 3 to abort everything ?
sys.exit(1)
class WorkerHTTP(Worker):
""" HTTP Request workers """
def process_request(self, client, addr):
client.setblocking(1)
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
# Prevent fd inherientence close_on_exec
flags = fcntl.fcntl(client, fcntl.F_GETFD) | fcntl.FD_CLOEXEC
fcntl.fcntl(client, fcntl.F_SETFD, flags)
# do request using WorkerBaseWSGIServer monkey patched with socket
self.server.socket = client
self.server.process_request(client,addr)
self.request_count += 1
def process_work(self):
try:
client, addr = self.multi.socket.accept()
self.process_request(client, addr)
except socket.error, e:
if e[0] not in (errno.EAGAIN, errno.ECONNABORTED):
raise
def start(self):
Worker.start(self)
self.server = WorkerBaseWSGIServer(self.multi.app)
class WorkerBaseWSGIServer(werkzeug.serving.BaseWSGIServer):
""" werkzeug WSGI Server patched to allow using an external listen socket
"""
def __init__(self, app):
werkzeug.serving.BaseWSGIServer.__init__(self, "1", "1", app)
def server_bind(self):
# we dont bind beause we use the listen socket of Multicorn#socket
# instead we close the socket
if self.socket:
self.socket.close()
def server_activate(self):
# dont listen as we use Multicorn#socket
pass
class WorkerCron(Worker):
""" Cron workers """
def sleep(self):
time.sleep(60)
def process_work(self):
if config['db_name']:
db_names = config['db_name'].split(',')
else:
db_names = openerp.netsvc.ExportService._services['db'].exp_list(True)
for db_name in db_names:
while True:
# TODO Each job should be considered as one request in multiprocessing
acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name)
if not acquired:
break
self.request_count += 1
def start(self):
Worker.start(self)
openerp.service.start_internal()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -38,10 +38,13 @@ import sys
import threading
import traceback
import werkzeug.serving
import werkzeug.contrib.fixers
import openerp
import openerp.modules
import openerp.tools.config as config
from ..service import websrv_lib
import websrv_lib
_logger = logging.getLogger(__name__)
@@ -221,9 +224,6 @@ def wsgi_xmlrpc_legacy(environ, start_response):
params, method = xmlrpclib.loads(data)
return xmlrpc_return(start_response, path, method, params, True)
def wsgi_jsonrpc(environ, start_response):
pass
def wsgi_webdav(environ, start_response):
pi = environ['PATH_INFO']
if environ['REQUEST_METHOD'] == 'OPTIONS' and pi in ['*','/']:
@@ -382,28 +382,31 @@ def register_wsgi_handler(handler):
"""
module_handlers.append(handler)
def application(environ, start_response):
def application_unproxied(environ, start_response):
""" WSGI entry point."""
openerp.service.start_internal()
# Try all handlers until one returns some result (i.e. not None).
wsgi_handlers = [
wsgi_xmlrpc_1,
wsgi_xmlrpc,
wsgi_jsonrpc,
wsgi_xmlrpc_legacy,
wsgi_webdav
] + module_handlers
wsgi_handlers = [wsgi_xmlrpc_1, wsgi_xmlrpc, wsgi_xmlrpc_legacy, wsgi_webdav]
wsgi_handlers += module_handlers
for handler in wsgi_handlers:
result = handler(environ, start_response)
if result is None:
continue
return result
# We never returned from the loop.
response = 'No handler found.\n'
start_response('404 Not Found', [('Content-Type', 'text/plain'), ('Content-Length', str(len(response)))])
return [response]
def application(environ, start_response):
if config['proxy_mode'] and 'HTTP_X_FORWARDED_HOST' in environ:
return werkzeug.contrib.fixers.ProxyFix(application_unproxied)(environ, start_response)
else:
return application_unproxied(environ, start_response)
# The WSGI server, started by start_server(), stopped by stop_server().
httpd = None
@@ -421,25 +424,8 @@ def serve():
# TODO Change the xmlrpc_* options to http_*
interface = config['xmlrpc_interface'] or '0.0.0.0'
port = config['xmlrpc_port']
try:
import werkzeug.serving
if config['proxy_mode']:
from werkzeug.contrib.fixers import ProxyFix
app = ProxyFix(application)
suffix = ' (in proxy mode)'
else:
app = application
suffix = ''
httpd = werkzeug.serving.make_server(interface, port, app, threaded=True)
_logger.info('HTTP service (werkzeug) running on %s:%s%s', interface, port, suffix)
except ImportError:
import wsgiref.simple_server
_logger.warning('Werkzeug module unavailable, falling back to wsgiref.')
if config['proxy_mode']:
_logger.warning('Werkzeug module unavailable, not using proxy mode.')
httpd = wsgiref.simple_server.make_server(interface, port, application)
_logger.info('HTTP service (wsgiref) running on %s:%s', interface, port)
httpd = werkzeug.serving.make_server(interface, port, application, threaded=True)
_logger.info('HTTP service (werkzeug) running on %s:%s', interface, port)
httpd.serve_forever()
def start_server():
@@ -457,87 +443,4 @@ def stop_server():
if httpd:
httpd.shutdown()
# Master process id, can be used for signaling.
arbiter_pid = None
# Application setup before we can spawn any worker process.
# This is suitable for e.g. gunicorn's on_starting hook.
def on_starting(server):
global arbiter_pid
arbiter_pid = os.getpid() # TODO check if this is true even after replacing the executable
#openerp.tools.cache = kill_workers_cache
openerp.netsvc.init_logger()
openerp.osv.osv.start_object_proxy()
openerp.service.web_services.start_web_services()
openerp.modules.module.initialize_sys_path()
openerp.modules.loading.open_openerp_namespace()
for m in openerp.conf.server_wide_modules:
try:
openerp.modules.module.load_openerp_module(m)
except Exception:
msg = ''
if m == 'web':
msg = """
The `web` module is provided by the addons found in the `openerp-web` project.
Maybe you forgot to add those addons in your addons_path configuration."""
_logger.exception('Failed to load server-wide module `%s`.%s', m, msg)
# Install our own signal handler on the master process.
def when_ready(server):
# Hijack gunicorn's SIGWINCH handling; we can choose another one.
signal.signal(signal.SIGWINCH, make_winch_handler(server))
# Install limits on virtual memory and CPU time consumption.
def pre_request(worker, req):
import os
import psutil
import resource
import signal
# VMS and RLIMIT_AS are the same thing: virtual memory, a.k.a. address space
rss, vms = psutil.Process(os.getpid()).get_memory_info()
soft, hard = resource.getrlimit(resource.RLIMIT_AS)
resource.setrlimit(resource.RLIMIT_AS, (config['virtual_memory_limit'], hard))
r = resource.getrusage(resource.RUSAGE_SELF)
cpu_time = r.ru_utime + r.ru_stime
signal.signal(signal.SIGXCPU, time_expired)
soft, hard = resource.getrlimit(resource.RLIMIT_CPU)
resource.setrlimit(resource.RLIMIT_CPU, (cpu_time + config['cpu_time_limit'], hard))
# Reset the worker if it consumes too much memory (e.g. caused by a memory leak).
def post_request(worker, req, environ):
import os
import psutil
rss, vms = psutil.Process(os.getpid()).get_memory_info()
if vms > config['virtual_memory_reset']:
_logger.info('Virtual memory consumption '
'too high, rebooting the worker.')
worker.alive = False # Commit suicide after the request.
# Our signal handler will signal a SGIQUIT to all workers.
def make_winch_handler(server):
def handle_winch(sig, fram):
server.kill_workers(signal.SIGQUIT) # This is gunicorn specific.
return handle_winch
# SIGXCPU (exceeded CPU time) signal handler will raise an exception.
def time_expired(n, stack):
_logger.info('CPU time limit exceeded.')
raise Exception('CPU time limit exceeded.') # TODO one of openerp.exception
# Kill gracefuly the workers (e.g. because we want to clear their cache).
# This is done by signaling a SIGWINCH to the master process, so it can be
# called by the workers themselves.
def kill_workers():
try:
os.kill(arbiter_pid, signal.SIGWINCH)
except OSError, e:
if e.errno == errno.ESRCH: # no such pid
return
raise
class kill_workers_cache(openerp.tools.ormcache):
def clear(self, dbname, *args, **kwargs):
kill_workers()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -245,7 +245,7 @@ class test_selection(CreatorCase):
'translatable': True,
'date_format': '%d.%m.%Y',
'decimal_point': ',',
'thousand_sep': ' ',
'thousands_sep': ' ',
})
Translations = self.registry('ir.translation')
for source, value in self.translations_fr:
@@ -393,7 +393,7 @@ class test_selection(ImporterCase):
'translatable': True,
'date_format': '%d.%m.%Y',
'decimal_point': ',',
'thousand_sep': ' ',
'thousands_sep': ' ',
})
Translations = self.registry('ir.translation')
for source, value in self.translations_fr:
@@ -466,7 +466,7 @@ class test_selection_function(ImporterCase):
'translatable': True,
'date_format': '%d.%m.%Y',
'decimal_point': ',',
'thousand_sep': ' ',
'thousands_sep': ' ',
})
Translations = self.registry('ir.translation')
for source, value in self.translations_fr:
+24 -19
View File
@@ -253,8 +253,6 @@ class configmanager(object):
# Advanced options
group = optparse.OptionGroup(parser, "Advanced options")
group.add_option("--cache-timeout", dest="cache_timeout", my_default=100000,
help="set the timeout for the cache system", type="int")
group.add_option('--debug', dest='debug_mode', action='store_true', my_default=False, help='enable debug mode')
group.add_option("--stop-after-init", action="store_true", dest="stop_after_init", my_default=False,
help="stop the server after its initialization")
@@ -272,23 +270,30 @@ class configmanager(object):
group.add_option("--max-cron-threads", dest="max_cron_threads", my_default=4,
help="Maximum number of threads processing concurrently cron jobs.",
type="int")
# TODO sensible default for the three following limits.
group.add_option("--virtual-memory-limit", dest="virtual_memory_limit", my_default=768 * 1024 * 1024,
help="Maximum allowed virtual memory per Gunicorn process. "
"When the limit is reached, any memory allocation will fail.",
type="int")
group.add_option("--virtual-memory-reset", dest="virtual_memory_reset", my_default=640 * 1024 * 1024,
help="Maximum allowed virtual memory per Gunicorn process. "
"When the limit is reached, the worker will be reset after "
"the current request.",
type="int")
group.add_option("--cpu-time-limit", dest="cpu_time_limit", my_default=60,
help="Maximum allowed CPU time per Gunicorn process. "
"When the limit is reached, an exception is raised.",
type="int")
group.add_option("--unaccent", dest="unaccent", my_default=False, action="store_true",
help="Use the unaccent function provided by the database when available.")
parser.add_option_group(group)
group = optparse.OptionGroup(parser, "Multiprocessing options")
# TODO sensible default for the three following limits.
group.add_option("--workers", dest="workers", my_default=0,
help="Specify the number of workers, 0 disable prefork mode.",
type="int")
group.add_option("--limit-memory-soft", dest="limit_memory_soft", my_default=640 * 1024 * 1024,
help="Maximum allowed virtual memory per worker, when reached the worker be reset after the current request.",
type="int")
group.add_option("--limit-memory-hard", dest="limit_memory_hard", my_default=768 * 1024 * 1024,
help="Maximum allowed virtual memory per worker, when reached, any memory allocation will fail.",
type="int")
group.add_option("--limit-time-cpu", dest="limit_time_cpu", my_default=60,
help="Maximum allowed CPU time per request.",
type="int")
group.add_option("--limit-time-real", dest="limit_time_real", my_default=60,
help="Maximum allowed Real time per request. ",
type="int")
group.add_option("--limit-request", dest="limit_request", my_default=8192,
help="Maximum number of request to be processed per worker.",
type="int")
parser.add_option_group(group)
# Copy all optparse options (i.e. MyOption) into self.options.
@@ -369,7 +374,7 @@ class configmanager(object):
# if defined dont take the configfile value even if the defined value is None
keys = ['xmlrpc_interface', 'xmlrpc_port', 'db_name', 'db_user', 'db_password', 'db_host',
'db_port', 'db_template', 'logfile', 'pidfile', 'smtp_port', 'cache_timeout',
'db_port', 'db_template', 'logfile', 'pidfile', 'smtp_port',
'email_from', 'smtp_server', 'smtp_user', 'smtp_password',
'netrpc_interface', 'netrpc_port', 'db_maxconn', 'import_partial', 'addons_path',
'netrpc', 'xmlrpc', 'syslog', 'without_demo', 'timezone',
@@ -393,8 +398,8 @@ class configmanager(object):
'stop_after_init', 'logrotate', 'without_demo', 'netrpc', 'xmlrpc', 'syslog',
'list_db', 'xmlrpcs', 'proxy_mode',
'test_file', 'test_enable', 'test_commit', 'test_report_directory',
'osv_memory_count_limit', 'osv_memory_age_limit', 'max_cron_threads',
'virtual_memory_limit', 'virtual_memory_reset', 'cpu_time_limit', 'unaccent',
'osv_memory_count_limit', 'osv_memory_age_limit', 'max_cron_threads', 'unaccent',
'workers', 'limit_memory_hard', 'limit_memory_soft', 'limit_time_cpu', 'limit_time_real', 'limit_request'
]
for arg in keys:
+14 -8
View File
@@ -20,6 +20,7 @@
##############################################################################
import io
import sys
import StringIO
from PIL import Image
@@ -66,14 +67,18 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file
# check image size: do not create a thumbnail if avoiding smaller images
if avoid_if_small and image.size[0] <= size[0] and image.size[1] <= size[1]:
return base64_source
# create a thumbnail: will resize and keep ratios
image.thumbnail(size, Image.ANTIALIAS)
image = image.filter(ImageFilter.SHARPEN)
# create a transparent image for background
background = Image.new('RGBA', size, (255, 255, 255, 0))
# past the resized image on the background
background.paste(image, ((size[0] - image.size[0]) / 2, (size[1] - image.size[1]) / 2))
# return an encoded image
if (float(image.size[0])/image.size[1]) > (float(size[0]) / size[1]):
ibox = (size[1] * image.size[0] / image.size[1] , size[1])
deltax = max((size[1] * image.size[0] / image.size[1] - size[0]) / 2, 0)
deltay = 0
else:
ibox = (size[0],size[0] * image.size[1] / image.size[0])
deltax = 0
deltay = max((size[0] * image.size[1] / image.size[0] - size[1]) / 2, 0)
im2 = image.resize(ibox, Image.ANTIALIAS)
background = im2.crop((deltax, deltay, deltax+size[0], deltay+size[1]))
background_stream = StringIO.StringIO()
background.save(background_stream, filetype)
return background_stream.getvalue().encode(encoding)
@@ -156,3 +161,4 @@ def image_get_resized_images(base64_source, return_big=False, return_medium=True
if return_small:
return_dict[small_name] = image_resize_image_small(base64_source, avoid_if_small=avoid_resize_small)
return return_dict
-33
View File
@@ -1,33 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2012-2012 OpenERP s.a. (<http://openerp.com>).
#
# 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/>.
#
##############################################################################
""" WSGI stack
This module offers a WSGI interface to/from OpenERP.
"""
from . import core
# TODO: This is for the web addons, can be removed later.
register_wsgi_handler = core.register_wsgi_handler
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-34
View File
@@ -1,34 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2012 OpenERP s.a. (<http://openerp.com>).
#
# 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/>.
#
##############################################################################
"""
WSGI entry point with Proxy mode (from Werkzeug).
"""
from werkzeug.contrib.fixers import ProxyFix
from . import core
application = ProxyFix(core.application)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+1
View File
@@ -97,6 +97,7 @@ setuptools.setup(
'gdata',
'lxml < 3',
'mako',
'psutil',
'psycopg2',
'pydot',
'python-dateutil < 2',