[MERGE] from trunk

bzr revid: rco@openerp.com-20130411073017-x6e4h8xbvmy3ofdw
This commit is contained in:
Raphael Collet 2013-04-11 09:30:17 +02:00
commit 05851d21ba
106 changed files with 2517 additions and 1226 deletions

3
debian/control vendored
View File

@ -19,6 +19,7 @@ Depends:
python-docutils, python-docutils,
python-feedparser, python-feedparser,
python-gdata, python-gdata,
python-imaging,
python-jinja2, python-jinja2,
python-ldap, python-ldap,
python-libxslt1, python-libxslt1,
@ -46,7 +47,7 @@ Depends:
Conflicts: tinyerp-server, openerp-server, openerp-web Conflicts: tinyerp-server, openerp-server, openerp-web
Replaces: tinyerp-server, openerp-server, openerp-web Replaces: tinyerp-server, openerp-server, openerp-web
Recommends: Recommends:
graphviz, ghostscript, postgresql, python-imaging, python-matplotlib graphviz, ghostscript, postgresql, python-matplotlib, poppler-utils
Description: OpenERP Enterprise Resource Management Description: OpenERP Enterprise Resource Management
OpenERP, previously known as TinyERP, is a complete ERP and CRM. The main OpenERP, previously known as TinyERP, is a complete ERP and CRM. The main
features are accounting (analytic and financial), stock management, sales and features are accounting (analytic and financial), stock management, sales and

69
debian/openerp.init vendored
View File

@ -17,55 +17,46 @@ DAEMON=/usr/bin/openerp-server
NAME=openerp-server NAME=openerp-server
DESC=openerp-server DESC=openerp-server
CONFIG=/etc/openerp/openerp-server.conf CONFIG=/etc/openerp/openerp-server.conf
LOGFILE=/var/log/openerp-server.log LOGFILE=/var/log/openerp/openerp-server.log
USER=openerp USER=openerp
test -x ${DAEMON} || exit 0 test -x ${DAEMON} || exit 0
set -e set -e
do_start () {
echo -n "Starting ${DESC}: "
start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid --chuid ${USER} --background --make-pidfile --exec ${DAEMON} -- --config=${CONFIG} --logfile=${LOGFILE}
echo "${NAME}."
}
do_stop () {
echo -n "Stopping ${DESC}: "
start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid --oknodo
echo "${NAME}."
}
case "${1}" in case "${1}" in
start) start)
echo -n "Starting ${DESC}: " do_start
;;
start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \ stop)
--chuid ${USER} --background --make-pidfile \ do_stop
--exec ${DAEMON} -- --config=${CONFIG} \ ;;
--logfile=${LOGFILE}
echo "${NAME}." restart|force-reload)
;; echo -n "Restarting ${DESC}: "
do_stop
sleep 1
do_start
;;
stop) *)
echo -n "Stopping ${DESC}: " N=/etc/init.d/${NAME}
echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \ exit 1
--oknodo ;;
echo "${NAME}."
;;
restart|force-reload)
echo -n "Restarting ${DESC}: "
start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \
--oknodo
sleep 1
start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- --config=${CONFIG} \
--logfile=${LOGFILE}
echo "${NAME}."
;;
*)
N=/etc/init.d/${NAME}
echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
exit 1
;;
esac esac
exit 0 exit 0

View File

@ -12,9 +12,9 @@ case "${1}" in
chown openerp:openerp /etc/openerp/openerp-server.conf chown openerp:openerp /etc/openerp/openerp-server.conf
chmod 0640 /etc/openerp/openerp-server.conf chmod 0640 /etc/openerp/openerp-server.conf
# Creating log file # Creating log file
touch /var/log/openerp-server.log mkdir -p /var/log/openerp/
chown openerp:openerp /var/log/openerp-server.log chown openerp:openerp /var/log/openerp
chmod 0640 /var/log/openerp-server.log chmod 0750 /var/log/openerp
# Creating local storage directory # Creating local storage directory
mkdir -p /var/lib/openerp/filestore mkdir -p /var/lib/openerp/filestore
chown openerp:openerp -R /var/lib/openerp chown openerp:openerp -R /var/lib/openerp

View File

@ -22,6 +22,17 @@
""" OpenERP core library. """ OpenERP core library.
""" """
# Make sure the OpenERP server runs in UTC. This is especially necessary
# under Windows as under Linux it seems the real import of time is
# sufficiently deferred so that setting the TZ environment variable
# in openerp.cli.server was working.
import os
os.environ['TZ'] = 'UTC' # Set the timezone...
import time # ... *then* import time.
del os
del time
# The hard-coded super-user id (a.k.a. administrator, or root user). # The hard-coded super-user id (a.k.a. administrator, or root user).
SUPERUSER_ID = 1 SUPERUSER_ID = 1

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:11+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:01+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:13+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:01+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:01+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:13+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

File diff suppressed because it is too large Load Diff

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:01+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:13+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:02+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:14+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -5427,7 +5427,7 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
"Ergänzen Sie zusätzliche Datum Informationen zum Auftrag.\n" "Ergänzen Sie zusätzliche Datum Informationen zum Auftrag.\n"
"=================================================\n" "=========================================================\n"
"\n" "\n"
"Sie können die folgenden zusätzlichen Daten zu einem Kundenauftrag " "Sie können die folgenden zusätzlichen Daten zu einem Kundenauftrag "
"hinzufügen:\n" "hinzufügen:\n"

View File

@ -12,8 +12,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:14+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
"X-Poedit-Country: GREECE\n" "X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n" "X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:09+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:09+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
"Language: \n" "Language: \n"
#. module: base #. module: base

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:10+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:21+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:09+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:21+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:02+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:13+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -9,8 +9,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:05+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:17+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-Language: Persian\n" "X-Poedit-Language: Persian\n"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:10+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:21+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:02+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:14+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

File diff suppressed because it is too large Load Diff

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:14+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -34,7 +34,7 @@ msgstr "סנט הלנה"
#. module: base #. module: base
#: view:ir.actions.report.xml:0 #: view:ir.actions.report.xml:0
msgid "Other Configuration" msgid "Other Configuration"
msgstr "" msgstr "תצורה אחרת"
#. module: base #. module: base
#: selection:ir.property,type:0 #: selection:ir.property,type:0
@ -68,12 +68,12 @@ msgstr ""
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
msgid "Hungarian / Magyar" msgid "Hungarian / Magyar"
msgstr "הונגריה /Magyar" msgstr "הונגרית /Magyar"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
msgid "Spanish (PY) / Español (PY)" msgid "Spanish (PY) / Español (PY)"
msgstr "" msgstr "Spanish (PY) / ספרדית (PY)"
#. module: base #. module: base
#: model:ir.module.category,description:base.module_category_project_management #: model:ir.module.category,description:base.module_category_project_management
@ -85,7 +85,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_point_of_sale #: model:ir.module.module,summary:base.module_point_of_sale
msgid "Touchscreen Interface for Shops" msgid "Touchscreen Interface for Shops"
msgstr "" msgstr "ממשק מסך מגע לחנויות"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
@ -101,7 +101,7 @@ msgstr ""
#. module: base #. module: base
#: view:ir.module.module:0 #: view:ir.module.module:0
msgid "Created Views" msgid "Created Views"
msgstr "צפיה בנוצרו" msgstr "צפיות שנוצרו"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_product_manufacturer #: model:ir.module.module,description:base.module_product_manufacturer
@ -118,6 +118,17 @@ msgid ""
" * Product Attributes\n" " * Product Attributes\n"
" " " "
msgstr "" msgstr ""
"\n"
"רכיב להוספת יצרנים ותכונות למוצר.\n"
"====================================================================\n"
"\n"
"ניתן להגדיר עבור מוצר:\n"
"-----------------------------------------------\n"
" * יצרן\n"
" * שם מוצר אצל היצרן\n"
" * קוד מוצר אצל היצרן\n"
" * תכונות מוצר\n"
" "
#. module: base #. module: base
#: field:ir.actions.client,params:0 #: field:ir.actions.client,params:0
@ -148,12 +159,12 @@ msgstr ""
#. module: base #. module: base
#: field:res.partner,ref:0 #: field:res.partner,ref:0
msgid "Reference" msgid "Reference"
msgstr "" msgstr "הפניה"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba #: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
msgid "Belgium - Structured Communication" msgid "Belgium - Structured Communication"
msgstr "" msgstr "בלגיה - תקשורת מובנית"
#. module: base #. module: base
#: field:ir.actions.act_window,target:0 #: field:ir.actions.act_window,target:0
@ -191,7 +202,7 @@ msgstr ""
#: code:addons/base/res/res_users.py:473 #: code:addons/base/res/res_users.py:473
#, python-format #, python-format
msgid "Warning!" msgid "Warning!"
msgstr "" msgstr "אזהרה!"
#. module: base #. module: base
#: code:addons/base/ir/ir_model.py:406 #: code:addons/base/ir/ir_model.py:406
@ -221,23 +232,23 @@ msgstr ""
#. module: base #. module: base
#: model:res.country,name:base.sz #: model:res.country,name:base.sz
msgid "Swaziland" msgid "Swaziland"
msgstr "Swaziland" msgstr "שוויץ"
#. module: base #. module: base
#: code:addons/orm.py:4486 #: code:addons/orm.py:4486
#, python-format #, python-format
msgid "created." msgid "created."
msgstr "" msgstr "נוצר."
#. module: base #. module: base
#: field:ir.actions.report.xml,report_xsl:0 #: field:ir.actions.report.xml,report_xsl:0
msgid "XSL Path" msgid "XSL Path"
msgstr "" msgstr "נתיב XSL"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_tr #: model:ir.module.module,shortdesc:base.module_l10n_tr
msgid "Turkey - Accounting" msgid "Turkey - Accounting"
msgstr "" msgstr "טורקיה - חשבונאות"
#. module: base #. module: base
#: field:ir.sequence,number_increment:0 #: field:ir.sequence,number_increment:0
@ -274,7 +285,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_sale #: model:ir.module.module,shortdesc:base.module_sale
msgid "Sales Management" msgid "Sales Management"
msgstr "" msgstr "ניהול מכירות"
#. module: base #. module: base
#: help:res.partner,user_id:0 #: help:res.partner,user_id:0
@ -291,17 +302,17 @@ msgstr ""
#. module: base #. module: base
#: field:ir.module.category,module_nr:0 #: field:ir.module.category,module_nr:0
msgid "Number of Modules" msgid "Number of Modules"
msgstr "מספר המודולים" msgstr "מספר רכיבים"
#. module: base #. module: base
#: help:multi_company.default,company_dest_id:0 #: help:multi_company.default,company_dest_id:0
msgid "Company to store the current record" msgid "Company to store the current record"
msgstr "" msgstr "חברה לאחסון פעולה נוכחית"
#. module: base #. module: base
#: field:res.partner.bank.type.field,size:0 #: field:res.partner.bank.type.field,size:0
msgid "Max. Size" msgid "Max. Size"
msgstr "מידה מקס." msgstr "גודל מרבי"
#. module: base #. module: base
#: help:ir.actions.act_window,res_id:0 #: help:ir.actions.act_window,res_id:0
@ -324,7 +335,7 @@ msgstr ""
#. module: base #. module: base
#: sql_constraint:res.lang:0 #: sql_constraint:res.lang:0
msgid "The name of the language must be unique !" msgid "The name of the language must be unique !"
msgstr "" msgstr "על שם השפה להיות ייחודי !"
#. module: base #. module: base
#: selection:res.request,state:0 #: selection:res.request,state:0
@ -334,7 +345,7 @@ msgstr "פעיל"
#. module: base #. module: base
#: field:ir.actions.wizard,wiz_name:0 #: field:ir.actions.wizard,wiz_name:0
msgid "Wizard Name" msgid "Wizard Name"
msgstr "שם מומחה" msgstr "שם האשף"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_knowledge #: model:ir.module.module,description:base.module_knowledge
@ -352,7 +363,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_customer_relationship_management #: model:ir.module.category,name:base.module_category_customer_relationship_management
msgid "Customer Relationship Management" msgid "Customer Relationship Management"
msgstr "" msgstr "ניהול קשרי לקוחות"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_delivery #: model:ir.module.module,description:base.module_delivery
@ -379,7 +390,7 @@ msgstr ""
#: code:addons/orm.py:2649 #: code:addons/orm.py:2649
#, python-format #, python-format
msgid "Invalid group_by" msgid "Invalid group_by"
msgstr "" msgstr "group_by לא חוקי"
#. module: base #. module: base
#: field:ir.module.category,child_ids:0 #: field:ir.module.category,child_ids:0
@ -396,18 +407,18 @@ msgstr "מגבלת אשראי"
#: field:ir.model.data,date_update:0 #: field:ir.model.data,date_update:0
#: field:ir.model.relation,date_update:0 #: field:ir.model.relation,date_update:0
msgid "Update Date" msgid "Update Date"
msgstr "עדכן נתונים" msgstr "עידכון תאריך"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_base_action_rule #: model:ir.module.module,shortdesc:base.module_base_action_rule
msgid "Automated Action Rules" msgid "Automated Action Rules"
msgstr "" msgstr "חוקי פעולה אוטומטיים"
#. module: base #. module: base
#: view:ir.attachment:0 #: view:ir.attachment:0
#: field:ir.attachment,create_uid:0 #: field:ir.attachment,create_uid:0
msgid "Owner" msgid "Owner"
msgstr "" msgstr "בעלים"
#. module: base #. module: base
#: view:ir.actions.act_window:0 #: view:ir.actions.act_window:0
@ -417,12 +428,12 @@ msgstr "אובייקט מקור"
#. module: base #. module: base
#: model:res.partner.bank.type,format_layout:base.bank_normal #: model:res.partner.bank.type,format_layout:base.bank_normal
msgid "%(bank_name)s: %(acc_number)s" msgid "%(bank_name)s: %(acc_number)s"
msgstr "" msgstr "%(bank_name)s: %(acc_number)s"
#. module: base #. module: base
#: view:ir.actions.todo:0 #: view:ir.actions.todo:0
msgid "Config Wizard Steps" msgid "Config Wizard Steps"
msgstr "הגדר צעדי האשף" msgstr "הגדרת צעדי האשף"
#. module: base #. module: base
#: model:ir.model,name:base.model_ir_ui_view_sc #: model:ir.model,name:base.model_ir_ui_view_sc
@ -449,7 +460,7 @@ msgstr ""
msgid "" msgid ""
"One of the records you are trying to modify has already been deleted " "One of the records you are trying to modify has already been deleted "
"(Document type: %s)." "(Document type: %s)."
msgstr "" msgstr "אחת הרשומות שברצונך לערוך נמחקה (Document type: %s)."
#. module: base #. module: base
#: help:ir.actions.act_window,views:0 #: help:ir.actions.act_window,views:0
@ -468,7 +479,7 @@ msgstr ""
#. module: base #. module: base
#: view:ir.rule:0 #: view:ir.rule:0
msgid "Create Access Right" msgid "Create Access Right"
msgstr "" msgstr "יצירת הרשאות גישה"
#. module: base #. module: base
#: model:res.country,name:base.tv #: model:res.country,name:base.tv
@ -478,7 +489,7 @@ msgstr "Tuvalu"
#. module: base #. module: base
#: field:ir.actions.configuration.wizard,note:0 #: field:ir.actions.configuration.wizard,note:0
msgid "Next Wizard" msgid "Next Wizard"
msgstr "אשף הבא" msgstr "לאשף הבא"
#. module: base #. module: base
#: field:res.lang,date_format:0 #: field:res.lang,date_format:0
@ -488,7 +499,7 @@ msgstr "מבנה תאריך"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_base_report_designer #: model:ir.module.module,shortdesc:base.module_base_report_designer
msgid "OpenOffice Report Designer" msgid "OpenOffice Report Designer"
msgstr "" msgstr "מעצב הדוחות של OpenOffice"
#. module: base #. module: base
#: model:res.country,name:base.an #: model:res.country,name:base.an
@ -502,8 +513,8 @@ msgid ""
"You can not remove the admin user as it is used internally for resources " "You can not remove the admin user as it is used internally for resources "
"created by OpenERP (updates, module installation, ...)" "created by OpenERP (updates, module installation, ...)"
msgstr "" msgstr ""
"אינך יכול להסיר את המשתמש ADMIN כיוון שמשמש ליצירת מקורות ע\"י openERP " "לא ניתן להסיר את המשתמש ADMIN מכיוון שנעשה בו שימוש פנימי עבור משאבים ש-"
"(עדכונים,התקנת מודולים...)" "OpenERP יוצרת (עדכונים,התקנת מודולים...)"
#. module: base #. module: base
#: view:workflow.transition:0 #: view:workflow.transition:0
@ -513,12 +524,12 @@ msgstr ""
#. module: base #. module: base
#: model:res.country,name:base.gf #: model:res.country,name:base.gf
msgid "French Guyana" msgid "French Guyana"
msgstr "French Guyana" msgstr "הגויאנה הצרפתית"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_hr #: model:ir.module.module,summary:base.module_hr
msgid "Jobs, Departments, Employees Details" msgid "Jobs, Departments, Employees Details"
msgstr "" msgstr "עבודות, מחלקות, פרטי עובדים"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_analytic #: model:ir.module.module,description:base.module_analytic
@ -538,7 +549,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_idea #: model:ir.module.module,shortdesc:base.module_idea
msgid "Ideas" msgid "Ideas"
msgstr "" msgstr "רעיונות"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_event #: model:ir.module.module,description:base.module_event
@ -569,7 +580,7 @@ msgid ""
"If you check this, then the second time the user prints with same attachment " "If you check this, then the second time the user prints with same attachment "
"name, it returns the previous report." "name, it returns the previous report."
msgstr "" msgstr ""
"אם תסמן זאת, בפעם השניה בה המשתמש ידפיס עם שם מצורף זהה,זה יחזיר את הדווח " "אם תסמן זאת, בפעם השניה בה המשתמש ידפיס עם שם מצורף זהה, זה יחזיר את הדוח "
"הקודם." "הקודם."
#. module: base #. module: base
@ -592,6 +603,21 @@ msgid ""
" A + B + C -> D + E\n" " A + B + C -> D + E\n"
" " " "
msgstr "" msgstr ""
"\n"
"רכיב זה מאפשר להפיק מספר מוצרים מהזמנת ייצור אחת.\n"
"============================================================================="
"\n"
"\n"
"ניתן להגדיר תוצרי לוואי (by-products) בחשבון החומרים\n"
"\n"
"בלי רכיב זה:\n"
"--------------------\n"
" A + B + C -> D\n"
"\n"
"עם רכיב זה:\n"
"-----------------\n"
" A + B + C -> D + E\n"
" "
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -601,7 +627,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice #: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
msgid "Invoice on Timesheets" msgid "Invoice on Timesheets"
msgstr "" msgstr "חשבונית על גליון שעות"
#. module: base #. module: base
#: view:base.module.upgrade:0 #: view:base.module.upgrade:0
@ -635,8 +661,8 @@ msgid ""
"The ISO country code in two chars.\n" "The ISO country code in two chars.\n"
"You can use this field for quick search." "You can use this field for quick search."
msgstr "" msgstr ""
"ISO קוד מדינה בשני תווים.\n" "צופן ה-ISO בשתי אותיות.\n"
"תוכל להשתמש בשדה זה לחיפוש מהיר." "ניתן להשתמש בשדה זה לחיפוש מהיר."
#. module: base #. module: base
#: model:res.country,name:base.pw #: model:res.country,name:base.pw
@ -651,12 +677,12 @@ msgstr "מכירות ורכש"
#. module: base #. module: base
#: view:ir.translation:0 #: view:ir.translation:0
msgid "Untranslated" msgid "Untranslated"
msgstr "" msgstr "לא מתורגם"
#. module: base #. module: base
#: view:ir.mail_server:0 #: view:ir.mail_server:0
msgid "Outgoing Mail Server" msgid "Outgoing Mail Server"
msgstr "" msgstr "שרת דואר יוצא"
#. module: base #. module: base
#: help:ir.actions.act_window,context:0 #: help:ir.actions.act_window,context:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:06+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
"Language: hr\n" "Language: hr\n"
#. module: base #. module: base

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -3274,7 +3274,7 @@ msgstr ""
"==============================================\n" "==============================================\n"
" * Felhasználó azonosítás\n" " * Felhasználó azonosítás\n"
" * Dokumentum indexálás:- .pptx és .docx fájlok nem támogatottak Windows " " * Dokumentum indexálás:- .pptx és .docx fájlok nem támogatottak Windows "
"oprendszeren.\n" "operációs rendszeren.\n"
" * Dashboard / Műszerfal a dokumentumokhoz mely magában foglalja:\n" " * Dashboard / Műszerfal a dokumentumokhoz mely magában foglalja:\n"
" * Új fájl (lista)\n" " * Új fájl (lista)\n"
" * Fájlok a forrás típusa szerint (grafikon)\n" " * Fájlok a forrás típusa szerint (grafikon)\n"
@ -3334,7 +3334,7 @@ msgstr ""
"==================================\n" "==================================\n"
"\n" "\n"
"Ez az alkalmazás lehetővé teszi a célul kitűzött eladások eredményes és " "Ez az alkalmazás lehetővé teszi a célul kitűzött eladások eredményes és "
"hatékony kezelését figyelembevéve a megrendelések és annak régebbi " "hatékony kezelését figyelembe véve a megrendelések és annak régebbi "
"történetének nyomon követését.\n" "történetének nyomon követését.\n"
"\n" "\n"
"Kezeli a teljes eladási munkafolyamatot:\n" "Kezeli a teljes eladási munkafolyamatot:\n"
@ -3351,7 +3351,7 @@ msgstr ""
"* Incoterms: International Commercial terms /Nemzetközi szállítási " "* Incoterms: International Commercial terms /Nemzetközi szállítási "
"feltételek pl.:EXW/\n" "feltételek pl.:EXW/\n"
"\n" "\n"
"Használható rugalmas számlázáasi módszer:\n" "Használható rugalmas számlázási módszer:\n"
"\n" "\n"
"* *Igényléskori*: Ha szükséges a számlák kézzel létrehozhatók a megrendelés " "* *Igényléskori*: Ha szükséges a számlák kézzel létrehozhatók a megrendelés "
"alapján\n" "alapján\n"
@ -3361,7 +3361,7 @@ msgstr ""
"egyenlíteni a szállítás előtt\n" "egyenlíteni a szállítás előtt\n"
"\n" "\n"
"\n" "\n"
"A kereskedő vezérklő műszerfala a következőket tartalmazza\n" "A kereskedő vezérlő műszerfala a következőket tartalmazza\n"
"------------------------------------------------\n" "------------------------------------------------\n"
"* Az árajánlataim\n" "* Az árajánlataim\n"
"* Havi forgótőke (Grafikon)\n" "* Havi forgótőke (Grafikon)\n"
@ -3555,7 +3555,7 @@ msgstr ""
"automatikusan tud hozzárendelni emlékeztetőt.\n" "automatikusan tud hozzárendelni emlékeztetőt.\n"
"\n" "\n"
"OpenERP alkatrész kezelés szabálya megengedi a rendszernek, hogy sablonból " "OpenERP alkatrész kezelés szabálya megengedi a rendszernek, hogy sablonból "
"rendelést generáljon autómatikusan, vagy beállíthatja, hogy az egészet a " "rendelést generáljon automatikusan, vagy beállíthatja, hogy az egészet a "
"termelés tényleges igénynek megfelelően folyamat vezérléssel hajtsa végre.\n" "termelés tényleges igénynek megfelelően folyamat vezérléssel hajtsa végre.\n"
"\n" "\n"
"Dashboard / Műszerfal a beszerzés kezelés kimutatásához ezt tartalmazza:\n" "Dashboard / Műszerfal a beszerzés kezelés kimutatásához ezt tartalmazza:\n"
@ -4457,7 +4457,7 @@ msgstr ""
"Támogatja a raktározott termékek, fogyóeszközök vagy szolgáltatások " "Támogatja a raktározott termékek, fogyóeszközök vagy szolgáltatások "
"integrációját. Szolgáltatások teljesen integráltak a szoftver teljes " "integrációját. Szolgáltatások teljesen integráltak a szoftver teljes "
"egységével. Például, beállíthat egy alvállalkozói szolgáltatást a " "egységével. Például, beállíthat egy alvállalkozói szolgáltatást a "
"darabjegyzékben az autómatikus anyag beszerzéshez egy összeszerelni kívánt " "darabjegyzékben az automatikus anyag beszerzéshez egy összeszerelni kívánt "
"termék megrendelésénél.\n" "termék megrendelésénél.\n"
"\n" "\n"
"Fő tulajdonságok\n" "Fő tulajdonságok\n"
@ -4465,8 +4465,8 @@ msgstr ""
"* Raktár létrehozás/Megrendelés létrehozás\n" "* Raktár létrehozás/Megrendelés létrehozás\n"
"* Több szintű darabjegyzés, nincs határ\n" "* Több szintű darabjegyzés, nincs határ\n"
"* Több szintű útvonal, nincs határ\n" "* Több szintű útvonal, nincs határ\n"
"* Útvonal és munka központ integrálva az analitikai könyvitellel\n" "* Útvonal és munka központ integrálva az analitikai könyvvitellel\n"
"* Periódikus ütemező számítás \n" "* Periodikus ütemező számítás \n"
"* Lehetővé teszi a darabjegyzékek böngészését komplett szerkezetben ami " "* Lehetővé teszi a darabjegyzékek böngészését komplett szerkezetben ami "
"magában foglalja az al- és a fantom darabjegyzékeket\n" "magában foglalja az al- és a fantom darabjegyzékeket\n"
"\n" "\n"
@ -18709,7 +18709,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
"\n" "\n"
"Több-raktár kezelése, többes- és struktúrált/rendezett raktár helyek\n" "Több-raktár kezelése, többes- és strukturált/rendezett raktár helyek\n"
"==============================================================\n" "==============================================================\n"
"\n" "\n"
"A raktár és raktárkészlet kezelés a hierarchikus elhelyezkedési szerkezeten " "A raktár és raktárkészlet kezelés a hierarchikus elhelyezkedési szerkezeten "
@ -18721,7 +18721,7 @@ msgstr ""
"lehetőségével a nyomon követhetőség biztosításához, mely követelmény nagyobb " "lehetőségével a nyomon követhetőség biztosításához, mely követelmény nagyobb "
"vállalkozásoknál.\n" "vállalkozásoknál.\n"
"\n" "\n"
"Fó jellemzők\n" "Fő jellemzők\n"
"------------\n" "------------\n"
"* A mozgások előzményei és tervezése,\n" "* A mozgások előzményei és tervezése,\n"
"* Raktár értékelés (alap vagy átlag ár, ...)\n" "* Raktár értékelés (alap vagy átlag ár, ...)\n"

