diff options
| author | Olivier Dony <odo@openerp.com> | 2011-02-28 15:00:01 +0100 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2011-02-28 15:00:01 +0100 |
| commit | 4017c9da74bd1e09ace79b3ae05bd0ca5e7743ec (patch) | |
| tree | 9708a08c7803831e07e6e66effaeae15c9eb2779 | |
| parent | 2bf57273d0998a4fea6be384490dd21e6f921b2e (diff) | |
| parent | beac68b7d257942bfdacf16205ac499ac8242cb0 (diff) | |
[MERGE] merged multi-company rules fix from 6.0
bzr revid: odo@openerp.com-20110228104936-7o281husy5j1hz8l
bzr revid: odo@openerp.com-20110228140001-eo18g7ncst04v0lg
34 files changed, 365 insertions, 76 deletions
diff --git a/addons/account/invoice.py b/addons/account/invoice.py index a50bb37a981..48e635aee53 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -1336,6 +1336,7 @@ class account_invoice_line(osv.osv): domain = {} result['uos_id'] = res.uom_id.id or uom or False + result['note'] = res.description if result['uos_id']: res2 = res.uom_id.category_id.id if res2: diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml index 39ed61cc253..5f429270e29 100644 --- a/addons/account/security/account_security.xml +++ b/addons/account/security/account_security.xml @@ -16,98 +16,98 @@ <field name="name">Account Entry</field> <field ref="model_account_move" name="model_id"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="account_move_line_comp_rule" model="ir.rule"> <field name="name">Entry lines</field> <field model="ir.model" name="model_id" ref="model_account_move_line"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="journal_period_comp_rule" model="ir.rule"> <field name="name">Journal Period</field> <field model="ir.model" name="model_id" ref="model_account_journal_period"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="journal_comp_rule" model="ir.rule"> <field name="name">Journal multi-company</field> <field model="ir.model" name="model_id" ref="model_account_journal"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="analytic_journal_comp_rule" model="ir.rule"> <field name="name">Analytic journal multi-company</field> <field model="ir.model" name="model_id" ref="model_account_analytic_journal"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="analytic_journal_comp_rule_false" model="ir.rule"> <field name="name">Analytic journal multi-company</field> <field model="ir.model" name="model_id" ref="model_account_analytic_journal"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="period_comp_rule" model="ir.rule"> <field name="name">Period multi-company</field> <field model="ir.model" name="model_id" ref="model_account_period"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="fiscal_year_comp_rule" model="ir.rule"> <field name="name">Fiscal year multi-company</field> <field model="ir.model" name="model_id" ref="model_account_fiscalyear"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="account_comp_rule" model="ir.rule"> <field name="name">Account multi-company</field> <field model="ir.model" name="model_id" ref="model_account_account"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="tax_comp_rule" model="ir.rule"> <field name="name">Tax multi-company</field> <field model="ir.model" name="model_id" ref="model_account_tax"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','=',user.company_id.id)]</field> </record> <record id="tax_code_comp_rule" model="ir.rule"> <field name="name">Tax code multi-company</field> <field model="ir.model" name="model_id" ref="model_account_tax_code"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="invoice_comp_rule" model="ir.rule"> <field name="name">Invoice multi-company</field> <field model="ir.model" name="model_id" ref="model_account_invoice"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="account_fiscal_position_comp_rule" model="ir.rule"> <field name="name">Account fiscal Mapping company rule</field> <field model="ir.model" name="model_id" ref="model_account_fiscal_position"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="account_model_comp_rule" model="ir.rule"> <field name="name">Account model company rule</field> <field model="ir.model" name="model_id" ref="model_account_model"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data></openerp> diff --git a/addons/account_budget/security/account_budget_security.xml b/addons/account_budget/security/account_budget_security.xml index 1d737d5ddd8..1fbcd82e86c 100644 --- a/addons/account_budget/security/account_budget_security.xml +++ b/addons/account_budget/security/account_budget_security.xml @@ -6,21 +6,21 @@ <field name="name">Budget post multi-company</field> <field name="model_id" ref="model_account_budget_post"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="budget_comp_rule" model="ir.rule"> <field name="name">Budget multi-company</field> <field name="model_id" ref="model_crossovered_budget"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="budget_lines_comp_rule" model="ir.rule"> <field name="name">Budget lines multi-company</field> <field name="model_id" ref="model_crossovered_budget_lines"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> diff --git a/addons/account_coda/security/account_security.xml b/addons/account_coda/security/account_security.xml index 3035c8e608b..b8fdd32ebe6 100644 --- a/addons/account_coda/security/account_security.xml +++ b/addons/account_coda/security/account_security.xml @@ -5,7 +5,7 @@ <field name="name">Account Coda model company rule</field> <field model="ir.model" name="model_id" ref="model_account_coda"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data></openerp> diff --git a/addons/account_payment/security/account_payment_security.xml b/addons/account_payment/security/account_payment_security.xml index dcd2826a65f..5977ea36365 100644 --- a/addons/account_payment/security/account_payment_security.xml +++ b/addons/account_payment/security/account_payment_security.xml @@ -10,7 +10,7 @@ <field name="name">Payment Mode company rule</field> <field model="ir.model" name="model_id" ref="model_payment_mode"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> diff --git a/addons/account_voucher/account_voucher_view.xml b/addons/account_voucher/account_voucher_view.xml index 745e7ab1078..ac3bcc9d9b5 100644 --- a/addons/account_voucher/account_voucher_view.xml +++ b/addons/account_voucher/account_voucher_view.xml @@ -46,6 +46,7 @@ <field name="journal_id" widget="selection" select="1" on_change="onchange_journal_voucher(line_ids, tax_id, amount, partner_id, journal_id, type)"/> <field name="type" required="1"/> <field name="name" colspan="2"/> + <field name="company_id" widget="selection" groups="base.group_multi_company"/> <field name="reference" select="1"/> <field name="account_id" widget="selection" invisible="True"/> </group> @@ -79,7 +80,6 @@ </page> <page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}"> <group col="6" colspan="4"> - <field name="company_id" widget="selection" groups="base.group_multi_company"/> <field name="period_id"/> <field name="audit"/> </group> diff --git a/addons/account_voucher/security/account_voucher_security.xml b/addons/account_voucher/security/account_voucher_security.xml index d368ab858ed..df4e58484b5 100644 --- a/addons/account_voucher/security/account_voucher_security.xml +++ b/addons/account_voucher/security/account_voucher_security.xml @@ -5,13 +5,13 @@ <field name="name">Voucher multi-company</field> <field model="ir.model" name="model_id" ref="model_account_voucher"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="voucher_line_comp_rule" model="ir.rule"> <field name="name">Voucher Line multi-company</field> <field model="ir.model" name="model_id" ref="model_account_voucher_line"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> </openerp> diff --git a/addons/analytic/security/analytic_security.xml b/addons/analytic/security/analytic_security.xml index 58a687fee1b..dfa8c840bb6 100644 --- a/addons/analytic/security/analytic_security.xml +++ b/addons/analytic/security/analytic_security.xml @@ -5,7 +5,7 @@ <field name="name">Analytic multi company rule</field> <field model="ir.model" name="model_id" ref="model_account_analytic_account"/> <field eval="True" name="global"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="group_analytic_accounting" model="res.groups" context="{'noadmin':True}"> <field name="name">Useability / Analytic Accounting</field> diff --git a/addons/anonymization/__init__.py b/addons/anonymization/__init__.py index d3c219a9ffa..7be1a934c5a 100644 --- a/addons/anonymization/__init__.py +++ b/addons/anonymization/__init__.py @@ -21,5 +21,4 @@ ############################################################################## import anonymization -import wizard diff --git a/addons/anonymization/anonymization.py b/addons/anonymization/anonymization.py index 5e205c959e8..35a1fe83f56 100644 --- a/addons/anonymization/anonymization.py +++ b/addons/anonymization/anonymization.py @@ -418,14 +418,9 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory): elif field_type == 'datetime': anonymized_value = '2011-11-11 11:11:11' elif field_type == 'float': - if record[field_name] > 0: - anonymized_value = 1.0 - elif record[field_name] < 0: - anonymized_value = -1.0 - else: - anonymized_value = 0.0 + anonymized_value = 0.0 elif field_type == 'integer': - anonymized_value = 1 + anonymized_value = 0 elif field_type in ['binary', 'many2many', 'many2one', 'one2many', 'reference']: # cannot anonymize these kind of fields msg = "Cannot anonymize fields of these types: binary, many2many, many2one, one2many, reference" self._raise_after_history_update(cr, uid, history_id, 'Error !', msg) diff --git a/addons/base_report_creator/wizard/report_menu_create.py b/addons/base_report_creator/wizard/report_menu_create.py index f209bd05526..072c5482dfc 100644 --- a/addons/base_report_creator/wizard/report_menu_create.py +++ b/addons/base_report_creator/wizard/report_menu_create.py @@ -66,7 +66,7 @@ class report_menu_create(osv.osv_memory): 'view_type':'form', 'view_mode':view, 'context': "{'report_id':%d}" % (board.id,), - 'res_model': 'base_report_creator.report', + 'res_model': 'base_report_creator_report.result', 'search_view_id': res['res_id'] }) diff --git a/addons/crm_claim/crm_claim.py b/addons/crm_claim/crm_claim.py index 71da913c7a1..1829aa9a171 100644 --- a/addons/crm_claim/crm_claim.py +++ b/addons/crm_claim/crm_claim.py @@ -22,6 +22,14 @@ from osv import fields, osv from crm import crm import time +import binascii +import tools + +CRM_CLAIM_PENDING_STATES = ( + crm.AVAILABLE_STATES[2][0], # Cancelled + crm.AVAILABLE_STATES[3][0], # Done + crm.AVAILABLE_STATES[4][0], # Pending +) class crm_claim(crm.crm_case, osv.osv): """ @@ -146,6 +154,99 @@ class crm_claim(crm.crm_case, osv.osv): self.write(cr, uid, [ids[i]], {'stage_id' : stage_id}) return res + + def message_new(self, cr, uid, msg, context=None): + """ + Automatically calls when new email message arrives + + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks + """ + mailgate_pool = self.pool.get('email.server.tools') + + subject = msg.get('subject') + body = msg.get('body') + msg_from = msg.get('from') + priority = msg.get('priority') + + vals = { + 'name': subject, + 'email_from': msg_from, + 'email_cc': msg.get('cc'), + 'description': body, + 'user_id': False, + } + if msg.get('priority', False): + vals['priority'] = priority + + res = mailgate_pool.get_partner(cr, uid, msg.get('from') or msg.get_unixfrom()) + if res: + vals.update(res) + + res = self.create(cr, uid, vals, context) + attachents = msg.get('attachments', []) + for attactment in attachents or []: + data_attach = { + 'name': attactment, + 'datas':binascii.b2a_base64(str(attachents.get(attactment))), + 'datas_fname': attactment, + 'description': 'Mail attachment', + 'res_model': self._name, + 'res_id': res, + } + self.pool.get('ir.attachment').create(cr, uid, data_attach) + + return res + + def message_update(self, cr, uid, ids, vals={}, msg="", default_act='pending', context=None): + """ + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of update mail’s IDs + """ + if isinstance(ids, (str, int, long)): + ids = [ids] + + if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES): + vals['priority'] = msg.get('priority') + + maps = { + 'cost':'planned_cost', + 'revenue': 'planned_revenue', + 'probability':'probability' + } + vls = {} + for line in msg['body'].split('\n'): + line = line.strip() + res = tools.misc.command_re.match(line) + if res and maps.get(res.group(1).lower()): + key = maps.get(res.group(1).lower()) + vls[key] = res.group(2).lower() + vals.update(vls) + + # Unfortunately the API is based on lists + # but we want to update the state based on the + # previous state, so we have to loop: + for case in self.browse(cr, uid, ids, context=context): + values = dict(vals) + if case.state in CRM_CLAIM_PENDING_STATES: + values.update(state=crm.AVAILABLE_STATES[1][0]) #re-open + res = self.write(cr, uid, [case.id], values, context=context) + return res + + def msg_send(self, cr, uid, id, *args, **argv): + + """ Send The Message + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of email’s IDs + @param *args: Return Tuple Value + @param **args: Return Dictionary of Keyword Value + """ + return True crm_claim() diff --git a/addons/crm_helpdesk/crm_helpdesk.py b/addons/crm_helpdesk/crm_helpdesk.py index 1508704d2d6..30a2af63512 100644 --- a/addons/crm_helpdesk/crm_helpdesk.py +++ b/addons/crm_helpdesk/crm_helpdesk.py @@ -22,6 +22,14 @@ from crm import crm from osv import fields, osv import time +import binascii +import tools + +CRM_HELPDESK_STATES = ( + crm.AVAILABLE_STATES[2][0], # Cancelled + crm.AVAILABLE_STATES[3][0], # Done + crm.AVAILABLE_STATES[4][0], # Pending +) class crm_helpdesk(crm.crm_case, osv.osv): """ Helpdesk Cases """ @@ -86,6 +94,99 @@ class crm_helpdesk(crm.crm_case, osv.osv): 'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0], } + def message_new(self, cr, uid, msg, context=None): + """ + Automatically calls when new email message arrives + + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks + """ + mailgate_pool = self.pool.get('email.server.tools') + + subject = msg.get('subject') + body = msg.get('body') + msg_from = msg.get('from') + priority = msg.get('priority') + + vals = { + 'name': subject, + 'email_from': msg_from, + 'email_cc': msg.get('cc'), + 'description': body, + 'user_id': False, + } + if msg.get('priority', False): + vals['priority'] = priority + + res = mailgate_pool.get_partner(cr, uid, msg.get('from') or msg.get_unixfrom()) + if res: + vals.update(res) + + res = self.create(cr, uid, vals, context) + attachents = msg.get('attachments', []) + for attactment in attachents or []: + data_attach = { + 'name': attactment, + 'datas':binascii.b2a_base64(str(attachents.get(attactment))), + 'datas_fname': attactment, + 'description': 'Mail attachment', + 'res_model': self._name, + 'res_id': res, + } + self.pool.get('ir.attachment').create(cr, uid, data_attach) + + return res + + def message_update(self, cr, uid, ids, vals={}, msg="", default_act='pending', context=None): + """ + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of update mail’s IDs + """ + if isinstance(ids, (str, int, long)): + ids = [ids] + + if msg.get('priority') in dict(crm.AVAILABLE_PRIORITIES): + vals['priority'] = msg.get('priority') + + maps = { + 'cost':'planned_cost', + 'revenue': 'planned_revenue', + 'probability':'probability' + } + vls = {} + for line in msg['body'].split('\n'): + line = line.strip() + res = tools.misc.command_re.match(line) + if res and maps.get(res.group(1).lower()): + key = maps.get(res.group(1).lower()) + vls[key] = res.group(2).lower() + vals.update(vls) + + # Unfortunately the API is based on lists + # but we want to update the state based on the + # previous state, so we have to loop: + for case in self.browse(cr, uid, ids, context=context): + values = dict(vals) + if case.state in CRM_HELPDESK_STATES: + values.update(state=crm.AVAILABLE_STATES[1][0]) #re-open + res = self.write(cr, uid, [case.id], values, context=context) + return res + + def msg_send(self, cr, uid, id, *args, **argv): + + """ Send The Message + @param self: The object pointer + @param cr: the current row, from the database cursor, + @param uid: the current user’s ID for security checks, + @param ids: List of email’s IDs + @param *args: Return Tuple Value + @param **args: Return Dictionary of Keyword Value + """ + return True + crm_helpdesk() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document/document.py b/addons/document/document.py index 79fb83b5b1f..1a553b23ed1 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -38,9 +38,9 @@ class document_file(osv.osv): def _attach_parent_id(self, cr, uid, ids=None, context=None): """Migrate ir.attachments to the document module. - + When the 'document' module is loaded on a db that has had plain attachments, - they will need to be attached to some parent folder, and be converted from + they will need to be attached to some parent folder, and be converted from base64-in-bytea to raw-in-bytea format. This function performs the internal migration, once and forever, for these attachments. It cannot be done through the nominal ORM maintenance code, @@ -50,7 +50,7 @@ class document_file(osv.osv): should have had (but would have failed if plain attachments contained null values). """ - + parent_id = self.pool.get('document.directory')._get_root_directory(cr,uid) if not parent_id: logging.getLogger('document').warning("at _attach_parent_id(), still not able to set the parent!") @@ -64,7 +64,7 @@ class document_file(osv.osv): "WHERE parent_id IS NULL", (parent_id,)) cr.execute("ALTER TABLE ir_attachment ALTER parent_id SET NOT NULL") return True - + def _get_filestore(self, cr): return os.path.join(DMS_ROOT_PATH, cr.dbname) @@ -167,19 +167,41 @@ class document_file(osv.osv): def check(self, cr, uid, ids, mode, context=None, values=None): """Check access wrt. res_model, relax the rule of ir.attachment parent - + With 'document' installed, everybody will have access to attachments of any resources they can *read*. """ return super(document_file, self).check(cr, uid, ids, mode='read', context=context, values=values) + def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False): + # Grab ids, bypassing 'count' + ids = super(document_file, self).search(cr, uid, args, offset=offset, + limit=limit, order=order, + context=context, count=False) + if not ids: + return 0 if count else [] + + # Filter out documents that are in directories that the user is not allowed to read. + # Must use pure SQL to avoid access rules exceptions (we want to remove the records, + # not fail), and the records have been filtered in parent's search() anyway. + cr.execute('SELECT id, parent_id from "%s" WHERE id in %%s' % self._table, (tuple(ids),)) + doc_pairs = cr.fetchall() + parent_ids = set(zip(*doc_pairs)[1]) + visible_parent_ids = self.pool.get('document.directory').search(cr, uid, [('id', 'in', list(parent_ids))]) + disallowed_parents = parent_ids.difference(visible_parent_ids) + for doc_id, parent_id in doc_pairs: + if parent_id in disallowed_parents: + ids.remove(doc_id) + return len(ids) if count else ids + + def copy(self, cr, uid, id, default=None, context=None): if not default: default = {} if 'name' not in default: - name = self.read(cr, uid, [id])[0]['name'] - default.update({'name': name + " (copy)"}) + name = self.read(cr, uid, [id], ['name'])[0]['name'] + default.update({'name': name + " " + _("(copy)")}) return super(document_file, self).copy(cr, uid, id, default, context=context) def write(self, cr, uid, ids, vals, context=None): diff --git a/addons/hr_timesheet_sheet/security/hr_timesheet_sheet_security.xml b/addons/hr_timesheet_sheet/security/hr_timesheet_sheet_security.xml index f5b346af50e..ff387a898ca 100644 --- a/addons/hr_timesheet_sheet/security/hr_timesheet_sheet_security.xml +++ b/addons/hr_timesheet_sheet/security/hr_timesheet_sheet_security.xml @@ -6,7 +6,7 @@ <field name="name">Timesheet multi-company</field> <field name="model_id" search="[('model','=','hr_timesheet_sheet.sheet')]" model="ir.model"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> diff --git a/addons/l10n_ch/test/l10n_ch_report.yml b/addons/l10n_ch/test/l10n_ch_report.yml index d9f326b9443..a730bdc82bd 100644 --- a/addons/l10n_ch/test/l10n_ch_report.yml +++ b/addons/l10n_ch/test/l10n_ch_report.yml @@ -1,5 +1,5 @@ - - I Partner data to Test BVR printing. + In order to test BVR printing. I create Partner data. - !record {model: res.partner.category, id: res_partner_category_bvr}: name: Customers @@ -15,21 +15,21 @@ - !record {model: res.partner.address, id: res_partner_address_1}: partner_id: res_partner_bvr - street: Route de Belario + street: Route de Bélario type: contact - I create invoice address for BVR DUMMY. - !record {model: res.partner.address, id: res_partner_address_2}: partner_id: res_partner_bvr - street: Route de Belario + street: Route de Bélario type: invoice - I create delivery address for BVR DUMMY. - !record {model: res.partner.address, id: res_partner_address_3}: partner_id: res_partner_bvr - street: Route de Belario + street: Route de Bélario type: delivery - @@ -57,4 +57,4 @@ !python {model: account.invoice}: | from tools.test_reports import try_report company = self.pool.get('res.users').browse(cr, uid, uid).company_id - company.lib_path and try_report(cr, uid, 'report.invoice_web_bvr', [ref('l10n_ch_invoice')]) or 'Webkit lib not set'
\ No newline at end of file + company.lib_path and try_report(cr, uid, 'report.invoice_web_bvr', [ref('l10n_ch_invoice')]) or 'Webkit lib not set' diff --git a/addons/mrp/security/mrp_security.xml b/addons/mrp/security/mrp_security.xml index 743432af745..1cc4c5cea9b 100644 --- a/addons/mrp/security/mrp_security.xml +++ b/addons/mrp/security/mrp_security.xml @@ -19,21 +19,21 @@ <field name="name">mrp_production multi-company</field> <field name="model_id" search="[('model','=','mrp.production')]" model="ir.model"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field> </record> <record model="ir.rule" id="mrp_workcenter_rule"> <field name="name">mrp_workcenter multi-company</field> <field name="model_id" search="[('model','=','mrp.workcenter')]" model="ir.model"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field> </record> <record model="ir.rule" id="mrp_bom_rule"> <field name="name">mrp_bom multi-company</field> <field name="model_id" search="[('model','=','mrp.bom')]" model="ir.model"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field> </record> </data> diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 6899b673c70..de8fd701492 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -262,7 +262,7 @@ class product_pricelist(osv.osv): price = currency_obj.compute(cr, uid, price_type.currency_id.id, res['currency_id'], product_obj.price_get(cr, uid, [product_id], - price_type.field)[product_id], round=False, context=context) + price_type.field,context=context)[product_id], round=False, context=context) if price: price_limit = price @@ -385,7 +385,7 @@ class product_pricelist(osv.osv): else: price_tmp = self.price_get(cr, uid, [res['base_pricelist_id']], prod_id, - qty)[res['base_pricelist_id']] + qty,context=context)[res['base_pricelist_id']] ptype_src = self.browse(cr, uid, res['base_pricelist_id']).currency_id.id price = currency_obj.compute(cr, uid, ptype_src, @@ -413,7 +413,7 @@ class product_pricelist(osv.osv): price = currency_obj.compute(cr, uid, price_type.currency_id.id, res['currency_id'], product_obj.price_get(cr, uid, [prod_id], - price_type.field)[prod_id], round=False, context=context) + price_type.field,context=context)[prod_id], round=False, context=context) if price: price_limit = price diff --git a/addons/product/product.py b/addons/product/product.py index 6460131e0ed..6bee68c2ba6 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -766,12 +766,12 @@ class product_supplierinfo(osv.osv): currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id for supplier in partner_pool.browse(cr, uid, supplier_ids, context=context): # Compute price from standard price of product - price = product_pool.price_get(cr, uid, [product_id], 'standard_price')[product_id] + price = product_pool.price_get(cr, uid, [product_id], 'standard_price', context=context)[product_id] # Compute price from Purchase pricelist of supplier pricelist_id = supplier.property_product_pricelist_purchase.id if pricelist_id: - price = pricelist_pool.price_get(cr, uid, [pricelist_id], product_id, product_qty).setdefault(pricelist_id, 0) + price = pricelist_pool.price_get(cr, uid, [pricelist_id], product_id, product_qty, context=context).setdefault(pricelist_id, 0) price = currency_pool.compute(cr, uid, pricelist_pool.browse(cr, uid, pricelist_id).currency_id.id, currency_id, price) # Compute price from supplier pricelist which are in Supplier Information diff --git a/addons/product/report/pricelist.py b/addons/product/report/pricelist.py index 068aed7df1c..a6360c8ef19 100644 --- a/addons/product/report/pricelist.py +++ b/addons/product/report/pricelist.py @@ -90,7 +90,7 @@ class report_custom(report_rml): pro.append('<pro name="%s" >' % (x['name'])) temp = [] for q in qty: - price_dict = pool.get('product.pricelist').price_get(cr, uid, [price_list_id], x['id'], q) + price_dict = pool.get('product.pricelist').price_get(cr, uid, [price_list_id], x['id'], q, context=context) if price_dict[price_list_id]: price = price_dict[price_list_id] else: diff --git a/addons/product/security/product_security.xml b/addons/product/security/product_security.xml index fb015d860e1..acf083cdb74 100644 --- a/addons/product/security/product_security.xml +++ b/addons/product/security/product_security.xml @@ -17,7 +17,7 @@ <field name="name" >Product multi-company</field> <field name="model_id" ref="model_product_template"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record id="group_product_variant" model="res.groups" context="{'noadmin':True}"> diff --git a/addons/product_margin/product_margin_view.xml b/addons/product_margin/product_margin_view.xml index a6d6eff5238..87022bdc44f 100644 --- a/addons/product_margin/product_margin_view.xml +++ b/addons/product_margin/product_margin_view.xml @@ -80,6 +80,9 @@ <field name="expected_margin"/> <field name="total_margin_rate" widget="progressbar"/> <field name="expected_margin_rate" widget="progressbar"/> + <field name="categ_id" invisible="1"/> + <field name="uom_id" invisible="1"/> + <field name="type" invisible="1"/> </tree> </field> </record> diff --git a/addons/project/security/project_security.xml b/addons/project/security/project_security.xml index 3ec15131419..b51a5a9c89a 100644 --- a/addons/project/security/project_security.xml +++ b/addons/project/security/project_security.xml @@ -22,14 +22,14 @@ <field name="name">Project multi-company</field> <field name="model_id" ref="model_project_project"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="task_comp_rule"> <field name="name" >Task multi-company</field> <field name="model_id" ref="model_project_task"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="task_visibility_rule"> diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index f2ef17a183d..63dbf4d9dcc 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -787,7 +787,7 @@ class procurement_order(osv.osv): if seller_qty: qty = max(qty,seller_qty) - price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, False, {'uom': uom_id})[pricelist_id] + price = pricelist_obj.price_get(cr, uid, [pricelist_id], procurement.product_id.id, qty, partner_id, {'uom': uom_id})[pricelist_id] newdate = datetime.strptime(procurement.date_planned, '%Y-%m-%d %H:%M:%S') newdate = (newdate - relativedelta(days=company.po_lead)) - relativedelta(days=seller_delay) diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 92adb377768..8c432aa9ecc 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -217,6 +217,7 @@ <separator string="Invoices" colspan="4"/> <newline/> <field name="invoice_ids" groups="base.group_extended" nolabel="1" colspan="4" context="{'type':'in_invoice', 'journal_type':'purchase'}"/> + <field name="invoice_ids" groups="base.group_extended" nolabel="1" colspan="4" context="{'type':'in_invoice', 'journal_type': 'purchase'}"/> </page> <page string="Notes"> <field colspan="4" name="notes" nolabel="1"/> diff --git a/addons/purchase/security/purchase_security.xml b/addons/purchase/security/purchase_security.xml index e949070cc75..e1149c91466 100644 --- a/addons/purchase/security/purchase_security.xml +++ b/addons/purchase/security/purchase_security.xml @@ -13,14 +13,14 @@ <field name="name">Purchase Order multi-company</field> <field name="model_id" ref="model_purchase_order"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="purchase_order_line_comp_rule"> <field name="name">Purchase Order Line multi-company</field> <field name="model_id" ref="model_purchase_order_line"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> diff --git a/addons/purchase_requisition/security/purchase_tender.xml b/addons/purchase_requisition/security/purchase_tender.xml index 05d76878228..595b71008ef 100644 --- a/addons/purchase_requisition/security/purchase_tender.xml +++ b/addons/purchase_requisition/security/purchase_tender.xml @@ -14,14 +14,14 @@ <field name="name">Purchase Requisition multi-company</field> <field name="model_id" ref="model_purchase_requisition"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="purchase_requisition_line_comp_rule"> <field name="name">Purchase requisition Line multi-company</field> <field name="model_id" ref="model_purchase_requisition_line"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> diff --git a/addons/sale/security/sale_security.xml b/addons/sale/security/sale_security.xml index 5cc873beb75..c6764a24b18 100644 --- a/addons/sale/security/sale_security.xml +++ b/addons/sale/security/sale_security.xml @@ -26,19 +26,19 @@ <field name="name">Sale Order multi-company</field> <field name="model_id" ref="model_sale_order"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="sale_order_line_comp_rule"> <field name="name">Sale Order Line multi-company</field> <field name="model_id" ref="model_sale_order_line"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> - <record model="ir.rule" id="sale_order_line_comp_rule"> + <record model="ir.rule" id="sale_shop_comp_rule"> <field name="name">Sale Shop multi-company</field> <field name="model_id" ref="model_sale_shop"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <!-- Multi - Salesmen sales order assignation rules --> diff --git a/addons/share/web/controllers.py b/addons/share/web/controllers.py index bac7a607cf0..4b723f225da 100644 --- a/addons/share/web/controllers.py +++ b/addons/share/web/controllers.py @@ -17,7 +17,7 @@ class ShareWizardController(openerp.controllers.SecuredController): if not action_id: # This should not be needed anymore, but just in case users are - # running the module with an order version of the web client... + # running the module with an older version of the web client... # to remove soon-ish action_id = rpc.RPCProxy('ir.actions.act_window').search( @@ -44,7 +44,7 @@ class ShareWizardController(openerp.controllers.SecuredController): Share = rpc.RPCProxy('share.wizard') sharing_view_id = Share.create({ 'domain': str(domain), - 'action_id':action_id + 'action_id': action_id and int(action_id) }, context) return openerp.controllers.actions.execute( Share.go_step_1([sharing_view_id], context), diff --git a/addons/stock/security/stock_security.xml b/addons/stock/security/stock_security.xml index dc36e193497..717486413c6 100644 --- a/addons/stock/security/stock_security.xml +++ b/addons/stock/security/stock_security.xml @@ -15,42 +15,42 @@ <field name="name">stock_picking multi-company</field> <field name="model_id" search="[('model','=','stock.picking')]" model="ir.model"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="stock_warehouse_comp_rule"> <field name="name">Warehouse multi-company</field> <field name="model_id" ref="model_stock_warehouse"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="stock_location_comp_rule"> <field name="name">Location multi-company</field> <field name="model_id" ref="model_stock_location"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="stock_move_rule"> <field name="name">stock_move multi-company</field> <field name="model_id" search="[('model','=','stock.move')]" model="ir.model"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="stock_inventory_line_comp_rule"> <field name="name">Inventory Line multi-company</field> <field name="model_id" ref="model_stock_inventory_line"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> <record model="ir.rule" id="stock_inventory_comp_rule"> <field name="name">Inventory multi-company</field> <field name="model_id" ref="model_stock_inventory"/> <field name="global" eval="True"/> - <field name="domain_force">['|','|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]</field> + <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field> </record> </data> diff --git a/addons/wiki/web/locales/bg.po b/addons/wiki/web/locales/bg.po index 5b073c6c77e..d331ed5de7f 100644 --- a/addons/wiki/web/locales/bg.po +++ b/addons/wiki/web/locales/bg.po @@ -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: 2011-02-11 06:26+0000\n" -"X-Generator: Launchpad (build 12177)\n" +"X-Launchpad-Export-Date: 2011-02-12 06:06+0000\n" +"X-Generator: Launchpad (build 12351)\n" #: widgets/wikimarkup/__init__.py:1981 msgid "Table of Contents" diff --git a/addons/wiki/web/locales/de.po b/addons/wiki/web/locales/de.po new file mode 100644 index 00000000000..8718cd9713d --- /dev/null +++ b/addons/wiki/web/locales/de.po @@ -0,0 +1,22 @@ +# German translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2010-08-02 17:52+0530\n" +"PO-Revision-Date: 2011-02-11 11:54+0000\n" +"Last-Translator: Ferdinand @ Camptocamp <Unknown>\n" +"Language-Team: German <de@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-02-12 06:06+0000\n" +"X-Generator: Launchpad (build 12351)\n" + +#: widgets/wikimarkup/__init__.py:1981 +msgid "Table of Contents" +msgstr "Inhaltsverzeichnis" diff --git a/addons/wiki/web/locales/fr.po b/addons/wiki/web/locales/fr.po new file mode 100644 index 00000000000..18a1611dac0 --- /dev/null +++ b/addons/wiki/web/locales/fr.po @@ -0,0 +1,22 @@ +# French translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2010-08-02 17:52+0530\n" +"PO-Revision-Date: 2011-02-11 20:16+0000\n" +"Last-Translator: lolivier <olivier.lenoir@free.fr>\n" +"Language-Team: French <fr@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-02-12 06:06+0000\n" +"X-Generator: Launchpad (build 12351)\n" + +#: widgets/wikimarkup/__init__.py:1981 +msgid "Table of Contents" +msgstr "Table des matières" diff --git a/addons/wiki/web/locales/sk.po b/addons/wiki/web/locales/sk.po new file mode 100644 index 00000000000..f101cf6928a --- /dev/null +++ b/addons/wiki/web/locales/sk.po @@ -0,0 +1,22 @@ +# Slovak translation for openobject-addons +# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2011. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2010-08-02 17:52+0530\n" +"PO-Revision-Date: 2011-02-21 13:05+0000\n" +"Last-Translator: Radoslav Sloboda <rado.sloboda@gmail.com>\n" +"Language-Team: Slovak <sk@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-02-22 14:27+0000\n" +"X-Generator: Launchpad (build 12351)\n" + +#: widgets/wikimarkup/__init__.py:1981 +msgid "Table of Contents" +msgstr "Obsah" |
