Christophe Simonis 2012-11-23 12:08:20 +01:00
commit 0e50931671
33 changed files with 654 additions and 298 deletions

View File

@ -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

View File

@ -1,3 +1,5 @@
.. _module-dev:
=======
Modules
=======

View File

@ -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:

View File

@ -1,3 +1,5 @@
.. _module-dev-api:
Objects, Fields and Methods
===========================

View File

@ -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 :

View File

@ -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
+++++++++++++++++++

View File

@ -1,3 +1,4 @@
.. _module-dev-example:
==========================
Example of module creation

View File

@ -1,3 +1,4 @@
.. _module-dev-versioning:
.. _module_versioning:
=================

View File

@ -1,3 +1,5 @@
.. _security:
==================================
Security in OpenERP: users, groups
==================================

View File

@ -15,10 +15,159 @@
Mr Demo</field>
<field name="company_id" ref="main_company"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_user')])]"/>
<field name="image">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
gk//2Q==</field>
</record>
<record model="res.partner" id="base.partner_root">
<field name="email">admin@example.com</field>
<field name="image">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
kALR5oiAU7jnCuj0RFIHQbIiKAf/2Q==</field>
</record>
<!-- new rate for demo transactions in multi currency -->
@ -27,5 +176,6 @@ Mr Demo</field>
<field name="currency_id" ref="USD"/>
<field eval="time.strftime('%Y-06-06')" name="name"/>
</record>
</data>
</openerp>

View File

@ -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 <fshahy@gmail.com>\n"
"Language-Team: OpenERP Iran <info@openerp-iran.com>\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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2011-05-06 11:49+0000\n"
"Last-Translator: martin <Unknown>\n"
"PO-Revision-Date: 2012-11-20 15:20+0000\n"
"Last-Translator: Slavko Zivkovic <slavko.zivkovic@mi-c3.com>\n"
"Language-Team: Macedonian <mk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-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

View File

@ -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())

View File

@ -6,7 +6,7 @@
<menuitem name="Sales"
id="menu_base_partner"
groups="base.group_sale_salesman"
sequence="30"/>
sequence="20"/>
<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"/>

View File

@ -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

View File

@ -83,6 +83,49 @@
<!-- res.users -->
<record id="view_users_simple_form" model="ir.ui.view">
<field name="name">res.users.simplified.form</field>
<field name="model">res.users</field>
<field name="priority">1</field>
<field name="arch" type="xml">
<form string="Contact" version="7.0">
<sheet>
<field name="image" widget='image' class="oe_left oe_avatar" options='{"preview_image": "image_medium", "size": [90, 90]}'/>
<div class="oe_title">
<div class="oe_edit_only">
<label for="name"/> (
</div>
<h1>
<field name="name" default_focus="1" placeholder="Name" />
</h1>
<field name="category_id" widget="many2many_tags" placeholder="Tags..."/>
</div>
<group>
<group>
<label for="street" string="Address"/>
<div>
<field name="street" placeholder="Street..."/>
<field name="street2"/>
<div class="address_format">
<field name="city" placeholder="City" style="width: 40%%"/>
<field name="state_id" class="oe_no_button" placeholder="State" style="width: 37%%" options='{"no_open": True}' on_change="onchange_state(state_id)"/>
<field name="zip" placeholder="ZIP" style="width: 20%%"/>
</div>
<field name="country_id" placeholder="Country" class="oe_no_button" options='{"no_open": True}'/>
</div>
<field name="website" widget="url" placeholder="e.g. www.openerp.com"/>
</group>
<group>
<field name="phone" placeholder="e.g. +32.81.81.37.00"/>
<field name="mobile"/>
<field name="fax"/>
<field name="email" widget="email"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_users_form" model="ir.ui.view">
<field name="name">res.users.form</field>
<field name="model">res.users</field>

View File

@ -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,
]

View File

@ -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.")

View File

@ -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

View File

@ -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)

View File

@ -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:

View File

@ -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,
}

View File

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_test_exceptions_model access_test_exceptions_model model_test_exceptions_model 1 1 1 1

View File

@ -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,
}

View File

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_export_boolean access_export_boolean model_export_boolean 1 1 1 1
3 access_export_integer access_export_integer model_export_integer 1 1 1 1
4 access_export_float access_export_float model_export_float 1 1 1 1
5 access_export_decimal access_export_decimal model_export_decimal 1 1 1 1
6 access_export_string_bounded access_export_string_bounded model_export_string_bounded 1 1 1 1
7 access_export_string_required access_export_string_required model_export_string_required 1 1 1 1
8 access_export_string access_export_string model_export_string 1 1 1 1
9 access_export_date access_export_date model_export_date 1 1 1 1
10 access_export_datetime access_export_datetime model_export_datetime 1 1 1 1
11 access_export_text access_export_text model_export_text 1 1 1 1
12 access_export_selection access_export_selection model_export_selection 1 1 1 1
13 access_export_selection_function access_export_selection_function model_export_selection_function 1 1 1 1
14 access_export_many2one access_export_many2one model_export_many2one 1 1 1 1
15 access_export_one2many access_export_one2many model_export_one2many 1 1 1 1
16 access_export_many2many access_export_many2many model_export_many2many 1 1 1 1
17 access_export_function access_export_function model_export_function 1 1 1 1
18 access_export_one2many_child access_export_one2many_child model_export_one2many_child 1 1 1 1
19 access_export_one2many_multiple access_export_one2many_multiple model_export_one2many_multiple 1 1 1 1
20 access_export_one2many_multiple_child access_export_one2many_multiple_child model_export_one2many_multiple_child 1 1 1 1
21 access_export_one2many_child_1 access_export_one2many_child_1 model_export_one2many_child_1 1 1 1 1
22 access_export_one2many_child_2 access_export_one2many_child_2 model_export_one2many_child_2 1 1 1 1
23 access_export_many2many_other access_export_many2many_other model_export_many2many_other 1 1 1 1
24 access_export_selection_withdefault access_export_selection_withdefault model_export_selection_withdefault 1 1 1 1
25 access_export_one2many_recursive access_export_one2many_recursive model_export_one2many_recursive 1 1 1 1

View File

@ -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,
}

View File

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_test_limits_model access_test_limits_model model_test_limits_model 1 1 1 1

View File

@ -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,
}

View File

@ -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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_test_uninstall_model access_test_uninstall_model model_test_uninstall_model 1 1 1 1

View File

@ -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:

View File

@ -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 """

View File

@ -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'})

View File

@ -130,6 +130,9 @@ def html_email_clean(html):
dest += source[idx:]
return dest
if not html:
return html
html = ustr(html)
# 1. <br[ /]> -> \n, because otherwise the tree is obfuscated