View File

@ -9,8 +9,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:03+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:15+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:02+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:14+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -941,7 +941,7 @@ msgstr "알바니아어 / Shqip"
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_opportunity #: model:ir.ui.menu,name:base.menu_crm_config_opportunity
msgid "Opportunities" msgid "Opportunities"
msgstr "영업기회" msgstr "기회"
#. module: base #. module: base
#: model:ir.model,name:base.model_base_language_export #: model:ir.model,name:base.model_base_language_export
@ -2677,7 +2677,7 @@ msgstr "바닥글 설정"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_sale_crm #: model:ir.module.module,shortdesc:base.module_sale_crm
msgid "Opportunity to Quotation" msgid "Opportunity to Quotation"
msgstr "견적 제공 기회" msgstr "견적 기회"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_sale_analytic_plans #: model:ir.module.module,description:base.module_sale_analytic_plans
@ -4812,7 +4812,7 @@ msgstr "적도 기니"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_web_api #: model:ir.module.module,shortdesc:base.module_web_api
msgid "OpenERP Web API" msgid "OpenERP Web API"
msgstr "OpenERP API" msgstr "OpenERP Web API"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_fr_rib #: model:ir.module.module,description:base.module_l10n_fr_rib
@ -5409,7 +5409,7 @@ msgid ""
"\n" "\n"
msgstr "" msgstr ""
"\n" "\n"
"Openerp API.\n" "Openerp Web API.\n"
"================\n" "================\n"
"\n" "\n"
@ -5716,7 +5716,7 @@ msgstr ""
#. module: base #. module: base
#: model:res.groups,name:base.group_sale_salesman_all_leads #: model:res.groups,name:base.group_sale_salesman_all_leads
msgid "See all Leads" msgid "See all Leads"
msgstr "모든 잠재고객 보기" msgstr "모든 리드 보기"
#. module: base #. module: base
#: model:res.country,name:base.ci #: model:res.country,name:base.ci
@ -6292,7 +6292,7 @@ msgid ""
"\n" "\n"
msgstr "" msgstr ""
"\n" "\n"
"OpenERP 간판 화면.\n" "OpenERP Web 간판 화면.\n"
"========================\n" "========================\n"
"\n" "\n"
@ -6921,10 +6921,10 @@ msgid ""
" " " "
msgstr "" msgstr ""
"\n" "\n"
"OpenERP 핵심 모듈.\n" "OpenERP Web 핵심 모듈.\n"
"========================\n" "========================\n"
"\n" "\n"
"이 모듈은 OpenERP 웹 클라이언트의 핵심을 제공합니다.\n" "이 모듈은 OpenERP Web Client의 핵심을 제공합니다.\n"
" " " "
#. module: base #. module: base
@ -7556,7 +7556,7 @@ msgstr "정수"
msgid "" msgid ""
"The path to the main report file (depending on Report Type) or NULL if the " "The path to the main report file (depending on Report Type) or NULL if the "
"content is in another data field" "content is in another data field"
msgstr "주 보고서 파일의 경로 (보고서 유형에 따름) 또는 컨텐트가 다른 데이터 필드에 위치할 경우 NULL" msgstr "주 보고서 파일의 경로 (보고서 유형에 따름) 또는 내용이 다른 데이터 필드에 위치할 경우 NULL"
#. module: base #. module: base
#: model:res.partner.category,name:base.res_partner_category_14 #: model:res.partner.category,name:base.res_partner_category_14
@ -9288,7 +9288,7 @@ msgid ""
"\n" "\n"
msgstr "" msgstr ""
"\n" "\n"
"OpenERP 간트 도표 화면.\n" "OpenERP Web 간트 도표 화면.\n"
"=============================\n" "=============================\n"
"\n" "\n"
@ -9359,8 +9359,8 @@ msgid ""
"instead.If SSL is needed, an upgrade to Python 2.6 on the server-side should " "instead.If SSL is needed, an upgrade to Python 2.6 on the server-side should "
"do the trick." "do the trick."
msgstr "" msgstr ""
"OpenERP 서버가 SMTP-over-SSL을 지원하지 않습니다. STARTTLS를 대신 사용할 수 있습니다. SSL이 필요할 경우, " "OpenERP Server가 SMTP-over-SSL을 지원하지 않습니다. STARTTLS를 대신 사용할 수 있습니다. SSL이 필요할 "
"서버 측을 파이썬 2.6으로 업그레이드 하면 해결될 것입니다." "경우, 서버 측을 파이썬 2.6으로 업그레이드 하면 해결될 것입니다."
#. module: base #. module: base
#: model:res.country,name:base.ua #: model:res.country,name:base.ua
@ -10606,7 +10606,7 @@ msgstr "이탈리아"
#. module: base #. module: base
#: model:res.groups,name:base.group_sale_salesman #: model:res.groups,name:base.group_sale_salesman
msgid "See Own Leads" msgid "See Own Leads"
msgstr "자신의 잠재고객 보기" msgstr "내 리드 보기"
#. module: base #. module: base
#: view:ir.actions.todo:0 #: view:ir.actions.todo:0
@ -10739,7 +10739,7 @@ msgstr "이것이 오류라고 생각되는 경우, 시스템 관리자에게
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
#, python-format #, python-format
msgid "Apply Schedule Upgrade" msgid "Apply Schedule Upgrade"
msgstr "일정 적용 업그레이드" msgstr "예정된 업그레이드 적용"
#. module: base #. module: base
#: view:workflow.activity:0 #: view:workflow.activity:0
@ -11195,7 +11195,7 @@ msgstr "계단식"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_crm #: model:ir.module.module,summary:base.module_crm
msgid "Leads, Opportunities, Phone Calls" msgid "Leads, Opportunities, Phone Calls"
msgstr "잠재고객, 영업기회, 통화내역" msgstr "리드, 기회, 통화"
#. module: base #. module: base
#: model:ir.module.category,description:base.module_category_knowledge_management #: model:ir.module.category,description:base.module_category_knowledge_management
@ -14185,7 +14185,7 @@ msgstr "송장 발송 및 지불 추적"
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_lead #: model:ir.ui.menu,name:base.menu_crm_config_lead
msgid "Leads & Opportunities" msgid "Leads & Opportunities"
msgstr "잠재 고객 & 매출 기회" msgstr "리드 & 기회"
#. module: base #. module: base
#: model:res.country,name:base.gg #: model:res.country,name:base.gg
@ -14937,7 +14937,7 @@ msgstr "썬더버드 플러그인"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_event #: model:ir.module.module,summary:base.module_event
msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations" msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations"
msgstr "" msgstr "훈련, 회의, 미팅, 전시회, 등록"
#. module: base #. module: base
#: model:ir.model,name:base.model_res_country #: model:ir.model,name:base.model_res_country

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:04+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:05+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -4153,6 +4153,7 @@ msgstr "Титула"
#: help:ir.property,res_id:0 #: help:ir.property,res_id:0
msgid "If not set, acts as a default value for new resources" msgid "If not set, acts as a default value for new resources"
msgstr "" msgstr ""
"Доколку не е подесено, се однесува како стандардна вредност за новите ресурси"
#. module: base #. module: base
#: code:addons/orm.py:4246 #: code:addons/orm.py:4246
@ -4560,7 +4561,7 @@ msgstr "EAN13"
#: code:addons/orm.py:2247 #: code:addons/orm.py:2247
#, python-format #, python-format
msgid "Invalid Architecture!" msgid "Invalid Architecture!"
msgstr "" msgstr "Погрешна архитектура!"
#. module: base #. module: base
#: model:res.country,name:base.pt #: model:res.country,name:base.pt
@ -4703,13 +4704,13 @@ msgstr ""
#. module: base #. module: base
#: view:ir.cron:0 #: view:ir.cron:0
msgid "Action to Trigger" msgid "Action to Trigger"
msgstr "" msgstr "Акција за активирање"
#. module: base #. module: base
#: field:ir.model.constraint,name:0 #: field:ir.model.constraint,name:0
#: selection:ir.translation,type:0 #: selection:ir.translation,type:0
msgid "Constraint" msgid "Constraint"
msgstr "" msgstr "Ограничување"
#. module: base #. module: base
#: selection:ir.values,key:0 #: selection:ir.values,key:0
@ -4827,7 +4828,7 @@ msgstr "Телеком сектор"
#. module: base #. module: base
#: field:workflow.transition,trigger_model:0 #: field:workflow.transition,trigger_model:0
msgid "Trigger Object" msgid "Trigger Object"
msgstr "" msgstr "Активирај објект"
#. module: base #. module: base
#: sql_constraint:ir.sequence.type:0 #: sql_constraint:ir.sequence.type:0
@ -4848,7 +4849,7 @@ msgstr "Дојдовни премини"
#. module: base #. module: base
#: field:ir.values,value_unpickle:0 #: field:ir.values,value_unpickle:0
msgid "Default value or action reference" msgid "Default value or action reference"
msgstr "" msgstr "Стандардна вредност или референца на акцијата"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_note_pad #: model:ir.module.module,description:base.module_note_pad
@ -4920,7 +4921,7 @@ msgstr "Шпански (HN) / Español (HN)"
#. module: base #. module: base
#: view:ir.sequence.type:0 #: view:ir.sequence.type:0
msgid "Sequence Type" msgid "Sequence Type"
msgstr "" msgstr "Тип на секвенца"
#. module: base #. module: base
#: view:base.language.export:0 #: view:base.language.export:0
@ -4973,7 +4974,7 @@ msgstr "Url"
#. module: base #. module: base
#: selection:ir.translation,type:0 #: selection:ir.translation,type:0
msgid "SQL Constraint" msgid "SQL Constraint"
msgstr "" msgstr "SQL ограничување"
#. module: base #. module: base
#: help:ir.ui.menu,groups_id:0 #: help:ir.ui.menu,groups_id:0
@ -5179,7 +5180,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.category,description:base.module_category_marketing #: model:ir.module.category,description:base.module_category_marketing
msgid "Helps you manage your marketing campaigns step by step." msgid "Helps you manage your marketing campaigns step by step."
msgstr "" msgstr "Ви помага да ги менаџирате вашите маркетинг кампањи чекор по чекор."
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -5324,7 +5325,7 @@ msgstr "Интеграција на Google Docs"
#. module: base #. module: base
#: help:ir.attachment,res_model:0 #: help:ir.attachment,res_model:0
msgid "The database object this attachment will be attached to" msgid "The database object this attachment will be attached to"
msgstr "" msgstr "Објектот на базата на податоци на кој овој прилог ќе биде прикачен"
#. module: base #. module: base
#: code:addons/base/ir/ir_fields.py:327 #: code:addons/base/ir/ir_fields.py:327
@ -5391,7 +5392,7 @@ msgstr ", или друг текст едитор"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_crm_partner_assign #: model:ir.module.module,shortdesc:base.module_crm_partner_assign
msgid "Partners Geo-Localization" msgid "Partners Geo-Localization"
msgstr "" msgstr "Географска локализација на партнери"
#. module: base #. module: base
#: model:res.country,name:base.ke #: model:res.country,name:base.ke
@ -5448,7 +5449,7 @@ msgstr "Перу"
#. module: base #. module: base
#: selection:ir.model.fields,on_delete:0 #: selection:ir.model.fields,on_delete:0
msgid "Set NULL" msgid "Set NULL"
msgstr "" msgstr "Подеси Нула"
#. module: base #. module: base
#: view:res.users:0 #: view:res.users:0
@ -5479,7 +5480,7 @@ msgstr ""
#. module: base #. module: base
#: help:ir.mail_server,smtp_user:0 #: help:ir.mail_server,smtp_user:0
msgid "Optional username for SMTP authentication" msgid "Optional username for SMTP authentication"
msgstr "" msgstr "Опционо корисничко име за SMTP автентификација"
#. module: base #. module: base
#: model:ir.model,name:base.model_ir_actions_actions #: model:ir.model,name:base.model_ir_actions_actions
@ -5552,6 +5553,7 @@ msgstr "Португалски / Português"
#, python-format #, python-format
msgid "Changing the storing system for field \"%s\" is not allowed." msgid "Changing the storing system for field \"%s\" is not allowed."
msgstr "" msgstr ""
"Поврзувањето на системот за складирање за полето \"%s\" не е дозволено."
#. module: base #. module: base
#: help:res.partner.bank,company_id:0 #: help:res.partner.bank,company_id:0
@ -5775,6 +5777,7 @@ msgstr "Име на сопственикот на сметката"
#, python-format #, python-format
msgid "Cannot rename column to %s, because that column already exists!" msgid "Cannot rename column to %s, because that column already exists!"
msgstr "" msgstr ""
"Не може да се преименува колоната во %s, бидејќи колоната веќе постои!"
#. module: base #. module: base
#: view:ir.attachment:0 #: view:ir.attachment:0
@ -5790,7 +5793,7 @@ msgstr "Децимален знак"
#: code:addons/orm.py:5319 #: code:addons/orm.py:5319
#, python-format #, python-format
msgid "Missing required value for the field '%s'." msgid "Missing required value for the field '%s'."
msgstr "" msgstr "Недостига потребната вредност за полето '%s'."
#. module: base #. module: base
#: view:ir.rule:0 #: view:ir.rule:0
@ -5845,7 +5848,7 @@ msgstr "Буве Остров"
#. module: base #. module: base
#: field:ir.model.constraint,type:0 #: field:ir.model.constraint,type:0
msgid "Constraint Type" msgid "Constraint Type"
msgstr "" msgstr "Тип на ограничување"
#. module: base #. module: base
#: field:res.company,child_ids:0 #: field:res.company,child_ids:0
@ -6172,7 +6175,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.model,name:base.model_ir_actions_act_window_view #: model:ir.model,name:base.model_ir_actions_act_window_view
msgid "ir.actions.act_window.view" msgid "ir.actions.act_window.view"
msgstr "" msgstr "ir.actions.act_window.view"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_web #: model:ir.module.module,shortdesc:base.module_web
@ -6183,7 +6186,7 @@ msgstr "Веб"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_lunch #: model:ir.module.module,shortdesc:base.module_lunch
msgid "Lunch Orders" msgid "Lunch Orders"
msgstr "" msgstr "Нарачки за ручек"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -6229,7 +6232,7 @@ msgstr "Етиопија"
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_authentication #: model:ir.module.category,name:base.module_category_authentication
msgid "Authentication" msgid "Authentication"
msgstr "" msgstr "Автентикација"
#. module: base #. module: base
#: model:res.country,name:base.sj #: model:res.country,name:base.sj
@ -6240,7 +6243,7 @@ msgstr ""
#: model:ir.model,name:base.model_ir_actions_wizard #: model:ir.model,name:base.model_ir_actions_wizard
#: selection:ir.ui.menu,action:0 #: selection:ir.ui.menu,action:0
msgid "ir.actions.wizard" msgid "ir.actions.wizard"
msgstr "" msgstr "ir.actions.wizard"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_web_kanban #: model:ir.module.module,shortdesc:base.module_web_kanban
@ -6252,7 +6255,7 @@ msgstr ""
#: view:ir.actions.report.xml:0 #: view:ir.actions.report.xml:0
#: view:ir.actions.server:0 #: view:ir.actions.server:0
msgid "Group By" msgid "Group By"
msgstr "" msgstr "Групирај по"
#. module: base #. module: base
#: view:res.config.installer:0 #: view:res.config.installer:0
@ -6303,7 +6306,7 @@ msgstr "Семтководство и финансии"
#. module: base #. module: base
#: field:ir.actions.server,write_id:0 #: field:ir.actions.server,write_id:0
msgid "Write Id" msgid "Write Id"
msgstr "" msgstr "Напиши ID"
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_product #: model:ir.ui.menu,name:base.menu_product
@ -6330,12 +6333,12 @@ msgstr ""
#: model:ir.module.category,name:base.module_category_usability #: model:ir.module.category,name:base.module_category_usability
#: view:res.users:0 #: view:res.users:0
msgid "Usability" msgid "Usability"
msgstr "" msgstr "Употребливост"
#. module: base #. module: base
#: field:ir.actions.act_window,domain:0 #: field:ir.actions.act_window,domain:0
msgid "Domain Value" msgid "Domain Value"
msgstr "" msgstr "Вредност на домен"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_association #: model:ir.module.module,description:base.module_association
@ -6386,7 +6389,7 @@ msgstr ""
#: code:addons/base/ir/workflow/workflow.py:99 #: code:addons/base/ir/workflow/workflow.py:99
#, python-format #, python-format
msgid "Operation forbidden" msgid "Operation forbidden"
msgstr "" msgstr "Забранета операција"
#. module: base #. module: base
#: view:ir.actions.server:0 #: view:ir.actions.server:0
@ -6444,7 +6447,7 @@ msgstr "Тип на банка"
#: code:addons/base/res/res_users.py:99 #: code:addons/base/res/res_users.py:99
#, python-format #, python-format
msgid "The name of the group can not start with \"-\"" msgid "The name of the group can not start with \"-\""
msgstr "" msgstr "Името на групата не може да почнува со \"-\""
#. module: base #. module: base
#: model:ir.actions.client,name:base.modules_act_cl #: model:ir.actions.client,name:base.modules_act_cl
@ -6484,7 +6487,7 @@ msgstr ""
#: view:workflow.activity:0 #: view:workflow.activity:0
#: field:workflow.activity,flow_start:0 #: field:workflow.activity,flow_start:0
msgid "Flow Start" msgid "Flow Start"
msgstr "" msgstr "Почеток на тек"
#. module: base #. module: base
#: model:ir.model,name:base.model_res_partner_title #: model:ir.model,name:base.model_res_partner_title
@ -6823,7 +6826,7 @@ msgstr ""
#: code:addons/orm.py:2247 #: code:addons/orm.py:2247
#, python-format #, python-format
msgid "There is no view of type '%s' defined for the structure!" msgid "There is no view of type '%s' defined for the structure!"
msgstr "" msgstr "Нема приказ од типот \\%s\\ дефинирано за структурата!"
#. module: base #. module: base
#: help:ir.values,key:0 #: help:ir.values,key:0
@ -6964,7 +6967,7 @@ msgstr ""
#. module: base #. module: base
#: sql_constraint:ir.rule:0 #: sql_constraint:ir.rule:0
msgid "Rule must have at least one checked access right !" msgid "Rule must have at least one checked access right !"
msgstr "" msgstr "Правилото мора да има барем едно означено право за пристап !"
#. module: base #. module: base
#: field:res.partner.bank.type,format_layout:0 #: field:res.partner.bank.type,format_layout:0
@ -7402,7 +7405,7 @@ msgstr "Датотеката од модулот е успешно увезен
#: view:ir.model.constraint:0 #: view:ir.model.constraint:0
#: model:ir.ui.menu,name:base.ir_model_constraint_menu #: model:ir.ui.menu,name:base.ir_model_constraint_menu
msgid "Model Constraints" msgid "Model Constraints"
msgstr "" msgstr "Ограничувања на модулот"
#. module: base #. module: base
#: model:ir.actions.act_window,name:base.action_workflow_transition_form #: model:ir.actions.act_window,name:base.action_workflow_transition_form
@ -7415,7 +7418,7 @@ msgstr "Транзиции"
#: model:ir.module.module,shortdesc:base.module_hr_timesheet #: model:ir.module.module,shortdesc:base.module_hr_timesheet
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet #: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet
msgid "Timesheets" msgid "Timesheets"
msgstr "" msgstr "Временски таблици"
#. module: base #. module: base
#: help:ir.values,company_id:0 #: help:ir.values,company_id:0
@ -7449,6 +7452,9 @@ msgid ""
"password, otherwise leave empty. After a change of password, the user has to " "password, otherwise leave empty. After a change of password, the user has to "
"login again." "login again."
msgstr "" msgstr ""
"Специфицирајте вредност единствено кога креирате корисник или ја менувате "
"корисничката лозинка, во спротивно оставете празно. После промената на "
"лозинката, корисникот треба повторно да се најави."
#. module: base #. module: base
#: model:res.country,name:base.so #: model:res.country,name:base.so
@ -7613,7 +7619,7 @@ msgstr "на"
#. module: base #. module: base
#: view:ir.property:0 #: view:ir.property:0
msgid "Parameters that are used by all resources." msgid "Parameters that are used by all resources."
msgstr "" msgstr "Параметри кои се користат од сите расурси."
#. module: base #. module: base
#: model:res.country,name:base.mz #: model:res.country,name:base.mz
@ -15713,7 +15719,7 @@ msgstr "Северна Кореа"
#. module: base #. module: base
#: selection:ir.actions.server,state:0 #: selection:ir.actions.server,state:0
msgid "Create Object" msgid "Create Object"
msgstr "" msgstr "Креирај објект"
#. module: base #. module: base
#: model:res.country,name:base.ss #: model:res.country,name:base.ss
@ -15728,7 +15734,7 @@ msgstr "Контекст"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_sale_mrp #: model:ir.module.module,shortdesc:base.module_sale_mrp
msgid "Sales and MRP Management" msgid "Sales and MRP Management"
msgstr "" msgstr "Управување со продажби и производство"
#. module: base #. module: base
#: model:ir.actions.act_window,help:base.action_partner_form #: model:ir.actions.act_window,help:base.action_partner_form
@ -15742,6 +15748,14 @@ msgid ""
" </p>\n" " </p>\n"
" " " "
msgstr "" msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
"Кликнете за да додадете контакт во вашиот именик.\n"
"</p><p>\n"
"OpenERP ви помага полесно да ги следите сите активности поврзани со\n"
"купувач; дискусии, историја на бизнис можности,\n"
"документи, итн.\n"
"</p>\n"
" "
#. module: base #. module: base
#: model:res.partner.category,name:base.res_partner_category_2 #: model:res.partner.category,name:base.res_partner_category_2
@ -15769,6 +15783,8 @@ msgid ""
"Used to select automatically the right address according to the context in " "Used to select automatically the right address according to the context in "
"sales and purchases documents." "sales and purchases documents."
msgstr "" msgstr ""
"Се користи за автоматски да се избере вистинската адреса според контекстот "
"во документите за продажби и набавки."
#. module: base #. module: base
#: model:ir.module.module,description:base.module_purchase_analytic_plans #: model:ir.module.module,description:base.module_purchase_analytic_plans
@ -15801,7 +15817,7 @@ msgstr "Руски / русский язык"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_auth_signup #: model:ir.module.module,shortdesc:base.module_auth_signup
msgid "Signup" msgid "Signup"
msgstr "" msgstr "Регистрација"
#~ msgid "Code (eg:en__US)" #~ msgid "Code (eg:en__US)"
#~ msgstr "Код (пр. en_US)" #~ msgstr "Код (пр. en_US)"

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:05+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:16+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -609,8 +609,8 @@ msgstr ""
"===============================================\n" "===============================================\n"
"\n" "\n"
"OpenERP-д шинжилгээний дансд нь ерөнхий дансдадтай холбогддог боловч \n" "OpenERP-д шинжилгээний дансд нь ерөнхий дансдадтай холбогддог боловч \n"
"бүрэн үл хамаарах байдаг. Иймээс ерөнхий санхүүгийн данс эсрэг тал нь болгох " "бүрэн үл хамаарах байдаг. Иймээс ерөнхий санхүүгийн данс харьцах тал нь "
"албагүй \n" "болгох албагүй \n"
"бөгөөд төрөл бүрийн шинжилгээний үйлдлүүдийг оруулж болно.\n" "бөгөөд төрөл бүрийн шинжилгээний үйлдлүүдийг оруулж болно.\n"
" " " "
@ -919,7 +919,7 @@ msgstr "Иордан"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_hr #: model:ir.module.module,shortdesc:base.module_l10n_hr
msgid "Croatia - RRIF 2012 COA" msgid "Croatia - RRIF 2012 COA"
msgstr "" msgstr "Croatia - RRIF 2012 COA"
#. module: base #. module: base
#: help:ir.cron,nextcall:0 #: help:ir.cron,nextcall:0
@ -2373,9 +2373,9 @@ msgstr ""
"\n" "\n"
" * Дансны Мод, Татвар, Татварын Код, Журналь, Дансны Үлгэр, Шинжилгээний " " * Дансны Мод, Татвар, Татварын Код, Журналь, Дансны Үлгэр, Шинжилгээний "
"Дансны Мод, Шинжилгээний Журналиудад олон хэлийг нэмдэг.\n" "Дансны Мод, Шинжилгээний Журналиудад олон хэлийг нэмдэг.\n"
" * Тохируулах харилцах нь дараахыг өөрчилдөг.\n" " * Тохируулах харилцах цонх нь дараахыг өөрчилдөг.\n"
" - Үлгэрээс авагдсан Дансны Модт, Татвар, Татварын Код, Мөчлөг зэрэгт " " - Үлгэрээс авагдсан Дансны Мод, Татвар, Татварын Код, Санхүүгийн "
"орчуулгыг хуулна.\n" "харгалзаа зэрэгт орчуулгыг хуулна.\n"
" " " "
#. module: base #. module: base
@ -2564,7 +2564,7 @@ msgstr "Солонгос хэл (KP) / 한국어 (KP)"
#. module: base #. module: base
#: model:res.country,name:base.ax #: model:res.country,name:base.ax
msgid "Åland Islands" msgid "Åland Islands"
msgstr "" msgstr "Аландийн Арлууд"
#. module: base #. module: base
#: field:res.company,logo:0 #: field:res.company,logo:0
@ -4210,22 +4210,22 @@ msgstr ""
"\n" "\n"
"Энэ модуль нь төлөвлөлт, захиалга, нөөцлөлт, бүтээгдэхүүний түүхий эд, дэд " "Энэ модуль нь төлөвлөлт, захиалга, нөөцлөлт, бүтээгдэхүүний түүхий эд, дэд "
"хэсгүүдээс угсрах зэрэгийг үйлдвэрлэлийн процессыг хамардаг. Түүнчлэн " "хэсгүүдээс угсрах зэрэгийг үйлдвэрлэлийн процессыг хамардаг. Түүнчлэн "
"бүтээгдэхүүний орц, жор, дамжлагын хүний нөөц, машин тоног төхөөрөмж " "бүтээгдэхүүний орц, дамжлагын хүний нөөц, машин тоног төхөөрөмж зэрэгийг "
"зэрэгийг таамагладаг.\n" "таамагладаг.\n"
"\n" "\n"
"Түүхийн эд нөөцлөл, хангамж, үйлчилгээний бүрэн төлөвлөлтийг дэмждэг. " "Түүхийн эд нөөцлөл, хангамж, үйлчилгээний бүрэн төлөвлөлтийг дэмждэг. "
"Үйлчилгээ нь програм хангамжийн бусад бүх хэсэгтэй бүрэн уялддаг. Тухайлбал, " "Үйлчилгээ нь програм хангамжийн бусад бүх хэсэгтэй бүрэн уялддаг. Тухайлбал, "
"үйлдвэрлэлийг явуулахдаа жор дотор нь дэд гэрээгээр авах үйлчилгээг " "үйлдвэрлэлийг явуулахдаа орц дотор нь дэд гэрээгээр авах үйлчилгээг "
"тодорхойлж өгөх боломжтой байдаг.\n" "тодорхойлж өгөх боломжтой байдаг.\n"
"\n" "\n"
"Онцлог:\n" "Онцлог:\n"
"---------\n" "---------\n"
" * Хадгалуулах / Захиалуулах (мөр бүрээр)\n" " * Хадгалуулах / Захиалуулах (мөр бүрээр)\n"
" * Олон түвшний жор, хязгааргүй\n" " * Олон түвшний орц, хязгааргүй\n"
" * Олон түвшний урсгал, хязгааргүй\n" " * Олон түвшний урсгал, хязгааргүй\n"
" * Шинжилгээний санхүүтэй уялдсан үйлдвэрлэлийн урсгал болон дамжлага\n" " * Шинжилгээний санхүүтэй уялдсан үйлдвэрлэлийн урсгал болон дамжлага\n"
" * Тогтол хугацааны тооцоолол / Яг Хугацаандааа модуль\n" " * Тогтол хугацааны тооцоолол / Яг Хугацаандааа модуль\n"
" * Жоруудыг бүтцээр нь, завсрынхаар нь гэх мэт гүйцэд шинжилгээ, үзлэг\n" " * Орцуудыг бүтцээр нь, завсрынхаар нь гэх мэт гүйцэд шинжилгээ, үзлэг\n"
"\n" "\n"
"Үйлдвэрлэлийн модулийн Хянах самбар / Тайлангууд нь дараах зүйлсийг " "Үйлдвэрлэлийн модулийн Хянах самбар / Тайлангууд нь дараах зүйлсийг "
"агуулдаг:\n" "агуулдаг:\n"
@ -6404,7 +6404,7 @@ msgstr "Ачаалах Тохиргооны Визард"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_mrp #: model:ir.module.module,summary:base.module_mrp
msgid "Manufacturing Orders, Bill of Materials, Routing" msgid "Manufacturing Orders, Bill of Materials, Routing"
msgstr "Үйлдвэрлэлийн захиалгууд, Жор, Дамжлагын цуваа" msgstr "Үйлдвэрлэлийн захиалгууд, Орц, Шугам"
#. module: base #. module: base
#: field:ir.attachment,name:0 #: field:ir.attachment,name:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:05+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:17+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:02+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:13+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:09+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:05+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:17+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:05+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:17+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

