[MERGE] merged with main trunk
bzr revid: kjo@tinyerp.com-20120702113552-r1tfw0a10l5gg2zg bzr revid: qdp-launchpad@openerp.com-20120703083343-kdog48z36lmv9e3w
This commit is contained in:
commit
1cf92ce031
|
@ -347,6 +347,39 @@ CREATE TABLE ir_model_data (
|
|||
res_id integer, primary key(id)
|
||||
);
|
||||
|
||||
-- Records foreign keys and constraints installed by a module (so they can be
|
||||
-- removed when the module is uninstalled):
|
||||
-- - for a foreign key: type is 'f',
|
||||
-- - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
|
||||
CREATE TABLE ir_model_constraint (
|
||||
id serial NOT NULL,
|
||||
create_uid integer,
|
||||
create_date timestamp without time zone,
|
||||
write_date timestamp without time zone,
|
||||
write_uid integer,
|
||||
date_init timestamp without time zone,
|
||||
date_update timestamp without time zone,
|
||||
module integer NOT NULL references ir_module_module on delete restrict,
|
||||
model integer NOT NULL references ir_model on delete restrict,
|
||||
type character varying(1) NOT NULL,
|
||||
name character varying(128) NOT NULL
|
||||
);
|
||||
|
||||
-- Records relation tables (i.e. implementing many2many) installed by a module
|
||||
-- (so they can be removed when the module is uninstalled).
|
||||
CREATE TABLE ir_model_relation (
|
||||
id serial NOT NULL,
|
||||
create_uid integer,
|
||||
create_date timestamp without time zone,
|
||||
write_date timestamp without time zone,
|
||||
write_uid integer,
|
||||
date_init timestamp without time zone,
|
||||
date_update timestamp without time zone,
|
||||
module integer NOT NULL references ir_module_module on delete restrict,
|
||||
model integer NOT NULL references ir_model on delete restrict,
|
||||
name character varying(128) NOT NULL
|
||||
);
|
||||
|
||||
---------------------------------
|
||||
-- Users
|
||||
---------------------------------
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<menuitem id="menu_reporting" name="Reporting" sequence="90"/>
|
||||
<menuitem id="menu_reporting" name="Reporting" sequence="90" groups="base.group_user"/>
|
||||
<menuitem id="menu_reporting_dashboard" name="Dashboards" parent="menu_reporting" sequence="0"/>
|
||||
<menuitem id="menu_reporting_config" name="Configuration" parent="menu_reporting" sequence="100" groups="base.group_system"/>
|
||||
<menuitem id="menu_administration" name="Settings" sequence="100" icon="terp-administration"/>
|
||||
<menuitem id="menu_administration" name="Settings" sequence="100"/>
|
||||
<menuitem id="menu_management" name="Modules" parent="menu_administration" sequence="0"/>
|
||||
<menuitem id="menu_config" name="Configuration" parent="menu_administration" sequence="1"/>
|
||||
<menuitem id="menu_administration_shortcut" parent="menu_administration" name="Custom Shortcuts" sequence="50"/>
|
||||
<menuitem id="menu_users" name="Users" parent="menu_administration" sequence="4" groups="base.group_no_one"/>
|
||||
<menuitem id="menu_users" name="Users" parent="menu_administration" sequence="4"/>
|
||||
<menuitem id="menu_translation" name="Translations" parent="menu_administration" sequence="7"/>
|
||||
<menuitem id="menu_translation_app" name="Application Terms" parent="menu_translation" sequence="4" groups="base.group_no_one"/>
|
||||
<menuitem id="menu_translation_export" name="Import / Export" groups="base.group_no_one" parent="menu_translation" sequence="3"/>
|
||||
<menuitem id="menu_custom" name="Technical" parent="menu_administration" sequence="110" groups="base.group_no_one"/>
|
||||
<menuitem id="next_id_2" name="User Interface" parent="menu_custom"/>
|
||||
<menuitem id="menu_translation_export" name="Import / Export" parent="menu_translation" sequence="3" groups="base.group_no_one"/>
|
||||
<menuitem id="menu_custom" name="Technical" parent="menu_administration" sequence="110" groups="base.group_no_one"/>
|
||||
<menuitem id="next_id_2" name="User Interface" parent="menu_custom"/>
|
||||
<menuitem id="menu_email" name="Email" parent="menu_custom" sequence="1"/>
|
||||
<menuitem id="menu_security" name="Security" parent="menu_custom" sequence="25"/>
|
||||
<menuitem id="menu_ir_property" name="Parameters" parent="menu_custom" sequence="24"/>
|
||||
<menuitem id="next_id_4" name="Low Level Objects" parent="menu_custom" sequence="30"/>
|
||||
<menuitem id="menu_low_workflow" name="Workflows" parent="next_id_4"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:18+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,13 +14,13 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
msgid "Saint Helena"
|
||||
msgstr ""
|
||||
msgstr "St. Helena"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
|
@ -35,7 +35,7 @@ msgstr "DagTyd"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_mailgate
|
||||
msgid "Tasks-Mail Integration"
|
||||
msgstr ""
|
||||
msgstr "Take - Vonkpos Integrasie"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/fields.py:582
|
||||
|
@ -44,6 +44,8 @@ msgid ""
|
|||
"The second argument of the many2many field %s must be a SQL table !You used "
|
||||
"%s, which is not a valid SQL table name."
|
||||
msgstr ""
|
||||
"Die tweede argument van die baie2baie veld %s moet 'n SQL-tabel wees! U "
|
||||
"gebruik %s, wat nie 'n geldige SQL tabel naam is nie."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view,arch:0
|
||||
|
@ -70,11 +72,26 @@ msgid ""
|
|||
" * Graph of My Remaining Hours by Project\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Projek bestuur module volg multi-vlak projekte, take, werk wat gedoen is aan "
|
||||
"take, esm.\n"
|
||||
"================================================== "
|
||||
"====================================\n"
|
||||
"\n"
|
||||
"Dit is in staat om beplanning te lewer, take te sorteer, . eso\n"
|
||||
"\n"
|
||||
"Bedieningspaneel vir die projek lede wat insluit:\n"
|
||||
"--------------------------------------------\n"
|
||||
"* Lys van my oop take\n"
|
||||
"* Lys van my gedelegeerde take\n"
|
||||
"* Grafiek van my projekte: Beplande vs Totale ure\n"
|
||||
"* Grafiek van my Oorblywende ure per Projek\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:base.language.import,code:0
|
||||
msgid "Code (eg:en__US)"
|
||||
msgstr ""
|
||||
msgstr "Kode (bv.: en__US)"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow:0
|
||||
|
@ -84,7 +101,7 @@ msgstr ""
|
|||
#: field:workflow.transition,wkf_id:0
|
||||
#: field:workflow.workitem,wkf_id:0
|
||||
msgid "Workflow"
|
||||
msgstr ""
|
||||
msgstr "Werksvloei"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
|
@ -94,12 +111,12 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Hungarian / Magyar"
|
||||
msgstr ""
|
||||
msgstr "Hongaars / Magyar"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PY) / Español (PY)"
|
||||
msgstr ""
|
||||
msgstr "Spaans (PY) / Español (PY)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_project_management
|
||||
|
@ -107,11 +124,13 @@ msgid ""
|
|||
"Helps you manage your projects and tasks by tracking them, generating "
|
||||
"plannings, etc..."
|
||||
msgstr ""
|
||||
"Help om jou projekte en take te bestuur deur dit na te volg, planne te maak, "
|
||||
"ens .."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,display_menu_tip:0
|
||||
msgid "Display Menu Tips"
|
||||
msgstr ""
|
||||
msgstr "Vertoon Kieslys Wenke"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,model:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -467,7 +467,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.bank,email:0
|
||||
#: field:res.partner.address,email:0
|
||||
msgid "E-Mail"
|
||||
msgid "Email
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
@ -544,16 +544,16 @@ msgid "\n"
|
|||
"==========================================================================\n"
|
||||
"\n"
|
||||
"You can define your multiple levels of recall through the menu:\n"
|
||||
" Accounting/Configuration/Miscellaneous/Follow-Ups\n"
|
||||
" Accounting/Configuration/Miscellaneous/Follow-ups\n"
|
||||
"\n"
|
||||
"Once it is defined, you can automatically print recalls every day through simply clicking on the menu:\n"
|
||||
" Accounting/Periodical Processing/Billing/Send followups\n"
|
||||
" Accounting/Periodical Processing/Billing/Send follow-ups\n"
|
||||
"\n"
|
||||
"It will generate a PDF with all the letters according to the the\n"
|
||||
"different levels of recall defined. You can define different policies\n"
|
||||
"for different companies. You can also send mail to the customer.\n"
|
||||
"\n"
|
||||
"Note that if you want to check the followup level for a given partner/account entry, you can do from in the menu:\n"
|
||||
"Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu:\n"
|
||||
" Accounting/Reporting/Generic Reporting/Partners/Follow-ups Sent\n"
|
||||
"\n"
|
||||
""
|
||||
|
@ -7592,7 +7592,7 @@ msgstr ""
|
|||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_email_template
|
||||
msgid "E-Mail Templates"
|
||||
msgid "Email Templates
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
@ -9455,7 +9455,7 @@ msgstr ""
|
|||
|
||||
#. module: base
|
||||
#: field:res.partner,email:0
|
||||
msgid "E-mail"
|
||||
msgid "Email
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
@ -12688,7 +12688,7 @@ msgstr ""
|
|||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_followup
|
||||
msgid "Followup Management"
|
||||
msgid "Follow-up Management"
|
||||
msgstr ""
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -12,8 +12,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
"X-Poedit-Country: GREECE\n"
|
||||
"X-Poedit-Language: Greek\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:27+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -3801,7 +3801,7 @@ msgstr "IVA"
|
|||
#. module: base
|
||||
#: field:res.users,new_password:0
|
||||
msgid "Set password"
|
||||
msgstr ""
|
||||
msgstr "Establecer contraseña"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -14477,7 +14477,7 @@ msgstr "No puede suprimir el campo '%s' !"
|
|||
#. module: base
|
||||
#: view:res.users:0
|
||||
msgid "Allowed Companies"
|
||||
msgstr ""
|
||||
msgstr "Compañias permitidas"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_de
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:27+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
"Language: \n"
|
||||
|
||||
#. module: base
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:27+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -9,8 +9,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
||||
"X-Poedit-Language: Persian\n"
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:28+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:24+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#. module: base
|
||||
|
@ -182,7 +182,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner,ref:0
|
||||
msgid "Reference"
|
||||
msgstr "Referenca"
|
||||
msgstr "Šifra"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
|
||||
|
@ -3689,8 +3689,8 @@ msgid ""
|
|||
"Value Added Tax number. Check the box if the partner is subjected to the "
|
||||
"VAT. Used by the VAT legal statement."
|
||||
msgstr ""
|
||||
"PDV broj. Označite ako je partner podvrgnut PDV-u. Korišteno pri zakonskim "
|
||||
"PDV izvještajima."
|
||||
"PDV broj. Označite ako je partner obveznik PDV-a. Koristi se u nekim "
|
||||
"izvještajima."
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
|
@ -3785,7 +3785,7 @@ msgstr "Provjera Ean"
|
|||
#. module: base
|
||||
#: field:res.partner,vat:0
|
||||
msgid "VAT"
|
||||
msgstr "VAT"
|
||||
msgstr "PDV"
|
||||
|
||||
#. module: base
|
||||
#: field:res.users,new_password:0
|
||||
|
@ -10051,7 +10051,7 @@ msgstr "Tjedni"
|
|||
#: code:addons/base/res/res_company.py:157
|
||||
#, python-format
|
||||
msgid "VAT: "
|
||||
msgstr ""
|
||||
msgstr "PDV "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.af
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:21+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:22+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:23+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:20+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -4920,8 +4920,9 @@ msgid ""
|
|||
"You can not create this document (%s) ! Be sure your user belongs to one of "
|
||||
"these groups: %s."
|
||||
msgstr ""
|
||||
"U kunt dit document (%s) niet maken ! Controleer of uw gebruiker behoort tot "
|
||||
"één van deze groepen: %s."
|
||||
"U kunt dit document (%s) niet maken ! Controleer of u voldoende rechten "
|
||||
"heeft. Om dit document te kunnen maken dient u rechten te hebben tot één van "
|
||||
"deze groepen: %s."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_chat
|
||||
|
@ -10687,8 +10688,9 @@ msgid ""
|
|||
"You can not read this document (%s) ! Be sure your user belongs to one of "
|
||||
"these groups: %s."
|
||||
msgstr ""
|
||||
"U kunt dit document (%s) niet lezen ! Controleer dat uw gebruiker behoort "
|
||||
"tot één van deze groepen: %s."
|
||||
"U kunt dit document (%s) niet lezen! Controleer of u voldoende rechten "
|
||||
"heeft. Om dit document te kunnen lezen dient u rechten te hebben tot één van "
|
||||
"deze groepen: %s."
|
||||
|
||||
#. module: base
|
||||
#: view:res.bank:0
|
||||
|
@ -11637,7 +11639,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr
|
||||
msgid "Employee Directory"
|
||||
msgstr "Werknemers map"
|
||||
msgstr "Personeelsbeheer"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.cron:0
|
||||
|
@ -14675,8 +14677,9 @@ msgid ""
|
|||
"You can not delete this document (%s) ! Be sure your user belongs to one of "
|
||||
"these groups: %s."
|
||||
msgstr ""
|
||||
"U kunt dit document (%s) niet verwijderen ! Controleer dat uw gebruiker "
|
||||
"behoort tot één van deze groepen: %s."
|
||||
"U kunt dit document (%s) niet verwijderen! Controleer of u voldoende rechten "
|
||||
"heeft. Om dit document te kunnen verwijderen dient u rechten te hebben tot "
|
||||
"één van deze groepen: %s."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_livechat
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:27+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:24+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:24+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:24+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:24+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:19+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:50+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:24+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:54+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:28+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -1197,6 +1197,21 @@ msgid ""
|
|||
"At the end of the month, the planning manager can also check if the encoded "
|
||||
"timesheets are respecting the planned time on each analytic account.\n"
|
||||
msgstr ""
|
||||
"Håll koll på din planering\n"
|
||||
"Denna modul hjälper dig att hantera dina projektplaner.\n"
|
||||
"============================================\n"
|
||||
"\n"
|
||||
"Den här modulen är baserad på objektbokföringen och är helt integrerad med\n"
|
||||
"* Tidrapporteringen\n"
|
||||
"* Semesterplaneringen\n"
|
||||
"* Projektledningen\n"
|
||||
"\n"
|
||||
"Varje avdelningschef har full kontroll över all allokerad tid för all "
|
||||
"personer inom ansvarsområdet, inklusive godkänd ledighet eller om det "
|
||||
"fortfarande finns lediga resurser för aktiviteter.\n"
|
||||
"\n"
|
||||
"Vid månadsslut kan planeringen jämföras med inrapporterad tid och "
|
||||
"planeringen gjord för varje objektkonto.\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
|
@ -2292,6 +2307,21 @@ msgid ""
|
|||
"re-invoice your customer's expenses if your work by project.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Denna moduls uppgift är att hantera anställdas utlägg\n"
|
||||
"==========================================\n"
|
||||
"\n"
|
||||
"Hela arbetsflödet genomförs:\n"
|
||||
"* Preliminära kostnader\n"
|
||||
"* Bekräftelse av tidrapporten genom den anställde\n"
|
||||
"* Validering av sin chef\n"
|
||||
"* Validering av bokförare och faktureringen\n"
|
||||
"* Betalning av fakturan till den anställde\n"
|
||||
"\n"
|
||||
"Denna modul använder också objektredovisning och är kompatibel med\n"
|
||||
"tidrapport-modulen så att du kommer att automatiskt kunna\n"
|
||||
"återfaktura kundens kostnader om du använder projektmodulen.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.values,action_id:0
|
||||
|
@ -2929,6 +2959,10 @@ msgid ""
|
|||
"==================================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Denna modul ger en PAD i alla projekt-kanbanvyer\n"
|
||||
"=======================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_country
|
||||
|
@ -2975,7 +3009,7 @@ msgstr "Bangladesh"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_retro_planning
|
||||
msgid "Project Retro-planning"
|
||||
msgstr "Projekt retro-plannering"
|
||||
msgstr "Projekt-retroplannering"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_stock_planning
|
||||
|
@ -4130,7 +4164,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_issue_sheet
|
||||
msgid "Timesheet on Issues"
|
||||
msgstr ""
|
||||
msgstr "Tidrapporter på ärenden"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.title,name:base.res_partner_title_ltd
|
||||
|
@ -5394,7 +5428,7 @@ msgstr "Fält"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_long_term
|
||||
msgid "Long Term Projects"
|
||||
msgstr "Långsiktiga projekt"
|
||||
msgstr "Långtidsprojekt"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ve
|
||||
|
@ -5619,6 +5653,31 @@ msgid ""
|
|||
"Budgets per Budgets.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Denna modul gör det möjligt för bokförare att hantera objekt- och "
|
||||
"tvärbudgetar.\n"
|
||||
"================================================================\n"
|
||||
"\n"
|
||||
"När huvudbudget och budgetarna definieras (i bokföring/budgetar/),\n"
|
||||
"kan projektledarna sätta planerade belopp på varje objektkonto.\n"
|
||||
"\n"
|
||||
"Bokförare har möjlighet att se den totala planerade beloppet för varje\n"
|
||||
"budget och huvudbudget för att säkerställa att totalen inte\n"
|
||||
"över-/understiger än vad han planen. Kontoplanen kan också kopplas till\n"
|
||||
"till en grafisk vy.\n"
|
||||
"\n"
|
||||
"Tre rapporter finns tillgängliga:\n"
|
||||
"1. Den första är tillgänglig från en lista med budgetutskottet. Det ger "
|
||||
"spridning för dessa budgetutskottet av den analytiska konton per master "
|
||||
"budgetutskottet.\n"
|
||||
"\n"
|
||||
"2. Den andra är en sammanfattning av den tidigare, ger endast "
|
||||
"spridningskoden, för de valda budgetutskottet av den analytiska konton.\n"
|
||||
"\n"
|
||||
"3. Den sista är tillgänglig från den analytiska kontoplanen. Det ger att "
|
||||
"sprida, för de valda analytiska konton, de master budgetutskottet per "
|
||||
"budgetutskottet.\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.lang,iso_code:0
|
||||
|
@ -7035,7 +7094,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_project_long_term
|
||||
msgid "Long Term Planning"
|
||||
msgstr "Långsiktig planering"
|
||||
msgstr "Långtidsplanering"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,message:0
|
||||
|
@ -7616,6 +7675,13 @@ msgid ""
|
|||
"all the tasks will change accordingly.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ändringsdatum i enlighet med projektets slutdatum.\n"
|
||||
"=========================================\n"
|
||||
"\n"
|
||||
"Om slutdatum för projektet ändras så korrigeras tidsfrister och startdatum "
|
||||
"för alla aktiviteter i enlighet med detta.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:res.users,view:0
|
||||
|
@ -11258,7 +11324,7 @@ msgstr "Åtgärd"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_event_project
|
||||
msgid "Retro-Planning on Events"
|
||||
msgstr ""
|
||||
msgstr "Retroplannering av evenemang"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/custom.py:555
|
||||
|
@ -11480,6 +11546,13 @@ msgid ""
|
|||
"handle an issue.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Denna modul tillför tidrapporter på ärenden/bugghantering i projekt\n"
|
||||
"======================================================\n"
|
||||
"\n"
|
||||
"Arbetsloggar kan administreras för att ge underlag till de timmar ägnade åt "
|
||||
"ett visst ärende.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.ir_sequence_form
|
||||
|
@ -13804,6 +13877,25 @@ msgid ""
|
|||
"state are scheduled with taking the phase's start date\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Longtidsplanerings-modul som spårar planering, schemaläggning och "
|
||||
"resursfördelning.\n"
|
||||
"====================================================================\n"
|
||||
"\n"
|
||||
"egenskaper\n"
|
||||
"--------\n"
|
||||
"* Hantera stora projekt.\n"
|
||||
"* Definiera olika faser av projekt.\n"
|
||||
"* Beräkna Fasschemaläggning: Beräkna startdatum och slutdatum för de faser "
|
||||
"som är i preliminär, öppen och i vilande tillstånd för givna projekt.\n"
|
||||
" Om ingen projekt anges så alla i anspråktas utkastet, öppen och "
|
||||
"pågående faserna.\n"
|
||||
"* Beräkna schemaläggning: Det här fungerar samma som schemaläggaren knappen "
|
||||
"på project.phase. Det tar projektet som argument och beräknar alla öppna, "
|
||||
"preliminära och pågående aktiviteter.\n"
|
||||
"* Schemalägg aktivieteter: Alla preliminära, vilande och öppna planeras med "
|
||||
"fasens startdatum\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_workflow_activity_form
|
||||
|
@ -14788,6 +14880,18 @@ msgid ""
|
|||
"and decide on their status as they evolve.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Denna modul tillför ärendehantering och buggadministration till Projekt.\n"
|
||||
"=========================================================\n"
|
||||
"\n"
|
||||
"OpenERP tillåter dig hantera ärenden och problem som kan uppstå i ett "
|
||||
"projekt\n"
|
||||
"såsom buggar i ett system, klagomål eller materialproblem, En listvy ger en "
|
||||
"snabb \n"
|
||||
"överblick över ärendestocken, tilldela enskilda ärenden till handläggare och "
|
||||
"ge \n"
|
||||
"dem status i den takt de utvecklas.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:res.groups,full_name:0
|
||||
|
@ -15218,7 +15322,7 @@ msgstr "Land"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_messages
|
||||
msgid "In-Project Messaging System"
|
||||
msgstr ""
|
||||
msgstr "Projektinternt meddelandesystem"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pn
|
||||
|
@ -15550,7 +15654,7 @@ msgstr "Turks and Caicos Islands"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_fetchmail_project_issue
|
||||
msgid "eMail Gateway for Project Issues"
|
||||
msgstr "E-postbrygga för projektproblem"
|
||||
msgstr "E-postbrygga för projektärenden"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank,partner_id:0
|
||||
|
@ -15603,6 +15707,8 @@ msgid ""
|
|||
"Manage relations with prospects and customers using leads, opportunities, "
|
||||
"requests or issues."
|
||||
msgstr ""
|
||||
"Administrera relationen mellan prospektiva kunder och kunder med kundämnen, "
|
||||
"affärsmöjligheter, önskemål eller ärenden."
|
||||
|
||||
#. module: base
|
||||
#: selection:res.partner.address,type:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:25+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:51+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:27+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -170,7 +170,7 @@ msgstr "过滤条件这个字段是可选输入的,用于在输入关系型字
|
|||
#. module: base
|
||||
#: field:res.partner,ref:0
|
||||
msgid "Reference"
|
||||
msgstr "关联单号"
|
||||
msgstr "编号"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
|
||||
|
@ -9137,6 +9137,7 @@ msgid ""
|
|||
"use the same timezone that is otherwise used to pick and render date and "
|
||||
"time values: your computer's timezone."
|
||||
msgstr ""
|
||||
"用户的时区为打印报表配置正确的日期时间输出格式。设置这个值是很重要的。你应该根据你的计算机时区来选取相同的时区,因为它也影响系统中日期的选取和呈现。"
|
||||
|
||||
#. module: base
|
||||
#: help:res.country,name:0
|
||||
|
@ -13964,7 +13965,7 @@ msgid ""
|
|||
"The default language used in the graphical user interface, when translations "
|
||||
"are available. To add a new language, you can use the 'Load an Official "
|
||||
"Translation' wizard available from the 'Administration' menu."
|
||||
msgstr ""
|
||||
msgstr "选可用的翻译作为图形界面的默认语言。你可以通过设置菜单的载入一个官方翻译来添加一个新翻译"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_es
|
||||
|
@ -14978,7 +14979,7 @@ msgstr "您不能删除字段 '%s' !"
|
|||
#. module: base
|
||||
#: view:res.users:0
|
||||
msgid "Allowed Companies"
|
||||
msgstr ""
|
||||
msgstr "允许的公司"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_de
|
||||
|
@ -15864,7 +15865,7 @@ msgstr "%r 错误的浏览记录标识符,其应该为一个整数。"
|
|||
#: field:res.partner.address,function:0
|
||||
#: selection:workflow.activity,kind:0
|
||||
msgid "Function"
|
||||
msgstr "功能"
|
||||
msgstr "职能"
|
||||
|
||||
#. module: base
|
||||
#: view:res.widget:0
|
||||
|
|
|
@ -14,8 +14,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:52+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:26+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -13,8 +13,8 @@ msgstr ""
|
|||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-19 04:53+0000\n"
|
||||
"X-Generator: Launchpad (build 15435)\n"
|
||||
"X-Launchpad-Export-Date: 2012-06-27 05:27+0000\n"
|
||||
"X-Generator: Launchpad (build 15482)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
##############################################################################
|
||||
|
||||
import ir_model
|
||||
import ir_model_constraint
|
||||
import ir_model_relation
|
||||
import ir_sequence
|
||||
import ir_needaction
|
||||
import ir_ui_menu
|
||||
|
|
|
@ -328,7 +328,7 @@
|
|||
<field name="view_id" ref="action_view_tree"/>
|
||||
<field name="search_view_id" ref="action_view_search"/>
|
||||
</record>
|
||||
<menuitem id="next_id_6" name="Actions" parent="base.next_id_4" sequence="1"/>
|
||||
<menuitem id="next_id_6" name="Actions" parent="base.menu_custom" sequence="2"/>
|
||||
<menuitem action="ir_sequence_actions" id="menu_ir_sequence_actions" parent="next_id_6"/>
|
||||
<menuitem action="act_values_form_action" id="menu_values_form_action" parent="next_id_6"/>
|
||||
<menuitem action="act_values_form_defaults" id="menu_values_form_defaults" parent="next_id_6"/>
|
||||
|
@ -1127,6 +1127,65 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_model_constraint_form">
|
||||
<field name="name">ir.model.constraint.form</field>
|
||||
<field name="model">ir.model.constraint</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Model Constraints">
|
||||
<field name="type"/>
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
<newline/>
|
||||
<field name="date_update" />
|
||||
<field name="date_init" />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_model_constraint_list" model="ir.ui.view">
|
||||
<field name="name">ir.model.constraint.list</field>
|
||||
<field name="model">ir.model.constraint</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Model Constraints">
|
||||
<field name="type"/>
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_model_relation_form">
|
||||
<field name="name">ir.model.relation.form</field>
|
||||
<field name="model">ir.model.relation</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="ManyToMany Relations">
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
<newline/>
|
||||
<field name="date_update" />
|
||||
<field name="date_init" />
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_model_relation_list" model="ir.ui.view">
|
||||
<field name="name">ir.model.relation.list</field>
|
||||
<field name="model">ir.model.relation</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="ManyToMany Relations">
|
||||
<field name="name"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_model_model" model="ir.actions.act_window">
|
||||
<field name="name">Models</field>
|
||||
|
@ -1156,6 +1215,24 @@
|
|||
<menuitem action="action_model_data" id="ir_model_data_menu" parent="base.next_id_5"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<record id="action_model_constraint" model="ir.actions.act_window">
|
||||
<field name="name">Model Constraints</field>
|
||||
<field name="res_model">ir.model.constraint</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_model_constraint_list"/>
|
||||
</record>
|
||||
<menuitem action="action_model_constraint" id="ir_model_constraint_menu" parent="base.next_id_9"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<record id="action_model_relation" model="ir.actions.act_window">
|
||||
<field name="name">ManyToMany Relations</field>
|
||||
<field name="res_model">ir.model.relation</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="view_model_relation_list"/>
|
||||
</record>
|
||||
<menuitem action="action_model_relation" id="ir_model_relation_menu" parent="base.next_id_9"
|
||||
groups="base.group_no_one"/>
|
||||
|
||||
<!-- Translations -->
|
||||
|
||||
<record id="view_translation_search" model="ir.ui.view">
|
||||
|
|
|
@ -222,9 +222,10 @@ class act_window(osv.osv):
|
|||
help="Optional domain filtering of the destination data, as a Python expression"),
|
||||
'context': fields.char('Context Value', size=250, required=True,
|
||||
help="Context dictionary as Python expression, empty by default (Default: {})"),
|
||||
'res_model': fields.char('Object', size=64, required=True,
|
||||
'res_id': fields.integer('Record ID', help="Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"),
|
||||
'res_model': fields.char('Destination Model', size=64, required=True,
|
||||
help="Model name of the object to open in the view window"),
|
||||
'src_model': fields.char('Source Object', size=64,
|
||||
'src_model': fields.char('Source Model', size=64,
|
||||
help="Optional model name of the objects on which this action should be visible"),
|
||||
'target': fields.selection([('current','Current Window'),('new','New Window'),('inline','Inline')], 'Target Window'),
|
||||
'view_type': fields.selection((('tree','Tree'),('form','Form')), string='View Type', required=True,
|
||||
|
|
|
@ -40,7 +40,6 @@
|
|||
</record>
|
||||
|
||||
<act_window name="System Parameters" res_model="ir.config_parameter" id="ir_config_list_action"/>
|
||||
<menuitem name="System Parameters" id="ir_config_menu"
|
||||
parent="base.next_id_4" action="ir_config_list_action" groups="base.group_no_one"/>
|
||||
<menuitem id="ir_config_menu" name="System Parameters" parent="menu_ir_property" action="ir_config_list_action"/>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -161,7 +161,7 @@ def encode_rfc2822_address_header(header_text):
|
|||
|
||||
|
||||
class ir_mail_server(osv.osv):
|
||||
"""Represents an SMTP server, able to send outgoing e-mails, with SSL and TLS capabilities."""
|
||||
"""Represents an SMTP server, able to send outgoing emails, with SSL and TLS capabilities."""
|
||||
_name = "ir.mail_server"
|
||||
|
||||
_columns = {
|
||||
|
@ -396,7 +396,7 @@ class ir_mail_server(osv.osv):
|
|||
MailDeliveryException and logs root cause.
|
||||
"""
|
||||
smtp_from = message['Return-Path'] or message['From']
|
||||
assert smtp_from, "The Return-Path or From header is required for any outbound e-mail"
|
||||
assert smtp_from, "The Return-Path or From header is required for any outbound email"
|
||||
|
||||
# The email's "Envelope From" (Return-Path), and all recipient addresses must only contain ASCII characters.
|
||||
from_rfc2822 = extract_rfc2822_addresses(smtp_from)
|
||||
|
|
|
@ -29,8 +29,7 @@ from openerp import netsvc, pooler, tools
|
|||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools import config
|
||||
from openerp.tools.translate import _
|
||||
from openerp.osv.orm import except_orm, browse_record, EXT_ID_PREFIX_FK, \
|
||||
EXT_ID_PREFIX_M2M_TABLE, EXT_ID_PREFIX_CONSTRAINT
|
||||
from openerp.osv.orm import except_orm, browse_record
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -864,7 +863,7 @@ class ir_model_data(osv.osv):
|
|||
cr.execute('UPDATE ir_values set value=%s WHERE model=%s and key=%s and name=%s'+where,(value, model, key, name))
|
||||
return True
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
def _module_data_uninstall(self, cr, uid, modules_to_remove, context=None):
|
||||
"""Deletes all the records referenced by the ir.model.data entries
|
||||
``ids`` along with their corresponding database backed (including
|
||||
dropping tables, columns, FKs, etc, as long as there is no other
|
||||
|
@ -875,6 +874,8 @@ class ir_model_data(osv.osv):
|
|||
This step is performed as part of the full uninstallation of a module.
|
||||
"""
|
||||
|
||||
ids = self.search(cr, uid, [('module', 'in', modules_to_remove)])
|
||||
|
||||
if uid != 1 and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
|
@ -884,7 +885,6 @@ class ir_model_data(osv.osv):
|
|||
ids_set = set(ids)
|
||||
wkf_todo = []
|
||||
to_unlink = []
|
||||
to_drop_table = []
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
|
@ -893,42 +893,6 @@ class ir_model_data(osv.osv):
|
|||
model_obj = self.pool.get(model)
|
||||
name = tools.ustr(data.name)
|
||||
|
||||
if name.startswith(EXT_ID_PREFIX_FK) or name.startswith(EXT_ID_PREFIX_M2M_TABLE)\
|
||||
or name.startswith(EXT_ID_PREFIX_CONSTRAINT):
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_data where name = %s and res_id IS NULL""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
if name.startswith(EXT_ID_PREFIX_FK):
|
||||
name = name[len(EXT_ID_PREFIX_FK):]
|
||||
# test if FK exists on this table (it could be on a related m2m table, in which case we ignore it)
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('f', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped FK CONSTRAINT %s@%s', name, model)
|
||||
continue
|
||||
|
||||
if name.startswith(EXT_ID_PREFIX_M2M_TABLE):
|
||||
name = name[len(EXT_ID_PREFIX_M2M_TABLE):]
|
||||
cr.execute("SELECT 1 FROM information_schema.tables WHERE table_name=%s", (name,))
|
||||
if cr.fetchone() and not name in to_drop_table:
|
||||
to_drop_table.append(name)
|
||||
continue
|
||||
|
||||
if name.startswith(EXT_ID_PREFIX_CONSTRAINT):
|
||||
name = name[len(EXT_ID_PREFIX_CONSTRAINT):]
|
||||
# test if constraint exists
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('u', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
|
||||
continue
|
||||
|
||||
pair_to_unlink = (model, res_id)
|
||||
if pair_to_unlink not in to_unlink:
|
||||
to_unlink.append(pair_to_unlink)
|
||||
|
@ -948,17 +912,12 @@ class ir_model_data(osv.osv):
|
|||
except:
|
||||
_logger.info('Unable to force processing of workflow for item %s@%s in order to leave activity to be deleted', res_id, model)
|
||||
|
||||
# drop m2m relation tables
|
||||
for table in to_drop_table:
|
||||
cr.execute('DROP TABLE %s CASCADE'% (table),)
|
||||
_logger.info('Dropped table %s', table)
|
||||
|
||||
def unlink_if_refcount(to_unlink):
|
||||
for model, res_id in to_unlink:
|
||||
external_ids = self.search(cr, uid, [('model', '=', model),('res_id', '=', res_id)])
|
||||
if (set(external_ids)-ids_set):
|
||||
# if other modules have defined this record, we must not delete it
|
||||
return
|
||||
continue
|
||||
_logger.info('Deleting %s@%s', res_id, model)
|
||||
try:
|
||||
self.pool.get(model).unlink(cr, uid, [res_id], context=context)
|
||||
|
@ -970,11 +929,18 @@ class ir_model_data(osv.osv):
|
|||
if model not in ('ir.model','ir.model.fields'))
|
||||
unlink_if_refcount((model, res_id) for model, res_id in to_unlink
|
||||
if model == 'ir.model.fields')
|
||||
|
||||
ir_model_relation = self.pool.get('ir.model.relation')
|
||||
relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove)])
|
||||
ir_model_relation._module_data_uninstall(cr, uid, relation_ids, context)
|
||||
|
||||
unlink_if_refcount((model, res_id) for model, res_id in to_unlink
|
||||
if model == 'ir.model')
|
||||
|
||||
cr.commit()
|
||||
|
||||
self.unlink(cr, uid, ids, context)
|
||||
|
||||
def _process_end(self, cr, uid, modules):
|
||||
""" Clear records removed from updated module data.
|
||||
This method is called at the end of the module loading process.
|
||||
|
|
|
@ -0,0 +1,79 @@
|
|||
import logging
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import fields
|
||||
from openerp.osv.orm import Model
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class ir_model_constraint(Model):
|
||||
"""
|
||||
This model tracks PostgreSQL foreign keys and constraints used by OpenERP
|
||||
models.
|
||||
"""
|
||||
_name = 'ir.model.constraint'
|
||||
_columns = {
|
||||
'name': fields.char('Constraint', required=True, size=128, select=1,
|
||||
help="PostgreSQL constraint or foreign key name."),
|
||||
'model': fields.many2one('ir.model', string='Model',
|
||||
required=True, select=1),
|
||||
'module': fields.many2one('ir.module.module', string='Module',
|
||||
required=True, select=1),
|
||||
'type': fields.char('Constraint Type', required=True, size=1, select=1,
|
||||
help="Type of the constraint: `f` for a foreign key, "
|
||||
"`u` for other constraints."),
|
||||
'date_update': fields.datetime('Update Date'),
|
||||
'date_init': fields.datetime('Initialization Date')
|
||||
}
|
||||
|
||||
_sql_constraints = [
|
||||
('module_name_uniq', 'unique(name, module)',
|
||||
'Constraints with the same name are unique per module.'),
|
||||
]
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Delete PostgreSQL foreign keys and constraints tracked by this model.
|
||||
"""
|
||||
|
||||
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
context = dict(context or {})
|
||||
|
||||
ids_set = set(ids)
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
to_unlink = []
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model.model
|
||||
model_obj = self.pool.get(model)
|
||||
name = openerp.tools.ustr(data.name)
|
||||
typ = data.type
|
||||
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_constraint where name=%s""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
if typ == 'f':
|
||||
# test if FK exists on this table (it could be on a related m2m table, in which case we ignore it)
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('f', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped FK CONSTRAINT %s@%s', name, model)
|
||||
|
||||
if typ == 'u':
|
||||
# test if constraint exists
|
||||
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
|
||||
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('u', name, model_obj._table))
|
||||
if cr.fetchone():
|
||||
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
|
||||
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
|
||||
|
||||
to_unlink.append(data.id)
|
||||
self.unlink(cr, uid, to_unlink, context)
|
|
@ -0,0 +1,65 @@
|
|||
import logging
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import fields
|
||||
from openerp.osv.orm import Model
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class ir_model_relation(Model):
|
||||
"""
|
||||
This model tracks PostgreSQL tables used to implement OpenERP many2many
|
||||
relations.
|
||||
"""
|
||||
_name = 'ir.model.relation'
|
||||
_columns = {
|
||||
'name': fields.char('Relation Name', required=True, size=128, select=1,
|
||||
help="PostgreSQL table name implementing a many2many relation."),
|
||||
'model': fields.many2one('ir.model', string='Model',
|
||||
required=True, select=1),
|
||||
'module': fields.many2one('ir.module.module', string='Module',
|
||||
required=True, select=1),
|
||||
'date_update': fields.datetime('Update Date'),
|
||||
'date_init': fields.datetime('Initialization Date')
|
||||
}
|
||||
|
||||
def _module_data_uninstall(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Delete PostgreSQL many2many relations tracked by this model.
|
||||
"""
|
||||
|
||||
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
|
||||
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
|
||||
|
||||
ids_set = set(ids)
|
||||
to_drop_table = []
|
||||
ids.sort()
|
||||
ids.reverse()
|
||||
to_unlink = []
|
||||
for data in self.browse(cr, uid, ids, context):
|
||||
model = data.model
|
||||
model_obj = self.pool.get(model)
|
||||
name = openerp.tools.ustr(data.name)
|
||||
|
||||
# double-check we are really going to delete all the owners of this schema element
|
||||
cr.execute("""SELECT id from ir_model_relation where name = %s""", (data.name,))
|
||||
external_ids = [x[0] for x in cr.fetchall()]
|
||||
if (set(external_ids)-ids_set):
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
cr.execute("SELECT 1 FROM information_schema.tables WHERE table_name=%s", (name,))
|
||||
if cr.fetchone() and not name in to_drop_table:
|
||||
to_drop_table.append(name)
|
||||
|
||||
to_unlink.append(data.id)
|
||||
|
||||
self.unlink(cr, uid, to_unlink, context)
|
||||
|
||||
# drop m2m relation tables
|
||||
for table in to_drop_table:
|
||||
cr.execute('DROP TABLE %s CASCADE'% (table),)
|
||||
_logger.info('Dropped table %s', table)
|
||||
|
||||
cr.commit()
|
|
@ -24,16 +24,16 @@ from operator import itemgetter
|
|||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
|
||||
class ir_needaction_users_rel(osv.osv):
|
||||
'''
|
||||
ir_needaction_users_rel holds data related to the needaction
|
||||
mechanism inside OpenERP. A row in this model is characterized by:
|
||||
class ir_needaction_users_rel(osv.Model):
|
||||
''' ir_needaction_users_rel holds data related to the needaction
|
||||
mechanism inside OpenERP. A row in this model is characterized
|
||||
by:
|
||||
- res_model: model of the record requiring an action
|
||||
- res_id: ID of the record requiring an action
|
||||
- user_id: foreign key to the res.users table, to the user that
|
||||
has to perform the action
|
||||
This model can be seen as a many2many, linking (res_model, res_id) to
|
||||
users (those whose attention is required on the record).'''
|
||||
- user_id: foreign key to the res.users table, to the user that has to
|
||||
perform the action
|
||||
This model can be seen as a many2many, linking (res_model, res_id) to users
|
||||
(those whose attention is required on the record). '''
|
||||
|
||||
_name = 'ir.needaction_users_rel'
|
||||
_description = 'Needaction relationship table'
|
||||
|
@ -78,50 +78,47 @@ class ir_needaction_users_rel(osv.osv):
|
|||
return True
|
||||
|
||||
|
||||
class ir_needaction_mixin(osv.osv):
|
||||
class ir_needaction_mixin(osv.Model):
|
||||
'''Mixin class for objects using the need action feature.
|
||||
|
||||
Need action feature can be used by objects willing to be able to
|
||||
signal that an action is required on a particular record. If in the
|
||||
business logic an action must be performed by somebody, for instance
|
||||
validation by a manager, this mechanism allows to set a list of
|
||||
users asked to perform an action.
|
||||
Need action feature can be used by objects having to be able to
|
||||
signal that an action is required on a particular record. If in
|
||||
the business logic an action must be performed by somebody, for
|
||||
instance validation by a manager, this mechanism allows to set a
|
||||
list of users asked to perform an action.
|
||||
|
||||
This class wraps a class (ir.ir_needaction_users_rel) that behaves
|
||||
like a many2many field. However, no field is added to the model
|
||||
inheriting from this mixin class. This class handles the low-level
|
||||
considerations of updating relationships. Every change made on the
|
||||
record calls a method that updates the relationships.
|
||||
This class wraps a class (ir.ir_needaction_users_rel) that
|
||||
behaves like a many2many field. This class handles the low-level
|
||||
considerations of updating relationships. Every change made on
|
||||
the record calls a method that updates the relationships.
|
||||
|
||||
Objects using the 'need_action' feature should override the
|
||||
``get_needaction_user_ids`` method. This methods returns a dictionary
|
||||
whose keys are record ids, and values a list of user ids, like
|
||||
in a many2many relationship. Therefore by defining only one method,
|
||||
you can specify if an action is required by defining the users
|
||||
that have to do it, in every possible situation.
|
||||
Objects using the 'need_action' feature should override the
|
||||
``get_needaction_user_ids`` method. This methods returns a
|
||||
dictionary whose keys are record ids, and values a list of user
|
||||
ids, like in a many2many relationship. Therefore by defining
|
||||
only one method, you can specify if an action is required by
|
||||
defining the users that have to do it, in every possible
|
||||
situation.
|
||||
|
||||
This class also offers several global services,:
|
||||
This class also offers several global services:
|
||||
- ``needaction_get_record_ids``: for the current model and uid, get
|
||||
all record ids that ask this user to perform an action. This
|
||||
mechanism is used for instance to display the number of pending
|
||||
actions in menus, such as Leads (12)
|
||||
all record ids that ask this user to perform an action. This
|
||||
mechanism is used for instance to display the number of pending
|
||||
actions in menus, such as Leads (12)
|
||||
- ``needaction_get_action_count``: as ``needaction_get_record_ids``
|
||||
but returns only the number of action, not the ids (performs a
|
||||
search with count=True)
|
||||
- ``needaction_get_user_record_references``: for a given uid, get all
|
||||
the records that ask this user to perform an action. Records
|
||||
are given as references, a list of tuples (model_name, record_id)
|
||||
but returns only the number of action, not the ids (performs a
|
||||
search with count=True)
|
||||
|
||||
The ``ir_needaction_mixin`` class adds a function field on models inheriting
|
||||
from the class. This field allows to state whether a given record has
|
||||
a needaction for the current user. This is usefull if you want to customize
|
||||
views according to the needaction feature. For example, you may want to
|
||||
set records in bold in a list view if the current user has an action to
|
||||
perform on the record. This makes the class not a pure abstract class,
|
||||
but allows to easily use the action information.'''
|
||||
The ``ir_needaction_mixin`` class adds a calculated field
|
||||
``needaction_pending``. This function field allows to state
|
||||
whether a given record has a needaction for the current user.
|
||||
This is usefull if you want to customize views according to the
|
||||
needaction feature. For example, you may want to set records in
|
||||
bold in a list view if the current user has an action to perform
|
||||
on the record. '''
|
||||
|
||||
_name = 'ir.needaction_mixin'
|
||||
_description = '"Need action" mixin'
|
||||
_description = 'Need action mixin'
|
||||
|
||||
def get_needaction_pending(self, cr, uid, ids, name, arg, context=None):
|
||||
res = {}
|
||||
|
@ -129,13 +126,19 @@ class ir_needaction_mixin(osv.osv):
|
|||
for id in ids:
|
||||
res[id] = uid in needaction_user_ids[id]
|
||||
return res
|
||||
|
||||
def search_needaction_pending(self, cr, uid, self_again, field_name, criterion, context=None):
|
||||
ids = self.needaction_get_record_ids(
|
||||
cr, uid, uid, limit=1024, context=context)
|
||||
return [('id', 'in', ids)]
|
||||
|
||||
_columns = {
|
||||
'needaction_pending': fields.function(get_needaction_pending, type='boolean',
|
||||
string='Need action pending',
|
||||
help='If True, this field states that users have to perform an action. \
|
||||
This field comes from the needaction mechanism. Please refer \
|
||||
to the ir.needaction_mixin class.'),
|
||||
'needaction_pending': fields.function(
|
||||
get_needaction_pending, type='boolean',
|
||||
fnct_search=search_needaction_pending,
|
||||
string='Need action pending',
|
||||
help="If True, this field states that users have to perform an " \
|
||||
"action This field comes from the ir.needaction_mixin class."),
|
||||
}
|
||||
|
||||
#------------------------------------------------------
|
||||
|
@ -146,7 +149,7 @@ class ir_needaction_mixin(osv.osv):
|
|||
""" Returns the user_ids that have to perform an action
|
||||
:return: dict { record_id: [user_ids], }
|
||||
"""
|
||||
return dict.fromkeys(ids, [])
|
||||
return dict((id,list()) for id in ids)
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
rel_obj = self.pool.get('ir.needaction_users_rel')
|
||||
|
@ -191,14 +194,5 @@ class ir_needaction_mixin(osv.osv):
|
|||
get the number of actions it has to perform"""
|
||||
rel_obj = self.pool.get('ir.needaction_users_rel')
|
||||
return rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, count=True, context=context)
|
||||
|
||||
def needaction_get_record_references(self, cr, uid, user_id, offset=None, limit=None, order=None, context=None):
|
||||
"""For a given user_id, get all the records that asks this user to
|
||||
perform an action. Records are given as references, a list of
|
||||
tuples (model_name, record_id).
|
||||
This method is trans-model."""
|
||||
rel_obj = self.pool.get('ir.needaction_users_rel')
|
||||
rel_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context)
|
||||
return map(itemgetter('res_model', 'res_id'), rel_obj.read(cr, uid, rel_ids, ['res_model', 'res_id'], context=context))
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -8,8 +8,9 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Create Menu" version="7.0">
|
||||
<header>
|
||||
<button name="menu_create" string="Create _Menu" type="object"/>
|
||||
<button special="cancel" string="_Cancel"/>
|
||||
<button name="menu_create" string="Create _Menu" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
|
|
|
@ -317,7 +317,7 @@
|
|||
<field name="context">{'search_default_active':1}</field>
|
||||
<field name="search_view_id" ref="view_workflow_instance_search"/>
|
||||
</record>
|
||||
<menuitem action="action_workflow_instance_form" id="menu_workflow_instance" parent="base.menu_low_workflow"/>
|
||||
<menuitem action="action_workflow_instance_form" id="menu_workflow_instance" parent="base.menu_workflow_root"/>
|
||||
|
||||
<!--
|
||||
================================
|
||||
|
@ -383,7 +383,7 @@
|
|||
<field name="context">{'search_default_active':1}</field>
|
||||
<field name="search_view_id" ref="view_workflow_workitem_search"/>
|
||||
</record>
|
||||
<menuitem action="action_workflow_workitem_form" id="menu_workflow_workitem" parent="base.menu_low_workflow"/>
|
||||
<menuitem action="action_workflow_workitem_form" id="menu_workflow_workitem" parent="base.menu_workflow_root"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -378,10 +378,11 @@ class module(osv.osv):
|
|||
including the deletion of all database structures created by the module:
|
||||
tables, columns, constraints, etc."""
|
||||
ir_model_data = self.pool.get('ir.model.data')
|
||||
ir_model_constraint = self.pool.get('ir.model.constraint')
|
||||
modules_to_remove = [m.name for m in self.browse(cr, uid, ids, context)]
|
||||
data_ids = ir_model_data.search(cr, uid, [('module', 'in', modules_to_remove)])
|
||||
ir_model_data._module_data_uninstall(cr, uid, data_ids, context)
|
||||
ir_model_data.unlink(cr, uid, data_ids, context)
|
||||
constraint_ids = ir_model_constraint.search(cr, uid, [('module', 'in', modules_to_remove)])
|
||||
ir_model_constraint._module_data_uninstall(cr, uid, constraint_ids, context)
|
||||
ir_model_data._module_data_uninstall(cr, uid, modules_to_remove, context)
|
||||
self.write(cr, uid, ids, {'state': 'uninstalled'})
|
||||
return True
|
||||
|
||||
|
|
|
@ -7,7 +7,12 @@
|
|||
<field name="model">base.language.export</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Export Translations">
|
||||
<form string="Export Translations" version="7.0">
|
||||
<header>
|
||||
<button name="act_getfile" string="_Export" type="object" states="choose" class="oe_highlight"/>
|
||||
<label string="or" states="choose"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<group col="8">
|
||||
<group colspan="3">
|
||||
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
|
||||
|
@ -35,17 +40,6 @@
|
|||
<field height="80" name="advice" nolabel="1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="choose">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button icon="gtk-cancel" name="act_cancel" special="cancel" string="_Close" type="object"/>
|
||||
<button icon="gtk-ok" name="act_getfile" string="_Export" type="object"/>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="get">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="7" width="220"/>
|
||||
<button icon="gtk-close" name="act_destroy" special="cancel" string="_Close" type="object"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -9,16 +9,19 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Import Translation" version="7.0">
|
||||
<header>
|
||||
<button name="import_lang" string="_Import" type="object" icon="gtk-ok"/>
|
||||
<button special="cancel" string="_Close" icon="gtk-cancel"/>
|
||||
<button name="import_lang" string="_Import" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<separator string="Import Translation" colspan="2"/>
|
||||
<label nolabel="1" string="If you need another language than the official ones available, you can import a language pack from here. Other OpenERP languages than the official ones can be found on launchpad." colspan="2"/>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="data"/>
|
||||
<field name="overwrite"/>
|
||||
<group>
|
||||
<separator string="Import Translation" colspan="2"/>
|
||||
<label nolabel="1" string="If you need another language than the official ones available, you can import a language pack from here. Other OpenERP languages than the official ones can be found on launchpad." colspan="2"/>
|
||||
<group col="4">
|
||||
<field name="name"/>
|
||||
<field name="code"/>
|
||||
<field name="data"/>
|
||||
<field name="overwrite"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -7,7 +7,12 @@
|
|||
<field name="model">base.language.install</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Load a Translation">
|
||||
<form string="Load a Translation" version="7.0">
|
||||
<header>
|
||||
<button name="lang_install" string="Load" type="object" states="init" class="oe_highlight"/>
|
||||
<label string="or" states="init"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</header>
|
||||
<group colspan="4" col="8">
|
||||
<group colspan="1">
|
||||
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
|
||||
|
@ -30,17 +35,6 @@ You must change the preferences of the user and open a new menu to view the chan
|
|||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="init">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel" colspan="1"/>
|
||||
<button name="lang_install" string="Load" type="object" icon="gtk-ok" colspan="1"/>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="done">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="7" width="220"/>
|
||||
<button special="cancel" string="Close" icon="gtk-ok"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="System Configuration Done" version="7.0">
|
||||
<header>
|
||||
<button special="cancel" string="_Ok"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<label string="All pending configuration wizards have been executed. You may restart individual wizards via the list of configuration wizards."/>
|
||||
</form>
|
||||
|
|
|
@ -7,7 +7,14 @@
|
|||
<field name="model">base.module.import</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Import module">
|
||||
<form string="Import module" version="7.0">
|
||||
<header>
|
||||
<button name="importzip" string="Import module" type="object" states="init" class="oe_highlight"/>
|
||||
<label string="or" states="init"/>
|
||||
<button name="action_module_open" string="Open Modules" type="object" states="done" class="oe_highlight"/>
|
||||
<label string="or" states="done"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</header>
|
||||
<group col="8">
|
||||
<group colspan="3" col="1">
|
||||
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
|
||||
|
@ -29,18 +36,6 @@ After importing a new module you can install it by clicking on the button "Insta
|
|||
<label string="Module file successfully imported!" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="init">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="importzip" string="Import module" type="object" icon="gtk-apply"/>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="done">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button special="cancel" string="Close" icon="gtk-ok"/>
|
||||
<button name="action_module_open" string="Open Modules" type="object" icon="gtk-go-forward"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -9,8 +9,9 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Scan for new modules" version="7.0">
|
||||
<header>
|
||||
<button name="watch_dir" string="Check new modules" type="object" icon="gtk-ok"/>
|
||||
<button special="cancel" string="Close" icon="gtk-cancel"/>
|
||||
<button name="watch_dir" string="Check new modules" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<label string="This function will check if you installed new modules in the 'addons' path of your server installation."/>
|
||||
</form>
|
||||
|
|
|
@ -7,7 +7,14 @@
|
|||
<field name="model">base.module.update</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Update Module List">
|
||||
<form string="Update Module List" version="7.0">
|
||||
<header>
|
||||
<button name="update_module" string="Update" type="object" states="init" class="oe_highlight"/>
|
||||
<label string="or" states="init"/>
|
||||
<button name="action_module_open" string="Open Modules" type="object" states="done" class="oe_highlight"/>
|
||||
<label string="or" states="done"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<group col="8">
|
||||
<group colspan="3">
|
||||
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
|
||||
|
@ -28,18 +35,6 @@
|
|||
<field name="add" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="init">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="update_module" string="Update" type="object" icon="gtk-ok"/>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="done">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button special="cancel" string="Close" icon="gtk-ok"/>
|
||||
<button name="action_module_open" string="Open Modules" type="object" icon="gtk-go-forward"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -46,16 +46,19 @@ class base_module_upgrade(osv.osv_memory):
|
|||
|
||||
ids = self.get_module_list(cr, uid, context=context)
|
||||
if not ids:
|
||||
res['arch'] = '''<form string="Apply Scheduled Upgrades" version="7.0">
|
||||
<header>
|
||||
<button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
|
||||
<button special="cancel" string="Close" icon="gtk-cancel"/>
|
||||
</header>
|
||||
<separator string="System update completed" colspan="4"/>
|
||||
<label align="0.0" string="The selected modules have been updated / installed !" colspan="4"/>
|
||||
<label align="0.0" string="We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." colspan="4"/>
|
||||
</form>'''
|
||||
|
||||
res['arch'] = """
|
||||
<form string="Apply Scheduled Upgrades" version="7.0">
|
||||
<header>
|
||||
<button name="config" string="Start configuration" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</header>
|
||||
<separator string="System update completed"/>
|
||||
<label string="The selected modules have been updated / installed !"/>
|
||||
<newline/>
|
||||
<label string="We suggest to reload the page to see the new menus."/>
|
||||
</form>
|
||||
"""
|
||||
return res
|
||||
|
||||
def get_module_list(self, cr, uid, context=None):
|
||||
|
@ -80,14 +83,14 @@ class base_module_upgrade(osv.osv_memory):
|
|||
JOIN ir_module_module_dependency d ON (m.id = d.module_id)
|
||||
LEFT JOIN ir_module_module m2 ON (d.name = m2.name)
|
||||
WHERE m.id in %s and (m2.state IS NULL or m2.state IN %s)""",
|
||||
(tuple(ids), ('uninstalled',)))
|
||||
(tuple(ids), ('uninstalled',)))
|
||||
unmet_packages = [x[0] for x in cr.fetchall()]
|
||||
if unmet_packages:
|
||||
raise osv.except_osv(_('Unmet dependency !'),
|
||||
_('Following modules are not installed or unknown: %s') % ('\n\n' + '\n'.join(unmet_packages)))
|
||||
|
||||
ir_module.download(cr, uid, ids, context=context)
|
||||
cr.commit() # save before re-creating cursor below
|
||||
cr.commit() # save before re-creating cursor below
|
||||
|
||||
pooler.restart_pool(cr.dbname, update_module=True)
|
||||
|
||||
|
|
|
@ -9,11 +9,12 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="System Update" version="7.0">
|
||||
<header>
|
||||
<button name="upgrade_module" string="Update" type="object" icon="gtk-go-forward"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="upgrade_module" string="Update" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</header>
|
||||
<label string="Your system will be updated."/>
|
||||
<label string="Note that this operation might take a few minutes."/>
|
||||
<div><label string="Your system will be updated."/></div>
|
||||
<div><label string="Note that this operation might take a few minutes."/></div>
|
||||
<separator string="Modules to Update"/>
|
||||
<field name="module_info"/>
|
||||
</form>
|
||||
|
@ -45,11 +46,12 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Apply Scheduled Upgrades" version="7.0">
|
||||
<header>
|
||||
<button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="config" string="Start configuration" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</header>
|
||||
<label string="The selected modules have been updated / installed !"/>
|
||||
<label string="We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)."/>
|
||||
<div><label string="The selected modules have been updated / installed !"/></div>
|
||||
<div><label string="We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)."/></div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -6,7 +6,12 @@
|
|||
<field name="model">base.update.translations</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Synchronize Terms">
|
||||
<form string="Synchronize Terms" version="7.0">
|
||||
<header>
|
||||
<button name="act_update" string="Update" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel"/>
|
||||
</header>
|
||||
<group col="8">
|
||||
<group colspan="3">
|
||||
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
|
||||
|
@ -18,12 +23,6 @@
|
|||
<separator string="Synchronize Translation" colspan="4"/>
|
||||
<field name="lang" colspan="4"/>
|
||||
</group>
|
||||
<group colspan="8" col="8">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button icon="gtk-cancel" name="act_cancel" special="cancel" string="Cancel" type="object"/>
|
||||
<button icon="gtk-ok" name="act_update" string="Update" type="object"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -24,30 +24,30 @@
|
|||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Publisher Warranty Contract" version="7.0">
|
||||
<header>
|
||||
<button name="check_validity" string="Validate" type="object"
|
||||
attrs="{'invisible':[('state','in',['valid', 'terminated', 'canceled'])]}"/>
|
||||
<button name="check_validity" string="Refresh Validation Dates" type="object"
|
||||
attrs="{'invisible':[('state','in',['unvalidated'])]}"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<sheet>
|
||||
<group col="3" colspan="4">
|
||||
<group col="2">
|
||||
<group col="3">
|
||||
<group>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="date_start"/>
|
||||
<field name="date_stop"/>
|
||||
<field name="check_support"/>
|
||||
</group>
|
||||
<group col="2">
|
||||
<group>
|
||||
<field name="state"/>
|
||||
<field name="kind"/>
|
||||
<field name="check_opw"/>
|
||||
</group>
|
||||
<group col="2" colspan="3">
|
||||
<button name="check_validity" icon="camera_test.png
|
||||
" string="Validate" type="object"
|
||||
attrs="{'invisible':[('state','in',['valid', 'terminated', 'canceled'])]}"/>
|
||||
<button name="check_validity" icon="camera_test.png" string="Refresh Validation Dates" type="object"
|
||||
attrs="{'invisible':[('state','in',['unvalidated'])]}"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -93,7 +93,12 @@
|
|||
<field name="model">publisher_warranty.contract.wizard</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Register a Contract">
|
||||
<form string="Register a Contract" version="7.0">
|
||||
<header>
|
||||
<button name="action_validate" string="Register" type="object" states="draft" class="oe_highlight" />
|
||||
<label string="or" states="draft"/>
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<group colspan="4" col="8">
|
||||
<group colspan="1">
|
||||
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
|
||||
|
@ -115,17 +120,6 @@
|
|||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="draft">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="6" width="220"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel" colspan="1"/>
|
||||
<button name="action_validate" string="Register" type="object" icon="gtk-apply" colspan="1"/>
|
||||
</group>
|
||||
<group colspan="8" col="8" states="finished">
|
||||
<separator string="" colspan="8"/>
|
||||
<label colspan="7" width="220"/>
|
||||
<button special="cancel" string="Close" icon="gtk-ok"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -66,7 +66,6 @@
|
|||
<field name="view_type">form</field>
|
||||
<field name="view_id" ref="ir_property_view_tree"/>
|
||||
</record>
|
||||
<menuitem id="menu_ir_property" name="Parameters" parent="menu_custom" groups="base.group_no_one" sequence="24"/>
|
||||
<menuitem id="menu_ir_property_form_all" parent="menu_ir_property" action="ir_property_form"/>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -35,7 +35,7 @@ class Bank(osv.osv):
|
|||
'state': fields.many2one("res.country.state", 'Fed. State',
|
||||
domain="[('country_id', '=', country)]"),
|
||||
'country': fields.many2one('res.country', 'Country'),
|
||||
'email': fields.char('E-Mail', size=64),
|
||||
'email': fields.char('Email', size=64),
|
||||
'phone': fields.char('Phone', size=64),
|
||||
'fax': fields.char('Fax', size=64),
|
||||
'active': fields.boolean('Active'),
|
||||
|
|
|
@ -7,10 +7,9 @@
|
|||
<field name="arch" type="xml">
|
||||
<form version="7.0">
|
||||
<header>
|
||||
<button name="action_next" type="object"
|
||||
string="Apply" icon="gtk-go-forward" class="oe_highlight"/>
|
||||
<button name="action_skip" type="object" special="cancel"
|
||||
string="Cancel" icon="gtk-jump-to"/>
|
||||
<button name="action_next" type="object" string="Apply" class="oe_highlight"/>
|
||||
or
|
||||
<button name="action_skip" type="object" special="cancel" string="Cancel" class="oe_link"/>
|
||||
</header>
|
||||
<group string="res_config_contents"/>
|
||||
</form>
|
||||
|
@ -24,10 +23,13 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Next Configuration Step" version="7.0">
|
||||
<header>
|
||||
<button name="action_next" type="object"
|
||||
string="Continue" icon="gtk-go-forward" class="oe_highlight"/>
|
||||
<button name="action_next" type="object" string="Continue" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<field name="note"/>
|
||||
<group>
|
||||
<field name="note"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -39,10 +41,9 @@
|
|||
<field name="arch" type="xml">
|
||||
<form version="7.0">
|
||||
<header>
|
||||
<button name="action_next" type="object"
|
||||
string="Install Modules" icon="gtk-go-forward" class="oe_highlight"/>
|
||||
<button name="action_skip" type="object" special="cancel"
|
||||
string="Cancel" icon="gtk-jump-to"/>
|
||||
<button name="action_next" type="object" string="Install Modules" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<separator string="title" colspan="4"/>
|
||||
</form>
|
||||
|
|
|
@ -89,7 +89,7 @@ class res_partner_category(osv.osv):
|
|||
'active' : fields.boolean('Active', help="The active field allows you to hide the category without removing it."),
|
||||
'parent_left' : fields.integer('Left parent', select=True),
|
||||
'parent_right' : fields.integer('Right parent', select=True),
|
||||
'partner_ids': fields.many2many('res.partner', 'res_partner_category_rel', 'category_id', 'partner_id', 'Partners'),
|
||||
'partner_ids': fields.many2many('res.partner', id1='category_id', id2='partner_id', string='Partners'),
|
||||
}
|
||||
_constraints = [
|
||||
(osv.osv._check_recursion, 'Error ! You can not create recursive categories.', ['parent_id'])
|
||||
|
@ -144,7 +144,7 @@ class res_partner(osv.osv):
|
|||
'website': fields.char('Website',size=64, help="Website of Partner or Company"),
|
||||
'comment': fields.text('Notes'),
|
||||
'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # should be removed in version 7, but kept until then for backward compatibility
|
||||
'category_id': fields.many2many('res.partner.category', 'res_partner_category_rel', 'partner_id', 'category_id', 'Tags'),
|
||||
'category_id': fields.many2many('res.partner.category', id1='partner_id', id2='category_id', string='Tags'),
|
||||
'credit_limit': fields.float(string='Credit Limit'),
|
||||
'ean13': fields.char('EAN13', size=13),
|
||||
'active': fields.boolean('Active'),
|
||||
|
@ -163,7 +163,7 @@ class res_partner(osv.osv):
|
|||
'state_id': fields.many2one("res.country.state", 'State', domain="[('country_id','=',country_id)]"),
|
||||
'country_id': fields.many2one('res.country', 'Country'),
|
||||
'country': fields.related('country_id', type='many2one', relation='res.country', string='Country'), # for backward compatibility
|
||||
'email': fields.char('E-Mail', size=240),
|
||||
'email': fields.char('Email', size=240),
|
||||
'phone': fields.char('Phone', size=64),
|
||||
'fax': fields.char('Fax', size=64),
|
||||
'mobile': fields.char('Mobile', size=64),
|
||||
|
@ -446,7 +446,7 @@ class res_partner_address(osv.osv):
|
|||
'city': fields.char('City', size=128),
|
||||
'state_id': fields.many2one("res.country.state", 'Fed. State', domain="[('country_id','=',country_id)]"),
|
||||
'country_id': fields.many2one('res.country', 'Country'),
|
||||
'email': fields.char('E-Mail', size=240),
|
||||
'email': fields.char('Email', size=240),
|
||||
'phone': fields.char('Phone', size=64),
|
||||
'fax': fields.char('Fax', size=64),
|
||||
'mobile': fields.char('Mobile', size=64),
|
||||
|
|
|
@ -115,15 +115,12 @@
|
|||
</h1>
|
||||
<h2 attrs="{'invisible': [('is_company','=', True)]}">
|
||||
<label for="parent_id" class="oe_edit_only oe_inline"/>
|
||||
|
||||
<field name="parent_id"
|
||||
domain="[('is_company', '=', True)]" context="{'default_is_company': True}"
|
||||
class="oe_inline"
|
||||
on_change="onchange_address(use_parent_address, parent_id)"/>,
|
||||
<label for="function" class="oe_inline oe_edit_only" />
|
||||
<field name="function" class="oe_inline" placeholder="Job Position"/>
|
||||
</h2>
|
||||
|
||||
<field name="category_id" widget="many2many_tags" placeholder="Tags..."/>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<field name="search_view_id" ref="view_res_widget_search"/>
|
||||
</record>
|
||||
<menuitem action="res_widget_act_window" id="menu_res_widget_act_window" parent="base.next_id_2" />
|
||||
|
||||
|
||||
<record id="res_widget_user_tree" model="ir.ui.view">
|
||||
<field name="name">res.widget.user.tree</field>
|
||||
<field name="model">res.widget.user</field>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<field name="user_id"/>
|
||||
<field name="sequence"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -89,10 +89,13 @@
|
|||
<field name="arch" type="xml">
|
||||
<form string="Widget Wizard" col="4" version="7.0">
|
||||
<header>
|
||||
<button name="res_widget_add" string="Add" type="object"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel" />
|
||||
<button name="res_widget_add" string="Add" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</header>
|
||||
<field name="widgets_list"/>
|
||||
<group>
|
||||
<field name="widgets_list"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -677,6 +677,7 @@
|
|||
<rng:optional><rng:attribute name="context"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="confirm"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="help"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="class"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="default_focus"/></rng:optional>
|
||||
<rng:zeroOrMore>
|
||||
<rng:choice>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.oe_module_vignette {
|
||||
padding: 14px;
|
||||
padding: 8px;
|
||||
}
|
||||
.oe_module_icon, .oe_module_desc {
|
||||
display: inline-block;
|
||||
|
|
|
@ -54,7 +54,10 @@ class test_ir_values(common.TransactionCase):
|
|||
ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action', ['unexisting_model'], 'ir.actions.act_window,10', isobject=True)
|
||||
ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action 2', ['unexisting_model'], 'ir.actions.act_window,11', isobject=True)
|
||||
ir_values.set(self.cr, self.uid, 'action', 'client_action_multi', 'Side Wizard', ['unexisting_model'], 'ir.actions.act_window,12', isobject=True)
|
||||
ir_values.set(self.cr, self.uid, 'action', 'client_print_multi', 'Nice Report', ['unexisting_model'], 'ir.actions.report.xml,45', isobject=True)
|
||||
report_ids = self.registry('ir.actions.report.xml').search(self.cr, self.uid, [], {})
|
||||
reports = self.registry('ir.actions.report.xml').browse(self.cr, self.uid, report_ids, {})
|
||||
report_id = [report.id for report in reports if not report.groups_id][0] # assume at least one
|
||||
ir_values.set(self.cr, self.uid, 'action', 'client_print_multi', 'Nice Report', ['unexisting_model'], 'ir.actions.report.xml,%s'%report_id, isobject=True)
|
||||
ir_values.set(self.cr, self.uid, 'action', 'client_action_relate', 'Related Stuff', ['unexisting_model'], 'ir.actions.act_window,14', isobject=True)
|
||||
|
||||
# Replace one action binding to set a new name.
|
||||
|
@ -86,7 +89,7 @@ class test_ir_values(common.TransactionCase):
|
|||
assert len(actions) == 1, "Mismatching number of bound actions"
|
||||
assert len(actions[0]) == 3, "Malformed action definition"
|
||||
assert actions[0][1] == 'Nice Report', 'Bound action does not match definition'
|
||||
assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == 45, 'Bound action does not match definition'
|
||||
assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == report_id, 'Bound action does not match definition'
|
||||
|
||||
actions = ir_values.get(self.cr, self.uid, 'action', 'client_action_relate', ['unexisting_model'])
|
||||
assert len(actions) == 1, "Mismatching number of bound actions"
|
||||
|
@ -96,4 +99,4 @@ class test_ir_values(common.TransactionCase):
|
|||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest2.main()
|
||||
unittest2.main()
|
||||
|
|
|
@ -493,7 +493,7 @@ def get_test_modules(module, submodule, explode):
|
|||
# It seems the module has no `tests` sub-module, no problem.
|
||||
pass
|
||||
else:
|
||||
print 'Can not `import %s`.' % module
|
||||
_logger.exception('Can not `import %s`.', module)
|
||||
return []
|
||||
|
||||
# Discover available test sub-modules.
|
||||
|
@ -554,6 +554,7 @@ def run_unit_tests(module_name):
|
|||
"""
|
||||
import unittest2
|
||||
ms = get_test_modules(module_name, '__fast_suite__', explode=False)
|
||||
# TODO: No need to try again if the above call failed because of e.g. a syntax error.
|
||||
ms.extend(get_test_modules(module_name, '__sanity_checks__', explode=False))
|
||||
suite = unittest2.TestSuite()
|
||||
for m in ms:
|
||||
|
|
|
@ -70,11 +70,6 @@ _schema = logging.getLogger(__name__ + '.schema')
|
|||
# List of etree._Element subclasses that we choose to ignore when parsing XML.
|
||||
from openerp.tools import SKIPPED_ELEMENT_TYPES
|
||||
|
||||
# Prefixes for external IDs of schema elements
|
||||
EXT_ID_PREFIX_FK = "_foreign_key_"
|
||||
EXT_ID_PREFIX_M2M_TABLE = "_m2m_rel_table_"
|
||||
EXT_ID_PREFIX_CONSTRAINT = "_constraint_"
|
||||
|
||||
regex_order = re.compile('^(([a-z0-9_]+|"[a-z0-9_]+")( *desc| *asc)?( *, *|))+$', re.I)
|
||||
regex_object_name = re.compile(r'^[a-z0-9_.]+$')
|
||||
|
||||
|
@ -1742,6 +1737,15 @@ class BaseModel(object):
|
|||
|
||||
# translate view
|
||||
if 'lang' in context:
|
||||
if node.text and node.text.strip():
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], node.text.strip())
|
||||
if trans:
|
||||
node.text = node.text.replace(node.text.strip(), trans)
|
||||
if node.tail and node.tail.strip():
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], node.tail.strip())
|
||||
if trans:
|
||||
node.tail = node.tail.replace(node.tail.strip(), trans)
|
||||
|
||||
if node.get('string') and not result:
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], node.get('string'))
|
||||
if trans == node.get('string') and ('base_model_name' in context):
|
||||
|
@ -1750,18 +1754,13 @@ class BaseModel(object):
|
|||
trans = self.pool.get('ir.translation')._get_source(cr, user, context['base_model_name'], 'view', context['lang'], node.get('string'))
|
||||
if trans:
|
||||
node.set('string', trans)
|
||||
if node.get('confirm'):
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], node.get('confirm'))
|
||||
if trans:
|
||||
node.set('confirm', trans)
|
||||
if node.get('sum'):
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], node.get('sum'))
|
||||
if trans:
|
||||
node.set('sum', trans)
|
||||
if node.get('help'):
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], node.get('help'))
|
||||
if trans:
|
||||
node.set('help', trans)
|
||||
|
||||
for attr_name in ('confirm', 'sum', 'help', 'placeholder'):
|
||||
attr_value = node.get(attr_name)
|
||||
if attr_value:
|
||||
trans = self.pool.get('ir.translation')._get_source(cr, user, self._name, 'view', context['lang'], attr_value)
|
||||
if trans:
|
||||
node.set(attr_name, trans)
|
||||
|
||||
for f in node:
|
||||
if children or (node.tag == 'field' and f.tag in ('filter','separator')):
|
||||
|
@ -2737,13 +2736,45 @@ class BaseModel(object):
|
|||
_schema.debug("Table '%s': column '%s': dropped NOT NULL constraint",
|
||||
self._table, column['attname'])
|
||||
|
||||
# quick creation of ir.model.data entry to make uninstall of schema elements easier
|
||||
def _make_ext_id(self, cr, ext_id):
|
||||
cr.execute('SELECT 1 FROM ir_model_data WHERE name=%s AND module=%s', (ext_id, self._module))
|
||||
def _save_constraint(self, cr, constraint_name, type):
|
||||
"""
|
||||
Record the creation of a constraint for this model, to make it possible
|
||||
to delete it later when the module is uninstalled. Type can be either
|
||||
'f' or 'u' depending on the constraing being a foreign key or not.
|
||||
"""
|
||||
assert type in ('f', 'u')
|
||||
cr.execute("""
|
||||
SELECT 1 FROM ir_model_constraint, ir_module_module
|
||||
WHERE ir_model_constraint.module=ir_module_module.id
|
||||
AND ir_model_constraint.name=%s
|
||||
AND ir_module_module.name=%s
|
||||
""", (constraint_name, self._module))
|
||||
if not cr.rowcount:
|
||||
cr.execute("""INSERT INTO ir_model_data (name,date_init,date_update,module,model)
|
||||
VALUES (%s, now() AT TIME ZONE 'UTC', now() AT TIME ZONE 'UTC', %s, %s)""",
|
||||
(ext_id, self._module, self._name))
|
||||
cr.execute("""
|
||||
INSERT INTO ir_model_constraint
|
||||
(name, date_init, date_update, module, model, type)
|
||||
VALUES (%s, now() AT TIME ZONE 'UTC', now() AT TIME ZONE 'UTC',
|
||||
(SELECT id FROM ir_module_module WHERE name=%s),
|
||||
(SELECT id FROM ir_model WHERE model=%s), %s)""",
|
||||
(constraint_name, self._module, self._name, type))
|
||||
|
||||
def _save_relation_table(self, cr, relation_table):
|
||||
"""
|
||||
Record the creation of a many2many for this model, to make it possible
|
||||
to delete it later when the module is uninstalled.
|
||||
"""
|
||||
cr.execute("""
|
||||
SELECT 1 FROM ir_model_relation, ir_module_module
|
||||
WHERE ir_model_relation.module=ir_module_module.id
|
||||
AND ir_model_relation.name=%s
|
||||
AND ir_module_module.name=%s
|
||||
""", (relation_table, self._module))
|
||||
if not cr.rowcount:
|
||||
cr.execute("""INSERT INTO ir_model_relation (name, date_init, date_update, module, model)
|
||||
VALUES (%s, now() AT TIME ZONE 'UTC', now() AT TIME ZONE 'UTC',
|
||||
(SELECT id FROM ir_module_module WHERE name=%s),
|
||||
(SELECT id FROM ir_model WHERE model=%s))""",
|
||||
(relation_table, self._module, self._name))
|
||||
|
||||
# checked version: for direct m2o starting from `self`
|
||||
def _m2o_add_foreign_key_checked(self, source_field, dest_model, ondelete):
|
||||
|
@ -3084,7 +3115,7 @@ class BaseModel(object):
|
|||
""" Create the foreign keys recorded by _auto_init. """
|
||||
for t, k, r, d in self._foreign_keys:
|
||||
cr.execute('ALTER TABLE "%s" ADD FOREIGN KEY ("%s") REFERENCES "%s" ON DELETE %s' % (t, k, r, d))
|
||||
self._make_ext_id(cr, "%s%s_%s_fkey" % (EXT_ID_PREFIX_FK, t, k))
|
||||
self._save_constraint(cr, "%s_%s_fkey" % (t, k), 'f')
|
||||
cr.commit()
|
||||
del self._foreign_keys
|
||||
|
||||
|
@ -3173,7 +3204,7 @@ class BaseModel(object):
|
|||
|
||||
def _m2m_raise_or_create_relation(self, cr, f):
|
||||
m2m_tbl, col1, col2 = f._sql_names(self)
|
||||
self._make_ext_id(cr, EXT_ID_PREFIX_M2M_TABLE + m2m_tbl)
|
||||
self._save_relation_table(cr, m2m_tbl)
|
||||
cr.execute("SELECT relname FROM pg_class WHERE relkind IN ('r','v') AND relname=%s", (m2m_tbl,))
|
||||
if not cr.dictfetchall():
|
||||
if not self.pool.get(f._obj):
|
||||
|
@ -3209,7 +3240,7 @@ class BaseModel(object):
|
|||
for (key, con, _) in self._sql_constraints:
|
||||
conname = '%s_%s' % (self._table, key)
|
||||
|
||||
self._make_ext_id(cr, EXT_ID_PREFIX_CONSTRAINT + conname)
|
||||
self._save_constraint(cr, conname, 'u')
|
||||
cr.execute("SELECT conname, pg_catalog.pg_get_constraintdef(oid, true) as condef FROM pg_constraint where conname=%s", (conname,))
|
||||
existing_constraints = cr.dictfetchall()
|
||||
sql_actions = {
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue