diff --git a/doc/01_getting_started.rst b/doc/01_getting_started.rst
index 0403b708d47..175c78cd9bc 100644
--- a/doc/01_getting_started.rst
+++ b/doc/01_getting_started.rst
@@ -10,13 +10,25 @@ Installation from sources
.. _getting_started_installation_source-link:
-Source code is hosted on Launchpad_. In order to get the sources, you will need Bazaar_ to pull the source from Launchpad. Bazaar is a version control system that helps you track project history over time and collaborate efficiently. You may have to create an account on Launchpad to be able to collaborate on OpenERP development. Please refer to the Launchpad and Bazaar documentation to install and setup your development environment.
+Source code is hosted on Launchpad_. In order to get the sources, you
+will need Bazaar_ to pull the source from Launchpad. Bazaar is a
+version control system that helps you track project history over time
+and collaborate efficiently. You may have to create an account on
+Launchpad to be able to collaborate on OpenERP development. Please
+refer to the Launchpad and Bazaar documentation to install and setup
+your development environment.
-The running example of this section is based on an Ubuntu environment. You may have to adapt the steps according to your system. Once your working environment is ready, prepare a working directory that will contain the sources. For a ``source`` base directory, type::
+The running example of this section is based on an Ubuntu
+environment. You may have to adapt the steps according to your
+system. Once your working environment is ready, prepare a working
+directory that will contain the sources. For a ``source`` base
+directory, type::
mkdir source;cd source
-OpenERP provides a setup script that automatizes the tasks of creating a shared repository and getting the source code. Get the setup script of OpenERP by typing::
+OpenERP provides a setup script that automatizes the tasks of creating
+a shared repository and getting the source code. Get the setup script
+of OpenERP by typing::
bzr cat -d lp:~openerp-dev/openerp-tools/trunk setup.sh | sh
@@ -29,27 +41,30 @@ If you want some help about the available options, please type::
make help
-Next step is to initialize the shared repository and download the sources. Get the current trunk version of OpenERP by typing::
+Next step is to initialize the shared repository and download the
+sources. Get the current trunk version of OpenERP by typing::
make init-trunk
-This will create the following structure inside your ``source`` directory, and fetch the latest source code from ``trunk``::
+This will create the following structure inside your ``source``
+directory, and fetch the latest source code from ``trunk``::
drwxrwxr-x 3 openerp openerp 4096 2012-04-17 11:10 addons
drwxrwxr-x 3 openerp openerp 4096 2012-04-17 11:10 misc
drwxrwxr-x 3 openerp openerp 4096 2012-04-17 11:10 server
drwxrwxr-x 3 openerp openerp 4096 2012-04-17 11:10 web
-Some dependencies are necessary to use OpenERP. Depending on your environment, you might have to install the following packages::
+Some dependencies are necessary to use OpenERP. Depending on your
+environment, you might have to install the following packages::
- sudo apt-get install graphviz ghostscript postgresql-client
-
- sudo apt-get install python-dateutil python-feedparser python-gdata
- python-ldap python-libxslt1 python-lxml python-mako, python-openid
- python-psycopg2 python-pybabel python-pychart python-pydot
- python-pyparsing python-reportlab python-simplejson python-tz
- python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt
- python-yaml python-imaging python-matplotlib
+ sudo apt-get install graphviz ghostscript postgresql-client \
+ python-dateutil python-feedparser python-gdata \
+ python-ldap python-libxslt1 python-lxml python-mako \
+ python-openid python-psycopg2 python-pybabel python-pychart \
+ python-pydot python-pyparsing python-reportlab python-simplejson \
+ python-tz python-vatnumber python-vobject python-webdav \
+ python-werkzeug python-xlwt python-yaml python-imaging \
+ python-matplotlib
Next step is to initialize the database. This will create a new openerp role::
@@ -59,7 +74,8 @@ Finally, launch the OpenERP server::
make server
-Testing your installation can be done on http://localhost:8069/ . You should see the OpenERP main login page.
+Testing your installation can be done on http://localhost:8069/. You
+should see the OpenERP main login page.
.. _Launchpad: https://launchpad.net/
.. _Bazaar: http://bazaar.canonical.com/en/
@@ -67,12 +83,12 @@ Testing your installation can be done on http://localhost:8069/ . You should see
Command line options
====================
+.. program:: openerp-server
+
Using the command ::
./openerp-server --help
-gives you the available command line options. For OpenERP server at revision 4133, an output example is given in the `Command line options example`_. Here are a few interesting command line options.
-
General Options
+++++++++++++++
@@ -117,7 +133,8 @@ Database related options
Internationalization options
++++++++++++++++++++++++++++
-Use these options to translate OpenERP to another language.See i18n section of the user manual. Option '-l' is mandatory.::
+Use these options to translate OpenERP to another language.See i18n
+section of the user manual. Option '-l' is mandatory.::
-l LANGUAGE, --language=LANGUAGE
specify the language of the translation file. Use it
@@ -134,8 +151,9 @@ Use these options to translate OpenERP to another language.See i18n section of t
Options from previous versions
++++++++++++++++++++++++++++++
-Some options were removed in OpenERP version 6. For example, ``price_accuracy`` is now
-configured through the :ref:`decimal_accuracy` screen.
+Some options were removed in OpenERP version 6. For example,
+``price_accuracy`` is now configured through the
+:ref:`decimal_accuracy` screen.
Configuration
==============
@@ -147,7 +165,12 @@ Two configuration files are available:
* one for the client: ``~/.openerprc``
* one for the server: ``~/.openerp_serverrc``
-If they are not found, the server and the client will start with a default configuration. Those files follow the convention used by python's ConfigParser module. Please note that lines beginning with "#" or ";" are comments. The client configuration file is automatically generated upon the first start. The sezrver configuration file can automatically be created using the command ::
+If they are not found, the server and the client will start with a
+default configuration. Those files follow the convention used by
+python's ConfigParser module. Please note that lines beginning with
+"#" or ";" are comments. The client configuration file is
+automatically generated upon the first start. The sezrver
+configuration file can automatically be created using the command ::
./openerp-server -s or ./openerp-server --save
@@ -156,19 +179,20 @@ You can specify alternate configuration files with ::
-c CONFIG, --config=CONFIG specify alternate config file
Configure addons locations
---------------------------
+++++++++++++++++++++++++++
-By default, the only directory of addons known by the server is server/bin/addons.
-It is possible to add new addons by
+By default, the only directory of addons known by the server is
+server/bin/addons. It is possible to add new addons by
- - copying them in server/bin/addons, or creating a symbolic link to each
- of them in this directory, or
- - specifying another directory containing addons to the server. The later
- can be accomplished either by running the server with the ``--addons-path=``
- option, or by configuring this option in the openerp_serverrc file,
- automatically generated under Linux in your home directory by the
- server when executed with the ``--save`` option. You can provide several
- addons to the ``addons_path`` = option, separating them using commas.
+ - copying them in server/bin/addons, or creating a symbolic link to
+ each of them in this directory, or
+ - specifying another directory containing addons to the server. The
+ later can be accomplished either by running the server with the
+ ``--addons-path=`` option, or by configuring this option in the
+ openerp_serverrc file, automatically generated under Linux in your
+ home directory by the server when executed with the ``--save``
+ option. You can provide several addons to the ``addons_path`` =
+ option, separating them using commas.
Start-up script
===============
@@ -176,9 +200,9 @@ Start-up script
.. versionadded:: 6.1
To run the OpenERP server, the conventional approach is to use the
-`openerp-server` script. It loads the :ref:`openerp library`, sets a few
-configuration variables corresponding to command-line arguments, and starts to
-listen to incoming connections from clients.
+`openerp-server` script. It loads the :ref:`openerp library`, sets a
+few configuration variables corresponding to command-line arguments,
+and starts to listen to incoming connections from clients.
Depending on your deployment needs, you can write such a start-up script very
easily. We also recommend you take a look at an alternative tool called
diff --git a/doc/03_module_dev.rst b/doc/03_module_dev.rst
index 033ba4b9267..72f035be4d0 100644
--- a/doc/03_module_dev.rst
+++ b/doc/03_module_dev.rst
@@ -1,3 +1,5 @@
+.. _module-dev:
+
=======
Modules
=======
diff --git a/doc/03_module_dev_01.rst b/doc/03_module_dev_01.rst
index 88a4f96aee7..0fbca9d14b4 100644
--- a/doc/03_module_dev_01.rst
+++ b/doc/03_module_dev_01.rst
@@ -1,3 +1,5 @@
+.. _module-dev-structure:
+
Module structure
================
@@ -124,11 +126,11 @@ But it is dangerous to write or read directly in the PostgreSQL database, as
you will shortcut important steps like constraints checking or workflow
modification.
-.. figure:: images/pom_3_0_3.png
- :scale: 50
- :align: center
+.. .. figure:: images/pom_3_0_3.png
+.. :scale: 50
+.. :align: center
- *The Physical Objects Model of [OpenERP version 3.0.3]*
+.. *The Physical Objects Model of [OpenERP version 3.0.3]*
XML Files
@@ -311,9 +313,9 @@ When you open an invoice, here is the chain of operations followed by the client
* The client asks (with XML-RPC) to the server what views are defined for the invoice object and what are the data it must show.
* The client displays the form according to the view
-.. figure:: images/arch_view_use.png
- :scale: 50
- :align: center
+.. .. figure:: images/arch_view_use.png
+.. :scale: 50
+.. :align: center
To develop new objects
//////////////////////
@@ -342,9 +344,9 @@ The workflows describe these interactions with graphs. One or several workflows
Below is an example workflow used for sale orders. It must generate invoices and shipments according to certain conditions.
-.. figure:: images/arch_workflow_sale.png
- :scale: 85
- :align: center
+.. .. figure:: images/arch_workflow_sale.png
+.. :scale: 85
+.. :align: center
In this graph, the nodes represent the actions to be done:
diff --git a/doc/03_module_dev_02.rst b/doc/03_module_dev_02.rst
index c7075a8f7ae..9c00df6223e 100644
--- a/doc/03_module_dev_02.rst
+++ b/doc/03_module_dev_02.rst
@@ -1,3 +1,5 @@
+.. _module-dev-api:
+
Objects, Fields and Methods
===========================
diff --git a/doc/03_module_dev_03.rst b/doc/03_module_dev_03.rst
index 6091934596f..40921eebcb5 100644
--- a/doc/03_module_dev_03.rst
+++ b/doc/03_module_dev_03.rst
@@ -1,3 +1,5 @@
+.. _module-dev-views:
+
Views and Events
================
@@ -45,26 +47,26 @@ The field disposition in a form view always follows the same principle. Fields a
* Fields are placed on the screen from left to right, and from top to bottom, according to the order in which they are declared in the view.
* Every screen is divided into 4 columns, each column being able to contain either a label, or an "edition" field. As every edition field is preceded (by default) by a label with its name, there will be two fields (and their respective labels) on each line of the screen. The green and red zones on the screen-shot below, illustrate those 4 columns. They designate respectively the labels and their corresponding fields.
-.. figure:: images/sale_order.png
- :scale: 50
- :align: center
+.. .. figure:: images/sale_order.png
+.. :scale: 50
+.. :align: center
Views also support more advanced placement options:
* A view field can use several columns. For example, on the screen-shot below, the zone in the blue frame is, in fact, the only field of a "one to many". We will come back later on this note, but let's note that it uses the whole width of the screen and not only one column.
- .. figure:: images/sale_order_sale_order_lines.png
- :scale: 50
- :align: center
+ .. .. figure:: images/sale_order_sale_order_lines.png
+ .. :scale: 50
+ .. :align: center
* We can also make the opposite operation: take a columns group and divide it in as many columns as desired. The surrounded green zones of the screen above are good examples. Precisely, the green framework up and on the right side takes the place of two columns, but contains 4 columns.
As we can see below in the purple zone of the screen, there is also a way to distribute the fields of an object on different tabs.
-.. figure:: images/sale_order_notebook.png
- :scale: 50
- :align: center
+.. .. figure:: images/sale_order_notebook.png
+.. :scale: 50
+.. :align: center
On Change
+++++++++
@@ -129,9 +131,9 @@ Tree views
These views are used when we work in list mode (in order to visualize several resources at once) and in the search screen. These views are simpler than the form views and thus have less options.
-.. figure:: images/tree_view.png
- :scale: 50
- :align: center
+.. .. figure:: images/tree_view.png
+.. :scale: 50
+.. :align: center
Search views
--------------
@@ -140,9 +142,9 @@ Search views are a new feature of OpenERP supported as of version 6.0
It creates a customized search panel, and is declared quite similarly to a form view,
except that the view type and root element change to ``search`` instead of ``form``.
-.. image:: images/search.png
- :scale: 50
- :align: center
+.. .. image:: images/search.png
+.. :scale: 50
+.. :align: center
Following is the list of new elements and features supported in search views.
@@ -300,9 +302,9 @@ combining them with AND/OR operators. It is also possible to save any search con
of all currently applied domain and context values) as a personal filter, which can be recalled
at any time. Filters can also be turned into Shortcuts directly available in the User's homepage.
-.. image:: images/filter.png
- :scale: 50
- :align: center
+.. .. image:: images/filter.png
+.. :scale: 50
+.. :align: center
In above screenshot we filter Partner where Salesman = Demo user and Country = Belgium,
@@ -440,15 +442,15 @@ Screenshots
Month Calendar:
-.. figure:: images/calendar_month.png
- :scale: 50%
- :align: center
+.. .. figure:: images/calendar_month.png
+.. :scale: 50%
+.. :align: center
Week Calendar:
-.. figure:: images/calendar_week.png
- :scale: 50%
- :align: center
+.. .. figure:: images/calendar_week.png
+.. :scale: 50%
+.. :align: center
Gantt Views
@@ -556,9 +558,9 @@ end time can be changed by dragging right end of a bar.
Screenshots
+++++++++++
-.. figure:: images/gantt.png
- :scale: 50%
- :align: center
+.. .. figure:: images/gantt.png
+.. :scale: 50%
+.. :align: center
Design Elements
@@ -1337,9 +1339,9 @@ The *view_id* method works very well for menus/actions, but how can you specify
field, for example? When you have a one2many field, two views are used, a tree view (**in blue**), and a form view when
you click on the add button (**in red**).
-.. figure:: images/one2many_views.png
- :scale: 70%
- :align: center
+.. .. figure:: images/one2many_views.png
+.. :scale: 70%
+.. :align: center
When you add a one2many field in a form view, you do something like this :
diff --git a/doc/03_module_dev_04.rst b/doc/03_module_dev_04.rst
index 8ff73cdc7e0..497830ca0e2 100644
--- a/doc/03_module_dev_04.rst
+++ b/doc/03_module_dev_04.rst
@@ -1,3 +1,5 @@
+.. _module-dev-actions:
+
=================
Menus and Actions
=================
@@ -207,9 +209,9 @@ They indicate at the user that he has to open a new window in a new 'tab'.
Administration > Custom > Low Level > Base > Action > Window Actions
-.. figure:: images/module_base_action_window.png
- :scale: 85
- :align: center
+.. .. figure:: images/module_base_action_window.png
+.. :scale: 85
+.. :align: center
Examples of actions
+++++++++++++++++++
diff --git a/doc/03_module_dev_05.rst b/doc/03_module_dev_05.rst
index 686fb6fe099..3bddecf9140 100644
--- a/doc/03_module_dev_05.rst
+++ b/doc/03_module_dev_05.rst
@@ -1,3 +1,4 @@
+.. _module-dev-example:
==========================
Example of module creation
diff --git a/doc/03_module_dev_06.rst b/doc/03_module_dev_06.rst
index ebb97ea9010..f6771bbabed 100644
--- a/doc/03_module_dev_06.rst
+++ b/doc/03_module_dev_06.rst
@@ -1,3 +1,4 @@
+.. _module-dev-versioning:
.. _module_versioning:
=================
diff --git a/doc/04_security.rst b/doc/04_security.rst
index b1f9f565384..99d7fd3d17f 100644
--- a/doc/04_security.rst
+++ b/doc/04_security.rst
@@ -1,3 +1,5 @@
+.. _security:
+
==================================
Security in OpenERP: users, groups
==================================
diff --git a/openerp/addons/base/base_demo.xml b/openerp/addons/base/base_demo.xml
index 89176d1811b..71a5641a540 100644
--- a/openerp/addons/base/base_demo.xml
+++ b/openerp/addons/base/base_demo.xml
@@ -15,10 +15,159 @@
Mr Demo
+ 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
+gk//2Q==
admin@example.com
+ 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
+kALR5oiAU7jnCuj0RFIHQbIiKAf/2Q==
@@ -27,5 +176,6 @@ Mr Demo
+
diff --git a/openerp/addons/base/i18n/fa.po b/openerp/addons/base/i18n/fa.po
index 347abf02cbf..e46f8e266da 100644
--- a/openerp/addons/base/i18n/fa.po
+++ b/openerp/addons/base/i18n/fa.po
@@ -3,14 +3,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
-"PO-Revision-Date: 2012-11-13 02:22+0000\n"
+"PO-Revision-Date: 2012-11-18 22:57+0000\n"
"Last-Translator: fshahy \n"
"Language-Team: OpenERP Iran \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-11-14 04:40+0000\n"
-"X-Generator: Launchpad (build 16251)\n"
+"X-Launchpad-Export-Date: 2012-11-20 04:51+0000\n"
+"X-Generator: Launchpad (build 16286)\n"
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-Language: Persian\n"
@@ -27,7 +27,7 @@ msgstr "پیکربندی های دیگر"
#. module: base
#: selection:ir.property,type:0
msgid "DateTime"
-msgstr ""
+msgstr "تاریخ و ساعت"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mailgate
@@ -973,7 +973,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.act_menu_create
#: view:wizard.ir.model.menu.create:0
msgid "Create Menu"
-msgstr "پدیدن منو"
+msgstr "ایجاد منو"
#. module: base
#: model:res.country,name:base.in
@@ -1144,7 +1144,7 @@ msgstr ""
#. module: base
#: selection:ir.property,type:0
msgid "Char"
-msgstr ""
+msgstr "کاراکتر"
#. module: base
#: selection:base.language.install,lang:0
@@ -1362,7 +1362,7 @@ msgstr "ir.exports"
#: code:addons/base/module/wizard/base_update_translations.py:38
#, python-format
msgid "No language with code \"%s\" exists"
-msgstr ""
+msgstr "هیچ زبانی با کد %s وجود ندارد"
#. module: base
#: model:ir.module.module,description:base.module_document
@@ -1809,7 +1809,7 @@ msgstr "همکاران"
#. module: base
#: field:res.partner.category,parent_left:0
msgid "Left parent"
-msgstr ""
+msgstr "گره پدر سمت چپ"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mrp
@@ -2635,7 +2635,7 @@ msgstr ""
#: code:addons/base/res/res_company.py:155
#, python-format
msgid "Fax: "
-msgstr ""
+msgstr "فکس: "
#. module: base
#: model:res.country,name:base.si
@@ -2961,7 +2961,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
msgid "Wiki: Quality Manual"
-msgstr ""
+msgstr "ویکی: راهنمای کیفیت"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@@ -2974,7 +2974,7 @@ msgstr "گاهشمار"
#. module: base
#: field:res.partner.address,partner_id:0
msgid "Partner Name"
-msgstr ""
+msgstr "نام همکار"
#. module: base
#: field:workflow.activity,signal_send:0
@@ -2989,7 +2989,7 @@ msgstr "بخش منابع انسانی"
#. module: base
#: model:ir.ui.menu,name:base.menu_dashboard_admin
msgid "Administration Dashboard"
-msgstr ""
+msgstr "داشبورد مدیر"
#. module: base
#: code:addons/orm.py:4408
@@ -3072,7 +3072,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
msgid "Employee Contracts"
-msgstr ""
+msgstr "قرارداد کارمند"
#. module: base
#: model:ir.module.module,description:base.module_wiki_faq
@@ -3136,7 +3136,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_survey
msgid "Survey"
-msgstr ""
+msgstr "نظرسنجی"
#. module: base
#: view:base.language.import:0
@@ -3258,7 +3258,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Portugese / Português"
-msgstr ""
+msgstr "پرتغالی / Português"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_sir
@@ -3365,7 +3365,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Japanese / 日本語"
-msgstr ""
+msgstr "ژاپنی / 日本語"
#. module: base
#: field:ir.actions.report.xml,auto:0
@@ -3428,7 +3428,7 @@ msgstr ""
#: model:ir.module.category,name:base.module_category_generic_modules_accounting
#: view:res.company:0
msgid "Accounting"
-msgstr ""
+msgstr "حسابداری"
#. module: base
#: model:ir.module.module,description:base.module_account_payment
@@ -3497,7 +3497,7 @@ msgstr "res.partner.event"
#: model:ir.model,name:base.model_ir_filters
#: model:ir.ui.menu,name:base.menu_ir_filters
msgid "Filters"
-msgstr ""
+msgstr "فیلترها"
#. module: base
#: model:ir.actions.act_window,help:base.open_module_tree
@@ -3548,7 +3548,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_point_of_sale
msgid "Point Of Sale"
-msgstr ""
+msgstr "نقطه فروش"
#. module: base
#: code:addons/base/module/module.py:302
@@ -3582,7 +3582,7 @@ msgstr ""
#. module: base
#: selection:ir.sequence,implementation:0
msgid "Standard"
-msgstr ""
+msgstr "استاندارد"
#. module: base
#: model:ir.model,name:base.model_maintenance_contract
@@ -3615,7 +3615,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_human_resources
msgid "Human Resources"
-msgstr ""
+msgstr "منابع انسانی"
#. module: base
#: model:ir.actions.act_window,name:base.action_country
@@ -3675,7 +3675,7 @@ msgstr "مالیات بر ارزش افزوده"
#. module: base
#: field:res.users,new_password:0
msgid "Set password"
-msgstr ""
+msgstr "تنظیم کلمه عبور"
#. module: base
#: view:res.lang:0
@@ -3970,7 +3970,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_it
msgid "Italy - Accounting"
-msgstr ""
+msgstr "ایتالیا - حسابداری"
#. module: base
#: field:ir.actions.act_window,help:0
@@ -4021,12 +4021,12 @@ msgstr "Xor"
#. module: base
#: model:ir.module.category,name:base.module_category_localization_account_charts
msgid "Account Charts"
-msgstr ""
+msgstr "نمودار حساب ها"
#. module: base
#: view:res.request:0
msgid "Request Date"
-msgstr ""
+msgstr "تاریخ درخواست"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:52
@@ -4175,7 +4175,7 @@ msgstr "چکیده"
#. module: base
#: model:ir.module.category,name:base.module_category_hidden_dependency
msgid "Dependency"
-msgstr ""
+msgstr "وابستگی"
#. module: base
#: field:multi_company.default,expression:0
@@ -4280,7 +4280,7 @@ msgstr ""
#: model:ir.module.module,shortdesc:base.module_marketing
#: model:ir.ui.menu,name:base.marketing_menu
msgid "Marketing"
-msgstr ""
+msgstr "بازاریابی"
#. module: base
#: view:res.partner.bank:0
@@ -4325,7 +4325,7 @@ msgstr ""
#. module: base
#: field:ir.attachment,url:0
msgid "Url"
-msgstr ""
+msgstr "آدرس وب"
#. module: base
#: selection:ir.translation,type:0
@@ -4455,7 +4455,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Hebrew / עִבְרִי"
-msgstr ""
+msgstr "عبری / עִבְרִי"
#. module: base
#: model:res.country,name:base.bo
@@ -4494,7 +4494,7 @@ msgstr "قواعد"
#. module: base
#: field:ir.mail_server,smtp_host:0
msgid "SMTP Server"
-msgstr ""
+msgstr "سرور SMTP"
#. module: base
#: code:addons/base/module/module.py:256
@@ -4585,12 +4585,12 @@ msgstr "کنیا"
#: model:ir.actions.act_window,name:base.action_translation
#: model:ir.ui.menu,name:base.menu_action_translation
msgid "Translated Terms"
-msgstr ""
+msgstr "کلمات ترجمه شده"
#. module: base
#: view:res.partner.event:0
msgid "Event"
-msgstr ""
+msgstr "رخداد"
#. module: base
#: model:ir.ui.menu,name:base.menu_custom_reports
@@ -4779,7 +4779,7 @@ msgstr "موریتیوس"
#: view:ir.model.access:0
#: view:ir.rule:0
msgid "Full Access"
-msgstr ""
+msgstr "دسترسی کامل"
#. module: base
#: view:ir.actions.act_window:0
@@ -4816,7 +4816,7 @@ msgstr "برپاسازی شد"
#. module: base
#: selection:base.language.install,lang:0
msgid "Ukrainian / українська"
-msgstr ""
+msgstr "اکراینی / українська"
#. module: base
#: model:res.country,name:base.sn
@@ -4910,7 +4910,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_localization
msgid "Localization"
-msgstr ""
+msgstr "بومی سازی"
#. module: base
#: model:ir.module.module,description:base.module_sale_mrp
@@ -4975,7 +4975,7 @@ msgstr "منوی مادر"
#. module: base
#: field:res.partner.bank,owner_name:0
msgid "Account Owner Name"
-msgstr ""
+msgstr "نام صاحب حساب"
#. module: base
#: field:ir.rule,perm_unlink:0
@@ -5003,7 +5003,7 @@ msgstr "جداساز شمارگانی"
#: view:ir.module.module:0
#, python-format
msgid "Install"
-msgstr ""
+msgstr "نصب"
#. module: base
#: model:ir.actions.act_window,help:base.action_res_groups
@@ -5019,7 +5019,7 @@ msgstr ""
#. module: base
#: field:ir.filters,name:0
msgid "Filter Name"
-msgstr ""
+msgstr "نام فیلتر"
#. module: base
#: view:res.partner:0
@@ -5126,7 +5126,7 @@ msgstr "فیلد"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_long_term
msgid "Long Term Projects"
-msgstr ""
+msgstr "پروژه های بلند مدت"
#. module: base
#: model:res.country,name:base.ve
@@ -5362,7 +5362,7 @@ msgstr "وب"
#. module: base
#: model:ir.module.module,shortdesc:base.module_lunch
msgid "Lunch Orders"
-msgstr ""
+msgstr "سفارش های نهار"
#. module: base
#: selection:base.language.install,lang:0
@@ -5515,7 +5515,7 @@ msgstr "جزایر اسوالبار و یان ماین"
#. module: base
#: model:ir.module.category,name:base.module_category_hidden_test
msgid "Test"
-msgstr ""
+msgstr "تست"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_kanban
@@ -5534,7 +5534,7 @@ msgstr "گروهبندی برمبنای"
#: view:res.config:0
#: view:res.config.installer:0
msgid "title"
-msgstr ""
+msgstr "عنوان"
#. module: base
#: field:base.language.install,state:0
@@ -5560,12 +5560,12 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_base_language_install
msgid "Install Language"
-msgstr ""
+msgstr "نصب زبان"
#. module: base
#: view:ir.translation:0
msgid "Translation"
-msgstr ""
+msgstr "ترجمه"
#. module: base
#: selection:res.request,state:0
@@ -5605,7 +5605,7 @@ msgstr "ویژگی هنگام ستردن برای فیلدهای many2one"
#. module: base
#: model:ir.module.category,name:base.module_category_accounting_and_finance
msgid "Accounting & Finance"
-msgstr ""
+msgstr "حسابداری و مالی"
#. module: base
#: field:ir.actions.server,write_id:0
@@ -5615,7 +5615,7 @@ msgstr "شناسه نوشتن"
#. module: base
#: model:ir.ui.menu,name:base.menu_product
msgid "Products"
-msgstr ""
+msgstr "محصولات"
#. module: base
#: help:res.users,name:0
@@ -5846,7 +5846,7 @@ msgstr ""
#. module: base
#: view:ir.attachment:0
msgid "Month"
-msgstr ""
+msgstr "ماه"
#. module: base
#: model:res.country,name:base.my
@@ -5890,7 +5890,7 @@ msgstr ""
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Automatically"
-msgstr ""
+msgstr "بارگذاری خودکار"
#. module: base
#: model:ir.module.module,description:base.module_mail
@@ -6286,7 +6286,7 @@ msgstr "بانکها"
#. module: base
#: view:res.log:0
msgid "Unread"
-msgstr ""
+msgstr "خوانده نشده"
#. module: base
#: field:res.users,id:0
@@ -6492,7 +6492,7 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_main_pm
msgid "Project"
-msgstr ""
+msgstr "پروژه"
#. module: base
#: field:ir.ui.menu,web_icon_hover_data:0
@@ -6557,7 +6557,7 @@ msgstr "قرارداد نگهداری"
#: model:res.groups,name:base.group_user
#: field:res.partner,employee:0
msgid "Employee"
-msgstr ""
+msgstr "کارمند"
#. module: base
#: field:ir.model.access,perm_create:0
@@ -6591,7 +6591,7 @@ msgstr ""
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Edit"
-msgstr ""
+msgstr "ویرایش"
#. module: base
#: field:ir.actions.client,params:0
@@ -6601,7 +6601,7 @@ msgstr ""
#. module: base
#: field:res.users,view:0
msgid "Interface"
-msgstr ""
+msgstr "رابط"
#. module: base
#: view:ir.actions.server:0
@@ -6771,12 +6771,12 @@ msgstr "روی چند سند"
#: view:res.partner:0
#: field:res.partner,user_id:0
msgid "Salesman"
-msgstr ""
+msgstr "مسول فروش"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_accountant
msgid "Accounting and Finance"
-msgstr ""
+msgstr "حسابداری و مالی"
#. module: base
#: code:addons/base/module/module.py:429
@@ -6818,7 +6818,7 @@ msgstr ""
#. module: base
#: view:res.widget.wizard:0
msgid "Add"
-msgstr ""
+msgstr "افزودن"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_ec
@@ -6892,7 +6892,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Hindi / हिंदी"
-msgstr ""
+msgstr "هندی / हिंदी"
#. module: base
#: help:res.users,company_id:0
@@ -7058,7 +7058,7 @@ msgstr "کد ISO"
#: view:res.log:0
#: field:res.log,read:0
msgid "Read"
-msgstr ""
+msgstr "خواندن"
#. module: base
#: model:ir.module.module,shortdesc:base.module_association
@@ -7155,7 +7155,7 @@ msgstr "فیلدها"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_employee_form
msgid "Employees"
-msgstr ""
+msgstr "کارمندان"
#. module: base
#: field:ir.exports.line,name:0
@@ -7478,7 +7478,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_knowledge_management
msgid "Knowledge Management"
-msgstr ""
+msgstr "مدیریت دانش"
#. module: base
#: model:ir.actions.act_window,name:base.bank_account_update
@@ -7542,7 +7542,7 @@ msgstr ""
#. module: base
#: model:res.partner.bank.type,name:base.bank_normal
msgid "Normal Bank Account"
-msgstr ""
+msgstr "حساب بانکی معمولی"
#. module: base
#: view:ir.actions.wizard:0
@@ -8182,7 +8182,7 @@ msgstr "اسلوونیایی / slovenščina"
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki
msgid "Wiki"
-msgstr ""
+msgstr "ویکی"
#. module: base
#: model:ir.module.module,description:base.module_l10n_de
@@ -8368,7 +8368,7 @@ msgstr "_بستن"
#. module: base
#: field:multi_company.default,company_dest_id:0
msgid "Default Company"
-msgstr ""
+msgstr "شرکت پیش فرض"
#. module: base
#: selection:base.language.install,lang:0
@@ -8490,7 +8490,7 @@ msgstr ""
#. module: base
#: field:ir.module.module,complexity:0
msgid "Complexity"
-msgstr ""
+msgstr "پیچیدگی"
#. module: base
#: selection:ir.actions.act_window,target:0
@@ -8507,7 +8507,7 @@ msgstr ""
#: code:addons/orm.py:4085
#, python-format
msgid "UserError"
-msgstr ""
+msgstr "خطای کاربر"
#. module: base
#: model:ir.module.module,description:base.module_account_analytic_default
@@ -8539,7 +8539,7 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
msgid "Recruitment"
-msgstr ""
+msgstr "استخدام"
#. module: base
#: model:ir.module.module,description:base.module_l10n_gr
@@ -8583,12 +8583,12 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp_repair
msgid "Repairs Management"
-msgstr ""
+msgstr "مدیریت تعمیرات"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_asset
msgid "Assets Management"
-msgstr ""
+msgstr "مدیریت دارایی"
#. module: base
#: view:ir.model.access:0
@@ -8930,7 +8930,7 @@ msgstr ""
#. module: base
#: view:ir.actions.report.xml:0
msgid "Report"
-msgstr ""
+msgstr "گزارش"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:218
@@ -8956,7 +8956,7 @@ msgstr "تارنما"
#. module: base
#: selection:ir.mail_server,smtp_encryption:0
msgid "None"
-msgstr ""
+msgstr "هیچکدام"
#. module: base
#: view:ir.module.category:0
@@ -8981,7 +8981,7 @@ msgstr ""
#. module: base
#: view:ir.ui.view:0
msgid "Architecture"
-msgstr ""
+msgstr "معماری"
#. module: base
#: model:res.country,name:base.ml
@@ -9177,7 +9177,7 @@ msgstr ""
#: model:ir.model,name:base.model_ir_model
#: model:ir.ui.menu,name:base.ir_model_model_menu
msgid "Models"
-msgstr ""
+msgstr "مدل ها"
#. module: base
#: code:addons/base/ir/ir_cron.py:292
@@ -9188,7 +9188,7 @@ msgstr ""
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Manually"
-msgstr ""
+msgstr "بارگذاری دستی"
#. module: base
#: model:res.country,name:base.be
@@ -9396,7 +9396,7 @@ msgstr ""
#. module: base
#: selection:publisher_warranty.contract.wizard,state:0
msgid "Finished"
-msgstr ""
+msgstr "تمام شده"
#. module: base
#: model:res.country,name:base.de
@@ -9627,7 +9627,7 @@ msgstr ""
#. module: base
#: selection:ir.module.module,complexity:0
msgid "Expert"
-msgstr ""
+msgstr "متخصص"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_holidays
@@ -9647,7 +9647,7 @@ msgstr ""
#: view:res.partner.address:0
#: view:workflow.activity:0
msgid "Group By..."
-msgstr ""
+msgstr "گروه بتدی بر اساس ..."
#. module: base
#: view:ir.model.fields:0
@@ -9791,7 +9791,7 @@ msgstr "دقیقهها"
#. module: base
#: view:res.currency:0
msgid "Display"
-msgstr ""
+msgstr "نمایش"
#. module: base
#: selection:ir.translation,type:0
@@ -9812,7 +9812,7 @@ msgstr ""
#. module: base
#: model:ir.actions.report.xml,name:base.preview_report
msgid "Preview Report"
-msgstr ""
+msgstr "پیش نمایش گزارش"
#. module: base
#: model:ir.module.module,shortdesc:base.module_purchase_analytic_plans
@@ -9897,7 +9897,7 @@ msgstr "هفتهها"
#: code:addons/base/res/res_company.py:157
#, python-format
msgid "VAT: "
-msgstr ""
+msgstr "مالیات بر ارزش افزوده "
#. module: base
#: model:res.country,name:base.af
@@ -10922,7 +10922,7 @@ msgstr ""
#. module: base
#: view:ir.model.data:0
msgid "Updatable"
-msgstr ""
+msgstr "قابل به روز رسانی"
#. module: base
#: view:res.lang:0
@@ -10954,7 +10954,7 @@ msgstr "عربی / الْعَرَبيّة"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_hello
msgid "Hello"
-msgstr ""
+msgstr "سلام"
#. module: base
#: view:ir.actions.configuration.wizard:0
@@ -10969,7 +10969,7 @@ msgstr "توضیح"
#. module: base
#: model:res.groups,name:base.group_hr_manager
msgid "HR Manager"
-msgstr ""
+msgstr "مدیر منابع انسانی"
#. module: base
#: view:ir.filters:0
@@ -11161,7 +11161,7 @@ msgstr "باز کردن پنجره"
#. module: base
#: field:ir.actions.act_window,auto_search:0
msgid "Auto Search"
-msgstr ""
+msgstr "جستجوی خودکار"
#. module: base
#: field:ir.actions.act_window,filter:0
@@ -11260,7 +11260,7 @@ msgstr "مشتریان مهم"
#. module: base
#: view:res.lang:0
msgid "Update Terms"
-msgstr ""
+msgstr "به روز رسانی کلمات"
#. module: base
#: model:ir.module.module,description:base.module_project_messages
@@ -11277,7 +11277,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr
msgid "Employee Directory"
-msgstr ""
+msgstr "دایرکتوری کارمندان"
#. module: base
#: view:ir.cron:0
@@ -11527,7 +11527,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_mail
msgid "Emails Management"
-msgstr ""
+msgstr "مدیریت پست الکترونیک"
#. module: base
#: field:ir.actions.server,trigger_name:0
@@ -11597,7 +11597,7 @@ msgstr "مرجع جدول"
#: code:addons/base/ir/ir_mail_server.py:443
#, python-format
msgid "Mail delivery failed"
-msgstr ""
+msgstr "ارسال پست الکترونیک موفق نبود"
#. module: base
#: field:ir.actions.act_window,res_model:0
@@ -11909,7 +11909,7 @@ msgstr "منتظر"
#. module: base
#: field:ir.actions.report.xml,report_file:0
msgid "Report file"
-msgstr ""
+msgstr "فایل گزارش"
#. module: base
#: model:ir.model,name:base.model_workflow_triggers
@@ -11925,7 +11925,7 @@ msgstr ""
#. module: base
#: view:ir.mail_server:0
msgid "Connection Information"
-msgstr ""
+msgstr "اطلاعات تماس"
#. module: base
#: view:ir.attachment:0
@@ -12134,7 +12134,7 @@ msgstr "دستهبندی"
#: selection:ir.attachment,type:0
#: selection:ir.property,type:0
msgid "Binary"
-msgstr ""
+msgstr "باینری"
#. module: base
#: field:ir.actions.server,sms:0
@@ -12171,7 +12171,7 @@ msgstr ""
#. module: base
#: view:workflow.activity:0
msgid "Conditions"
-msgstr ""
+msgstr "شروط"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_other_form
@@ -12296,7 +12296,7 @@ msgstr "استونی"
#: model:ir.module.module,shortdesc:base.module_board
#: model:ir.ui.menu,name:base.menu_dashboard
msgid "Dashboards"
-msgstr ""
+msgstr "داشبوردها"
#. module: base
#: model:ir.module.module,shortdesc:base.module_procurement
@@ -12306,7 +12306,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_payroll_account
msgid "Payroll Accounting"
-msgstr ""
+msgstr "حسابداری حقوق و دستمزد"
#. module: base
#: help:ir.attachment,type:0
@@ -12433,7 +12433,7 @@ msgstr "تعداد تماسها"
#: code:addons/base/res/res_bank.py:189
#, python-format
msgid "BANK"
-msgstr ""
+msgstr "بانک"
#. module: base
#: view:base.module.upgrade:0
@@ -12867,7 +12867,7 @@ msgstr ""
#. module: base
#: view:ir.filters:0
msgid "Current User"
-msgstr ""
+msgstr "کاربر فعلی"
#. module: base
#: field:res.company,company_registry:0
@@ -13065,7 +13065,7 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form
#: model:ir.ui.menu,name:base.menu_publisher_warranty_contract
msgid "Contracts"
-msgstr ""
+msgstr "قراردادها"
#. module: base
#: field:base.language.export,state:0
@@ -13113,7 +13113,7 @@ msgstr ""
#. module: base
#: field:res.partner.bank,bank_name:0
msgid "Bank Name"
-msgstr ""
+msgstr "نام بانک"
#. module: base
#: model:res.country,name:base.ki
@@ -13192,7 +13192,7 @@ msgstr "فایل CSV"
#: code:addons/base/res/res_company.py:154
#, python-format
msgid "Phone: "
-msgstr ""
+msgstr "تلفن: "
#. module: base
#: field:res.company,account_no:0
@@ -13367,7 +13367,7 @@ msgstr ""
#. module: base
#: selection:ir.ui.view,type:0
msgid "Diagram"
-msgstr ""
+msgstr "دیاگرام"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_es
@@ -13970,7 +13970,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_config_address_book
#: model:ir.ui.menu,name:base.menu_procurement_management_supplier
msgid "Address Book"
-msgstr ""
+msgstr "دفترچه آدرس"
#. module: base
#: model:ir.module.module,description:base.module_l10n_ma
diff --git a/openerp/addons/base/i18n/mk.po b/openerp/addons/base/i18n/mk.po
index e13239c9641..3a7f33d840b 100644
--- a/openerp/addons/base/i18n/mk.po
+++ b/openerp/addons/base/i18n/mk.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
-"PO-Revision-Date: 2011-05-06 11:49+0000\n"
-"Last-Translator: martin \n"
+"PO-Revision-Date: 2012-11-20 15:20+0000\n"
+"Last-Translator: Slavko Zivkovic \n"
"Language-Team: Macedonian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-11-13 05:11+0000\n"
-"X-Generator: Launchpad (build 16251)\n"
+"X-Launchpad-Export-Date: 2012-11-21 04:47+0000\n"
+"X-Generator: Launchpad (build 16293)\n"
#. module: base
#: model:res.country,name:base.sh
@@ -49,7 +49,7 @@ msgstr ""
#: field:ir.ui.view,arch:0
#: field:ir.ui.view.custom,arch:0
msgid "View Architecture"
-msgstr ""
+msgstr "Погледнете Архитектура"
#. module: base
#: model:ir.module.module,description:base.module_project
@@ -111,7 +111,7 @@ msgstr ""
#. module: base
#: field:ir.actions.act_window,display_menu_tip:0
msgid "Display Menu Tips"
-msgstr ""
+msgstr "Прикажи ги советите во менито"
#. module: base
#: help:ir.cron,model:0
@@ -160,7 +160,7 @@ msgstr "Референца"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
msgid "Belgium - Structured Communication"
-msgstr ""
+msgstr "Белгија - Структурирана Комуникација"
#. module: base
#: field:ir.actions.act_window,target:0
@@ -195,6 +195,8 @@ msgid ""
"Properties of base fields cannot be altered in this manner! Please modify "
"them through Python code, preferably through a custom addon!"
msgstr ""
+"Својствата на основните полиња не може да се менуваат на овој начин! Ве "
+"молиме менувајте ги преку Python код, пожелно преку прилагоден додаток."
#. module: base
#: code:addons/osv.py:129
@@ -227,7 +229,7 @@ msgstr "креирано."
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_tr
msgid "Turkey - Accounting"
-msgstr ""
+msgstr "Турција - Сметководство"
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp_subproduct
@@ -271,7 +273,7 @@ msgstr ""
#. module: base
#: view:res.partner:0
msgid "Search Partner"
-msgstr ""
+msgstr "Пронајди партнер"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:60
@@ -310,7 +312,7 @@ msgstr "Макс. големина"
#: model:ir.ui.menu,name:base.next_id_73
#: model:ir.ui.menu,name:base.reporting_menu
msgid "Reporting"
-msgstr ""
+msgstr "Известувања"
#. module: base
#: view:res.partner:0
@@ -326,6 +328,8 @@ msgid ""
"Save this document to a %s file and edit it with a specific software or a "
"text editor. The file encoding is UTF-8."
msgstr ""
+"Зачувај го документот во датотеката %s и измени го со соодветен софтвер или "
+"текстуален уредувач."
#. module: base
#: help:ir.values,key2:0
@@ -370,7 +374,7 @@ msgstr ""
#. module: base
#: view:ir.module.module:0
msgid "Extra"
-msgstr ""
+msgstr "Дополнително"
#. module: base
#: code:addons/orm.py:2526
@@ -466,11 +470,13 @@ msgid ""
"The user this filter is available to. When left empty the filter is usable "
"by the system only."
msgstr ""
+"Корисникот за кого овој филтер е достапен. Ако полето е празно, филтерот се "
+"користи само од системот."
#. module: base
#: help:res.partner,website:0
msgid "Website of Partner."
-msgstr ""
+msgstr "Website на партнерот"
#. module: base
#: help:ir.actions.act_window,views:0
@@ -489,7 +495,7 @@ msgstr "Тувалу"
#. module: base
#: selection:ir.model,state:0
msgid "Custom Object"
-msgstr ""
+msgstr "Прилагоден објект"
#. module: base
#: field:res.lang,date_format:0
@@ -499,7 +505,7 @@ msgstr "Формат на датумот"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_report_designer
msgid "OpenOffice Report Designer"
-msgstr ""
+msgstr "OpenOffice Дизајнер за Извештаи"
#. module: base
#: field:res.bank,email:0
@@ -524,13 +530,13 @@ msgid ""
"You can not remove the admin user as it is used internally for resources "
"created by OpenERP (updates, module installation, ...)"
msgstr ""
-"Не може да го отстраните admin корисникот затоа што се користи интерно за "
+"Не може да го отстраните admin корисникот бидејќи се користи интерно за "
"ресурси креирани од OpenERP (ажурирања, инсталација на модули, ...)"
#. module: base
#: view:ir.values:0
msgid "Action Binding"
-msgstr ""
+msgstr "Поврзување на акции"
#. module: base
#: model:res.country,name:base.gf
@@ -634,7 +640,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.pw
msgid "Palau"
-msgstr "Пало"
+msgstr "Палау"
#. module: base
#: view:res.partner:0
@@ -673,7 +679,7 @@ msgstr "Прилагодените полиња мора да имаат име
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_mx
msgid "Mexico - Accounting"
-msgstr ""
+msgstr "Мексико - Сметководство"
#. module: base
#: help:ir.actions.server,action_id:0
@@ -683,7 +689,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ai
msgid "Anguilla"
-msgstr ""
+msgstr "Ангила"
#. module: base
#: view:base.language.export:0
@@ -706,6 +712,7 @@ msgstr "Опис на моделот"
msgid ""
"Optional model name of the objects on which this action should be visible"
msgstr ""
+"Опционално име на моделот на објектот врз кој треба да се одрази дејството"
#. module: base
#: field:workflow.transition,trigger_expr_id:0
@@ -720,7 +727,7 @@ msgstr "Јордан"
#. module: base
#: help:ir.cron,nextcall:0
msgid "Next planned execution date for this job."
-msgstr ""
+msgstr "Нареден датум на извршување за селектираниот процес"
#. module: base
#: code:addons/base/ir/ir_model.py:139
@@ -736,7 +743,7 @@ msgstr "Еритреа"
#. module: base
#: sql_constraint:res.company:0
msgid "The company name must be unique !"
-msgstr ""
+msgstr "Името на компанијата мора да биде уникатно !"
#. module: base
#: view:res.config:0
@@ -753,7 +760,7 @@ msgstr "Автоматизирани дејства"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_ro
msgid "Romania - Accounting"
-msgstr ""
+msgstr "Романија - Сметководство"
#. module: base
#: view:partner.wizard.ean.check:0
@@ -780,6 +787,9 @@ msgid ""
"Launchpad.net, our open source project management facility. We use their "
"online interface to synchronize all translations efforts."
msgstr ""
+"Преводите на OpenERP (јадро, модули, клиенти) се управувани од "
+"Launchpad.net, нашиот простор за управување со проекти со отворен код. Го "
+"користиме нивниот интернет интерфејс за синхронизација на сите преводи."
#. module: base
#: help:ir.actions.todo,type:0
@@ -808,18 +818,18 @@ msgstr ""
#. module: base
#: model:res.country,name:base.kh
msgid "Cambodia, Kingdom of"
-msgstr "Клаството Камбоџа"
+msgstr "Кралство Камбоџа"
#. module: base
#: field:base.language.import,overwrite:0
#: field:base.language.install,overwrite:0
msgid "Overwrite Existing Terms"
-msgstr ""
+msgstr "Препишете ги постоечките изрази"
#. module: base
#: model:ir.model,name:base.model_base_language_import
msgid "Language Import"
-msgstr ""
+msgstr "Превземање на Јазик"
#. module: base
#: help:ir.cron,interval_number:0
@@ -829,12 +839,12 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Albanian / Shqip"
-msgstr ""
+msgstr "Албански / Shqip"
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_opportunity
msgid "Opportunities"
-msgstr ""
+msgstr "Можности"
#. module: base
#: model:ir.model,name:base.model_base_language_export
@@ -852,6 +862,8 @@ msgstr ""
#: help:ir.actions.report.xml,report_type:0
msgid "Report Type, e.g. pdf, html, raw, sxw, odt, html2html, mako2html, ..."
msgstr ""
+"Вид на извештај, на пример : pdf, html, raw, sxw, odt, html2html, mako2html, "
+"..."
#. module: base
#: model:ir.module.module,shortdesc:base.module_document_webdav
@@ -864,11 +876,16 @@ msgid ""
"The module adds google contact in partner address and add google calendar "
"events details in Meeting"
msgstr ""
+"The module adds google contact in partner address and add google calendar "
+"events details in Meeting.\r\n"
+"\r\n"
+"Овој модул ги додава google контактите во адресите на партнерите и ги додава "
+"настаните во google calendar во Состаноци"
#. module: base
#: view:res.users:0
msgid "Email Preferences"
-msgstr ""
+msgstr "Подесувања за Електронска Пошта"
#. module: base
#: model:ir.module.module,description:base.module_audittrail
@@ -883,36 +900,45 @@ msgid ""
"delete on objects and can check logs.\n"
" "
msgstr ""
+"\n"
+"Овој модул му дозволува на администраторот да ја следи операцијата на секој "
+"корисник на сите објекти во системот.\n"
+"============================================================================="
+"==============\n"
+"\n"
+"Администраторот може да се препише за правилата за читање, пишување и\n"
+"бришење на објектите и може да ги проверува чуваните записи.\n"
+" "
#. module: base
#: model:res.partner.category,name:base.res_partner_category_4
msgid "Basic Partner"
-msgstr ""
+msgstr "Основен Партнер"
#. module: base
#: report:ir.module.reference.graph:0
msgid ","
-msgstr ""
+msgstr ","
#. module: base
#: view:res.partner:0
msgid "My Partners"
-msgstr ""
+msgstr "Мои Партнери"
#. module: base
#: view:ir.actions.report.xml:0
msgid "XML Report"
-msgstr ""
+msgstr "XML Извештај"
#. module: base
#: model:res.country,name:base.es
msgid "Spain"
-msgstr ""
+msgstr "Шпанија"
#. module: base
#: view:base.module.update:0
msgid "Please be patient, as this operation may take a few seconds..."
-msgstr ""
+msgstr "Бидете трпеливи, оваа операција може да потрае неколку секунди..."
#. module: base
#: help:ir.actions.act_window,domain:0
@@ -924,23 +950,23 @@ msgstr ""
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
#: model:ir.model,name:base.model_base_module_upgrade
msgid "Module Upgrade"
-msgstr ""
+msgstr "Подобрување на модулот"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (UY) / Español (UY)"
-msgstr ""
+msgstr "Шшански (UY) / Español (UY)"
#. module: base
#: field:res.partner,mobile:0
#: field:res.partner.address,mobile:0
msgid "Mobile"
-msgstr ""
+msgstr "Мобилен"
#. module: base
#: model:res.country,name:base.om
msgid "Oman"
-msgstr ""
+msgstr "Оман"
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp
@@ -950,44 +976,44 @@ msgstr ""
#. module: base
#: report:ir.module.reference.graph:0
msgid "1cm 28cm 20cm 28cm"
-msgstr ""
+msgstr "1 цм 28 цм 20 цм 28 цм"
#. module: base
#: model:res.country,name:base.nu
msgid "Niue"
-msgstr ""
+msgstr "Ниуе"
#. module: base
#: model:ir.module.module,shortdesc:base.module_membership
msgid "Membership Management"
-msgstr ""
+msgstr "Управување на членство"
#. module: base
#: selection:ir.module.module,license:0
msgid "Other OSI Approved Licence"
-msgstr ""
+msgstr "Друга OSI Одобрена Лиценца"
#. module: base
#: model:ir.actions.act_window,name:base.act_menu_create
#: view:wizard.ir.model.menu.create:0
msgid "Create Menu"
-msgstr ""
+msgstr "Креирај Мени"
#. module: base
#: model:res.country,name:base.in
msgid "India"
-msgstr ""
+msgstr "Индија"
#. module: base
#: model:ir.actions.act_window,name:base.res_request_link-act
#: model:ir.ui.menu,name:base.menu_res_request_link_act
msgid "Request Reference Types"
-msgstr ""
+msgstr "Побарај видови на референци"
#. module: base
#: model:ir.module.module,shortdesc:base.module_google_base_account
msgid "Google Users"
-msgstr ""
+msgstr "Google Корисници"
#. module: base
#: help:ir.server.object.lines,value:0
@@ -1007,7 +1033,7 @@ msgstr ""
#. module: base
#: field:res.partner.category,child_ids:0
msgid "Child Categories"
-msgstr ""
+msgstr "Под-Категорија"
#. module: base
#: model:ir.model,name:base.model_ir_config_parameter
@@ -1017,18 +1043,19 @@ msgstr ""
#. module: base
#: selection:base.language.export,format:0
msgid "TGZ Archive"
-msgstr ""
+msgstr "TGZ Архива"
#. module: base
#: view:res.groups:0
msgid ""
"Users added to this group are automatically added in the following groups."
msgstr ""
+"Корисниците додадени во оваа група автоматски се додадени во следните групи."
#. module: base
#: view:res.lang:0
msgid "%B - Full month name."
-msgstr ""
+msgstr "%B -Цело име на месецот"
#. module: base
#: field:ir.actions.todo,type:0
@@ -1045,12 +1072,12 @@ msgstr ""
#: view:res.partner:0
#: view:res.partner.address:0
msgid "Type"
-msgstr ""
+msgstr "Вид"
#. module: base
#: field:ir.mail_server,smtp_user:0
msgid "Username"
-msgstr ""
+msgstr "Корисничко име"
#. module: base
#: code:addons/orm.py:398
@@ -1059,29 +1086,32 @@ msgid ""
"Language with code \"%s\" is not defined in your system !\n"
"Define it through the Administration menu."
msgstr ""
+"Јазикот со кодот \"%s\" не е дефиниран во вашиот систем.\n"
+"Дефинирајте го низ менито за Администрација."
#. module: base
#: model:res.country,name:base.gu
msgid "Guam (USA)"
-msgstr ""
+msgstr "Гуам"
#. module: base
#: code:addons/base/res/res_users.py:558
#, python-format
msgid "Setting empty passwords is not allowed for security reasons!"
msgstr ""
+"Подесувањето на празна шифра не е дозволено поради безбедносни причини!"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:192
#, python-format
msgid "Connection test failed!"
-msgstr ""
+msgstr "Тестот за поврзување е неуспешен!"
#. module: base
#: selection:ir.actions.server,state:0
#: selection:workflow.activity,kind:0
msgid "Dummy"
-msgstr ""
+msgstr "Фиктивно"
#. module: base
#: constraint:ir.ui.view:0
@@ -1091,19 +1121,19 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ky
msgid "Cayman Islands"
-msgstr ""
+msgstr "Кајмански острови"
#. module: base
#: model:res.country,name:base.kr
msgid "South Korea"
-msgstr ""
+msgstr "Јужна Кореа"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_transition_form
#: model:ir.ui.menu,name:base.menu_workflow_transition
#: view:workflow.activity:0
msgid "Transitions"
-msgstr ""
+msgstr "Транзиции"
#. module: base
#: code:addons/orm.py:4615
@@ -1114,7 +1144,7 @@ msgstr ""
#. module: base
#: field:ir.module.module,contributors:0
msgid "Contributors"
-msgstr ""
+msgstr "Придонесувачи"
#. module: base
#: model:ir.module.module,description:base.module_project_planning
@@ -1145,17 +1175,17 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Slovak / Slovenský jazyk"
-msgstr ""
+msgstr "Словачки / Slovenský jazyk"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (AR) / Español (AR)"
-msgstr ""
+msgstr "Шпански (AR) / Español (AR)"
#. module: base
#: model:res.country,name:base.ug
msgid "Uganda"
-msgstr ""
+msgstr "Уганда"
#. module: base
#: field:ir.model.access,perm_unlink:0
@@ -1165,7 +1195,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ne
msgid "Niger"
-msgstr ""
+msgstr "Нигер"
#. module: base
#: selection:base.language.install,lang:0
@@ -1175,7 +1205,7 @@ msgstr ""
#. module: base
#: model:res.country,name:base.ba
msgid "Bosnia-Herzegovina"
-msgstr ""
+msgstr "Босна и Херцеговина"
#. module: base
#: view:base.language.export:0
@@ -1188,17 +1218,17 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (GT) / Español (GT)"
-msgstr ""
+msgstr "Шпански (GT) / Español (GT)"
#. module: base
#: field:ir.mail_server,smtp_port:0
msgid "SMTP Port"
-msgstr ""
+msgstr "SMTP Порта"
#. module: base
#: model:ir.module.module,shortdesc:base.module_import_sugarcrm
msgid "SugarCRM Import"
-msgstr ""
+msgstr "SugarCRM Импортирање"
#. module: base
#: view:res.lang:0
@@ -1212,12 +1242,12 @@ msgstr ""
#: code:addons/base/module/wizard/base_language_install.py:55
#, python-format
msgid "Language Pack"
-msgstr ""
+msgstr "Пакет Јазици"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_tests
msgid "Tests"
-msgstr ""
+msgstr "Тестови"
#. module: base
#: field:ir.ui.view_sc,res_id:0
@@ -1237,29 +1267,29 @@ msgstr ""
#. module: base
#: field:base.module.import,module_name:0
msgid "Module Name"
-msgstr ""
+msgstr "Име на Модул"
#. module: base
#: model:res.country,name:base.mh
msgid "Marshall Islands"
-msgstr ""
+msgstr "Маршалови острови"
#. module: base
#: code:addons/base/ir/ir_model.py:368
#, python-format
msgid "Changing the model of a field is forbidden!"
-msgstr ""
+msgstr "Менување на моделот на полето е забрането!"
#. module: base
#: model:res.country,name:base.ht
msgid "Haiti"
-msgstr ""
+msgstr "Хаити"
#. module: base
#: view:ir.ui.view:0
#: selection:ir.ui.view,type:0
msgid "Search"
-msgstr ""
+msgstr "Пребарај"
#. module: base
#: code:addons/osv.py:132
@@ -1280,18 +1310,18 @@ msgstr ""
#: code:addons/base/res/res_users.py:222
#, python-format
msgid "Operation Canceled"
-msgstr ""
+msgstr "Операцијата е прекината!"
#. module: base
#: help:base.language.export,lang:0
msgid "To export a new language, do not select a language."
-msgstr ""
+msgstr "За да експортирате нов јазик, немојте да избирате јазик"
#. module: base
#: model:ir.module.module,shortdesc:base.module_document
#: model:ir.module.module,shortdesc:base.module_knowledge
msgid "Document Management System"
-msgstr ""
+msgstr "Систем за Управување со Документи"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_claim
@@ -1301,17 +1331,17 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_purchase_root
msgid "Purchases"
-msgstr ""
+msgstr "Набавки"
#. module: base
#: model:res.country,name:base.md
msgid "Moldavia"
-msgstr ""
+msgstr "Молдавија"
#. module: base
#: view:ir.module.module:0
msgid "Features"
-msgstr ""
+msgstr "Можности"
#. module: base
#: model:ir.actions.act_window,help:base.bank_account_update
@@ -1326,7 +1356,7 @@ msgstr ""
#: view:ir.module.module:0
#: report:ir.module.reference.graph:0
msgid "Version"
-msgstr ""
+msgstr "Верзија"
#. module: base
#: model:ir.module.module,description:base.module_sale_order_dates
@@ -1355,7 +1385,7 @@ msgstr ""
#: code:addons/base/module/wizard/base_update_translations.py:38
#, python-format
msgid "No language with code \"%s\" exists"
-msgstr ""
+msgstr "Јазик со кодот \"%s\" не постои"
#. module: base
#: model:ir.module.module,description:base.module_document
@@ -1398,7 +1428,7 @@ msgstr ""
#. module: base
#: report:ir.module.reference.graph:0
msgid "-"
-msgstr ""
+msgstr "-"
#. module: base
#: view:publisher_warranty.contract.wizard:0
@@ -1411,7 +1441,7 @@ msgstr ""
#. module: base
#: view:wizard.ir.model.menu.create:0
msgid "Create _Menu"
-msgstr ""
+msgstr "Креирај Мени"
#. module: base
#: field:res.payterm,name:0
@@ -1423,7 +1453,7 @@ msgstr ""
#: view:res.bank:0
#: field:res.partner.bank,bank:0
msgid "Bank"
-msgstr ""
+msgstr "Банка"
#. module: base
#: model:ir.model,name:base.model_ir_exports_line
diff --git a/openerp/addons/base/ir/ir_config_parameter.py b/openerp/addons/base/ir/ir_config_parameter.py
index 120fcfca554..3c88a3fbc31 100644
--- a/openerp/addons/base/ir/ir_config_parameter.py
+++ b/openerp/addons/base/ir/ir_config_parameter.py
@@ -51,12 +51,14 @@ class ir_config_parameter(osv.osv):
('key_uniq', 'unique (key)', 'Key must be unique.')
]
- def init(self, cr):
+ def init(self, cr, force=False):
"""
Initializes the parameters listed in _default_parameters.
+ It overrides existing parameters if force is ``True``.
"""
for key, func in _default_parameters.iteritems():
- ids = self.search(cr, SUPERUSER_ID, [('key','=',key)])
+ # force=True skips search and always performs the 'if' body (because ids=False)
+ ids = not force and self.search(cr, SUPERUSER_ID, [('key','=',key)])
if not ids:
self.set_param(cr, SUPERUSER_ID, key, func())
diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml
index 28b9e960ebe..a12fa1285b3 100644
--- a/openerp/addons/base/res/res_partner_view.xml
+++ b/openerp/addons/base/res/res_partner_view.xml
@@ -6,7 +6,7 @@
+ sequence="20"/>
diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py
index f975d39b300..4565f861b40 100644
--- a/openerp/addons/base/res/res_users.py
+++ b/openerp/addons/base/res/res_users.py
@@ -250,17 +250,6 @@ class res_users(osv.osv):
'image': lambda self, cr, uid, ctx={}: self.pool.get('res.partner')._get_default_image(cr, uid, False, ctx, colorize=True),
}
- def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
- """ Override of res.users fields_view_get.
- - if the view is specified: resume with normal behavior
- - else: the default view is overrided and redirected to the partner
- view
- """
- #made a lot of views crash because methods of open chatter are not available on users
- #if not view_id and view_type == 'form':
- # return self.pool.get('res.partner').fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
- return super(res_users, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu)
-
# User can write on a few of his own fields (but not his groups for example)
SELF_WRITEABLE_FIELDS = ['password', 'signature', 'action_id', 'company_id', 'email', 'name', 'image', 'image_medium', 'image_small', 'lang', 'tz']
# User can read a few of his own fields
@@ -409,10 +398,10 @@ class res_users(osv.osv):
# prevent/delay login in that case. It will also have been logged
# as a SQL error, if anyone cares.
try:
- cr.execute("SELECT id FROM res_users WHERE id=%s FOR UPDATE NOWAIT", (user_id,))
+ cr.execute("SELECT id FROM res_users WHERE id=%s FOR UPDATE NOWAIT", (user_id,), log_exceptions=False)
cr.execute("UPDATE res_users SET login_date = now() AT TIME ZONE 'UTC' WHERE id=%s", (user_id,))
- except Exception, e:
- _logger.exception("Failed to update last_login for db:%s login:%s", db, login)
+ except Exception:
+ _logger.debug("Failed to update last_login for db:%s login:%s", db, login, exc_info=True)
except openerp.exceptions.AccessDenied:
_logger.info("Login failed for db:%s login:%s", db, login)
user_id = False
diff --git a/openerp/addons/base/res/res_users_view.xml b/openerp/addons/base/res/res_users_view.xml
index cfab4b7d341..b5c88e4c24b 100644
--- a/openerp/addons/base/res/res_users_view.xml
+++ b/openerp/addons/base/res/res_users_view.xml
@@ -83,6 +83,49 @@
+
+ res.users.simplified.form
+ res.users
+ 1
+
+
+
+
res.users.form
res.users
diff --git a/openerp/addons/base/tests/__init__.py b/openerp/addons/base/tests/__init__.py
index 409f9928c6f..e8ad035131b 100644
--- a/openerp/addons/base/tests/__init__.py
+++ b/openerp/addons/base/tests/__init__.py
@@ -1,7 +1,8 @@
-import test_base, test_expression, test_ir_values
+import test_base, test_expression, test_search, test_ir_values
checks = [
test_base,
test_expression,
+ test_search,
test_ir_values,
]
diff --git a/openerp/addons/base/tests/test_search.py b/openerp/addons/base/tests/test_search.py
new file mode 100644
index 00000000000..dc554408667
--- /dev/null
+++ b/openerp/addons/base/tests/test_search.py
@@ -0,0 +1,60 @@
+import unittest2
+
+import openerp.tests.common as common
+
+class test_expression(common.TransactionCase):
+
+ def test_search_order(self):
+
+ registry, cr, uid = self.registry, self.cr, self.uid
+
+ # Create 6 partners with a given name, and a given creation order to
+ # ensure the order of their ID. Some are set as unactive to verify they
+ # are by default excluded from the searches and to provide a second
+ # `order` argument.
+
+ partners = registry('res.partner')
+ c = partners.create(cr, uid, {'name': 'test_search_order_C'})
+ d = partners.create(cr, uid, {'name': 'test_search_order_D', 'active': False})
+ a = partners.create(cr, uid, {'name': 'test_search_order_A'})
+ b = partners.create(cr, uid, {'name': 'test_search_order_B'})
+ ab = partners.create(cr, uid, {'name': 'test_search_order_AB'})
+ e = partners.create(cr, uid, {'name': 'test_search_order_E', 'active': False})
+
+ # The tests.
+
+ # The basic searches should exclude records that have active = False.
+ # The order of the returned ids should be given by the `order`
+ # parameter of search().
+
+ name_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%')], order="name asc")
+ self.assertEqual([a, ab, b, c], name_asc, "Search with 'NAME ASC' order failed.")
+ name_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%')], order="name desc")
+ self.assertEqual([c, b, ab, a], name_desc, "Search with 'NAME DESC' order failed.")
+ id_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%')], order="id asc")
+ self.assertEqual([c, a, b, ab], id_asc, "Search with 'ID ASC' order failed.")
+ id_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%')], order="id desc")
+ self.assertEqual([ab, b, a, c], id_desc, "Search with 'ID DESC' order failed.")
+
+ # The inactive records shouldn't be excluded as soon as a condition on
+ # that field is present in the domain. The `order` parameter of
+ # search() should support any legal coma-separated values.
+
+ active_asc_id_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="active asc, id asc")
+ self.assertEqual([d, e, c, a, b, ab], active_asc_id_asc, "Search with 'ACTIVE ASC, ID ASC' order failed.")
+ active_desc_id_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="active desc, id asc")
+ self.assertEqual([c, a, b, ab, d, e], active_desc_id_asc, "Search with 'ACTIVE DESC, ID ASC' order failed.")
+ active_asc_id_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="active asc, id desc")
+ self.assertEqual([e, d, ab, b, a, c], active_asc_id_desc, "Search with 'ACTIVE ASC, ID DESC' order failed.")
+ active_desc_id_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="active desc, id desc")
+ self.assertEqual([ab, b, a, c, e, d], active_desc_id_desc, "Search with 'ACTIVE DESC, ID DESC' order failed.")
+ id_asc_active_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id asc, active asc")
+ self.assertEqual([c, d, a, b, ab, e], id_asc_active_asc, "Search with 'ID ASC, ACTIVE ASC' order failed.")
+ id_asc_active_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id asc, active desc")
+ self.assertEqual([c, d, a, b, ab, e], id_asc_active_desc, "Search with 'ID ASC, ACTIVE DESC' order failed.")
+ id_desc_active_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id desc, active asc")
+ self.assertEqual([e, ab, b, a, d, c], id_desc_active_asc, "Search with 'ID DESC, ACTIVE ASC' order failed.")
+ id_desc_active_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id desc, active desc")
+ self.assertEqual([e, ab, b, a, d, c], id_desc_active_desc, "Search with 'ID DESC, ACTIVE DESC' order failed.")
+
+
diff --git a/openerp/modules/loading.py b/openerp/modules/loading.py
index c3d73859730..bcda1690c91 100644
--- a/openerp/modules/loading.py
+++ b/openerp/modules/loading.py
@@ -348,7 +348,8 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
for (model, name) in cr.fetchall():
model_obj = pool.get(model)
if model_obj and not model_obj.is_transient():
- _logger.warning('Model %s (%s) has no access rules!', model, name)
+ _logger.warning('The model %s has no access rules, consider adding one. E.g. access_%s,access_%s,model_%s,,1,1,1,1',
+ model, model.replace('.', '_'), model.replace('.', '_'), model.replace('.', '_'))
# Temporary warning while we remove access rights on osv_memory objects, as they have
# been replaced by owner-only access rights
diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py
index 0d12a9a8bc3..c8cf5909ecc 100644
--- a/openerp/osv/fields.py
+++ b/openerp/osv/fields.py
@@ -234,6 +234,8 @@ class html(text):
_type = 'html'
_symbol_c = '%s'
def _symbol_f(x):
+ if x is None or x == False:
+ return None
return html_sanitize(x)
_symbol_set = (_symbol_c, _symbol_f)
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index 1ab91500650..6a1f917caa1 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -1603,7 +1603,7 @@ class BaseModel(object):
if fld_def._type == 'many2many':
obj = self.pool.get(fld_def._obj)
field_value2 = []
- for i in range(len(field_value)):
+ for i in range(len(field_value or [])):
if not obj.search(cr, uid, [('id', '=',
field_value[i])]):
continue
@@ -1612,7 +1612,7 @@ class BaseModel(object):
if fld_def._type == 'one2many':
obj = self.pool.get(fld_def._obj)
field_value2 = []
- for i in range(len(field_value)):
+ for i in range(len(field_value or [])):
field_value2.append({})
for field2 in field_value[i]:
if field2 in obj._columns.keys() and obj._columns[field2]._type == 'many2one':
@@ -1782,7 +1782,7 @@ class BaseModel(object):
# TODO: find a way to remove this hack, by allow dynamic domains
dom = []
if column._domain and not isinstance(column._domain, basestring):
- dom = column._domain
+ dom = list(column._domain)
dom += eval(node.get('domain', '[]'), {'uid': user, 'time': time})
search_context = dict(context)
if column._context and not isinstance(column._context, basestring):
@@ -4722,7 +4722,7 @@ class BaseModel(object):
order_direction = order_split[1].strip() if len(order_split) == 2 else ''
inner_clause = None
if order_field == 'id':
- order_by_clause = '"%s"."%s"' % (self._table, order_field)
+ order_by_elements.append('"%s"."id" %s' % (self._table, order_direction))
elif order_field in self._columns:
order_column = self._columns[order_field]
if order_column._classic_read:
diff --git a/openerp/tests/addons/test_exceptions/__openerp__.py b/openerp/tests/addons/test_exceptions/__openerp__.py
index 183f8877577..fc104f13a12 100644
--- a/openerp/tests/addons/test_exceptions/__openerp__.py
+++ b/openerp/tests/addons/test_exceptions/__openerp__.py
@@ -8,7 +8,7 @@
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['base'],
- 'data': ['view.xml'],
+ 'data': ['view.xml', 'ir.model.access.csv'],
'installable': True,
'auto_install': False,
}
diff --git a/openerp/tests/addons/test_exceptions/ir.model.access.csv b/openerp/tests/addons/test_exceptions/ir.model.access.csv
new file mode 100644
index 00000000000..56f99efd729
--- /dev/null
+++ b/openerp/tests/addons/test_exceptions/ir.model.access.csv
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+access_test_exceptions_model,access_test_exceptions_model,model_test_exceptions_model,,1,1,1,1
diff --git a/openerp/tests/addons/test_impex/__openerp__.py b/openerp/tests/addons/test_impex/__openerp__.py
index f3b5511dc30..2b52b6ad5fa 100644
--- a/openerp/tests/addons/test_impex/__openerp__.py
+++ b/openerp/tests/addons/test_impex/__openerp__.py
@@ -8,7 +8,7 @@
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['base'],
- 'data': [],
+ 'data': ['ir.model.access.csv'],
'installable': True,
'auto_install': False,
}
diff --git a/openerp/tests/addons/test_impex/ir.model.access.csv b/openerp/tests/addons/test_impex/ir.model.access.csv
new file mode 100644
index 00000000000..9a674d9ee1f
--- /dev/null
+++ b/openerp/tests/addons/test_impex/ir.model.access.csv
@@ -0,0 +1,25 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+access_export_boolean,access_export_boolean,model_export_boolean,,1,1,1,1
+access_export_integer,access_export_integer,model_export_integer,,1,1,1,1
+access_export_float,access_export_float,model_export_float,,1,1,1,1
+access_export_decimal,access_export_decimal,model_export_decimal,,1,1,1,1
+access_export_string_bounded,access_export_string_bounded,model_export_string_bounded,,1,1,1,1
+access_export_string_required,access_export_string_required,model_export_string_required,,1,1,1,1
+access_export_string,access_export_string,model_export_string,,1,1,1,1
+access_export_date,access_export_date,model_export_date,,1,1,1,1
+access_export_datetime,access_export_datetime,model_export_datetime,,1,1,1,1
+access_export_text,access_export_text,model_export_text,,1,1,1,1
+access_export_selection,access_export_selection,model_export_selection,,1,1,1,1
+access_export_selection_function,access_export_selection_function,model_export_selection_function,,1,1,1,1
+access_export_many2one,access_export_many2one,model_export_many2one,,1,1,1,1
+access_export_one2many,access_export_one2many,model_export_one2many,,1,1,1,1
+access_export_many2many,access_export_many2many,model_export_many2many,,1,1,1,1
+access_export_function,access_export_function,model_export_function,,1,1,1,1
+access_export_one2many_child,access_export_one2many_child,model_export_one2many_child,,1,1,1,1
+access_export_one2many_multiple,access_export_one2many_multiple,model_export_one2many_multiple,,1,1,1,1
+access_export_one2many_multiple_child,access_export_one2many_multiple_child,model_export_one2many_multiple_child,,1,1,1,1
+access_export_one2many_child_1,access_export_one2many_child_1,model_export_one2many_child_1,,1,1,1,1
+access_export_one2many_child_2,access_export_one2many_child_2,model_export_one2many_child_2,,1,1,1,1
+access_export_many2many_other,access_export_many2many_other,model_export_many2many_other,,1,1,1,1
+access_export_selection_withdefault,access_export_selection_withdefault,model_export_selection_withdefault,,1,1,1,1
+access_export_one2many_recursive,access_export_one2many_recursive,model_export_one2many_recursive,,1,1,1,1
diff --git a/openerp/tests/addons/test_limits/__openerp__.py b/openerp/tests/addons/test_limits/__openerp__.py
index 05b70919a2a..59972e60e36 100644
--- a/openerp/tests/addons/test_limits/__openerp__.py
+++ b/openerp/tests/addons/test_limits/__openerp__.py
@@ -8,7 +8,7 @@
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['base'],
- 'data': [],
+ 'data': ['ir.model.access.csv'],
'installable': True,
'auto_install': False,
}
diff --git a/openerp/tests/addons/test_limits/ir.model.access.csv b/openerp/tests/addons/test_limits/ir.model.access.csv
new file mode 100644
index 00000000000..02f18639a73
--- /dev/null
+++ b/openerp/tests/addons/test_limits/ir.model.access.csv
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+access_test_limits_model,access_test_limits_model,model_test_limits_model,,1,1,1,1
diff --git a/openerp/tests/addons/test_uninstall/__openerp__.py b/openerp/tests/addons/test_uninstall/__openerp__.py
index d8776897df0..0015d5a52d4 100644
--- a/openerp/tests/addons/test_uninstall/__openerp__.py
+++ b/openerp/tests/addons/test_uninstall/__openerp__.py
@@ -8,7 +8,7 @@
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': ['base'],
- 'data': [],
+ 'data': ['ir.model.access.csv'],
'installable': True,
'auto_install': False,
}
diff --git a/openerp/tests/addons/test_uninstall/ir.model.access.csv b/openerp/tests/addons/test_uninstall/ir.model.access.csv
new file mode 100644
index 00000000000..f5b5b1f8f4d
--- /dev/null
+++ b/openerp/tests/addons/test_uninstall/ir.model.access.csv
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+access_test_uninstall_model,access_test_uninstall_model,model_test_uninstall_model,,1,1,1,1
diff --git a/openerp/tests/test_db_cursor.py b/openerp/tests/test_db_cursor.py
index e9737547619..dba1cf47b64 100644
--- a/openerp/tests/test_db_cursor.py
+++ b/openerp/tests/test_db_cursor.py
@@ -9,8 +9,8 @@ import common
DB = common.DB
ADMIN_USER_ID = common.ADMIN_USER_ID
-def cursor():
- return openerp.modules.registry.RegistryManager.get(DB).db.cursor()
+def registry():
+ return openerp.modules.registry.RegistryManager.get(DB)
class test_cr_execute(unittest2.TestCase):
@@ -21,12 +21,12 @@ class test_cr_execute(unittest2.TestCase):
"""
Try to use iterable but non-list or int params in query parameters.
"""
- cr = cursor()
- with self.assertRaises(ValueError):
- cr.execute("SELECT id FROM res_users WHERE login=%s", 'admin')
- with self.assertRaises(ValueError):
- cr.execute("SELECT id FROM res_users WHERE id=%s", 1)
- with self.assertRaises(ValueError):
- cr.execute("SELECT id FROM res_users WHERE id=%s", '1')
+ with registry().cursor(auto_commit=False) as cr:
+ with self.assertRaises(ValueError):
+ cr.execute("SELECT id FROM res_users WHERE login=%s", 'admin')
+ with self.assertRaises(ValueError):
+ cr.execute("SELECT id FROM res_users WHERE id=%s", 1)
+ with self.assertRaises(ValueError):
+ cr.execute("SELECT id FROM res_users WHERE id=%s", '1')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/openerp/tests/test_mail.py b/openerp/tests/test_mail.py
index 0ad6504a7ae..a8c806a13d0 100644
--- a/openerp/tests/test_mail.py
+++ b/openerp/tests/test_mail.py
@@ -173,6 +173,9 @@ class TestCleaner(unittest2.TestCase):
new_html = html_email_clean(TEXT_TPL)
self.assertNotIn('quote', new_html, 'html_email_cleaner did not remove correctly plaintext quotes')
+ # Test5: False boolean for text must return empty string
+ new_html = html_email_clean(False)
+ self.assertEqual(new_html, False, 'html_email_cleaner did change a False in an other value.')
class TestHtmlTools(unittest2.TestCase):
""" Test some of our generic utility functions about html """
diff --git a/openerp/tests/test_orm.py b/openerp/tests/test_orm.py
index c114064cd5f..1dde83d026c 100644
--- a/openerp/tests/test_orm.py
+++ b/openerp/tests/test_orm.py
@@ -109,6 +109,7 @@ class TestInherits(common.TransactionCase):
self.assertEqual(foo.name, 'Foo')
self.assertEqual(foo.partner_id.id, par_id)
+ @mute_logger('openerp.osv.orm')
def test_read(self):
""" inherited fields should be read without any indirection """
foo_id = self.user.create(self.cr, UID, {'name': 'Foo', 'login': 'foo', 'password': 'foo'})
@@ -120,6 +121,7 @@ class TestInherits(common.TransactionCase):
foo = self.user.browse(self.cr, UID, foo_id)
self.assertEqual(foo.name, foo.partner_id.name)
+ @mute_logger('openerp.osv.orm')
def test_copy(self):
""" copying a user should automatically copy its partner, too """
foo_id = self.user.create(self.cr, UID, {'name': 'Foo', 'login': 'foo', 'password': 'foo'})
@@ -134,6 +136,7 @@ class TestInherits(common.TransactionCase):
self.assertNotEqual(foo.id, bar.id)
self.assertNotEqual(foo.partner_id.id, bar.partner_id.id)
+ @mute_logger('openerp.osv.orm')
def test_copy_with_ancestor(self):
""" copying a user with 'parent_id' in defaults should not duplicate the partner """
foo_id = self.user.create(self.cr, UID, {'name': 'Foo', 'login': 'foo', 'password': 'foo'})
diff --git a/openerp/tools/mail.py b/openerp/tools/mail.py
index 39d918da97b..0711aa982aa 100644
--- a/openerp/tools/mail.py
+++ b/openerp/tools/mail.py
@@ -130,6 +130,9 @@ def html_email_clean(html):
dest += source[idx:]
return dest
+ if not html:
+ return html
+
html = ustr(html)
# 1.
-> \n, because otherwise the tree is obfuscated