File diff suppressed because it is too large Load Diff

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:06+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:17+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -882,7 +882,7 @@ msgstr ""
#. module: base #. module: base
#: help:ir.cron,nextcall:0 #: help:ir.cron,nextcall:0
msgid "Next planned execution date for this job." msgid "Next planned execution date for this job."
msgstr "Следующая запланированная дата выполнения для данной работы." msgstr "Следующая дата выполнения задачи планировщиком."
#. module: base #. module: base
#: model:ir.model,name:base.model_ir_ui_view #: model:ir.model,name:base.model_ir_ui_view
@ -11026,7 +11026,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
#, python-format #, python-format
msgid "Apply Schedule Upgrade" msgid "Apply Schedule Upgrade"
msgstr "Применить запланированные обновления" msgstr "Выполнить обновление"
#. module: base #. module: base
#: view:workflow.activity:0 #: view:workflow.activity:0
@ -14840,7 +14840,7 @@ msgstr "Файл веб-значка"
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade #: model:ir.ui.menu,name:base.menu_view_base_module_upgrade
msgid "Apply Scheduled Upgrades" msgid "Apply Scheduled Upgrades"
msgstr "Выполнить запланированные обновления" msgstr "Выполнить обновления"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_sale_journal #: model:ir.module.module,shortdesc:base.module_sale_journal

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:06+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:06+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:00+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:12+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:06+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:10+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:21+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:18+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing
@ -25,7 +25,7 @@ msgid ""
" " " "
msgstr "" msgstr ""
"\n" "\n"
"Çek yazımı ve basımı için modül.\n" "Çek Yazma ve Bastırma Modülü.\n"
"================================================\n" "================================================\n"
" " " "
@ -37,7 +37,7 @@ msgstr "Azize Helen"
#. module: base #. module: base
#: view:ir.actions.report.xml:0 #: view:ir.actions.report.xml:0
msgid "Other Configuration" msgid "Other Configuration"
msgstr "Diğer Ayarlar" msgstr "Diğer Yapılandırmalar"
#. module: base #. module: base
#: selection:ir.property,type:0 #: selection:ir.property,type:0
@ -73,7 +73,7 @@ msgstr "Boşluk Yok"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
msgid "Hungarian / Magyar" msgid "Hungarian / Magyar"
msgstr "Macarca / Magyar" msgstr "Macarca"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -103,7 +103,7 @@ msgstr "Hindistan Bordro"
#: help:ir.cron,model:0 #: help:ir.cron,model:0
msgid "" msgid ""
"Model name on which the method to be called is located, e.g. 'res.partner'." "Model name on which the method to be called is located, e.g. 'res.partner'."
msgstr "" msgstr "Çağrılacak yöntemin bulunduğu model adı, örn. 'res.partner'"
#. module: base #. module: base
#: view:ir.module.module:0 #: view:ir.module.module:0
@ -125,6 +125,17 @@ msgid ""
" * Product Attributes\n" " * Product Attributes\n"
" " " "
msgstr "" msgstr ""
"\n"
"Ürün kartına üretici ve öznitelikleri ekleyecek bir modül.\n"
"====================================================================\n"
"\n"
"Şimdi bir ürün için aşağıdakileri tanımlayabilirsiniz:\n"
"-----------------------------------------------\n"
" * Üretici\n"
" * Üretici Ürün Adı\n"
" * Üretici Ürün Kodu\n"
" * Ürün Öznitelikleri\n"
" "
#. module: base #. module: base
#: field:ir.actions.client,params:0 #: field:ir.actions.client,params:0
@ -154,6 +165,9 @@ msgid ""
"specified as a Python expression defining a list of triplets. For example: " "specified as a Python expression defining a list of triplets. For example: "
"[('color','=','red')]" "[('color','=','red')]"
msgstr "" msgstr ""
"ilişki alanlarında olası değerleri sınırlayacak seçmeli etki alanı adı, bir "
"üçlü liste olarak tanımlanan bir Python ifadesi olarak belirlenmiştir. "
"Örneğin: [('renk','=','kırmızı')]"
#. module: base #. module: base
#: field:res.partner,ref:0 #: field:res.partner,ref:0
@ -194,6 +208,14 @@ msgid ""
"revenue\n" "revenue\n"
"reports." "reports."
msgstr "" msgstr ""
"\n"
"Giderlerden, Zaman Çizelgesi Kayıtlarından Faturalarınızı oluşturun.\n"
"========================================================\n"
"\n"
"Maliyetlere göre fatura oluşturan modül (insan kaynaklar, giderler, ...).\n"
"\n"
"Analitik hesaplarda fiyat listeleri tanımlayabilirsiniz, bazı kuramsal gelir "
"raporları yapabilirsiniz."
#. module: base #. module: base
#: code:addons/base/ir/ir_sequence.py:104 #: code:addons/base/ir/ir_sequence.py:104
@ -228,7 +250,7 @@ msgstr "ir.ui.view.custom"
#: code:addons/base/ir/ir_model.py:375 #: code:addons/base/ir/ir_model.py:375
#, python-format #, python-format
msgid "Renaming sparse field \"%s\" is not allowed" msgid "Renaming sparse field \"%s\" is not allowed"
msgstr "" msgstr "\"%s\" boş alanının yeniden adlandırılmasına izin verilmez"
#. module: base #. module: base
#: model:res.country,name:base.sz #: model:res.country,name:base.sz
@ -270,7 +292,7 @@ msgstr "Eskimo / ᐃᓄᒃᑎᑐᑦ"
#. module: base #. module: base
#: model:res.groups,name:base.group_multi_currency #: model:res.groups,name:base.group_multi_currency
msgid "Multi Currencies" msgid "Multi Currencies"
msgstr "Çoklu ParaBirimi" msgstr "Çok Para Birimli"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_cl #: model:ir.module.module,description:base.module_l10n_cl
@ -282,6 +304,12 @@ msgid ""
"\n" "\n"
" " " "
msgstr "" msgstr ""
"\n"
"Şili hesap planı ve yerel vergi.\n"
"==============================================\n"
"Plan contable chileno e impuestos de acuerdo a disposiciones vigentes\n"
"\n"
" "
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_sale #: model:ir.module.module,shortdesc:base.module_sale
@ -293,7 +321,7 @@ msgstr "Satış Yönetimi"
msgid "" msgid ""
"The internal user that is in charge of communicating with this contact if " "The internal user that is in charge of communicating with this contact if "
"any." "any."
msgstr "" msgstr "Eğer varsa, bu kişi ile iletişime görevlendirilmiş iç kullanıcı."
#. module: base #. module: base
#: view:res.partner:0 #: view:res.partner:0
@ -321,6 +349,8 @@ msgid ""
"Database ID of record to open in form view, when ``view_mode`` is set to " "Database ID of record to open in form view, when ``view_mode`` is set to "
"'form' only" "'form' only"
msgstr "" msgstr ""
"\"view_mode\" yalnızca 'form' olarak ayarlandığındaki görünüm formında "
"açılacak kaydın Veritabanı ID i"
#. module: base #. module: base
#: help:ir.values,key2:0 #: help:ir.values,key2:0
@ -332,6 +362,12 @@ msgid ""
" - tree_but_open\n" " - tree_but_open\n"
"For defaults, an optional condition" "For defaults, an optional condition"
msgstr "" msgstr ""
"İşlemler için, olası işlem yuvaları: \n"
" - client_action_multi\n"
" - client_print_multi\n"
" - client_action_relate\n"
" - tree_but_open\n"
"Varsayılanlar için, seçmeli bir koşul"
#. module: base #. module: base
#: sql_constraint:res.lang:0 #: sql_constraint:res.lang:0
@ -570,6 +606,8 @@ msgid ""
"* Use emails to automatically confirm and send acknowledgements for any " "* Use emails to automatically confirm and send acknowledgements for any "
"event registration\n" "event registration\n"
msgstr "" msgstr ""
"\n"
"Etkinliklerin organizasyonu ve yönetimi\n"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -659,7 +697,7 @@ msgstr "Palau"
#. module: base #. module: base
#: view:res.partner:0 #: view:res.partner:0
msgid "Sales & Purchases" msgid "Sales & Purchases"
msgstr "Satışlar & SatınAlmalar" msgstr "Satışlar ve Satınalmalar"
#. module: base #. module: base
#: view:ir.translation:0 #: view:ir.translation:0
@ -1541,7 +1579,7 @@ msgstr ""
#: model:ir.module.category,name:base.module_category_purchase_management #: model:ir.module.category,name:base.module_category_purchase_management
#: model:ir.ui.menu,name:base.menu_purchase_root #: model:ir.ui.menu,name:base.menu_purchase_root
msgid "Purchases" msgid "Purchases"
msgstr "SatınAlma" msgstr "Satınalma"
#. module: base #. module: base
#: model:res.country,name:base.md #: model:res.country,name:base.md
@ -1854,7 +1892,7 @@ msgstr "Yükle"
#. module: base #. module: base
#: field:res.currency,accuracy:0 #: field:res.currency,accuracy:0
msgid "Computational Accuracy" msgid "Computational Accuracy"
msgstr "Hesapsal Doğruluk" msgstr "Hesaplama Doğruluğu"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_at #: model:ir.module.module,description:base.module_l10n_at
@ -1947,7 +1985,7 @@ msgstr "Okuma Erişimi"
#. module: base #. module: base
#: help:ir.attachment,res_id:0 #: help:ir.attachment,res_id:0
msgid "The record id this is attached to" msgid "The record id this is attached to"
msgstr "" msgstr "Kayıt buna eklenmiştir"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_share #: model:ir.module.module,description:base.module_share
@ -3167,7 +3205,7 @@ msgstr ""
#. module: base #. module: base
#: field:res.company,rml_header1:0 #: field:res.company,rml_header1:0
msgid "Company Tagline" msgid "Company Tagline"
msgstr "Firma Slogan" msgstr "Firma Sloganı"
#. module: base #. module: base
#: code:addons/base/res/res_users.py:674 #: code:addons/base/res/res_users.py:674
@ -3446,7 +3484,7 @@ msgstr "Web ikon dosyası (hover)"
#. module: base #. module: base
#: help:res.currency,name:0 #: help:res.currency,name:0
msgid "Currency Code (ISO 4217)" msgid "Currency Code (ISO 4217)"
msgstr "ParaBirimi Kodu (ISO 4217)" msgstr "ParaNBirimi Kodu (ISO 4217)"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract #: model:ir.module.module,shortdesc:base.module_hr_contract
@ -4307,7 +4345,7 @@ msgstr "Menü :"
#. module: base #. module: base
#: selection:ir.model.fields,state:0 #: selection:ir.model.fields,state:0
msgid "Base Field" msgid "Base Field"
msgstr "Taban Alan" msgstr "Temel Alan"
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts
@ -5558,7 +5596,7 @@ msgstr "Yapılandırma Sihirbazı'nı başlatın"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_mrp #: model:ir.module.module,summary:base.module_mrp
msgid "Manufacturing Orders, Bill of Materials, Routing" msgid "Manufacturing Orders, Bill of Materials, Routing"
msgstr "Üretim Siparişler, Malzeme Listesi, Yönlendirme" msgstr "Üretim Emirleri, Ürün Ağaçları, Rotalar"
#. module: base #. module: base
#: field:ir.attachment,name:0 #: field:ir.attachment,name:0
@ -6371,7 +6409,7 @@ msgstr "Arttırma sayı sıfır olamaz."
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_cancel #: model:ir.module.module,shortdesc:base.module_account_cancel
msgid "Cancel Journal Entries" msgid "Cancel Journal Entries"
msgstr "Yevmiye Girişleri İptalEt" msgstr "Günlük Kaydı İptal"
#. module: base #. module: base
#: field:res.partner,tz_offset:0 #: field:res.partner,tz_offset:0
@ -6664,7 +6702,7 @@ msgstr "Sudan"
#: field:res.currency.rate,currency_rate_type_id:0 #: field:res.currency.rate,currency_rate_type_id:0
#: view:res.currency.rate.type:0 #: view:res.currency.rate.type:0
msgid "Currency Rate Type" msgid "Currency Rate Type"
msgstr "ParaBirimi Kur Türü" msgstr "Para Birimi Kur Türü"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_fr #: model:ir.module.module,description:base.module_l10n_fr
@ -6743,7 +6781,7 @@ msgstr "İsrail"
#: code:addons/base/res/res_config.py:444 #: code:addons/base/res/res_config.py:444
#, python-format #, python-format
msgid "Cannot duplicate configuration!" msgid "Cannot duplicate configuration!"
msgstr "" msgstr "Yapılandırmasını çoğaltması yamazsınız!"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_syscohada #: model:ir.module.module,shortdesc:base.module_l10n_syscohada
@ -6758,7 +6796,7 @@ msgstr "Bazen BIC ya da SWIFT olarak geçer."
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_in #: model:ir.module.module,shortdesc:base.module_l10n_in
msgid "Indian - Accounting" msgid "Indian - Accounting"
msgstr "" msgstr "Hindistan Hesapplanı"
#. module: base #. module: base
#: field:res.lang,time_format:0 #: field:res.lang,time_format:0
@ -6860,7 +6898,7 @@ msgstr "Dış ID"
#. module: base #. module: base
#: help:res.currency.rate,rate:0 #: help:res.currency.rate,rate:0
msgid "The rate of the currency to the currency of rate 1" msgid "The rate of the currency to the currency of rate 1"
msgstr "Parabirimi kur oranı (1'e göre)" msgstr "Parabirimi kur oranı (kur oranı 1 e göre)"
#. module: base #. module: base
#: model:res.country,name:base.uk #: model:res.country,name:base.uk
@ -6979,7 +7017,7 @@ msgstr ""
#. module: base #. module: base
#: selection:res.currency,position:0 #: selection:res.currency,position:0
msgid "After Amount" msgid "After Amount"
msgstr "Tutar Sonra" msgstr "Tutardan Sonra"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -6999,6 +7037,7 @@ msgstr ""
#: model:res.groups,comment:base.group_hr_user #: model:res.groups,comment:base.group_hr_user
msgid "the user will be able to approve document created by employees." msgid "the user will be able to approve document created by employees."
msgstr "" msgstr ""
"Kullanıcı çalışanlar tarafından oluşturulan belgeyi onaylaması mümkün."
#. module: base #. module: base
#: field:ir.ui.menu,needaction_enabled:0 #: field:ir.ui.menu,needaction_enabled:0
@ -7165,7 +7204,7 @@ msgstr "Fed. Eyalet"
#. module: base #. module: base
#: field:ir.actions.server,copy_object:0 #: field:ir.actions.server,copy_object:0
msgid "Copy Of" msgid "Copy Of"
msgstr "kopyası" msgstr "Kopyası"
#. module: base #. module: base
#: field:ir.model.data,display_name:0 #: field:ir.model.data,display_name:0
@ -7206,7 +7245,7 @@ msgstr "Eyalet Kodu"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_multilang #: model:ir.module.module,shortdesc:base.module_l10n_multilang
msgid "Multi Language Chart of Accounts" msgid "Multi Language Chart of Accounts"
msgstr "Çok dilli Hesap Planları" msgstr "Çok Dilli Hesap Planları"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_gt #: model:ir.module.module,description:base.module_l10n_gt
@ -7236,7 +7275,7 @@ msgstr "Tercüme edilebilir"
#. module: base #. module: base
#: help:base.language.import,code:0 #: help:base.language.import,code:0
msgid "ISO Language and Country code, e.g. en_US" msgid "ISO Language and Country code, e.g. en_US"
msgstr "ISO Dil ve Ülke kodu, örnek en_US" msgstr "ISO Dil ve Ülke kodu, örn. en_US"
#. module: base #. module: base
#: model:res.country,name:base.vn #: model:res.country,name:base.vn
@ -7261,7 +7300,7 @@ msgstr ""
#. module: base #. module: base
#: view:ir.property:0 #: view:ir.property:0
msgid "Parameters that are used by all resources." msgid "Parameters that are used by all resources."
msgstr "" msgstr "Tüm kaynaklar tarafından kullanılan parametreler."
#. module: base #. module: base
#: model:res.country,name:base.mz #: model:res.country,name:base.mz
@ -7860,7 +7899,7 @@ msgstr "Kanada"
#. module: base #. module: base
#: view:base.language.export:0 #: view:base.language.export:0
msgid "Launchpad" msgid "Launchpad"
msgstr "" msgstr "Launchpad"
#. module: base #. module: base
#: help:res.currency.rate,currency_rate_type_id:0 #: help:res.currency.rate,currency_rate_type_id:0
@ -7954,7 +7993,7 @@ msgstr "Banka türü alanları"
#. module: base #. module: base
#: constraint:ir.rule:0 #: constraint:ir.rule:0
msgid "Rules can not be applied on Transient models." msgid "Rules can not be applied on Transient models."
msgstr "" msgstr "Kurallar Geçiş modellerde uygulanamaz."
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -8188,7 +8227,7 @@ msgstr "Giriş Sıralama Numaraları"
#. module: base #. module: base
#: view:base.language.export:0 #: view:base.language.export:0
msgid "POEdit" msgid "POEdit"
msgstr "" msgstr "POEdit"
#. module: base #. module: base
#: view:ir.values:0 #: view:ir.values:0
@ -8283,7 +8322,7 @@ msgstr "Proje Yönetimi"
#. module: base #. module: base
#: view:ir.module.module:0 #: view:ir.module.module:0
msgid "Cancel Uninstall" msgid "Cancel Uninstall"
msgstr "Kaldırmayı İptal Et" msgstr "Kaldırma İptal"
#. module: base #. module: base
#: view:res.bank:0 #: view:res.bank:0
@ -8531,7 +8570,7 @@ msgstr "workflow.transition"
#. module: base #. module: base
#: view:res.lang:0 #: view:res.lang:0
msgid "%a - Abbreviated weekday name." msgid "%a - Abbreviated weekday name."
msgstr "%a - Günün kısaltması" msgstr "%a - Gün kısaltması"
#. module: base #. module: base
#: view:ir.ui.menu:0 #: view:ir.ui.menu:0
@ -8610,6 +8649,7 @@ msgstr "Açıklama HTML"
#: help:res.groups,implied_ids:0 #: help:res.groups,implied_ids:0
msgid "Users of this group automatically inherit those groups" msgid "Users of this group automatically inherit those groups"
msgstr "" msgstr ""
"Bu grubun kullanıcılar otomatik olarak bu grup özelliklerinini devralır"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_note #: model:ir.module.module,summary:base.module_note
@ -8757,7 +8797,7 @@ msgstr "Slovence / Slovenščina"
#. module: base #. module: base
#: field:res.currency,position:0 #: field:res.currency,position:0
msgid "Symbol Position" msgid "Symbol Position"
msgstr "Sembol Pozisyonu" msgstr "Simge Konumu"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_de #: model:ir.module.module,description:base.module_l10n_de
@ -8951,7 +8991,7 @@ msgstr "Ülkenin tam adı."
#. module: base #. module: base
#: selection:ir.actions.server,state:0 #: selection:ir.actions.server,state:0
msgid "Iteration" msgid "Iteration"
msgstr "Yineleme" msgstr "Yenileme"
#. module: base #. module: base
#: code:addons/orm.py:4246 #: code:addons/orm.py:4246
@ -9290,7 +9330,7 @@ msgstr ""
#. module: base #. module: base
#: view:ir.module.category:0 #: view:ir.module.category:0
msgid "Module Category" msgid "Module Category"
msgstr "Modül Kategori" msgstr "Modül Kategorisi"
#. module: base #. module: base
#: model:res.country,name:base.us #: model:res.country,name:base.us
@ -9422,7 +9462,7 @@ msgstr "Özel Kısayollar"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_si #: model:ir.module.module,shortdesc:base.module_l10n_si
msgid "Slovenian - Accounting" msgid "Slovenian - Accounting"
msgstr "" msgstr "Slovenya - Hesapplananı"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_cancel #: model:ir.module.module,description:base.module_account_cancel
@ -9512,7 +9552,7 @@ msgstr "Firmalar"
#. module: base #. module: base
#: help:res.currency,symbol:0 #: help:res.currency,symbol:0
msgid "Currency sign, to be used when printing amounts." msgid "Currency sign, to be used when printing amounts."
msgstr "Parabirimi Kuru işareti, (Miktarları basarken kullanmak için)" msgstr "Para Birimi işareti, tutarları yazarken kullanılan"
#. module: base #. module: base
#: view:res.lang:0 #: view:res.lang:0
@ -9736,7 +9776,7 @@ msgstr "Almanya"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_auth_oauth #: model:ir.module.module,shortdesc:base.module_auth_oauth
msgid "OAuth2 Authentication" msgid "OAuth2 Authentication"
msgstr "" msgstr "OAuth2 Authentication"
#. module: base #. module: base
#: view:workflow:0 #: view:workflow:0
@ -10024,7 +10064,7 @@ msgstr "Dakika"
#. module: base #. module: base
#: view:res.currency:0 #: view:res.currency:0
msgid "Display" msgid "Display"
msgstr "Görüntüle" msgstr "Görüntü"
#. module: base #. module: base
#: model:res.groups,name:base.group_multi_company #: model:res.groups,name:base.group_multi_company
@ -10126,7 +10166,7 @@ msgstr "Aralık Birimi"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_portal_stock #: model:ir.module.module,shortdesc:base.module_portal_stock
msgid "Portal Stock" msgid "Portal Stock"
msgstr "" msgstr "Portal Stok"
#. module: base #. module: base
#: field:workflow.activity,kind:0 #: field:workflow.activity,kind:0
@ -10149,7 +10189,7 @@ msgstr "Terimleri Senkronize Et"
#. module: base #. module: base
#: field:res.lang,thousands_sep:0 #: field:res.lang,thousands_sep:0
msgid "Thousands Separator" msgid "Thousands Separator"
msgstr "Binler Ayracı" msgstr "Bin Ayracı"
#. module: base #. module: base
#: field:res.request,create_date:0 #: field:res.request,create_date:0
@ -10208,7 +10248,7 @@ msgstr "res.request"
#. module: base #. module: base
#: field:res.partner,image_medium:0 #: field:res.partner,image_medium:0
msgid "Medium-sized image" msgid "Medium-sized image"
msgstr "" msgstr "Orta ölçekli resim"
#. module: base #. module: base
#: view:ir.model:0 #: view:ir.model:0
@ -10422,7 +10462,7 @@ msgstr "Bu şirketle ilişkili banka hesapları"
#: model:ir.ui.menu,name:base.next_id_64 #: model:ir.ui.menu,name:base.next_id_64
#: view:res.users:0 #: view:res.users:0
msgid "Sales" msgid "Sales"
msgstr "Satışlar" msgstr "Satış"
#. module: base #. module: base
#: field:ir.actions.server,child_ids:0 #: field:ir.actions.server,child_ids:0
@ -10499,7 +10539,7 @@ msgstr "Yapılacak"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_portal_hr_employees #: model:ir.module.module,shortdesc:base.module_portal_hr_employees
msgid "Portal HR employees" msgid "Portal HR employees"
msgstr "" msgstr "Portal İK Personeller"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -10617,6 +10657,7 @@ msgstr ""
msgid "" msgid ""
"Please contact your system administrator if you think this is an error." "Please contact your system administrator if you think this is an error."
msgstr "" msgstr ""
"Bunun bir hata olduğunu düşünüyorsanız lütfen sistem yöneticinize başvurun."
#. module: base #. module: base
#: code:addons/base/module/module.py:545 #: code:addons/base/module/module.py:545
@ -10995,7 +11036,7 @@ msgstr ""
#. module: base #. module: base
#: field:ir.attachment,res_model:0 #: field:ir.attachment,res_model:0
msgid "Resource Model" msgid "Resource Model"
msgstr "" msgstr "Kayanak Model"
#. module: base #. module: base
#: code:addons/custom.py:555 #: code:addons/custom.py:555
@ -11298,12 +11339,12 @@ msgstr "Porto Riko"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_web_tests_demo #: model:ir.module.module,shortdesc:base.module_web_tests_demo
msgid "Demonstration of web/javascript tests" msgid "Demonstration of web/javascript tests"
msgstr "" msgstr "Demonstration of web/javascript tests"
#. module: base #. module: base
#: field:workflow.transition,signal:0 #: field:workflow.transition,signal:0
msgid "Signal (Button Name)" msgid "Signal (Button Name)"
msgstr "" msgstr "Sinyal Buton Adı)"
#. module: base #. module: base
#: view:ir.actions.act_window:0 #: view:ir.actions.act_window:0
@ -11555,7 +11596,7 @@ msgstr "A4"
#. module: base #. module: base
#: view:res.config.installer:0 #: view:res.config.installer:0
msgid "Configuration Installer" msgid "Configuration Installer"
msgstr "" msgstr "Yapılandırma Yükleyicisi"
#. module: base #. module: base
#: field:res.partner,customer:0 #: field:res.partner,customer:0
@ -11645,13 +11686,13 @@ msgstr ""
#. module: base #. module: base
#: model:ir.model,name:base.model_ir_fields_converter #: model:ir.model,name:base.model_ir_fields_converter
msgid "ir.fields.converter" msgid "ir.fields.converter"
msgstr "" msgstr "ir.fields.converter"
#. module: base #. module: base
#: code:addons/base/res/res_partner.py:439 #: code:addons/base/res/res_partner.py:439
#, python-format #, python-format
msgid "Couldn't create contact without email address !" msgid "Couldn't create contact without email address !"
msgstr "" msgstr "E-posta adresi olmayan kontak oluşturmak olamazdı!"
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_manufacturing #: model:ir.module.category,name:base.module_category_manufacturing
@ -11668,17 +11709,17 @@ msgstr "Komorlar"
#. module: base #. module: base
#: view:ir.module.module:0 #: view:ir.module.module:0
msgid "Cancel Install" msgid "Cancel Install"
msgstr "Yükleme İptal" msgstr "Kurulum İptal"
#. module: base #. module: base
#: model:ir.model,name:base.model_ir_model_relation #: model:ir.model,name:base.model_ir_model_relation
msgid "ir.model.relation" msgid "ir.model.relation"
msgstr "" msgstr "ir.model.relation"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_check_writing #: model:ir.module.module,shortdesc:base.module_account_check_writing
msgid "Check Writing" msgid "Check Writing"
msgstr "" msgstr "Çek Yazma"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_plugin_outlook #: model:ir.module.module,description:base.module_plugin_outlook
@ -11747,7 +11788,7 @@ msgstr "Erişim Kuralları"
#. module: base #. module: base
#: field:res.groups,trans_implied_ids:0 #: field:res.groups,trans_implied_ids:0
msgid "Transitively inherits" msgid "Transitively inherits"
msgstr "" msgstr "Geçişler devralır"
#. module: base #. module: base
#: field:ir.default,ref_table:0 #: field:ir.default,ref_table:0
@ -11955,7 +11996,7 @@ msgstr "Guetemala - Muhasebe"
#. module: base #. module: base
#: help:ir.cron,args:0 #: help:ir.cron,args:0
msgid "Arguments to be passed to the method, e.g. (uid,)." msgid "Arguments to be passed to the method, e.g. (uid,)."
msgstr "Metoda (fonsiyona) gönderilecek argümanlar ör: (uid,)." msgstr "Metoda (fonsiyona) gönderilecek argümanlar örn.: (uid,)."
#. module: base #. module: base
#: report:ir.module.reference:0 #: report:ir.module.reference:0
@ -12016,7 +12057,7 @@ msgstr "Rapor Türü"
#: view:res.partner.bank:0 #: view:res.partner.bank:0
#: view:res.users:0 #: view:res.users:0
msgid "State" msgid "State"
msgstr "Durum" msgstr "Eyalet"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -12072,7 +12113,7 @@ msgstr "Bağlantı Bilgileri"
#. module: base #. module: base
#: model:res.partner.title,name:base.res_partner_title_prof #: model:res.partner.title,name:base.res_partner_title_prof
msgid "Professor" msgid "Professor"
msgstr "" msgstr "Profesör"
#. module: base #. module: base
#: model:res.country,name:base.hm #: model:res.country,name:base.hm
@ -12101,7 +12142,7 @@ msgstr "Teklifleri, sipariş emirlerini ve faturalarınızı yönetmenizi sağla
#. module: base #. module: base
#: field:res.users,login_date:0 #: field:res.users,login_date:0
msgid "Latest connection" msgid "Latest connection"
msgstr "" msgstr "Son bağlantı"
#. module: base #. module: base
#: field:res.groups,implied_ids:0 #: field:res.groups,implied_ids:0
@ -12208,7 +12249,7 @@ msgstr ""
#. module: base #. module: base
#: model:res.country,name:base.cd #: model:res.country,name:base.cd
msgid "Congo, Democratic Republic of the" msgid "Congo, Democratic Republic of the"
msgstr "" msgstr "Kongo Demokratik Cumhuriyeti"
#. module: base #. module: base
#: model:res.country,name:base.cr #: model:res.country,name:base.cr
@ -12243,7 +12284,7 @@ msgstr "Diğer Partner"
#: view:workflow.workitem:0 #: view:workflow.workitem:0
#: field:workflow.workitem,state:0 #: field:workflow.workitem,state:0
msgid "Status" msgid "Status"
msgstr "Durum" msgstr "Durumu"
#. module: base #. module: base
#: model:ir.actions.act_window,name:base.action_currency_form #: model:ir.actions.act_window,name:base.action_currency_form
@ -12517,7 +12558,7 @@ msgstr ""
#. module: base #. module: base
#: field:ir.actions.report.xml,report_sxw:0 #: field:ir.actions.report.xml,report_sxw:0
msgid "SXW Path" msgid "SXW Path"
msgstr "" msgstr "SXW Yolu"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_asset #: model:ir.module.module,description:base.module_account_asset
@ -12963,7 +13004,7 @@ msgstr ""
#. module: base #. module: base
#: field:res.company,company_registry:0 #: field:res.company,company_registry:0
msgid "Company Registry" msgid "Company Registry"
msgstr "Vergi Dairesi" msgstr "Şirket Sicil No"
#. module: base #. module: base
#: view:ir.actions.report.xml:0 #: view:ir.actions.report.xml:0
@ -13079,7 +13120,7 @@ msgstr "French Southern Territories"
#: field:res.currency,name:0 #: field:res.currency,name:0
#: field:res.currency.rate,currency_id:0 #: field:res.currency.rate,currency_id:0
msgid "Currency" msgid "Currency"
msgstr "ParaBirimi" msgstr "Para Birimi"
#. module: base #. module: base
#: view:res.lang:0 #: view:res.lang:0
@ -13155,7 +13196,7 @@ msgstr "bilinmeyen"
#. module: base #. module: base
#: field:res.currency,symbol:0 #: field:res.currency,symbol:0
msgid "Symbol" msgid "Symbol"
msgstr "Sembol" msgstr "Simge"
#. module: base #. module: base
#: help:res.partner,image_medium:0 #: help:res.partner,image_medium:0
@ -13271,7 +13312,7 @@ msgstr "Bağımlılıklar :"
#. module: base #. module: base
#: field:res.company,vat:0 #: field:res.company,vat:0
msgid "Tax ID" msgid "Tax ID"
msgstr "Vergi NO" msgstr "Vergi No"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions #: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
@ -13449,7 +13490,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_stock_no_autopicking #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking
msgid "Picking Before Manufacturing" msgid "Picking Before Manufacturing"
msgstr "Üretim Öncesi Seçmek" msgstr "Üretim Öncesi Seçme"
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_note_pad #: model:ir.module.module,summary:base.module_note_pad
@ -13707,7 +13748,7 @@ msgstr "Modülleri Kurma"
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_import_crm #: model:ir.ui.menu,name:base.menu_import_crm
msgid "Import & Synchronize" msgid "Import & Synchronize"
msgstr "" msgstr "İçe aktarım ve senkronize"
#. module: base #. module: base
#: view:res.partner:0 #: view:res.partner:0
@ -14071,7 +14112,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,summary:base.module_account_voucher #: model:ir.module.module,summary:base.module_account_voucher
msgid "Send Invoices and Track Payments" msgid "Send Invoices and Track Payments"
msgstr "" msgstr "Faturalar ve Parça Ödemeler gönder"
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_lead #: model:ir.ui.menu,name:base.menu_crm_config_lead
@ -14177,7 +14218,7 @@ msgstr "Tayvan"
#. module: base #. module: base
#: model:ir.model,name:base.model_res_currency_rate #: model:ir.model,name:base.model_res_currency_rate
msgid "Currency Rate" msgid "Currency Rate"
msgstr "ParaBirimi Kur Oranı" msgstr "ParabBirimi Oranı"
#. module: base #. module: base
#: view:base.module.upgrade:0 #: view:base.module.upgrade:0
@ -14502,7 +14543,7 @@ msgstr "Erişim"
#: field:res.partner,vat:0 #: field:res.partner,vat:0
#, python-format #, python-format
msgid "TIN" msgid "TIN"
msgstr "" msgstr "V.No"
#. module: base #. module: base
#: model:res.country,name:base.aw #: model:res.country,name:base.aw
@ -15088,7 +15129,7 @@ msgstr "Şili"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_web_view_editor #: model:ir.module.module,shortdesc:base.module_web_view_editor
msgid "View Editor" msgid "View Editor"
msgstr "Editör Görüntüle" msgstr "Görünüm Düzenleyici"
#. module: base #. module: base
#: view:ir.cron:0 #: view:ir.cron:0
@ -15189,7 +15230,7 @@ msgstr "Sistem Güncelleme"
#: field:ir.actions.report.xml,report_sxw_content:0 #: field:ir.actions.report.xml,report_sxw_content:0
#: field:ir.actions.report.xml,report_sxw_content_data:0 #: field:ir.actions.report.xml,report_sxw_content_data:0
msgid "SXW Content" msgid "SXW Content"
msgstr "" msgstr "SXW İçerek"
#. module: base #. module: base
#: field:ir.attachment,file_size:0 #: field:ir.attachment,file_size:0
@ -15317,7 +15358,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.open_module_tree #: model:ir.actions.act_window,name:base.open_module_tree
#: model:ir.ui.menu,name:base.menu_module_tree #: model:ir.ui.menu,name:base.menu_module_tree
msgid "Installed Modules" msgid "Installed Modules"
msgstr "Kurulumuş Modüller" msgstr "Kurulmuş Modüller"
#. module: base #. module: base
#: code:addons/base/res/res_users.py:170 #: code:addons/base/res/res_users.py:170
@ -15468,7 +15509,7 @@ msgstr ""
#. module: base #. module: base
#: model:res.partner.category,name:base.res_partner_category_2 #: model:res.partner.category,name:base.res_partner_category_2
msgid "Prospect" msgid "Prospect"
msgstr "Muhtemel" msgstr "Beklenti"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_stock_invoice_directly #: model:ir.module.module,shortdesc:base.module_stock_invoice_directly

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:07+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:09+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:21+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:08+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:19+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-23 05:09+0000\n" "X-Launchpad-Export-Date: 2013-04-10 05:20+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16550)\n"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_check_writing #: model:ir.module.module,description:base.module_account_check_writing

View File

@ -240,9 +240,9 @@ class act_window(osv.osv):
'name': fields.char('Action Name', size=64, translate=True), 'name': fields.char('Action Name', size=64, translate=True),
'type': fields.char('Action Type', size=32, required=True), 'type': fields.char('Action Type', size=32, required=True),
'view_id': fields.many2one('ir.ui.view', 'View Ref.', ondelete='cascade'), 'view_id': fields.many2one('ir.ui.view', 'View Ref.', ondelete='cascade'),
'domain': fields.char('Domain Value', size=250, 'domain': fields.char('Domain Value',
help="Optional domain filtering of the destination data, as a Python expression"), help="Optional domain filtering of the destination data, as a Python expression"),
'context': fields.char('Context Value', size=250, required=True, 'context': fields.char('Context Value', required=True,
help="Context dictionary as Python expression, empty by default (Default: {})"), help="Context dictionary as Python expression, empty by default (Default: {})"),
'res_id': fields.integer('Record ID', help="Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"), 'res_id': fields.integer('Record ID', help="Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"),
'res_model': fields.char('Destination Model', size=64, required=True, 'res_model': fields.char('Destination Model', size=64, required=True,
@ -285,6 +285,36 @@ class act_window(osv.osv):
'multi': False, 'multi': False,
} }
def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
""" call the method get_empty_list_help of the model and set the window action help message
"""
ids_int = isinstance(ids, (int, long))
if ids_int:
ids = [ids]
results = super(act_window, self).read(cr, uid, ids, fields=fields, context=context, load=load)
if not fields or 'help' in fields:
context = dict(context or {})
eval_dict = {
'active_model': context.get('active_model'),
'active_id': context.get('active_id'),
'active_ids': context.get('active_ids'),
'uid': uid,
}
for res in results:
model = res.get('res_model')
if model and self.pool.get(model):
try:
with tools.mute_logger("openerp.tools.safe_eval"):
eval_context = eval(res['context'] or "{}", eval_dict) or {}
except Exception:
continue
custom_context = dict(context, **eval_context)
res['help'] = self.pool.get(model).get_empty_list_help(cr, uid, res.get('help', ""), context=custom_context)
if ids_int:
return results[0]
return results
def for_xml_id(self, cr, uid, module, xml_id, context=None): def for_xml_id(self, cr, uid, module, xml_id, context=None):
""" Returns the act_window object created for the provided xml_id """ Returns the act_window object created for the provided xml_id
@ -631,7 +661,7 @@ class actions_server(osv.osv):
return self.pool[action.action_id.type].read(cr, uid, action.action_id.id, context=context) return self.pool[action.action_id.type].read(cr, uid, action.action_id.id, context=context)
if action.state=='code': if action.state=='code':
eval(action.code, cxt, mode="exec", nocopy=True) # nocopy allows to return 'action' eval(action.code.strip(), cxt, mode="exec", nocopy=True) # nocopy allows to return 'action'
if 'action' in cxt: if 'action' in cxt:
return cxt['action'] return cxt['action']

