[MERGE] trunk

bzr revid: al@openerp.com-20120406134323-pis1i7bt6zwj9558
This commit is contained in:
Antony Lesuisse 2012-04-06 15:43:23 +02:00
commit ebee2f2270
21 changed files with 784 additions and 492 deletions

View File

@ -58,7 +58,6 @@
'module/wizard/base_update_translations_view.xml',
'res/res_request_view.xml',
'res/res_lang_view.xml',
'res/res_log_view.xml',
'res/res_partner_report.xml',
'res/res_partner_view.xml',
'res/res_partner_shortcut_data.xml',

View File

@ -85,7 +85,7 @@
<field name="name" readonly="1"/>
<newline/>
<group colspan="2" col="3">
<group col="2" colspan="2">
<group col="2" colspan="2" name="preferences">
<separator string="Preferences" colspan="2"/>
<field name="view" readonly="0"/>
<field name="context_lang" readonly="0"/>
@ -94,7 +94,7 @@
</group>
<group col="2" colspan="1">
<separator string="Avatar" colspan="2"/>
<field name="avatar" widget='image' nolabel="1" colspan="2" on_change="onchange_avatar(avatar)"/>
<field name="avatar" widget='image' nolabel="1" colspan="2" on_change="onchange_avatar(avatar)" readonly="0"/>
</group>
</group>
<group name="default_filters" colspan="2" col="2">
@ -128,11 +128,11 @@
<!-- Second nested group to avoid misalignment with email prefs groups
in simplified view -->
<group colspan="7" col="7">
<group col="2" colspan="1">
<group col="2" colspan="1" name="avatar">
<separator string="Avatar" colspan="2"/>
<field name="avatar" widget='image' nolabel="1" colspan="2" on_change="onchange_avatar(avatar)"/>
</group>
<group col="3" colspan="2">
<group col="3" colspan="2" name="preferences">
<separator string="Preferences" colspan="3"/>
<field name="context_lang"/>
<field name="context_tz"/>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-04-03 07:54+0000\n"
"PO-Revision-Date: 2012-04-05 13:24+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: openerp-i18n-czech <openerp-i18n-czech@lists.launchpad.net >\n"
"Language-Team: openerp-i18n-czech <openerp-i18n-czech@lists.launchpad.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-04 04:40+0000\n"
"X-Generator: Launchpad (build 15055)\n"
"X-Launchpad-Export-Date: 2012-04-06 04:36+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: base
@ -280,7 +280,7 @@ msgstr "Správa prodeje"
#. module: base
#: view:res.partner:0
msgid "Search Partner"
msgstr "Hledat společníka"
msgstr "Hledat partnera"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:60
@ -910,7 +910,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_4
msgid "Basic Partner"
msgstr "Základní společník"
msgstr "Základní partner"
#. module: base
#: report:ir.module.reference.graph:0
@ -920,7 +920,7 @@ msgstr ","
#. module: base
#: view:res.partner:0
msgid "My Partners"
msgstr "Moji společníci"
msgstr "Moji partneři"
#. module: base
#: view:ir.actions.report.xml:0
@ -1048,6 +1048,8 @@ msgstr "Archív TGZ"
msgid ""
"Users added to this group are automatically added in the following groups."
msgstr ""
"Uživatelé přidány do této skupiny jsou automaticky přidány do následujících "
"skupin."
#. module: base
#: view:res.lang:0
@ -1309,7 +1311,7 @@ msgstr ""
#. module: base
#: field:ir.module.category,parent_id:0
msgid "Parent Application"
msgstr ""
msgstr "Nadřazená aplikace"
#. module: base
#: code:addons/base/res/res_users.py:222
@ -1551,7 +1553,7 @@ msgstr "Přihlášovací jméno"
#: model:ir.actions.act_window,name:base.action_wizard_update_translations
#: model:ir.ui.menu,name:base.menu_wizard_update_translations
msgid "Synchronize Terms"
msgstr ""
msgstr "Synchronizovat termíny"
#. module: base
#: view:ir.actions.server:0
@ -1834,12 +1836,12 @@ msgstr "Firemní proces"
#. module: base
#: help:ir.cron,function:0
msgid "Name of the method to be called when this job is processed."
msgstr ""
msgstr "Jméno metody, která má být volán, když je zpracována tato úloha."
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_evaluation
msgid "Employee Appraisals"
msgstr ""
msgstr "Posouzení zaměstnance"
#. module: base
#: selection:ir.actions.server,state:0
@ -1868,7 +1870,7 @@ msgstr "7. %H:%M:%S ==> 18:25:20"
#: view:res.partner.category:0
#: field:res.partner.category,partner_ids:0
msgid "Partners"
msgstr "Společníci"
msgstr "Partneři"
#. module: base
#: field:res.partner.category,parent_left:0
@ -1878,7 +1880,7 @@ msgstr "Levý rodič"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mrp
msgid "Create Tasks on SO"
msgstr ""
msgstr "Vytvořit úlokoly nad SO"
#. module: base
#: field:ir.attachment,res_model:0
@ -1888,7 +1890,7 @@ msgstr "Přiložený model"
#. module: base
#: field:res.partner.bank,footer:0
msgid "Display on Reports"
msgstr ""
msgstr "Zobrazit výkazy"
#. module: base
#: model:ir.module.module,description:base.module_l10n_cn
@ -1899,6 +1901,11 @@ msgid ""
" ============================================================\n"
" "
msgstr ""
"\n"
" 添加中文省份数据\n"
" 科目类型\\会计科目表模板\\增值税\\辅助核算类别\\管理会计凭证簿\\财务会计凭证簿\n"
" ============================================================\n"
" "
#. module: base
#: model:ir.model,name:base.model_ir_model_access
@ -1951,6 +1958,13 @@ msgid ""
"Accounting chart and localization for Ecuador.\n"
" "
msgstr ""
"\n"
"Toto je základní modul ke správě účtové osnovy v OpenERP pro Ekvádor.\n"
"============================================================================="
"=\n"
"\n"
"Účtová osnova a lokalizace pro Ekvádor.\n"
" "
#. module: base
#: code:addons/base/ir/ir_filters.py:38
@ -2190,12 +2204,12 @@ msgstr ""
#. module: base
#: field:ir.values,action_id:0
msgid "Action (change only)"
msgstr ""
msgstr "Akce (pouze změnit)"
#. module: base
#: model:ir.module.module,shortdesc:base.module_subscription
msgid "Recurring Documents"
msgstr ""
msgstr "Opakující se dokumenty"
#. module: base
#: model:res.country,name:base.bs
@ -2257,7 +2271,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_setup
msgid "Initial Setup Tools"
msgstr ""
msgstr "Nástroje prvotního nastavení"
#. module: base
#: field:ir.actions.act_window,groups_id:0
@ -2319,7 +2333,7 @@ msgstr "Správa pomůcek domovské stránky"
#. module: base
#: field:res.company,rml_header1:0
msgid "Report Header / Company Slogan"
msgstr ""
msgstr "Hlavička výkazu / slogan firmy"
#. module: base
#: model:res.country,name:base.pl
@ -2796,7 +2810,7 @@ msgid ""
"you are working on will be maintained."
msgstr ""
"Zobrazit nebo spravovat seznam všech zemí, které mohou být přiřazeny k "
"záznamům vašich společníků. Můžete vytvořit nebo odstranit země, abyste se "
"záznamům vašich partnerů. Můžete vytvořit nebo odstranit země, abyste se "
"ujistili, že ty, se kterými pracujete budou udržována."
#. module: base
@ -3052,7 +3066,7 @@ msgstr "Kalendář"
#. module: base
#: field:res.partner.address,partner_id:0
msgid "Partner Name"
msgstr "Jméno společníka"
msgstr "Jméno partnera"
#. module: base
#: field:workflow.activity,signal_send:0
@ -3649,7 +3663,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_point_of_sale
msgid "Point Of Sale"
msgstr ""
msgstr "Obchodní místa"
#. module: base
#: code:addons/base/module/module.py:302
@ -3666,7 +3680,7 @@ msgid ""
msgstr ""
"Tento průvodce vám pomůže přidat nový jazyk do vašeho systému OpenERP. Po "
"načtení nového jazyka bude dostupný jako výchozí jazyk rozhraní pro "
"uživatele a společníky."
"uživatele a partnery."
#. module: base
#: view:ir.model:0
@ -3685,7 +3699,7 @@ msgstr ""
#. module: base
#: selection:ir.sequence,implementation:0
msgid "Standard"
msgstr ""
msgstr "Běžný"
#. module: base
#: model:ir.model,name:base.model_maintenance_contract
@ -3903,12 +3917,12 @@ msgstr "Černá Hora"
#. module: base
#: model:ir.module.module,shortdesc:base.module_document_ics
msgid "iCal Support"
msgstr ""
msgstr "Podpora iCal"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail
msgid "Email Gateway"
msgstr ""
msgstr "Poštovní brána"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:439
@ -3917,6 +3931,8 @@ msgid ""
"Mail delivery failed via SMTP server '%s'.\n"
"%s: %s"
msgstr ""
"Doručení pošty přes server SMTP '%s' selhalo.\n"
"%s: %s"
#. module: base
#: view:ir.cron:0
@ -4089,7 +4105,7 @@ msgstr "Popis akce"
#. module: base
#: help:res.partner,customer:0
msgid "Check this box if the partner is a customer."
msgstr "Zaškrtněte toto pole pokud je společník zákazníkem."
msgstr "Zaškrtněte toto pole pokud je partner zákazníkem."
#. module: base
#: help:ir.module.module,auto_install:0
@ -5277,13 +5293,13 @@ msgid ""
"The internal user that is in charge of communicating with this partner if "
"any."
msgstr ""
"Vnitřní uživatel, který má pověření komunikovat s tímto společníkem, pokud "
"Vnitřní uživatel, který má pověření komunikovat s tímto partnerem, pokud "
"nějaký je."
#. module: base
#: field:res.partner,parent_id:0
msgid "Parent Partner"
msgstr "Rodičovský společník"
msgstr "Nadřazený partner"
#. module: base
#: view:ir.module.module:0
@ -5433,7 +5449,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_3
msgid "Starter Partner"
msgstr "Počáteční společník"
msgstr "Počáteční partner"
#. module: base
#: help:ir.model.fields,relation_field:0
@ -5870,7 +5886,7 @@ msgstr "Vlastník bankovního účtu"
#. module: base
#: model:ir.module.category,name:base.module_category_uncategorized
msgid "Uncategorized"
msgstr ""
msgstr "Bez kategorie"
#. module: base
#: field:ir.attachment,res_name:0
@ -6008,7 +6024,7 @@ msgstr "Nastavení akcí klienta"
#: model:ir.model,name:base.model_res_partner_address
#: view:res.partner.address:0
msgid "Partner Addresses"
msgstr "Adresy společníků"
msgstr "Adresy partnerů"
#. module: base
#: help:ir.mail_server,smtp_debug:0
@ -6025,7 +6041,7 @@ msgstr ""
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Automatically"
msgstr ""
msgstr "Spustit automaticky"
#. module: base
#: model:ir.module.module,description:base.module_mail
@ -6158,12 +6174,12 @@ msgstr ""
#: code:addons/base/module/module.py:392
#, python-format
msgid "Uninstall"
msgstr ""
msgstr "Odinstalovat"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_budget
msgid "Budgets Management"
msgstr ""
msgstr "Správa rozpočtu"
#. module: base
#: field:workflow.triggers,workitem_id:0
@ -6178,12 +6194,12 @@ msgstr ""
#. module: base
#: selection:ir.mail_server,smtp_encryption:0
msgid "SSL/TLS"
msgstr ""
msgstr "SSL/TLS"
#. module: base
#: field:publisher_warranty.contract,check_opw:0
msgid "OPW"
msgstr ""
msgstr "OPW"
#. module: base
#: field:res.log,secondary:0
@ -6295,7 +6311,7 @@ msgstr "Súdán"
#: field:res.currency.rate,currency_rate_type_id:0
#: view:res.currency.rate.type:0
msgid "Currency Rate Type"
msgstr ""
msgstr "Typ násobku měny"
#. module: base
#: model:res.country,name:base.fm
@ -6316,12 +6332,12 @@ msgstr "Nabídky"
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Manually Once"
msgstr ""
msgstr "Jednou ručně spustit"
#. module: base
#: model:ir.module.category,name:base.module_category_hidden
msgid "Hidden"
msgstr ""
msgstr "Skryté"
#. module: base
#: selection:base.language.install,lang:0
@ -6447,7 +6463,7 @@ msgstr "Mapování objektů"
#. module: base
#: field:ir.ui.view,xml_id:0
msgid "External ID"
msgstr ""
msgstr "Vnější ID"
#. module: base
#: help:res.currency.rate,rate:0
@ -6484,7 +6500,7 @@ msgstr "Botswana"
#: model:ir.ui.menu,name:base.menu_partner_title_partner
#: view:res.partner.title:0
msgid "Partner Titles"
msgstr "Jména společníků"
msgstr "Jména partnerů"
#. module: base
#: help:ir.actions.act_window,auto_refresh:0
@ -6494,12 +6510,12 @@ msgstr "Přidá automatické obnovení u pohledu"
#. module: base
#: help:res.partner,employee:0
msgid "Check this box if the partner is an Employee."
msgstr "Zaškrtněte toto políčko pokud je společník zaměstnanec."
msgstr "Zaškrtněte toto políčko pokud je partner zaměstnanec."
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_profiling
msgid "Customer Profiling"
msgstr ""
msgstr "Analýza zákazníka"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_issue
@ -6514,7 +6530,7 @@ msgstr "Pracovní dny"
#. module: base
#: model:ir.module.module,shortdesc:base.module_multi_company
msgid "Multi-Company"
msgstr ""
msgstr "Více-společností"
#. module: base
#: field:ir.actions.report.xml,report_rml_content:0
@ -6544,14 +6560,14 @@ msgstr "Rada"
#. module: base
#: view:res.company:0
msgid "Header/Footer of Reports"
msgstr ""
msgstr "Záhlaví/zápatí výkazu"
#. module: base
#: code:addons/base/res/res_users.py:746
#: view:res.users:0
#, python-format
msgid "Applications"
msgstr ""
msgstr "Aplikace"
#. module: base
#: model:ir.model,name:base.model_ir_attachment
@ -6580,7 +6596,7 @@ msgstr ""
#. module: base
#: selection:res.currency,position:0
msgid "After Amount"
msgstr ""
msgstr "Po částce"
#. module: base
#: selection:base.language.install,lang:0
@ -6626,7 +6642,7 @@ msgstr "Podmínky zdrojového kódu"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet
msgid "Timesheets Validation"
msgstr ""
msgstr "Ověření časového rozvrhu"
#. module: base
#: model:ir.ui.menu,name:base.menu_main_pm
@ -6673,6 +6689,7 @@ msgstr "Kontrola"
#: help:ir.values,company_id:0
msgid "If set, action binding only applies for this company"
msgstr ""
"Pokud je nastaveno, vazby akcí budou platit pouze pro tuto společnost"
#. module: base
#: model:res.country,name:base.lc
@ -6770,7 +6787,7 @@ msgstr "Při mazání"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_multilang
msgid "Multi Language Chart of Accounts"
msgstr ""
msgstr "Více jazyčná účtová osnova"
#. module: base
#: selection:res.lang,direction:0
@ -6806,7 +6823,7 @@ msgstr "Podpis"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_caldav
msgid "Meetings Synchronization"
msgstr ""
msgstr "Synchronizace setkání"
#. module: base
#: field:ir.actions.act_window,context:0
@ -6838,7 +6855,7 @@ msgstr "Jméno modulu musí být jedinečné !"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_contact
msgid "Contacts Management"
msgstr ""
msgstr "Správa kontaktů"
#. module: base
#: model:ir.module.module,description:base.module_l10n_fr_rib
@ -6874,7 +6891,7 @@ msgstr ""
#. module: base
#: view:ir.property:0
msgid "Parameters that are used by all resources."
msgstr ""
msgstr "Parametry, které jsou použity pro všechny zdroje."
#. module: base
#: model:res.country,name:base.mz
@ -6915,14 +6932,14 @@ msgstr "Obchodník"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_accountant
msgid "Accounting and Finance"
msgstr ""
msgstr "Účetnictví a finance"
#. module: base
#: code:addons/base/module/module.py:429
#: view:ir.module.module:0
#, python-format
msgid "Upgrade"
msgstr ""
msgstr "Povýšit"
#. module: base
#: field:res.partner,address:0
@ -6938,7 +6955,7 @@ msgstr "Faerské ostrovy"
#. module: base
#: field:ir.mail_server,smtp_encryption:0
msgid "Connection Security"
msgstr ""
msgstr "Zabezpečení spojení"
#. module: base
#: code:addons/base/ir/ir_actions.py:653
@ -6953,6 +6970,9 @@ msgid ""
" United States - Chart of accounts\n"
" "
msgstr ""
"\n"
" Spojené státy - Účtová osnova\n"
" "
#. module: base
#: view:res.widget.wizard:0
@ -7007,7 +7027,7 @@ msgstr "Honduras - Účetnictví"
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_intrastat
msgid "Intrastat Reporting"
msgstr ""
msgstr "Vykazování Intrastat"
#. module: base
#: code:addons/base/res/res_users.py:222
@ -7084,7 +7104,7 @@ msgstr "Vytvořené nabídky"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_analytic_default
msgid "Account Analytic Defaults"
msgstr ""
msgstr "Analytické výchozí hodnoty účtu"
#. module: base
#: model:ir.module.module,description:base.module_hr_contract
@ -7148,7 +7168,7 @@ msgstr "Španělština (MX) / Español (MX)"
#: code:addons/base/publisher_warranty/publisher_warranty.py:145
#, python-format
msgid "Please verify your publisher warranty serial number and validity."
msgstr ""
msgstr "Prosíme ověřte vaše sériové číslo a platnost záruky vydavatele."
#. module: base
#: view:res.log:0
@ -7204,7 +7224,7 @@ msgstr "Čtení"
#. module: base
#: model:ir.module.module,shortdesc:base.module_association
msgid "Associations Management"
msgstr ""
msgstr "Správa spojování"
#. module: base
#: help:ir.model,modules:0
@ -7283,7 +7303,7 @@ msgstr ""
#. module: base
#: field:res.partner,title:0
msgid "Partner Firm"
msgstr ""
msgstr "Firma partnera"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_fields
@ -7515,7 +7535,7 @@ msgstr "Němčina / Nederlands"
#. module: base
#: selection:res.company,paper_format:0
msgid "US Letter"
msgstr ""
msgstr "Dopis US"
#. module: base
#: model:ir.module.module,description:base.module_stock_location
@ -7627,7 +7647,7 @@ msgstr "Správa znalostí"
#. module: base
#: model:ir.actions.act_window,name:base.bank_account_update
msgid "Company Bank Accounts"
msgstr ""
msgstr "Bankovní účty společnosti"
#. module: base
#: help:ir.mail_server,smtp_pass:0
@ -7689,7 +7709,7 @@ msgstr ""
#. module: base
#: model:res.partner.bank.type,name:base.bank_normal
msgid "Normal Bank Account"
msgstr ""
msgstr "Obyčejný bankovní účet"
#. module: base
#: view:ir.actions.wizard:0
@ -7833,7 +7853,7 @@ msgstr ""
#. module: base
#: view:res.partner.bank:0
msgid "Bank accounts belonging to one of your companies"
msgstr ""
msgstr "Bankovní účty patřící k jedné z vašich společností"
#. module: base
#: help:res.users,action_id:0
@ -7847,7 +7867,7 @@ msgstr ""
#. module: base
#: selection:ir.module.module,complexity:0
msgid "Easy"
msgstr ""
msgstr "Snadný"
#. module: base
#: view:ir.values:0
@ -8121,12 +8141,12 @@ msgstr "%a - Zkrácené jméno dne v týdnu."
#. module: base
#: view:ir.ui.menu:0
msgid "Submenus"
msgstr ""
msgstr "Podnabídka"
#. module: base
#: model:res.groups,name:base.group_extended
msgid "Extended View"
msgstr ""
msgstr "Rozšířený pohled"
#. module: base
#: model:res.country,name:base.pf
@ -8141,7 +8161,7 @@ msgstr "Dominika"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_module_record
msgid "Record and Create Modules"
msgstr ""
msgstr "Zaznamenává a vytváří moduly"
#. module: base
#: model:ir.model,name:base.model_partner_sms_send
@ -8194,7 +8214,7 @@ msgstr "Cesta k XSL"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_invoice_layout
msgid "Invoice Layouts"
msgstr ""
msgstr "Rozvržení faktury"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_location
@ -8260,7 +8280,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_values_form_action
#: view:ir.values:0
msgid "Action Bindings"
msgstr ""
msgstr "Vazba akcí"
#. module: base
#: view:ir.sequence:0
@ -8283,7 +8303,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_account
msgid "eInvoicing"
msgstr ""
msgstr "eFakturace"
#. module: base
#: model:ir.module.module,description:base.module_association
@ -8355,7 +8375,7 @@ msgstr "Znovu načíst z přílohy"
#. module: base
#: view:ir.module.module:0
msgid "Hide technical modules"
msgstr ""
msgstr "Skrýt technické moduly"
#. module: base
#: model:ir.module.module,description:base.module_procurement
@ -8387,7 +8407,7 @@ msgstr "Mexiko"
#: code:addons/base/ir/ir_mail_server.py:414
#, python-format
msgid "Missing SMTP Server"
msgstr ""
msgstr "Chybějící server SMTP"
#. module: base
#: field:ir.attachment,name:0
@ -8408,7 +8428,7 @@ msgstr "Instalace povýšení modulu"
#. module: base
#: model:ir.module.module,shortdesc:base.module_email_template
msgid "E-Mail Templates"
msgstr ""
msgstr "Šablony e-mailů"
#. module: base
#: model:ir.model,name:base.model_ir_actions_configuration_wizard
@ -8585,7 +8605,7 @@ msgstr ""
#. module: base
#: field:res.users,date:0
msgid "Latest Connection"
msgstr ""
msgstr "Poslední spojení"
#. module: base
#: view:res.request.link:0
@ -8635,22 +8655,22 @@ msgstr "Iterace"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_planning
msgid "Resources Planing"
msgstr ""
msgstr "Plánování zdrojů"
#. module: base
#: field:ir.module.module,complexity:0
msgid "Complexity"
msgstr ""
msgstr "Složitost"
#. module: base
#: selection:ir.actions.act_window,target:0
msgid "Inline"
msgstr ""
msgstr "Vkládaný"
#. module: base
#: model:res.partner.bank.type.field,name:base.bank_normal_field_bic
msgid "bank_bic"
msgstr ""
msgstr "bank_bic"
#. module: base
#: code:addons/orm.py:3988
@ -8705,7 +8725,7 @@ msgstr ""
#. module: base
#: view:ir.values:0
msgid "Action Reference"
msgstr ""
msgstr "Odkaz akce"
#. module: base
#: model:res.country,name:base.re
@ -8733,12 +8753,12 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp_repair
msgid "Repairs Management"
msgstr ""
msgstr "Správa oprav"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_asset
msgid "Assets Management"
msgstr ""
msgstr "Správa majetku"
#. module: base
#: view:ir.model.access:0
@ -9009,7 +9029,7 @@ msgstr "Severní Mariany"
#. module: base
#: model:ir.module.module,shortdesc:base.module_claim_from_delivery
msgid "Claim on Deliveries"
msgstr ""
msgstr "Pohledávky na doručeních"
#. module: base
#: model:res.country,name:base.sb
@ -9075,7 +9095,7 @@ msgstr "Překlady"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_gtd
msgid "Todo Lists"
msgstr ""
msgstr "Seznam úkolů"
#. module: base
#: view:ir.actions.report.xml:0
@ -9126,7 +9146,7 @@ msgstr "Referenční příručka"
#. module: base
#: view:ir.values:0
msgid "Default Value Scope"
msgstr ""
msgstr "Výchozí rozsah hodnoty"
#. module: base
#: view:ir.ui.view:0
@ -9205,6 +9225,8 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
" "
#. module: base
#: view:ir.actions.act_window:0
@ -9234,7 +9256,7 @@ msgstr "Datum vytvoření"
#. module: base
#: help:ir.actions.server,trigger_name:0
msgid "The workflow signal to trigger"
msgstr ""
msgstr "Signál pracovního toku k vyvolání"
#. module: base
#: model:ir.module.module,description:base.module_mrp
@ -9283,7 +9305,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,description:base.module_google_base_account
msgid "The module adds google user in res user"
msgstr ""
msgstr "Modul přidává uživatele google v res user"
#. module: base
#: selection:base.language.install,state:0
@ -9300,7 +9322,7 @@ msgstr "Obecná nastavení"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_uy
msgid "Uruguay - Chart of Accounts"
msgstr ""
msgstr "Uruguay - Účtová osnova"
#. module: base
#: model:ir.ui.menu,name:base.menu_administration_shortcut
@ -9320,25 +9342,25 @@ msgstr "Alžírsko"
#. module: base
#: model:ir.module.module,shortdesc:base.module_plugin
msgid "CRM Plugins"
msgstr ""
msgstr "Doplňky CRM"
#. module: base
#: model:ir.actions.act_window,name:base.action_model_model
#: model:ir.model,name:base.model_ir_model
#: model:ir.ui.menu,name:base.ir_model_model_menu
msgid "Models"
msgstr ""
msgstr "Modely"
#. module: base
#: code:addons/base/ir/ir_cron.py:292
#, python-format
msgid "Record cannot be modified right now"
msgstr ""
msgstr "Záznam nyní nelze změnit"
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Manually"
msgstr ""
msgstr "Spustit ručně"
#. module: base
#: model:res.country,name:base.be
@ -9348,12 +9370,12 @@ msgstr "Belgie"
#. module: base
#: view:res.company:0
msgid "Preview Header"
msgstr ""
msgstr "Náhled hlavičky"
#. module: base
#: field:res.company,paper_format:0
msgid "Paper Format"
msgstr ""
msgstr "Formát papíru"
#. module: base
#: field:base.language.export,lang:0
@ -9453,7 +9475,7 @@ msgstr "osv_memory.autovacuum"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_us
msgid "United States - Chart of accounts"
msgstr ""
msgstr "Spojené státy - Účtová osnova"
#. module: base
#: view:base.language.install:0
@ -9641,6 +9663,9 @@ msgid ""
" OpenERP Web example module.\n"
" "
msgstr ""
"\n"
" Příklad webového modulu OpenERP.\n"
" "
#. module: base
#: model:res.country,name:base.gy
@ -9650,7 +9675,7 @@ msgstr "Guyana"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product_expiry
msgid "Products Expiry Date"
msgstr ""
msgstr "Datum vypršení výrobku"
#. module: base
#: model:ir.module.module,description:base.module_account
@ -9776,12 +9801,12 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_synchro
msgid "Multi-DB Synchronization"
msgstr ""
msgstr "Více-DB synchronizace"
#. module: base
#: selection:ir.module.module,complexity:0
msgid "Expert"
msgstr ""
msgstr "Odborník"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_holidays
@ -9817,6 +9842,9 @@ msgid ""
"Todo list for CRM leads and opportunities.\n"
" "
msgstr ""
"\n"
"Seznam úkolů pro obchodní případy CRM a příležitosti.\n"
" "
#. module: base
#: field:ir.actions.act_window.view,view_id:0
@ -9829,7 +9857,7 @@ msgstr "Pohled"
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_sale_faq
msgid "Wiki: Sale FAQ"
msgstr ""
msgstr "Wiki: Prodejní FAQ"
#. module: base
#: selection:ir.module.module,state:0
@ -9936,7 +9964,7 @@ msgstr "Monako"
#. module: base
#: view:base.module.import:0
msgid "Please be patient, this operation may take a few minutes..."
msgstr ""
msgstr "Prosíme buďte trpěliví, tato operace může trvat několik minut..."
#. module: base
#: selection:ir.cron,interval_type:0
@ -9962,12 +9990,12 @@ msgstr "Akce nahradí standardní nabídku tohoto uživatele, pokud je určeno."
#. module: base
#: model:ir.module.module,shortdesc:base.module_google_map
msgid "Google Maps on Customers"
msgstr ""
msgstr "Google mapy nad zákazníky"
#. module: base
#: model:ir.actions.report.xml,name:base.preview_report
msgid "Preview Report"
msgstr ""
msgstr "Náhled výkazu"
#. module: base
#: model:ir.module.module,shortdesc:base.module_purchase_analytic_plans
@ -10071,17 +10099,17 @@ msgstr "Chyba !"
#. module: base
#: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo
msgid "Marketing Campaign - Demo"
msgstr ""
msgstr "Marketingové kampaně - ukázka"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_hr_recruitment
msgid "eMail Gateway for Applicants"
msgstr ""
msgstr "eMailová brána pro žadatele"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_coda
msgid "Belgium - Import bank CODA statements"
msgstr ""
msgstr "Belgie - Import bankovního výpisu CODA"
#. module: base
#: field:ir.cron,interval_type:0
@ -10103,7 +10131,7 @@ msgstr "Tato metoda již neexistuje"
#. module: base
#: model:ir.module.module,shortdesc:base.module_import_google
msgid "Google Import"
msgstr ""
msgstr "Import Google"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_12
@ -10128,7 +10156,7 @@ msgstr "Klíčová slova"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_cn
msgid "中国会计科目表 - Accounting"
msgstr ""
msgstr "中国会计科目表 - Účetnictví"
#. module: base
#: view:ir.model.access:0
@ -10149,12 +10177,12 @@ msgstr ""
#. module: base
#: help:ir.model.data,res_id:0
msgid "ID of the target record in the database"
msgstr ""
msgstr "ID cílového záznamu v databázi"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_analytic_analysis
msgid "Contracts Management"
msgstr ""
msgstr "Správa smluv"
#. module: base
#: selection:base.language.install,lang:0
@ -10268,12 +10296,12 @@ msgstr "Název služby"
#. module: base
#: model:ir.module.module,shortdesc:base.module_import_base
msgid "Framework for complex import"
msgstr ""
msgstr "Systém pro složitý import"
#. module: base
#: view:ir.actions.todo.category:0
msgid "Wizard Category"
msgstr ""
msgstr "Kategorie průvodců"
#. module: base
#: model:ir.module.module,description:base.module_account_cancel
@ -10391,6 +10419,12 @@ msgid ""
"Provide Templates for Chart of Accounts, Taxes for Uruguay\n"
"\n"
msgstr ""
"\n"
"Obecná účtová osnova\n"
"=========================\n"
"\n"
"Poskytuje šablonu pro účtovou osnovu, daně pro Uruguay\n"
"\n"
#. module: base
#: help:res.company,bank_ids:0
@ -11250,7 +11284,7 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_2
msgid "OpenERP Partners"
msgstr "Společníci OpenERP"
msgstr "Partneři OpenERP"
#. module: base
#: code:addons/base/module/module.py:293
@ -11988,7 +12022,7 @@ msgstr "Parametry, které budou předány metodě. např. (uid,)."
#. module: base
#: model:res.partner.category,name:base.res_partner_category_5
msgid "Gold Partner"
msgstr "Zlatý společník"
msgstr "Zlatý partner"
#. module: base
#: model:ir.model,name:base.model_res_partner
@ -11998,7 +12032,7 @@ msgstr "Zlatý společník"
#: selection:res.partner.title,domain:0
#: model:res.request.link,name:base.req_link_partner
msgid "Partner"
msgstr "Společník"
msgstr "Partner"
#. module: base
#: field:ir.model.fields,complete_name:0
@ -12369,7 +12403,7 @@ msgstr "Podmínky"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_other_form
msgid "Other Partners"
msgstr "Jiní společníci"
msgstr "Jiní partneři"
#. module: base
#: model:ir.actions.act_window,name:base.action_currency_form
@ -12703,7 +12737,7 @@ msgstr "Časové sledování"
#. module: base
#: view:res.partner.category:0
msgid "Partner Category"
msgstr "Kategorie společníků"
msgstr "Kategorie partnerů"
#. module: base
#: view:ir.actions.server:0
@ -13930,8 +13964,7 @@ msgstr "Zdroj"
#. module: base
#: help:res.partner.address,partner_id:0
msgid "Keep empty for a private address, not related to partner."
msgstr ""
"Ponechejte prázdné pro soukromou adresu nesouvisející se společníkem."
msgstr "Ponechejte prázdné pro soukromou adresu nesouvisející se partnerem."
#. module: base
#: model:res.country,name:base.vu
@ -14856,7 +14889,7 @@ msgstr ""
#. module: base
#: help:ir.mail_server,smtp_port:0
msgid "SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases."
msgstr ""
msgstr "Port SMTP. Pro SSL obvykle 465 a 25 nebo 587 v jiných případech."
#. module: base
#: view:ir.sequence:0
@ -15208,7 +15241,7 @@ msgstr "Mobilní č."
#: model:ir.ui.menu,name:base.menu_partner_category_form
#: view:res.partner.category:0
msgid "Partner Categories"
msgstr "Kategorie společníků"
msgstr "Kategorie partnerů"
#. module: base
#: view:base.module.upgrade:0
@ -15351,7 +15384,7 @@ msgstr "Instance pracovních postupů"
#: code:addons/base/res/res_partner.py:284
#, python-format
msgid "Partners: "
msgstr "Společníci: "
msgstr "Partneři: "
#. module: base
#: field:res.partner.bank,name:0