View File

@ -83,7 +83,7 @@ class ir_attachment(osv.osv):
if bin_size: if bin_size:
r = os.path.getsize(full_path) r = os.path.getsize(full_path)
else: else:
r = open(full_path).read().encode('base64') r = open(full_path,'rb').read().encode('base64')
except IOError: except IOError:
_logger.error("_read_file reading %s",full_path) _logger.error("_read_file reading %s",full_path)
return r return r

View File

@ -18,8 +18,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################## ##############################################################################
import time
import logging import logging
import threading
import time
import psycopg2 import psycopg2
from datetime import datetime from datetime import datetime
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
@ -190,6 +191,7 @@ class ir_cron(osv.osv):
If a job was processed, returns True, otherwise returns False. If a job was processed, returns True, otherwise returns False.
""" """
db = openerp.sql_db.db_connect(db_name) db = openerp.sql_db.db_connect(db_name)
threading.current_thread().dbname = db_name
cr = db.cursor() cr = db.cursor()
jobs = [] jobs = []
try: try:
@ -244,6 +246,9 @@ class ir_cron(osv.osv):
# we're exiting due to an exception while acquiring the lock # we're exiting due to an exception while acquiring the lock
lock_cr.close() lock_cr.close()
if hasattr(threading.current_thread(), 'dbname'): # cron job could have removed it as side-effect
del threading.current_thread().dbname
def _try_lock(self, cr, uid, ids, context=None): def _try_lock(self, cr, uid, ids, context=None):
"""Try to grab a dummy exclusive write-lock to the rows with the given ids, """Try to grab a dummy exclusive write-lock to the rows with the given ids,
to make sure a following write() or unlink() will not block due to make sure a following write() or unlink() will not block due

View File

@ -28,7 +28,7 @@ class ir_filters(osv.osv):
_description = 'Filters' _description = 'Filters'
def _list_all_models(self, cr, uid, context=None): def _list_all_models(self, cr, uid, context=None):
cr.execute("SELECT model, name from ir_model") cr.execute("SELECT model, name FROM ir_model ORDER BY name")
return cr.fetchall() return cr.fetchall()
def copy(self, cr, uid, id, default=None, context=None): def copy(self, cr, uid, id, default=None, context=None):

View File

@ -25,6 +25,7 @@ import time
import types import types
import openerp import openerp
import openerp.modules.registry
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from openerp import tools from openerp import tools
from openerp.osv import fields,osv from openerp.osv import fields,osv
@ -168,7 +169,9 @@ class ir_model(osv.osv):
if not context.get(MODULE_UNINSTALL_FLAG): if not context.get(MODULE_UNINSTALL_FLAG):
# only reload pool for normal unlink. For module uninstall the # only reload pool for normal unlink. For module uninstall the
# reload is done independently in openerp.modules.loading # reload is done independently in openerp.modules.loading
cr.commit() # must be committed before reloading registry in new cursor
openerp.modules.registry.RegistryManager.new(cr.dbname) openerp.modules.registry.RegistryManager.new(cr.dbname)
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return res return res
@ -194,6 +197,7 @@ class ir_model(osv.osv):
field_state='manual', field_state='manual',
select=vals.get('select_level', '0')) select=vals.get('select_level', '0'))
self.pool[vals['model']]._auto_init(cr, ctx) self.pool[vals['model']]._auto_init(cr, ctx)
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return res return res
def instanciate(self, cr, user, model, context=None): def instanciate(self, cr, user, model, context=None):
@ -259,7 +263,6 @@ class ir_model_fields(osv.osv):
'state': lambda self,cr,uid,ctx=None: (ctx and ctx.get('manual',False)) and 'manual' or 'base', 'state': lambda self,cr,uid,ctx=None: (ctx and ctx.get('manual',False)) and 'manual' or 'base',
'on_delete': 'set null', 'on_delete': 'set null',
'select_level': '0', 'select_level': '0',
'size': 64,
'field_description': '', 'field_description': '',
'selectable': 1, 'selectable': 1,
} }
@ -289,10 +292,10 @@ class ir_model_fields(osv.osv):
return True return True
def _size_gt_zero_msg(self, cr, user, ids, context=None): def _size_gt_zero_msg(self, cr, user, ids, context=None):
return _('Size of the field can never be less than 1 !') return _('Size of the field can never be less than 0 !')
_sql_constraints = [ _sql_constraints = [
('size_gt_zero', 'CHECK (size>0)',_size_gt_zero_msg ), ('size_gt_zero', 'CHECK (size>=0)',_size_gt_zero_msg ),
] ]
def _drop_column(self, cr, uid, ids, context=None): def _drop_column(self, cr, uid, ids, context=None):
@ -318,6 +321,9 @@ class ir_model_fields(osv.osv):
self._drop_column(cr, user, ids, context) self._drop_column(cr, user, ids, context)
res = super(ir_model_fields, self).unlink(cr, user, ids, context) res = super(ir_model_fields, self).unlink(cr, user, ids, context)
if not context.get(MODULE_UNINSTALL_FLAG):
cr.commit()
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return res return res
def create(self, cr, user, vals, context=None): def create(self, cr, user, vals, context=None):
@ -349,6 +355,7 @@ class ir_model_fields(osv.osv):
select=vals.get('select_level', '0'), select=vals.get('select_level', '0'),
update_custom_fields=True) update_custom_fields=True)
self.pool[vals['model']]._auto_init(cr, ctx) self.pool[vals['model']]._auto_init(cr, ctx)
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return res return res
@ -463,6 +470,7 @@ class ir_model_fields(osv.osv):
for col_name, col_prop, val in patch_struct[1]: for col_name, col_prop, val in patch_struct[1]:
setattr(obj._columns[col_name], col_prop, val) setattr(obj._columns[col_name], col_prop, val)
obj._auto_init(cr, ctx) obj._auto_init(cr, ctx)
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return res return res
class ir_model_constraint(Model): class ir_model_constraint(Model):

View File

@ -151,7 +151,7 @@
'readonly': [('ttype','not in', ['many2one','one2many','many2many'])]}"/> 'readonly': [('ttype','not in', ['many2one','one2many','many2many'])]}"/>
<field name="relation_field" attrs="{'required': [('ttype','=','one2many')], 'readonly': [('ttype','!=','one2many')]}"/> <field name="relation_field" attrs="{'required': [('ttype','=','one2many')], 'readonly': [('ttype','!=','one2many')]}"/>
<field name="selection" attrs="{'required': [('ttype','in',['selection','reference'])], 'readonly': [('ttype','not in',['selection','reference'])]}"/> <field name="selection" attrs="{'required': [('ttype','in',['selection','reference'])], 'readonly': [('ttype','not in',['selection','reference'])]}"/>
<field name="size" attrs="{'required': [('ttype','in',['char','reference'])], 'readonly': [('ttype','not in',['char','reference'])]}"/> <field name="size" attrs="{'invisible': [('ttype','not in',['char','text','reference'])]}"/>
<field name="domain" attrs="{'readonly': [('relation','=','')]}"/> <field name="domain" attrs="{'readonly': [('relation','=','')]}"/>
<field name="serialization_field_id" attrs="{'readonly': [('state','=','base')]}" domain="[('ttype','=','serialized'), ('model_id', '=', model_id)]"/> <field name="serialization_field_id" attrs="{'readonly': [('state','=','base')]}" domain="[('ttype','=','serialized'), ('model_id', '=', model_id)]"/>
<field name="on_delete" attrs="{'readonly': [('ttype','!=','many2one')]}"/> <field name="on_delete" attrs="{'readonly': [('ttype','!=','many2one')]}"/>

View File

@ -83,7 +83,8 @@ class view(osv.osv):
} }
_defaults = { _defaults = {
'arch': '<?xml version="1.0"?>\n<tree string="My view">\n\t<field name="name"/>\n</tree>', 'arch': '<?xml version="1.0"?>\n<tree string="My view">\n\t<field name="name"/>\n</tree>',
'priority': 16 'priority': 16,
'type': 'tree',
} }
_order = "priority,name" _order = "priority,name"

View File

@ -411,7 +411,6 @@ class module(osv.osv):
if to_install_ids: if to_install_ids:
self.button_install(cr, uid, to_install_ids, context=context) self.button_install(cr, uid, to_install_ids, context=context)
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return dict(ACTION_DICT, name=_('Install')) return dict(ACTION_DICT, name=_('Install'))
def button_immediate_install(self, cr, uid, ids, context=None): def button_immediate_install(self, cr, uid, ids, context=None):
@ -500,7 +499,6 @@ class module(osv.osv):
raise orm.except_orm(_('Error'), _("The `base` module cannot be uninstalled")) raise orm.except_orm(_('Error'), _("The `base` module cannot be uninstalled"))
dep_ids = self.downstream_dependencies(cr, uid, ids, context=context) dep_ids = self.downstream_dependencies(cr, uid, ids, context=context)
self.write(cr, uid, ids + dep_ids, {'state': 'to remove'}) self.write(cr, uid, ids + dep_ids, {'state': 'to remove'})
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
return dict(ACTION_DICT, name=_('Uninstall')) return dict(ACTION_DICT, name=_('Uninstall'))
def button_uninstall_cancel(self, cr, uid, ids, context=None): def button_uninstall_cancel(self, cr, uid, ids, context=None):

View File

@ -344,8 +344,8 @@ class res_company(osv.osv):
</pageTemplate> </pageTemplate>
</header>""" </header>"""
_header_a4 = _header_main % ('23.0cm', '27.6cm', '27.7cm', '27.7cm', '27.8cm', '27.3cm', '25.3cm', '25.0cm', '25.0cm', '24.6cm', '24.6cm', '24.5cm', '24.5cm') _header_a4 = _header_main % ('21.7cm', '27.7cm', '27.7cm', '27.7cm', '27.8cm', '27.3cm', '25.3cm', '25.0cm', '25.0cm', '24.6cm', '24.6cm', '24.5cm', '24.5cm')
_header_letter = _header_main % ('21.3cm', '25.9cm', '26.0cm', '26.0cm', '26.1cm', '25.6cm', '23.6cm', '23.3cm', '23.3cm', '22.9cm', '22.9cm', '22.8cm', '22.8cm') _header_letter = _header_main % ('20cm', '26.0cm', '26.0cm', '26.0cm', '26.1cm', '25.6cm', '23.6cm', '23.3cm', '23.3cm', '22.9cm', '22.9cm', '22.8cm', '22.8cm')
def onchange_paper_format(self, cr, uid, ids, paper_format, context=None): def onchange_paper_format(self, cr, uid, ids, paper_format, context=None):
if paper_format == 'us_letter': if paper_format == 'us_letter':

View File

@ -49,7 +49,7 @@ class res_currency(osv.osv):
id, rate = cr.fetchall()[0] id, rate = cr.fetchall()[0]
res[id] = rate res[id] = rate
else: else:
res[id] = 0 raise osv.except_osv(_('Error!'),_("No currency rate associated for currency %d for the given period" % (id)))
return res return res
_name = "res.currency" _name = "res.currency"
_description = "Currency" _description = "Currency"

View File

@ -375,16 +375,30 @@ class res_partner(osv.osv, format_address):
def create(self, cr, uid, vals, context=None): def create(self, cr, uid, vals, context=None):
if context is None: if context is None:
context={} context = {}
# Update parent and siblings records # Update parent and siblings records
if vals.get('parent_id') and vals.get('use_parent_address'): if vals.get('parent_id'):
domain_siblings = [('parent_id', '=', vals['parent_id']), ('use_parent_address', '=', True)] if 'use_parent_address' in vals:
update_ids = [vals['parent_id']] + self.search(cr, uid, domain_siblings, context=context) use_parent_address = vals['use_parent_address']
self.update_address(cr, uid, update_ids, vals, context) else:
return super(res_partner,self).create(cr, uid, vals, context=context) use_parent_address = self.default_get(cr, uid, ['use_parent_address'], context=context)['use_parent_address']
if use_parent_address:
domain_siblings = [('parent_id', '=', vals['parent_id']), ('use_parent_address', '=', True)]
update_ids = [vals['parent_id']] + self.search(cr, uid, domain_siblings, context=context)
self.update_address(cr, uid, update_ids, vals, context)
# add missing address keys
onchange_values = self.onchange_address(cr, uid, [], use_parent_address,
vals['parent_id'], context=context).get('value') or {}
vals.update(dict((key, value)
for key, value in onchange_values.iteritems()
if key in ADDRESS_FIELDS and key not in vals))
return super(res_partner, self).create(cr, uid, vals, context=context)
def update_address(self, cr, uid, ids, vals, context=None): def update_address(self, cr, uid, ids, vals, context=None):
addr_vals = dict((key, vals[key]) for key in POSTAL_ADDRESS_FIELDS if vals.get(key)) addr_vals = dict((key, vals[key]) for key in POSTAL_ADDRESS_FIELDS if key in vals)
if addr_vals: if addr_vals:
return super(res_partner, self).write(cr, uid, ids, addr_vals, context) return super(res_partner, self).write(cr, uid, ids, addr_vals, context)
@ -411,10 +425,10 @@ class res_partner(osv.osv, format_address):
""" Supported syntax: """ Supported syntax:
- 'Raoul <raoul@grosbedon.fr>': will find name and email address - 'Raoul <raoul@grosbedon.fr>': will find name and email address
- otherwise: default, everything is set as the name """ - otherwise: default, everything is set as the name """
match = re.search(r'([^\s,<@]+@[^>\s,]+)', text) emails = tools.email_split(text)
if match: if emails:
email = match.group(1) email = emails[0]
name = text[:text.index(email)].replace('"','').replace('<','').strip() name = text[:text.index(email)].replace('"', '').replace('<', '').strip()
else: else:
name, email = text, '' name, email = text, ''
return name, email return name, email
@ -457,8 +471,7 @@ class res_partner(osv.osv, format_address):
OR partner.name || ' (' || COALESCE(company.name,'') || ')' OR partner.name || ' (' || COALESCE(company.name,'') || ')'
''' + operator + ' %(name)s ' + limit_str, query_args) ''' + operator + ' %(name)s ' + limit_str, query_args)
ids = map(lambda x: x[0], cr.fetchall()) ids = map(lambda x: x[0], cr.fetchall())
if args: ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context)
ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context)
if ids: if ids:
return self.name_get(cr, uid, ids, context) return self.name_get(cr, uid, ids, context)
return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit) return super(res_partner,self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit)