File diff suppressed because it is too large Load Diff

View File

@ -219,7 +219,7 @@
<field name="view_id" ref="sequence_view_tree"/>
<field name="context">{'active_test': False}</field>
</record>
<menuitem id="next_id_5" name="Sequences &amp; Identifiers" parent="base.menu_config"/>
<menuitem id="next_id_5" name="Sequences &amp; Identifiers" parent="base.menu_config" sequence="21" groups="base.group_no_one"/>
<menuitem action="ir_sequence_form" id="menu_ir_sequence_form" parent="next_id_5"/>
<!-- Sequences Types -->
@ -683,7 +683,7 @@
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_needaction_users" name="Need actions" parent="base.menu_users" sequence="20" action="action_view_needaction_users" groups="base.group_extended"/>
<menuitem id="menu_needaction_users" name="Need actions" parent="base.menu_users" sequence="20" action="action_view_needaction_users" groups="base.group_no_one"/>
<!-- Companies -->
<menuitem id="menu_res_company_global"
@ -1574,7 +1574,7 @@
<field name="view_id" ref="ir_cron_view_tree"/>
</record>
<menuitem id="next_id_10" name="Scheduler" parent="base.menu_config" groups="base.group_extended" sequence="11"/>
<menuitem id="next_id_10" name="Scheduler" parent="base.menu_config" groups="base.group_extended" sequence="23"/>
<menuitem action="ir_cron_act" id="menu_ir_cron_act" parent="next_id_10"/>
@ -1950,7 +1950,7 @@
<field name="view_type">form</field>
<field name="help">The configuration wizards are used to help you configure a new instance of OpenERP. They are launched during the installation of new modules, but you can choose to restart some wizards manually from this menu.</field>
</record>
<menuitem id="next_id_11" name="Configuration Wizards" parent="base.menu_config" sequence="2"
<menuitem id="next_id_11" name="Configuration Wizards" parent="base.menu_config" sequence="20"
groups="base.group_extended"/>
<menuitem action="act_ir_actions_todo_form" id="menu_ir_actions_todo_form"
@ -2071,8 +2071,8 @@
<field name="search_view_id" ref="view_ir_mail_server_search"/>
</record>
<menuitem id="menu_email" name="Email" parent="base.menu_config" groups="base.group_extended"/>
<menuitem id="menu_mail_servers" parent="menu_email" action="action_ir_mail_server_list" sequence="15"/>
<menuitem id="menu_email" name="Email" parent="base.menu_config" sequence="22"/>
<menuitem id="menu_mail_servers" parent="menu_email" action="action_ir_mail_server_list" sequence="15" groups="base.group_no_one"/>
</data>
</openerp>

View File

@ -717,8 +717,8 @@ class ir_model_data(osv.osv):
model_obj = self.pool.get(model)
if not context:
context = {}
# records created during module install should result in res.log entries that are already read!
context = dict(context, res_log_read=True)
# records created during module install should not display the messages of OpenChatter
context = dict(context, install_mode=True)
if xml_id and ('.' in xml_id):
assert len(xml_id.split('.'))==2, _("'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id") % (xml_id)
module, xml_id = xml_id.split('.')

View File

@ -263,11 +263,14 @@ class ir_ui_menu(osv.osv):
res[menu.id] = {}
if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model:
menu_needaction_res = self.pool.get(menu.action.res_model).get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context)
# TODO: find the addon that causes a bug on runbot, not on local
if not isinstance(menu_needaction_res[1], (int, long)): menu_needaction_res[1] = 0
else:
menu_needaction_res = [False, 0, ()]
res[menu.id]['needaction_enabled'] = menu_needaction_res[0]
res[menu.id]['needaction_counter'] = menu_needaction_res[1]
res[menu.id]['needaction_record_ids'] = menu_needaction_res[2]
# not used currently, therefore set to a void list
res[menu.id]['needaction_record_ids'] = []
return res
_columns = {

View File

@ -251,6 +251,21 @@ class ir_values(osv.osv):
'company_id': company_id,
})
def get_default(self, cr, uid, model, field_name, for_all_users=True, company_id=False, condition=False):
""" Return the default value defined for model, field_name, users, company and condition.
Return ``None`` if no such default exists.
"""
search_criteria = [
('key', '=', 'default'),
('key2', '=', condition and condition[:200]),
('model', '=', model),
('name', '=', field_name),
('user_id', '=', False if for_all_users else uid),
('company_id','=', company_id)
]
defaults = self.browse(cr, uid, self.search(cr, uid, search_criteria))
return pickle.loads(defaults[0].value.encode('utf-8')) if defaults else None
def get_defaults(self, cr, uid, model, condition=False):
"""Returns any default values that are defined for the current model and user,
(and match ``condition``, if specified), previously registered via

View File

@ -69,6 +69,7 @@ class module_category(osv.osv):
'description' : fields.text("Description", translate=True),
'sequence' : fields.integer('Sequence'),
'visible' : fields.boolean('Visible'),
'xml_id': fields.function(osv.osv.get_external_id, type='char', size=128, string="External ID"),
}
_order = 'name'

View File

@ -187,21 +187,21 @@ class publisher_warranty_contract(osv.osv):
limit_date = (datetime.datetime.now() - _PREVIOUS_LOG_CHECK).strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT)
for message in result["messages"]:
ids = self.pool.get("res.log").search(cr, uid, [("res_model", "=", "publisher_warranty.contract"),
("create_date", ">=", limit_date),
("name", "=", message)])
if ids:
continue
self.pool.get('res.log').create(cr, uid,
{
'name': message,
'res_model': "publisher_warranty.contract",
"read": True,
"user_id": False,
},
context=context
)
# old behavior based on res.log; now on mail.message, that is not necessarily installed
mail_message_obj = self.pool.get('mail.message')
if mail_message_obj:
for message in result["messages"]:
ids = mail_message_obj.search(cr, uid, [("model", "=", "publisher_warranty.contract"),
("create_date", ">=", limit_date),
("body_text", "=", message)])
if ids:
continue
mail_message_obj.create(cr, uid, {
'name': message,
'model': "publisher_warranty.contract",
'user_id': False,
}, context=context)
except Exception:
if cron_mode:
return False # we don't want to see any stack trace in cron
@ -215,22 +215,15 @@ class publisher_warranty_contract(osv.osv):
@return: A list of html messages with ids, can be False or empty.
@rtype: list of tuples(int,string)
"""
ids = self.pool.get('res.log').search(cr, uid, [("res_model", "=", "publisher_warranty.contract")]
, order="create_date desc", limit=limit)
if not self.pool.get('mail.message'):
return []
ids = self.pool.get('mail.message').search(cr, uid, [("model", "=", "publisher_warranty.contract")]
, order="create_date desc", limit=limit, context=context)
if not ids:
return []
messages = [(x.id, x.name) for x in self.pool.get('res.log').browse(cr, uid, ids)]
messages = [(x.id, x.name) for x in self.pool.get('mail.message').browse(cr, uid, ids, context=context)]
return messages
def del_user_message(self, cr, uid, id, context=None):
"""
Delete a message.
"""
self.pool.get('res.log').unlink(cr, uid, [id])
return True
_columns = {
'name' : fields.char('Serial Key', size=384, required=True, help="Your OpenERP Publisher's Warranty Contract unique key, also called serial number."),
'date_start' : fields.date('Starting Date', readonly=True),

View File

@ -32,7 +32,6 @@ import res_company
import res_users
import res_request
import res_lang
import res_log
import res_widget
import ir_property

View File

@ -75,7 +75,7 @@
<field name="view_type">form</field>
<field name="view_id" ref="ir_property_view_tree"/>
</record>
<menuitem id="next_id_15" name="Parameters" parent="base.menu_config" groups="base.group_extended" sequence="12"/>
<menuitem id="next_id_15" name="Parameters" parent="base.menu_config" groups="base.group_extended" sequence="24"/>
<menuitem action="ir_property_form" id="menu_ir_property_form_all" parent="base.next_id_15"/>
</data>
</openerp>

View File

@ -396,4 +396,162 @@ class ir_actions_configuration_wizard(osv.osv_memory):
ir_actions_configuration_wizard()
class res_config_settings(osv.osv_memory):
""" Base configuration wizard for application settings. It provides support for setting
default values, assigning groups to employee users, and installing modules.
To make such a 'settings' wizard, define a model like::
class my_config_wizard(osv.osv_memory):
_name = 'my.settings'
_inherit = 'res.config.settings'
_columns = {
'default_foo': fields.type(..., default_model='my.model'),
'group_bar': fields.boolean(..., group='base.group_user', implied_group='my.group'),
'module_baz': fields.boolean(...),
'other_field': fields.type(...),
}
The method ``execute`` provides some support based on a naming convention:
* For a field like 'default_XXX', ``execute`` sets the (global) default value of
the field 'XXX' in the model named by ``default_model`` to the field's value.
* For a boolean field like 'group_XXX', ``execute`` adds/removes 'implied_group'
to/from the implied groups of 'group', depending on the field's value.
By default 'group' is the group Employee. Groups are given by their xml id.
* For a boolean field like 'module_XXX', ``execute`` triggers the immediate
installation of the module named 'XXX' if the field has value ``True``.
* For the other fields, the method ``execute`` invokes all methods with a name
that starts with 'set_'; such methods can be defined to implement the effect
of those fields.
The method ``default_get`` retrieves values that reflect the current status of the
fields like 'default_XXX', 'group_XXX' and 'module_XXX'. It also invokes all methods
with a name that starts with 'get_default_'; such methods can be defined to provide
current values for other fields.
"""
_name = 'res.config.settings'
def copy(self, cr, uid, id, values, context=None):
raise osv.except_osv(_("Cannot duplicate configuration!"), "")
def _get_classified_fields(self, cr, uid, context=None):
""" return a dictionary with the fields classified by category::
{ 'default': [('default_foo', 'model', 'foo'), ...],
'group': [('group_bar', browse_group, browse_implied_group), ...],
'module': [('module_baz', browse_module), ...],
'other': ['other_field', ...],
}
"""
ir_model_data = self.pool.get('ir.model.data')
ir_module = self.pool.get('ir.module.module')
def ref(xml_id):
mod, xml = xml_id.split('.', 1)
return ir_model_data.get_object(cr, uid, mod, xml, context)
defaults, groups, modules, others = [], [], [], []
for name, field in self._columns.items():
if name.startswith('default_') and hasattr(field, 'default_model'):
defaults.append((name, field.default_model, name[8:]))
elif name.startswith('group_') and isinstance(field, fields.boolean) and hasattr(field, 'implied_group'):
field_group = getattr(field, 'group', 'base.group_user')
groups.append((name, ref(field_group), ref(field.implied_group)))
elif name.startswith('module_') and isinstance(field, fields.boolean):
mod_ids = ir_module.search(cr, uid, [('name', '=', name[7:])])
modules.append((name, ir_module.browse(cr, uid, mod_ids[0], context)))
else:
others.append(name)
return {'default': defaults, 'group': groups, 'module': modules, 'other': others}
def default_get(self, cr, uid, fields, context=None):
ir_values = self.pool.get('ir.values')
classified = self._get_classified_fields(cr, uid, context)
res = super(res_config_settings, self).default_get(cr, uid, fields, context)
# defaults: take the corresponding default value they set
for name, model, field in classified['default']:
value = ir_values.get_default(cr, uid, model, field)
if value is not None:
res[name] = value
# groups: which groups are implied by the group Employee
for name, group, implied_group in classified['group']:
res[name] = implied_group in group.implied_ids
# modules: which modules are installed/to install
for name, module in classified['module']:
res[name] = module.state in ('installed', 'to install', 'to upgrade')
# other fields: call all methods that start with 'get_default_'
for method in dir(self):
if method.startswith('get_default_'):
res.update(getattr(self, method)(cr, uid, fields, context))
return res
def fields_get(self, cr, uid, allfields=None, context=None, write_access=True):
# overridden to make fields of installed modules readonly
res = super(res_config_settings, self).fields_get(cr, uid, allfields, context, write_access)
classified = self._get_classified_fields(cr, uid, context)
for name, module in classified['module']:
if name in res and module.state in ('installed', 'to install', 'to upgrade'):
res[name]['readonly'] = True
return res
def execute(self, cr, uid, ids, context=None):
ir_values = self.pool.get('ir.values')
ir_model_data = self.pool.get('ir.model.data')
ir_module = self.pool.get('ir.module.module')
res_groups = self.pool.get('res.groups')
classified = self._get_classified_fields(cr, uid, context)
config = self.browse(cr, uid, ids[0], context)
# default values fields
for name, model, field in classified['default']:
ir_values.set_default(cr, uid, model, field, config[name])
# group fields: modify group / implied groups
for name, group, implied_group in classified['group']:
if config[name]:
group.write({'implied_ids': [(4, implied_group.id)]})
else:
group.write({'implied_ids': [(3, implied_group.id)]})
implied_group.write({'users': [(3, u.id) for u in group.users]})
# other fields: execute all methods that start with 'set_'
for method in dir(self):
if method.startswith('set_'):
getattr(self, method)(cr, uid, ids, context)
# module fields: install immediately the selected modules
to_install_ids = []
for name, module in classified['module']:
if config[name] and module.state == 'uninstalled':
to_install_ids.append(module.id)
if to_install_ids:
ir_module.button_immediate_install(cr, uid, to_install_ids, context)
# open the menu for this wizard (or Settings), and force client-side refresh
act_ids = self.pool.get('ir.actions.act_window').search(cr, uid, [('res_model', '=', self._name)])
act_refs = ['ir.actions.act_window,%s' % id for id in act_ids]
val_ids = ir_values.search(cr, uid, [('model', '=', 'ir.ui.menu'), ('key', '=', 'action'),
('key2', '=', 'tree_but_open'), ('value', 'in', act_refs)])
if val_ids:
menu_id = ir_values.browse(cr, uid, val_ids[0]).res_id
else:
menu_id = ir_model_data.get_object(cr, uid, 'base', 'menu_administration', context).id
return {
'type': 'ir.ui.menu',
'menu_id': menu_id,
'reload': True,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,80 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from osv import fields, osv
class res_log(osv.osv):
_name = 'res.log'
_columns = {
'name': fields.char('Message', size=250, help='The logging message.', required=True, select=1),
'user_id': fields.many2one('res.users','User'),
'res_model': fields.char('Object', size=128, select=1),
'context': fields.char('Context', size=250),
'res_id': fields.integer('Object ID'),
'secondary': fields.boolean('Secondary Log', help='Do not display this log if it belongs to the same object the user is working on'),
'create_date': fields.datetime('Creation Date', readonly=True, select=1),
'read': fields.boolean('Read', help="If this log item has been read, get() should not send it to the client"),
}
_defaults = {
'user_id': lambda self,cr,uid,ctx: uid,
'context': "{}",
'read': False,
}
_order='create_date desc'
_index_name = 'res_log_uid_read'
def _auto_init(self, cr, context=None):
super(res_log, self)._auto_init(cr, context)
cr.execute('SELECT 1 FROM pg_indexes WHERE indexname=%s',
(self._index_name,))
if not cr.fetchone():
cr.execute('CREATE INDEX %s ON res_log (user_id, read)' %
self._index_name)
def create(self, cr, uid, vals, context=None):
create_context = context and dict(context) or {}
if 'res_log_read' in create_context:
vals['read'] = create_context.pop('res_log_read')
if create_context and not vals.get('context'):
vals['context'] = create_context
return super(res_log, self).create(cr, uid, vals, context=context)
# TODO: do not return secondary log if same object than in the model (but unlink it)
def get(self, cr, uid, context=None):
unread_log_ids = self.search(cr, uid,
[('user_id','=',uid), ('read', '=', False)], context=context)
res = self.read(cr, uid, unread_log_ids,
['name','res_model','res_id','context'],
context=context)
res.reverse()
result = []
res_dict = {}
for r in res:
t = (r['res_model'], r['res_id'])
if t not in res_dict:
res_dict[t] = True
result.insert(0,r)
self.write(cr, uid, unread_log_ids, {'read': True}, context=context)
return result
res_log()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,65 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="res_log_search" model="ir.ui.view">
<field name="name">res.log.search</field>
<field name="model">res.log</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Logs">
<filter icon="terp-camera_test" string="Read" domain="[('read','=',True)]" name="read"/>
<filter icon="terp-gtk-jump-to-ltr" string="Unread" domain="[('read','&lt;&gt;',True)]" name="unread"/>
<separator orientation="vertical"/>
<filter icon="terp-personal" string="My Logs" domain="[('user_id','=',uid)]" name="my"/>
<filter icon="terp-stock_align_left_24" string="System Logs"
domain="[('res_model','=','publisher_warranty.contract')]" name="sys"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="user_id"/>
<field name="res_model"/>
<field name="create_date"/>
</search>
</field>
</record>
<record id="res_log_tree" model="ir.ui.view">
<field name="name">res.log.tree</field>
<field name="model">res.log</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Logs">
<field name="create_date"/>
<field name="user_id"/>
<field name="name"/>
</tree>
</field>
</record>
<record id="res_log_form" model="ir.ui.view">
<field name="name">res.log.form</field>
<field name="model">res.log</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Logs">
<group colspan="4" col="6">
<field name="name"/>
<field name="create_date"/>
<field name="read"/>
<field name="user_id" />
<field name="res_model"/>
<field name="res_id"/>
</group>
</form>
</field>
</record>
<record id="res_log_act_window" model="ir.actions.act_window">
<field name="name">Client Logs</field>
<field name="res_model">res.log</field>
<field name="view_type">form</field>
<field name="context">{'search_default_my': 1}</field>
</record>
<menuitem
action="res_log_act_window"
id="menu_res_log_act_window"
parent="base.menu_audit"/>
</data>
</openerp>

View File

@ -2,7 +2,7 @@
<openerp>
<data noupdate="0">
<record model="res.groups" id="group_partner_manager" context="{'noadmin':True}">
<record model="res.groups" id="group_partner_manager">
<field name="name">Partner Manager</field>
</record>

View File

@ -40,7 +40,6 @@ from service import security
import tools
from tools.translate import _
_logger = logging.getLogger(__name__)
class groups(osv.osv):
@ -97,22 +96,6 @@ class groups(osv.osv):
self.pool.get('ir.model.access').call_cache_clearing_methods(cr)
return res
def create(self, cr, uid, vals, context=None):
if 'name' in vals:
if vals['name'].startswith('-'):
raise osv.except_osv(_('Error'),
_('The name of the group can not start with "-"'))
gid = super(groups, self).create(cr, uid, vals, context=context)
if context and context.get('noadmin', False):
pass
else:
# assign this new group to user_root
user_obj = self.pool.get('res.users')
aid = user_obj.browse(cr, 1, user_obj._get_admin_id(cr))
if aid:
aid.write({'groups_id': [(4, gid)]})
return gid
def get_extended_interface_group(self, cr, uid, context=None):
data_obj = self.pool.get('ir.model.data')
extended_group_data_id = data_obj._get_id(cr, uid, 'base', 'group_extended')
@ -221,7 +204,7 @@ class users(osv.osv):
img_stream = StringIO.StringIO()
img.save(img_stream, "PNG")
return img_stream.getvalue().encode('base64')
def _get_avatar(self, cr, uid, ids, name, args, context=None):
result = dict.fromkeys(ids, False)
for user in self.browse(cr, uid, ids, context=context):
@ -392,7 +375,7 @@ class users(osv.osv):
}
# User can write to a few of her own fields (but not her groups for example)
SELF_WRITEABLE_FIELDS = ['menu_tips','view', 'password', 'signature', 'action_id', 'company_id', 'user_email', 'name']
SELF_WRITEABLE_FIELDS = ['menu_tips','view', 'password', 'signature', 'action_id', 'company_id', 'user_email', 'name', 'avatar', 'avatar_big']
def write(self, cr, uid, ids, values, context=None):
if not hasattr(ids, '__iter__'):
@ -771,22 +754,23 @@ class groups_view(osv.osv):
# and introduces the reified group fields
view = self.get_user_groups_view(cr, uid, context)
if view:
xml1, xml2 = [], []
xml1.append(E.separator(string=_('Application'), colspan="4"))
for app, kind, gs in self.get_groups_by_application(cr, uid, context):
# hide groups in category 'Hidden' (except to group_no_one)
attrs = {'groups': 'base.group_no_one'} if app and app.xml_id == 'base.module_category_hidden' else {}
if kind == 'selection':
# application name with a selection field
field_name = name_selection_groups(map(int, gs))
xml1.append(E.field(name=field_name))
xml1.append(E.field(name=field_name, **attrs))
xml1.append(E.newline())
else:
# application separator with boolean fields
app_name = app and app.name or _('Other')
xml2.append(E.separator(string=app_name, colspan="4"))
xml2.append(E.separator(string=app_name, colspan="4", **attrs))
for g in gs:
field_name = name_boolean_group(g.id)
xml2.append(E.field(name=field_name))
xml2.append(E.field(name=field_name, **attrs))
xml = E.field(*(xml1 + xml2), name="groups_id", position="replace")
xml.addprevious(etree.Comment("GENERATED AUTOMATICALLY BY GROUPS"))

View File

@ -12,28 +12,30 @@
<record model="res.groups" id="group_system">
<field name="name">Configuration</field>
<field name="implied_ids" eval="[(4, ref('group_erp_manager'))]"/>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record model="res.groups" id="group_user">
<field name="name">Employee</field>
<field name="users" eval="[(4, ref('base.user_root'))]"/>
</record>
<record model="res.groups" context="{'noadmin':True}" id="group_multi_company">
<record model="res.groups" id="group_multi_company">
<field name="name">Multi Companies</field>
</record>
<record model="res.groups" context="{'noadmin':True}" id="group_extended">
<record model="res.groups" id="group_extended">
<field name="name">Extended View</field>
</record>
<record model="res.groups" id="group_no_one" context="{'noadmin':True}">
<record model="res.groups" id="group_no_one">
<field name="name">Technical Features</field>
</record>
<record id="group_sale_salesman" context="{'noadmin':True}" model="res.groups">
<record id="group_sale_salesman" model="res.groups">
<field name="name">User</field>
</record>
<record id="group_sale_manager" context="{'noadmin':True}" model="res.groups">
<record id="group_sale_manager" model="res.groups">
<field name="name">Manager</field>
<field name="implied_ids" eval="[(4, ref('group_sale_salesman'))]"/>
</record>

View File

@ -117,9 +117,10 @@
"access_ir_filters","ir_filters_all","model_ir_filters",,1,1,1,1
"access_res_widget","res.widget","model_res_widget","group_erp_manager",1,1,1,1
"access_res_widget_user","res.widget.user","model_res_widget",,1,0,0,0
"access_res_log_all","res.log","model_res_log",,1,1,1,1
"access_ir_config_parameter","ir_config_parameter","model_ir_config_parameter",,1,0,0,0
"access_ir_mail_server_all","ir_mail_server","model_ir_mail_server",,1,0,0,0
"access_ir_actions_todo_category","ir_actions_todo_category","model_ir_actions_todo_category","group_system",1,1,1,1
"access_ir_actions_client","ir_actions_client all","model_ir_actions_client",,1,0,0,0
"access_ir_needaction_users","ir_needaction_users","model_ir_needaction_users",,1,1,1,1
"access_ir_needaction_mixin","ir_needaction_mixin","model_ir_needaction_mixin",,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
117 access_ir_filters ir_filters_all model_ir_filters 1 1 1 1
118 access_res_widget res.widget model_res_widget group_erp_manager 1 1 1 1
119 access_res_widget_user res.widget.user model_res_widget 1 0 0 0
access_res_log_all res.log model_res_log 1 1 1 1
120 access_ir_config_parameter ir_config_parameter model_ir_config_parameter 1 0 0 0
121 access_ir_mail_server_all ir_mail_server model_ir_mail_server 1 0 0 0
122 access_ir_actions_todo_category ir_actions_todo_category model_ir_actions_todo_category group_system 1 1 1 1
123 access_ir_actions_client ir_actions_client all model_ir_actions_client 1 0 0 0
124 access_ir_needaction_users ir_needaction_users model_ir_needaction_users 1 1 1 1
125 access_ir_needaction_mixin ir_needaction_mixin model_ir_needaction_mixin 1 1 1 1
126

View File

@ -212,10 +212,7 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
delattr(package, kind)
cr.commit()
# mark new res_log records as read
cr.execute("update res_log set read=True where create_date >= %s", (dt_before_load,))
cr.commit()
return loaded_modules, processed_modules

View File

@ -709,17 +709,7 @@ class BaseModel(object):
CONCURRENCY_CHECK_FIELD = '__last_update'
def log(self, cr, uid, id, message, secondary=False, context=None):
if context and context.get('disable_log'):
return True
return self.pool.get('res.log').create(cr, uid,
{
'name': message,
'res_model': self._name,
'secondary': secondary,
'res_id': id,
},
context=context
)
return _logger.warning("log() is deprecated. Please use OpenChatter notification system instead of the res.log mechanism.")
def view_init(self, cr, uid, fields_list, context=None):
"""Override this method to do specific things when a view on the object is opened."""
@ -4895,14 +4885,14 @@ class BaseModel(object):
if hasattr(self, 'needaction_get_record_ids'):
ids = self.needaction_get_record_ids(cr, uid, user_id, limit=8192, context=context)
if not ids:
return (True, 0, [])
return [True, 0, []]
if domain:
new_domain = eval(domain) + [('id', 'in', ids)]
new_domain = eval(domain, locals_dict={'uid': user_id}) + [('id', 'in', ids)]
else:
new_domain = [('id', 'in', ids)]
return (True, self.search(cr, uid, new_domain, limit=limit, order=order, count=True, context=context), ids)
return [True, self.search(cr, uid, new_domain, limit=limit, order=order, count=True, context=context), ids]
else:
return (False, 0, [])
return [False, 0, []]
# Transience
def is_transient(self):