View File

@ -10,7 +10,7 @@
<menuitem id="base.menu_sales" parent="base.menu_base_partner" name="Sales" sequence="1" /> <menuitem id="base.menu_sales" parent="base.menu_base_partner" name="Sales" sequence="1" />
<menuitem id="menu_base_config" parent="menu_base_partner" name="Configuration" sequence="30" groups="group_system"/> <menuitem id="menu_base_config" parent="menu_base_partner" name="Configuration" sequence="30" groups="group_system"/>
<menuitem id="menu_config_address_book" parent="menu_base_config" name="Address Book" sequence="40" groups="group_system"/> <menuitem id="menu_config_address_book" parent="menu_base_config" name="Address Book" sequence="40" groups="group_system"/>
<!-- Partner Titles --> <!-- Partner Titles -->
<record id="view_partner_title_tree" model="ir.ui.view"> <record id="view_partner_title_tree" model="ir.ui.view">
@ -305,15 +305,15 @@
filter_domain="['|','|',('name','ilike',self),('parent_id','ilike',self),('ref','=',self)]"/> filter_domain="['|','|',('name','ilike',self),('parent_id','ilike',self),('ref','=',self)]"/>
<filter help="My Partners" icon="terp-personal+" domain="[('user_id','=',uid)]"/> <filter help="My Partners" icon="terp-personal+" domain="[('user_id','=',uid)]"/>
<separator/> <separator/>
<filter string="Persons" name="type_person" icon="terp-personal" domain="[('is_company','=',0)]"/> <filter string="Persons" name="type_person" domain="[('is_company','=',0)]"/>
<filter string="Companies" name="type_company" icon="terp-partner" domain="[('is_company','=',1)]"/> <filter string="Companies" name="type_company" domain="[('is_company','=',1)]"/>
<separator/> <separator/>
<filter string="Customers" name="customer" icon="terp-personal" domain="[('customer','=',1)]" help="Customer Partners"/> <filter string="Customers" name="customer" domain="[('customer','=',1)]" help="Customer Partners"/>
<filter string="Suppliers" name="supplier" domain="[('supplier','=',1)]" help="Supplier Partners"/>
<separator/> <separator/>
<filter string="Suppliers" name="supplier" icon="terp-personal" domain="[('supplier','=',1)]" help="Supplier Partners"/>
<field name="category_id" string="Tag" filter_domain="[('category_id','ilike', self)]"/> <field name="category_id" string="Tag" filter_domain="[('category_id','ilike', self)]"/>
<field name="user_id"/> <field name="user_id"/>
<field name="parent_id" filter_domain="[('parent_id','child_of',[self])]"/> <field name="parent_id" domain="[('is_company','=',1)]" filter_domain="[('parent_id','child_of',[self])]"/>
<group expand="0" string="Group By..."> <group expand="0" string="Group By...">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" /> <filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
<filter string="Company" context="{'group_by': 'parent_id'}"/> <filter string="Company" context="{'group_by': 'parent_id'}"/>
@ -420,7 +420,7 @@
<field name="view_id" ref="view_partner_tree"/> <field name="view_id" ref="view_partner_tree"/>
<field name="act_window_id" ref="action_partner_form"/> <field name="act_window_id" ref="action_partner_form"/>
</record> </record>
<menuitem id="menu_partner_form" parent="base.menu_sales" action="action_partner_form" sequence="1"/> <menuitem id="menu_partner_form" parent="base.menu_sales" action="action_partner_form" sequence="2"/>
<record id="action_partner_customer_form" model="ir.actions.act_window"> <record id="action_partner_customer_form" model="ir.actions.act_window">
<field name="name">Customers</field> <field name="name">Customers</field>

View File

@ -3,7 +3,7 @@
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2010-2012 OpenERP s.a. (<http://openerp.com>). # Copyright (C) 2010-2013 OpenERP s.a. (<http://openerp.com>).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -172,6 +172,10 @@ class res_users(osv.osv):
} }
} }
def onchange_state(self, cr, uid, ids, state_id, context=None):
partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context=context)]
return self.pool.get('res.partner').onchange_state(cr, uid, partner_ids, state_id, context=context)
def onchange_type(self, cr, uid, ids, is_company, context=None): def onchange_type(self, cr, uid, ids, is_company, context=None):
""" Wrapper on the user.partner onchange_type, because some calls to the """ Wrapper on the user.partner onchange_type, because some calls to the
partner form view applied to the user may trigger the partner form view applied to the user may trigger the
@ -426,7 +430,9 @@ class res_users(osv.osv):
cr = self.pool.db.cursor() cr = self.pool.db.cursor()
try: try:
base = user_agent_env['base_location'] base = user_agent_env['base_location']
self.pool['ir.config_parameter'].set_param(cr, uid, 'web.base.url', base) ICP = self.pool['ir.config_parameter']
if not ICP.get_param(cr, uid, 'web.base.url.freeze'):
ICP.set_param(cr, uid, 'web.base.url', base)
cr.commit() cr.commit()
except Exception: except Exception:
_logger.exception("Failed to update web.base.url configuration parameter") _logger.exception("Failed to update web.base.url configuration parameter")

View File

@ -56,7 +56,8 @@ openerp.base = function(instance) {
}); });
}; };
i.src = _.str.sprintf('%s/web/static/src/img/sep-a.gif', client.origin); var ts = new Date().getTime();
i.src = _.str.sprintf('%s/web/static/src/img/sep-a.gif?%s', client.origin, ts);
return d.promise(); return d.promise();
}; };
if (instance.base.apps_client) { if (instance.base.apps_client) {
@ -96,7 +97,7 @@ openerp.base = function(instance) {
client.replace(self.$el). client.replace(self.$el).
done(function() { done(function() {
client.$el.removeClass('openerp'); client.$el.removeClass('openerp');
client.do_action(self.remote_action_id); client.do_action(self.remote_action_id, {hide_breadcrumb: true});
}); });
}). }).
fail(function(client) { fail(function(client) {

View File

@ -115,6 +115,12 @@ class test_expression(common.TransactionCase):
user_ids = users_obj.search(cr, uid, [('child_ids.name', 'like', 'test_B')]) user_ids = users_obj.search(cr, uid, [('child_ids.name', 'like', 'test_B')])
self.assertEqual(set(user_ids), set([b1]), 'searching through inheritance failed') self.assertEqual(set(user_ids), set([b1]), 'searching through inheritance failed')
# Special =? operator mean "is equal if right is set, otherwise always True"
user_ids = users_obj.search(cr, uid, [('name', 'like', 'test'), ('parent_id', '=?', False)])
self.assertEqual(set(user_ids), set([a, b1, b2]), '(x =? False) failed')
user_ids = users_obj.search(cr, uid, [('name', 'like', 'test'), ('parent_id', '=?', b1_user.partner_id.id)])
self.assertEqual(set(user_ids), set([b2]), '(x =? id) failed')
def test_20_auto_join(self): def test_20_auto_join(self):
registry, cr, uid = self.registry, self.cr, self.uid registry, cr, uid = self.registry, self.cr, self.uid

View File

@ -220,15 +220,7 @@ def quit_on_signals():
os.unlink(config['pidfile']) os.unlink(config['pidfile'])
sys.exit(0) sys.exit(0)
def configure_babel_localedata_path():
# Workaround: py2exe and babel.
if hasattr(sys, 'frozen'):
import babel
babel.localedata._dirname = os.path.join(os.path.dirname(sys.executable), 'localedata')
def main(args): def main(args):
os.environ["TZ"] = "UTC"
check_root_user() check_root_user()
openerp.tools.config.parse_config(args) openerp.tools.config.parse_config(args)
@ -246,8 +238,6 @@ def main(args):
config = openerp.tools.config config = openerp.tools.config
configure_babel_localedata_path()
setup_signal_handlers(signal_handler) setup_signal_handlers(signal_handler)
if config["test_file"]: if config["test_file"]:

View File

@ -34,6 +34,7 @@ import openerp
import openerp.modules.db import openerp.modules.db
import openerp.modules.graph import openerp.modules.graph
import openerp.modules.migration import openerp.modules.migration
import openerp.modules.registry
import openerp.osv as osv import openerp.osv as osv
import openerp.tools as tools import openerp.tools as tools
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
@ -131,7 +132,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
loaded_modules = [] loaded_modules = []
registry = openerp.registry(cr.dbname) registry = openerp.registry(cr.dbname)
migrations = openerp.modules.migration.MigrationManager(cr, graph) migrations = openerp.modules.migration.MigrationManager(cr, graph)
_logger.debug('loading %d packages...', len(graph)) _logger.info('loading %d modules...', len(graph))
# Query manual fields for all models at once and save them on the registry # Query manual fields for all models at once and save them on the registry
# so the initialization code for each model does not have to do it # so the initialization code for each model does not have to do it
@ -149,7 +150,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
if skip_modules and module_name in skip_modules: if skip_modules and module_name in skip_modules:
continue continue
_logger.info('module %s: loading objects', package.name) _logger.debug('module %s: loading objects', package.name)
migrations.migrate_module(package, 'pre') migrations.migrate_module(package, 'pre')
load_openerp_module(package.name) load_openerp_module(package.name)
@ -276,7 +277,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
tools.config["demo"]['all'] = 1 tools.config["demo"]['all'] = 1
# This is a brand new registry, just created in # This is a brand new registry, just created in
# openerp.modules.registry.RegistryManger.new(). # openerp.modules.registry.RegistryManager.new().
registry = openerp.registry(cr.dbname) registry = openerp.registry(cr.dbname)
if 'base' in tools.config['update'] or 'all' in tools.config['update']: if 'base' in tools.config['update'] or 'all' in tools.config['update']:
@ -406,7 +407,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
# modules to remove next time # modules to remove next time
cr.commit() cr.commit()
_logger.info('Reloading registry once more after uninstalling modules') _logger.info('Reloading registry once more after uninstalling modules')
return openerp.modules.registry.RegistryManger.new(cr.dbname, force_demo, status, update_module) return openerp.modules.registry.RegistryManager.new(cr.dbname, force_demo, status, update_module)
if report.failures: if report.failures:
_logger.error('At least one test failed when loading the modules.') _logger.error('At least one test failed when loading the modules.')

View File

@ -204,6 +204,10 @@ class RegistryManager(object):
except KeyError: except KeyError:
return cls.new(db_name, force_demo, status, return cls.new(db_name, force_demo, status,
update_module) update_module)
finally:
# set db tracker - cleaned up at the WSGI
# dispatching phase in openerp.service.wsgi_server.application
threading.current_thread().dbname = db_name
@classmethod @classmethod
def new(cls, db_name, force_demo=False, status=None, def new(cls, db_name, force_demo=False, status=None,
@ -245,6 +249,9 @@ class RegistryManager(object):
registry.ready = True registry.ready = True
if update_module:
# only in case of update, otherwise we'll have an infinite reload loop!
cls.signal_registry_change(db_name)
return registry return registry
@classmethod @classmethod

View File

@ -198,7 +198,7 @@ def normalize_domain(domain):
expected -= 1 expected -= 1
else: else:
expected += op_arity.get(token, 0) - 1 expected += op_arity.get(token, 0) - 1
assert expected == 0 assert expected == 0, 'This domain is syntactically not correct: %s' % (domain)
return result return result
@ -597,6 +597,15 @@ class ExtendedLeaf(object):
self.leaf = normalize_leaf(self.leaf) self.leaf = normalize_leaf(self.leaf)
return True return True
def create_substitution_leaf(leaf, new_elements, new_model=None):
""" From a leaf, create a new leaf (based on the new_elements tuple
and new_model), that will have the same join context. Used to
insert equivalent leafs in the processing stack. """
if new_model is None:
new_model = leaf.model
new_join_context = [tuple(context) for context in leaf.join_context]
new_leaf = ExtendedLeaf(new_elements, new_model, join_context=new_join_context)
return new_leaf
class expression(object): class expression(object):
""" Parse a domain expression """ Parse a domain expression
@ -714,16 +723,6 @@ class expression(object):
return ids + recursive_children(ids2, model, parent_field) return ids + recursive_children(ids2, model, parent_field)
return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))]
def create_substitution_leaf(leaf, new_elements, new_model=None):
""" From a leaf, create a new leaf (based on the new_elements tuple
and new_model), that will have the same join context. Used to
insert equivalent leafs in the processing stack. """
if new_model is None:
new_model = leaf.model
new_join_context = [tuple(context) for context in leaf.join_context]
new_leaf = ExtendedLeaf(new_elements, new_model, join_context=new_join_context)
return new_leaf
def pop(): def pop():
""" Pop a leaf to process. """ """ Pop a leaf to process. """
return self.stack.pop() return self.stack.pop()
@ -1152,7 +1151,8 @@ class expression(object):
params = [] params = []
else: else:
# '=?' behaves like '=' in other cases # '=?' behaves like '=' in other cases
query, params = self.__leaf_to_sql((left, '=', right), model) query, params = self.__leaf_to_sql(
create_substitution_leaf(eleaf, (left, '=', right), model))
elif left == 'id': elif left == 'id':
query = '%s.id %s %%s' % (table_alias, operator) query = '%s.id %s %%s' % (table_alias, operator)

View File

@ -1028,7 +1028,7 @@ class BaseModel(object):
'required': bool(field['required']), 'required': bool(field['required']),
'readonly': bool(field['readonly']), 'readonly': bool(field['readonly']),
'domain': eval(field['domain']) if field['domain'] else None, 'domain': eval(field['domain']) if field['domain'] else None,
'size': field['size'], 'size': field['size'] or None,
'ondelete': field['on_delete'], 'ondelete': field['on_delete'],
'translate': (field['translate']), 'translate': (field['translate']),
'manual': True, 'manual': True,
@ -3536,6 +3536,14 @@ class BaseModel(object):
return res return res
def get_empty_list_help(self, cr, user, help, context=None):
""" Generic method giving the help message displayed when having
no result to display in a list or kanban view. By default it returns
the help given in parameter that is generally the help message
defined in the action.
"""
return help
def check_field_access_rights(self, cr, user, operation, fields, context=None): def check_field_access_rights(self, cr, user, operation, fields, context=None):
""" """
Check the user access rights on the given fields. This raises Access Check the user access rights on the given fields. This raises Access
@ -4449,7 +4457,6 @@ class BaseModel(object):
upd1 += ",%s,(now() at time zone 'UTC'),%s,(now() at time zone 'UTC')" upd1 += ",%s,(now() at time zone 'UTC'),%s,(now() at time zone 'UTC')"
upd2.extend((user, user)) upd2.extend((user, user))
cr.execute('insert into "'+self._table+'" (id'+upd0+") values ("+str(id_new)+upd1+')', tuple(upd2)) cr.execute('insert into "'+self._table+'" (id'+upd0+") values ("+str(id_new)+upd1+')', tuple(upd2))
self.check_access_rule(cr, user, [id_new], 'create', context=context)
upd_todo.sort(lambda x, y: self._columns[x].priority-self._columns[y].priority) upd_todo.sort(lambda x, y: self._columns[x].priority-self._columns[y].priority)
if self._parent_store and not context.get('defer_parent_store_computation'): if self._parent_store and not context.get('defer_parent_store_computation'):
@ -4502,6 +4509,7 @@ class BaseModel(object):
self.name_get(cr, user, [id_new], context=context)[0][1] + \ self.name_get(cr, user, [id_new], context=context)[0][1] + \
"' " + _("created.") "' " + _("created.")
self.log(cr, user, id_new, message, True, context=context) self.log(cr, user, id_new, message, True, context=context)
self.check_access_rule(cr, user, [id_new], 'create', context=context)
self.create_workflow(cr, user, [id_new], context=context) self.create_workflow(cr, user, [id_new], context=context)
return id_new return id_new

View File

@ -49,6 +49,19 @@ _logger = logging.getLogger(__name__)
encoding = 'utf-8' encoding = 'utf-8'
def select_fontname(fontname, default_fontname):
if fontname not in pdfmetrics.getRegisteredFontNames()\
or fontname not in pdfmetrics.standardFonts:
# let reportlab attempt to find it
try:
pdfmetrics.getFont(fontname)
except Exception:
_logger.warning('Could not locate font %s, substituting default: %s',
fontname, default_fontname)
fontname = default_fontname
return fontname
def _open_image(filename, path=None): def _open_image(filename, path=None):
"""Attempt to open a binary file and return the descriptor """Attempt to open a binary file and return the descriptor
""" """
@ -159,7 +172,12 @@ class _rml_styles(object,):
for attr in ['textColor', 'backColor', 'bulletColor', 'borderColor']: for attr in ['textColor', 'backColor', 'bulletColor', 'borderColor']:
if node.get(attr): if node.get(attr):
data[attr] = color.get(node.get(attr)) data[attr] = color.get(node.get(attr))
for attr in ['fontName', 'bulletFontName', 'bulletText']: for attr in ['bulletFontName', 'fontName']:
if node.get(attr):
fontname= select_fontname(node.get(attr), None)
if fontname is not None:
data['fontName'] = fontname
for attr in ['bulletText']:
if node.get(attr): if node.get(attr):
data[attr] = node.get(attr) data[attr] = node.get(attr)
for attr in ['fontSize', 'leftIndent', 'rightIndent', 'spaceBefore', 'spaceAfter', for attr in ['fontSize', 'leftIndent', 'rightIndent', 'spaceBefore', 'spaceAfter',
@ -537,17 +555,7 @@ class _rml_canvas(object):
self.canvas.drawPath(self.path, **utils.attr_get(node, [], {'fill':'bool','stroke':'bool'})) self.canvas.drawPath(self.path, **utils.attr_get(node, [], {'fill':'bool','stroke':'bool'}))
def setFont(self, node): def setFont(self, node):
fontname = node.get('name') fontname = select_fontname(node.get('name'), self.canvas._fontname)
if fontname not in pdfmetrics.getRegisteredFontNames()\
or fontname not in pdfmetrics.standardFonts:
# let reportlab attempt to find it
try:
pdfmetrics.getFont(fontname)
except Exception:
_logger.debug('Could not locate font %s, substituting default: %s',
fontname,
self.canvas._fontname)
fontname = self.canvas._fontname
return self.canvas.setFont(fontname, utils.unit_get(node.get('size'))) return self.canvas.setFont(fontname, utils.unit_get(node.get('size')))
def render(self, node): def render(self, node):

View File

@ -30,6 +30,7 @@ cron jobs, for all databases of a single OpenERP server instance.
import logging import logging
import threading import threading
import time import time
from datetime import datetime
import openerp import openerp
@ -56,6 +57,12 @@ def start_service():
threads it spawns are not marked daemon). threads it spawns are not marked daemon).
""" """
# Force call to strptime just before starting the cron thread
# to prevent time.strptime AttributeError within the thread.
# See: http://bugs.python.org/issue7980
datetime.strptime('2012-01-01', '%Y-%m-%d')
for i in range(openerp.tools.config['max_cron_threads']): for i in range(openerp.tools.config['max_cron_threads']):
def target(): def target():
cron_runner(i) cron_runner(i)

View File

@ -37,7 +37,7 @@ def _initialize_db(id, db_name, demo, lang, user_password):
cr = None cr = None
registry = openerp.modules.registry.RegistryManager.new( registry = openerp.modules.registry.RegistryManager.new(
db_name, demo, self_actions[id], update_module=True)[1] db_name, demo, self_actions[id], update_module=True)
try: try:
cr = openerp.sql_db.db_connect(db_name).cursor() cr = openerp.sql_db.db_connect(db_name).cursor()
@ -197,18 +197,26 @@ def exp_drop(db_name):
return True return True
@contextlib.contextmanager @contextlib.contextmanager
def _set_pg_password_in_environment(): def _set_pg_password_in_environment(self):
""" On Win32, pg_dump (and pg_restore) require that """ On systems where pg_restore/pg_dump require an explicit
:envvar:`PGPASSWORD` be set password (i.e. when not connecting via unix sockets, and most
importantly on Windows), it is necessary to pass the PG user
password in the environment or in a special .pgpass file.
This context management method handles setting This context management method handles setting
:envvar:`PGPASSWORD` iif win32 and the envvar is not already :envvar:`PGPASSWORD` if it is not already
set, and removing it afterwards. set, and removing it afterwards.
See also http://www.postgresql.org/docs/8.4/static/libpq-envars.html
.. note:: This is not thread-safe, and should never be enabled for
SaaS (giving SaaS users the super-admin password is not a good idea
anyway)
""" """
if os.name != 'nt' or os.environ.get('PGPASSWORD'): if os.environ.get('PGPASSWORD') or not tools.config['db_password']:
yield yield
else: else:
os.environ['PGPASSWORD'] = openerp.tools.config['db_password'] os.environ['PGPASSWORD'] = tools.config['db_password']
try: try:
yield yield
finally: finally:
@ -234,7 +242,7 @@ def exp_dump(db_name):
if not data or res: if not data or res:
_logger.error( _logger.error(
'DUMP DB: %s failed! Please verify the configuration of the database password on the server. ' 'DUMP DB: %s failed! Please verify the configuration of the database password on the server. '
'It should be provided as a -w <PASSWD> command-line option, or as `db_password` in the ' 'You may need to create a .pgpass file for authentication, or specify `db_password` in the '
'server configuration file.\n %s', db_name, data) 'server configuration file.\n %s', db_name, data)
raise Exception, "Couldn't dump database" raise Exception, "Couldn't dump database"
_logger.info('DUMP DB successful: %s', db_name) _logger.info('DUMP DB successful: %s', db_name)

View File

@ -2,8 +2,10 @@
from functools import wraps from functools import wraps
import logging import logging
from psycopg2 import IntegrityError, errorcodes from psycopg2 import IntegrityError, OperationalError, errorcodes
import random
import threading import threading
import time
import openerp import openerp
from openerp.tools.translate import translate from openerp.tools.translate import translate
@ -13,9 +15,16 @@ import security
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
PG_CONCURRENCY_ERRORS_TO_RETRY = (errorcodes.LOCK_NOT_AVAILABLE, errorcodes.SERIALIZATION_FAILURE, errorcodes.DEADLOCK_DETECTED)
MAX_TRIES_ON_CONCURRENCY_FAILURE = 5
def dispatch(method, params): def dispatch(method, params):
(db, uid, passwd ) = params[0:3] (db, uid, passwd ) = params[0:3]
# set uid tracker - cleaned up at the WSGI
# dispatching phase in openerp.service.wsgi_server.application
threading.current_thread().uid = uid threading.current_thread().uid = uid
params = params[3:] params = params[3:]
if method == 'obj_list': if method == 'obj_list':
raise NameError("obj_list has been discontinued via RPC as of 6.0, please query ir.model directly!") raise NameError("obj_list has been discontinued via RPC as of 6.0, please query ir.model directly!")
@ -94,37 +103,50 @@ def check(f):
def _(src): def _(src):
return tr(src, 'code') return tr(src, 'code')
try: tries = 0
if openerp.registry(dbname)._init: while True:
raise openerp.exceptions.Warning('Currently, this database is not fully loaded and can not be used.') try:
return f(dbname, *args, **kwargs) if openerp.registry(dbname)._init:
except IntegrityError, inst: raise openerp.exceptions.Warning('Currently, this database is not fully loaded and can not be used.')
registry = openerp.registry(dbname) return f(dbname, *args, **kwargs)
for key in registry._sql_error.keys(): except OperationalError, e:
if key in inst[0]: # Automatically retry the typical transaction serialization errors
raise openerp.osv.orm.except_orm(_('Constraint Error'), tr(registry._sql_error[key], 'sql_constraint') or inst[0]) if e.pgcode not in PG_CONCURRENCY_ERRORS_TO_RETRY:
if inst.pgcode in (errorcodes.NOT_NULL_VIOLATION, errorcodes.FOREIGN_KEY_VIOLATION, errorcodes.RESTRICT_VIOLATION): raise
msg = _('The operation cannot be completed, probably due to the following:\n- deletion: you may be trying to delete a record while other records still reference it\n- creation/update: a mandatory field is not correctly set') if tries >= MAX_TRIES_ON_CONCURRENCY_FAILURE:
_logger.debug("IntegrityError", exc_info=True) _logger.warning("%s, maximum number of tries reached" % errorcodes.lookup(e.pgcode))
try: raise
errortxt = inst.pgerror.replace('«','"').replace('»','"') wait_time = random.uniform(0.0, 2 ** tries)
if '"public".' in errortxt: tries += 1
context = errortxt.split('"public".')[1] _logger.info("%s, retry %d/%d in %.04f sec..." % (errorcodes.lookup(e.pgcode), tries, MAX_TRIES_ON_CONCURRENCY_FAILURE, wait_time))
model_name = table = context.split('"')[1] time.sleep(wait_time)
else: except IntegrityError, inst:
last_quote_end = errortxt.rfind('"') registry = openerp.registry(dbname)
last_quote_begin = errortxt.rfind('"', 0, last_quote_end) for key in registry._sql_error.keys():
model_name = table = errortxt[last_quote_begin+1:last_quote_end].strip() if key in inst[0]:
model = table.replace("_",".") raise openerp.osv.orm.except_orm(_('Constraint Error'), tr(registry._sql_error[key], 'sql_constraint') or inst[0])
if model in registry: if inst.pgcode in (errorcodes.NOT_NULL_VIOLATION, errorcodes.FOREIGN_KEY_VIOLATION, errorcodes.RESTRICT_VIOLATION):
model_obj = registry[model] msg = _('The operation cannot be completed, probably due to the following:\n- deletion: you may be trying to delete a record while other records still reference it\n- creation/update: a mandatory field is not correctly set')
model_name = model_obj._description or model_obj._name _logger.debug("IntegrityError", exc_info=True)
msg += _('\n\n[object with reference: %s - %s]') % (model_name, model) try:
except Exception: errortxt = inst.pgerror.replace('«','"').replace('»','"')
pass if '"public".' in errortxt:
raise openerp.osv.orm.except_orm(_('Integrity Error'), msg) context = errortxt.split('"public".')[1]
else: model_name = table = context.split('"')[1]
raise openerp.osv.orm.except_orm(_('Integrity Error'), inst[0]) else:
last_quote_end = errortxt.rfind('"')
last_quote_begin = errortxt.rfind('"', 0, last_quote_end)
model_name = table = errortxt[last_quote_begin+1:last_quote_end].strip()
model = table.replace("_",".")
if model in registry:
model_obj = registry[model]
model_name = model_obj._description or model_obj._name
msg += _('\n\n[object with reference: %s - %s]') % (model_name, model)
except Exception:
pass
raise openerp.osv.orm.except_orm(_('Integrity Error'), msg)
else:
raise openerp.osv.orm.except_orm(_('Integrity Error'), inst[0])
return wrapper return wrapper

View File

@ -388,9 +388,19 @@ class WorkerBaseWSGIServer(werkzeug.serving.BaseWSGIServer):
class WorkerCron(Worker): class WorkerCron(Worker):
""" Cron workers """ """ Cron workers """
def __init__(self, multi):
super(WorkerCron, self).__init__(multi)
# process_work() below process a single database per call.
# The variable db_index is keeping track of the next database to
# process.
self.db_index = 0
def sleep(self): def sleep(self):
interval = 60 + self.pid % 10 # chorus effect # Really sleep once all the databases have been processed.
time.sleep(interval) if self.db_index == 0:
interval = 60 + self.pid % 10 # chorus effect
time.sleep(interval)
def process_work(self): def process_work(self):
rpc_request = logging.getLogger('openerp.netsvc.rpc.request') rpc_request = logging.getLogger('openerp.netsvc.rpc.request')
@ -400,7 +410,9 @@ class WorkerCron(Worker):
db_names = config['db_name'].split(',') db_names = config['db_name'].split(',')
else: else:
db_names = openerp.service.db.exp_list(True) db_names = openerp.service.db.exp_list(True)
for db_name in db_names: if len(db_names):
self.db_index = (self.db_index + 1) % len(db_names)
db_name = db_names[self.db_index]
if rpc_request_flag: if rpc_request_flag:
start_time = time.time() start_time = time.time()
start_rss, start_vms = psutil.Process(os.getpid()).get_memory_info() start_rss, start_vms = psutil.Process(os.getpid()).get_memory_info()
@ -419,8 +431,14 @@ class WorkerCron(Worker):
end_rss, end_vms = psutil.Process(os.getpid()).get_memory_info() end_rss, end_vms = psutil.Process(os.getpid()).get_memory_info()
logline = '%s time:%.3fs mem: %sk -> %sk (diff: %sk)' % (db_name, end_time - start_time, start_vms / 1024, end_vms / 1024, (end_vms - start_vms)/1024) logline = '%s time:%.3fs mem: %sk -> %sk (diff: %sk)' % (db_name, end_time - start_time, start_vms / 1024, end_vms / 1024, (end_vms - start_vms)/1024)
_logger.debug("WorkerCron (%s) %s", self.pid, logline) _logger.debug("WorkerCron (%s) %s", self.pid, logline)
# TODO Each job should be considered as one request instead of each run
self.request_count += 1 self.request_count += 1
if self.request_count >= self.request_max and self.request_max < len(db_names):
_logger.error("There are more dabatases to process than allowed "
"by the `limit_request` configuration variable: %s more.",
len(db_names) - self.request_max)
else:
self.db_index = 0
def start(self): def start(self):
Worker.start(self) Worker.start(self)

View File

@ -390,6 +390,16 @@ def register_rpc_endpoint(endpoint, handler):
def application_unproxied(environ, start_response): def application_unproxied(environ, start_response):
""" WSGI entry point.""" """ WSGI entry point."""
# cleanup db/uid trackers - they're set at HTTP dispatch in
# web.session.OpenERPSession.send() and at RPC dispatch in
# openerp.service.web_services.objects_proxy.dispatch().
# /!\ The cleanup cannot be done at the end of this `application`
# method because werkzeug still produces relevant logging afterwards
if hasattr(threading.current_thread(), 'uid'):
del threading.current_thread().uid
if hasattr(threading.current_thread(), 'dbname'):
del threading.current_thread().dbname
openerp.service.start_internal() openerp.service.start_internal()
# Try all handlers until one returns some result (i.e. not None). # Try all handlers until one returns some result (i.e. not None).
@ -401,7 +411,6 @@ def application_unproxied(environ, start_response):
continue continue
return result return result
# We never returned from the loop. # We never returned from the loop.
response = 'No handler found.\n' response = 'No handler found.\n'
start_response('404 Not Found', [('Content-Type', 'text/plain'), ('Content-Length', str(len(response)))]) start_response('404 Not Found', [('Content-Type', 'text/plain'), ('Content-Length', str(len(response)))])

View File

@ -3,7 +3,7 @@
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). # Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2010-2011 OpenERP s.a. (<http://openerp.com>). # Copyright (C) 2010-2013 OpenERP s.a. (<http://openerp.com>).
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -36,7 +36,6 @@ import psycopg2.extensions
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_READ_COMMITTED, ISOLATION_LEVEL_REPEATABLE_READ from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT, ISOLATION_LEVEL_READ_COMMITTED, ISOLATION_LEVEL_REPEATABLE_READ
from psycopg2.pool import PoolError from psycopg2.pool import PoolError
from psycopg2.psycopg1 import cursor as psycopg1cursor from psycopg2.psycopg1 import cursor as psycopg1cursor
from threading import currentThread
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE) psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
@ -393,7 +392,7 @@ class ConnectionPool(object):
def borrow(self, dsn): def borrow(self, dsn):
self._debug('Borrow connection to %r', dsn) self._debug('Borrow connection to %r', dsn)
# free leaked connections # free dead and leaked connections
for i, (cnx, _) in tools.reverse_enumerate(self._connections): for i, (cnx, _) in tools.reverse_enumerate(self._connections):
if cnx.closed: if cnx.closed:
self._connections.pop(i) self._connections.pop(i)
@ -407,6 +406,14 @@ class ConnectionPool(object):
for i, (cnx, used) in enumerate(self._connections): for i, (cnx, used) in enumerate(self._connections):
if not used and dsn_are_equals(cnx.dsn, dsn): if not used and dsn_are_equals(cnx.dsn, dsn):
try:
cnx.reset()
except psycopg2.OperationalError:
self._debug('Cannot reset connection at index %d: %r', i, cnx.dsn)
# psycopg2 2.4.4 and earlier do not allow closing a closed connection
if not cnx.closed:
cnx.close()
continue
self._connections.pop(i) self._connections.pop(i)
self._connections.append((cnx, True)) self._connections.append((cnx, True))
self._debug('Existing connection found at index %d', i) self._debug('Existing connection found at index %d', i)
@ -507,7 +514,6 @@ def db_connect(db_name):
global _Pool global _Pool
if _Pool is None: if _Pool is None:
_Pool = ConnectionPool(int(tools.config['db_maxconn'])) _Pool = ConnectionPool(int(tools.config['db_maxconn']))
currentThread().dbname = db_name
return Connection(_Pool, db_name) return Connection(_Pool, db_name)
def close_db(db_name): def close_db(db_name):
@ -515,9 +521,6 @@ def close_db(db_name):
global _Pool global _Pool
if _Pool: if _Pool:
_Pool.close_all(dsn(db_name)) _Pool.close_all(dsn(db_name))
ct = currentThread()
if hasattr(ct, 'dbname'):
delattr(ct, 'dbname')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -83,6 +83,8 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file
if image.size != size: if image.size != size:
# If you need faster thumbnails you may use use Image.NEAREST # If you need faster thumbnails you may use use Image.NEAREST
image = ImageOps.fit(image, size, Image.ANTIALIAS) image = ImageOps.fit(image, size, Image.ANTIALIAS)
if image.mode not in ["1", "L", "P", "RGB", "RGBA"]:
image = image.convert("RGB")
background_stream = StringIO.StringIO() background_stream = StringIO.StringIO()
image.save(background_stream, filetype) image.save(background_stream, filetype)

View File

@ -50,7 +50,7 @@ def html_sanitize(src):
src = ustr(src, errors='replace') src = ustr(src, errors='replace')
# html encode email tags # html encode email tags
part = re.compile(r"(<[^<>]+@[^<>]+>)", re.IGNORECASE | re.DOTALL) part = re.compile(r"(<(([^a<>]|a[^<>\s])[^<>]*)@[^<>]+>)", re.IGNORECASE | re.DOTALL)
src = part.sub(lambda m: cgi.escape(m.group(1)), src) src = part.sub(lambda m: cgi.escape(m.group(1)), src)
# some corner cases make the parser crash (such as <SCRIPT/XSS SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT> in test_mail) # some corner cases make the parser crash (such as <SCRIPT/XSS SRC=\"http://ha.ckers.org/xss.js\"></SCRIPT> in test_mail)
@ -185,6 +185,8 @@ def html2plaintext(html, body_id=None, encoding='utf-8'):
url_index.append(url) url_index.append(url)
html = ustr(etree.tostring(tree, encoding=encoding)) html = ustr(etree.tostring(tree, encoding=encoding))
# \r char is converted into &#13;, must remove it
html = html.replace('&#13;', '')
html = html.replace('<strong>', '*').replace('</strong>', '*') html = html.replace('<strong>', '*').replace('</strong>', '*')
html = html.replace('<b>', '*').replace('</b>', '*') html = html.replace('<b>', '*').replace('</b>', '*')

Some files were not shown because too many files have changed in this diff Show More