apa-tiny 2010-08-30 10:27:24 +05:30
commit 78b74198b0
17 changed files with 475 additions and 411 deletions

View File

@ -82,7 +82,7 @@
context="{'user_id': self, 'user_preference': 1}"/>
<field name="view" readonly="0"/>
<label string="" colspan="2"/>
<field name="menu_tips" colspan="2"/>
<field name="menu_tips" colspan="2" readonly="0"/>
<newline/>
<separator colspan="4" string="Preferences"/>
</page>

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 04:52+0000\n"
"Last-Translator: Ferdinand @ ChriCar <Unknown>\n"
"PO-Revision-Date: 2010-08-25 05:51+0000\n"
"Last-Translator: Ferdinand-chricar <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-08-25 03:51+0000\n"
"X-Launchpad-Export-Date: 2010-08-26 03:53+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:46+0000\n"
"PO-Revision-Date: 2010-08-29 08:13+0000\n"
"Last-Translator: Goran Kliska <gkliska@gmail.com>\n"
"Language-Team: openerp-translators\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-08-25 03:51+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
"Language: hr\n"

View File

@ -8,93 +8,93 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2009-11-24 18:49+0000\n"
"Last-Translator: Iman Sulaiman <isulaiman@hotmail.com>\n"
"PO-Revision-Date: 2010-08-28 06:59+0000\n"
"Last-Translator: Iman Sulaiman <iman_sl02@yahoo.com>\n"
"Language-Team: Indonesian <id@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: 2010-07-13 03:46+0000\n"
"X-Launchpad-Export-Date: 2010-08-29 03:43+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base
#: model:res.country,name:base.sh
msgid "Saint Helena"
msgstr ""
msgstr "Santa Helena"
#. module: base
#: wizard_view:res.partner.sms_send,init:0
msgid "SMS - Gateway: clickatell"
msgstr ""
msgstr "SMS - Gateway: clickatell"
#. module: base
#: view:res.lang:0
msgid "%j - Day of the year as a decimal number [001,366]."
msgstr ""
msgstr "%j - Hari dalam setahun sebagai angka desimal [001,366]."
#. module: base
#: field:ir.values,meta_unpickle:0
msgid "Metadata"
msgstr ""
msgstr "Metadata"
#. module: base
#: field:ir.ui.view,arch:0
#: field:ir.ui.view.custom,arch:0
msgid "View Architecture"
msgstr ""
msgstr "Arsitektur View"
#. module: base
#: code:addons/base/ir/ir_model.py:0
#, python-format
msgid "You can not create this kind of document! (%s)"
msgstr ""
msgstr "Anda tidak dapat membuat dokumen seperti ini! (%s)"
#. module: base
#: wizard_field:module.lang.import,init,code:0
msgid "Code (eg:en__US)"
msgstr ""
msgstr "Kode (misal:en__US)"
#. module: base
#: view:workflow:0
#: field:workflow.activity,wkf_id:0
#: field:workflow.instance,wkf_id:0
msgid "Workflow"
msgstr ""
msgstr "Alur kerja"
#. module: base
#: view:wizard.module.lang.export:0
msgid "To browse official translations, you can visit this link: "
msgstr ""
msgstr "Untuk mencari penterjemahan resmi, anda bisa kunjungi tautan ini: "
#. module: base
#: selection:module.lang.install,init,lang:0
msgid "Hungarian / Magyar"
msgstr ""
msgstr "Bahasa Hungaria"
#. module: base
#: field:ir.actions.server,wkf_model_id:0
msgid "Workflow On"
msgstr ""
msgstr "Alur kerja Pada"
#. module: base
#: view:ir.module.module:0
msgid "Created Views"
msgstr ""
msgstr "View Tercipta"
#. module: base
#: view:workflow.activity:0
msgid "Outgoing transitions"
msgstr ""
msgstr "Transisi Keluar"
#. module: base
#: selection:ir.report.custom,frequency:0
msgid "Yearly"
msgstr ""
msgstr "Tahunan"
#. module: base
#: field:ir.actions.act_window,target:0
msgid "Target Window"
msgstr ""
msgstr "Jendela Sasaran"
#. module: base
#: model:ir.actions.todo,note:base.config_wizard_simple_view
@ -107,6 +107,12 @@ msgid ""
"understand. You will be able to switch to the extended view later.\n"
" "
msgstr ""
"Pilih antara \"Antaramuka Sederhana\" atau yang diperluas.\n"
"Jika anda sedang mencoba atau menggunakan OpenERP untuk pertama kalinya, "
"kami sarankan untuk menggunakan antarmuka sederhana, yang memiliki sedikit "
"opsi dan field namun mudah untuk dipahami dan anda masih dapat merubahnya ke "
"antarmuka yang diperluas nantinya.\n"
" "
#. module: base
#: field:ir.rule,operand:0
@ -116,93 +122,93 @@ msgstr ""
#. module: base
#: model:res.country,name:base.kr
msgid "South Korea"
msgstr ""
msgstr "Korea Selatan"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_transition_form
#: model:ir.ui.menu,name:base.menu_workflow_transition
#: view:workflow.activity:0
msgid "Transitions"
msgstr ""
msgstr "Transisi"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_custom
msgid "ir.ui.view.custom"
msgstr ""
msgstr "ir.ui.view.custom"
#. module: base
#: model:res.country,name:base.sz
msgid "Swaziland"
msgstr ""
msgstr "Swaziland"
#. module: base
#: model:ir.model,name:base.model_ir_actions_report_custom
#: selection:ir.ui.menu,action:0
msgid "ir.actions.report.custom"
msgstr ""
msgstr "ir.actions.report.custom"
#. module: base
#: selection:ir.ui.menu,icon:0
msgid "STOCK_CANCEL"
msgstr ""
msgstr "STOCK_CANCEL"
#. module: base
#: field:ir.report.custom,sortby:0
msgid "Sorted By"
msgstr ""
msgstr "Diurut Berdasarkan"
#. module: base
#: field:ir.sequence,number_increment:0
msgid "Increment Number"
msgstr ""
msgstr "Kenaikan Angka"
#. module: base
#: model:ir.actions.act_window,name:base.action_res_company_tree
#: model:ir.ui.menu,name:base.menu_action_res_company_tree
msgid "Company's Structure"
msgstr ""
msgstr "Struktur Perusahaan"
#. module: base
#: model:ir.model,name:base.model_ir_report_custom_fields
msgid "ir.report.custom.fields"
msgstr ""
msgstr "ir.report.custom.fields"
#. module: base
#: view:res.partner:0
msgid "Search Partner"
msgstr ""
msgstr "Pencarian Partner"
#. module: base
#: code:addons/base/module/wizard/wizard_export_lang.py:0
#, python-format
msgid "new"
msgstr ""
msgstr "baru"
#. module: base
#: selection:ir.ui.menu,icon:0
msgid "STOCK_GOTO_TOP"
msgstr ""
msgstr "STOCK_GOTO_TOP"
#. module: base
#: field:ir.actions.report.custom,multi:0
#: field:ir.actions.report.xml,multi:0
msgid "On multiple doc."
msgstr ""
msgstr "Pada multi dok."
#. module: base
#: field:ir.module.category,module_nr:0
msgid "Number of Modules"
msgstr ""
msgstr "Jumlah Modul"
#. module: base
#: field:res.partner.bank.type.field,size:0
msgid "Max. Size"
msgstr ""
msgstr "Ukuran Maksimal"
#. module: base
#: field:res.partner.address,name:0
msgid "Contact Name"
msgstr ""
msgstr "Nama Kontak"
#. module: base
#: code:addons/base/module/wizard/wizard_export_lang.py:0
@ -211,142 +217,145 @@ msgid ""
"Save this document to a %s file and edit it with a specific software or a "
"text editor. The file encoding is UTF-8."
msgstr ""
"Simpan dokumen ini ke dalam file %s dan editlah menggunakan program text "
"editor. Gunakan encoding UTF-8."
#. module: base
#: selection:ir.ui.menu,icon:0
msgid "STOCK_DELETE"
msgstr ""
msgstr "STOCK_DELETE"
#. module: base
#: code:addons/base/ir/ir_model.py:0
#, python-format
msgid "Password mismatch !"
msgstr ""
msgstr "Password tidak sama!"
#. module: base
#: code:addons/base/module/module.py:0
#, python-format
msgid "This url '%s' must provide an html file with links to zip modules"
msgstr ""
"Url '%s' ini harus memiliki sebuah file html dengan tautan ke module zip"
#. module: base
#: selection:res.request,state:0
msgid "active"
msgstr ""
msgstr "aktif"
#. module: base
#: field:ir.actions.wizard,wiz_name:0
msgid "Wizard Name"
msgstr ""
msgstr "Nama Wizard"
#. module: base
#: view:res.lang:0
msgid "%y - Year without century as a decimal number [00,99]."
msgstr ""
msgstr "%y - Tahun tanpa abad sebagai angka desimal [00,99]."
#. module: base
#: selection:ir.ui.menu,icon:0
msgid "STOCK_GOTO_FIRST"
msgstr ""
msgstr "STOCK_GOTO_FIRST"
#. module: base
#: help:ir.rule.group,rules:0
msgid "The rule is satisfied if at least one test is True"
msgstr ""
msgstr "Aturan ini memuaskan jika setidaknya satu test Benar"
#. module: base
#: selection:ir.report.custom.fields,operation:0
msgid "Get Max"
msgstr ""
msgstr "Dapatkan Mak"
#. module: base
#: help:ir.actions.act_window,limit:0
msgid "Default limit for the list view"
msgstr ""
msgstr "Batas baku untuk daftar view"
#. module: base
#: field:ir.model.data,date_update:0
msgid "Update Date"
msgstr ""
msgstr "Tanggal Pembaharuan"
#. module: base
#: field:ir.actions.act_window,src_model:0
msgid "Source Object"
msgstr ""
msgstr "Sumber Obyek"
#. module: base
#: model:ir.actions.act_window,name:base.act_ir_actions_todo_form
#: view:ir.actions.todo:0
#: model:ir.ui.menu,name:base.menu_ir_actions_todo_form
msgid "Config Wizard Steps"
msgstr ""
msgstr "Langkah Konfigurasi Wizard"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_sc
msgid "ir.ui.view_sc"
msgstr ""
msgstr "ir.ui.view_sc"
#. module: base
#: field:ir.model.access,group_id:0
#: field:ir.rule,rule_group:0
msgid "Group"
msgstr ""
msgstr "Grup"
#. module: base
#: field:ir.exports.line,name:0
#: field:ir.translation,name:0
#: field:res.partner.bank.type.field,name:0
msgid "Field Name"
msgstr ""
msgstr "Nama Kolom"
#. module: base
#: model:ir.actions.act_window,name:base.open_module_tree_uninstall
#: model:ir.ui.menu,name:base.menu_module_tree_uninstall
msgid "Uninstalled modules"
msgstr ""
msgstr "Modul belum terinstal"
#. module: base
#: selection:ir.actions.report.xml,report_type:0
msgid "txt"
msgstr ""
msgstr "txt"
#. module: base
#: wizard_view:server.action.create,init:0
#: wizard_field:server.action.create,init,type:0
msgid "Select Action Type"
msgstr ""
msgstr "Pilih Jenis Aksi"
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Configure"
msgstr ""
msgstr "Konfigur"
#. module: base
#: model:res.country,name:base.tv
msgid "Tuvalu"
msgstr ""
msgstr "Tuvalu"
#. module: base
#: selection:ir.model,state:0
#: selection:ir.model.grid,state:0
msgid "Custom Object"
msgstr ""
msgstr "Obyek Kesukaan"
#. module: base
#: field:res.lang,date_format:0
msgid "Date Format"
msgstr ""
msgstr "Format Tanggal"
#. module: base
#: field:res.bank,email:0
#: field:res.partner.address,email:0
msgid "E-Mail"
msgstr ""
msgstr "E-Mail"
#. module: base
#: model:res.country,name:base.an
msgid "Netherlands Antilles"
msgstr ""
msgstr "Netherlands Antilles"
#. module: base
#: code:addons/base/res/res_user.py:0
@ -355,21 +364,23 @@ msgid ""
"You can not remove the admin user as it is used internally for resources "
"created by OpenERP (updates, module installation, ...)"
msgstr ""
"Anda tidak dapat menghapus pengguna admin sebab digunakan secara internal "
"sebagai sumber yang dibuat oleh OpenERP (pembaharuan, instalasi modul, ...)"
#. module: base
#: model:res.country,name:base.gf
msgid "French Guyana"
msgstr ""
msgstr "Guyana Perancis"
#. module: base
#: field:ir.ui.view.custom,ref_id:0
msgid "Original View"
msgstr ""
msgstr "View Asli"
#. module: base
#: selection:module.lang.install,init,lang:0
msgid "Bosnian / bosanski jezik"
msgstr ""
msgstr "Bosnia"
#. module: base
#: help:ir.actions.report.xml,attachment_use:0
@ -381,27 +392,27 @@ msgstr ""
#. module: base
#: help:res.lang,iso_code:0
msgid "This ISO code is the name of po files to use for translations"
msgstr ""
msgstr "Kode ISO ini adalah nama file po untuk digunakan pada penerjemahan"
#. module: base
#: selection:ir.ui.menu,icon:0
msgid "STOCK_MEDIA_REWIND"
msgstr ""
msgstr "STOCK_MEDIA_REWIND"
#. module: base
#: field:ir.actions.todo,note:0
msgid "Text"
msgstr ""
msgstr "Teks"
#. module: base
#: field:res.country,name:0
msgid "Country Name"
msgstr ""
msgstr "Nama Negara"
#. module: base
#: model:res.country,name:base.coreturn
msgid "Colombia"
msgstr ""
msgstr "Kolombia"
#. module: base
#: view:ir.module.module:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:43+0000\n"
"PO-Revision-Date: 2010-08-29 07:51+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-08-25 03:51+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

View File

@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:38+0000\n"
"PO-Revision-Date: 2010-08-29 07:42+0000\n"
"Last-Translator: Harry (Open ERP) <hmo@tinyerp.com>\n"
"Language-Team: Japanese <ja@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: 2010-08-25 03:51+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

File diff suppressed because it is too large Load Diff

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: pt_BR\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:48+0000\n"
"PO-Revision-Date: 2010-08-29 07:32+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: <pt@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: 2010-08-25 03:52+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:55+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:34+0000\n"
"PO-Revision-Date: 2010-08-29 07:36+0000\n"
"Last-Translator: Anders Wallenquist <anders.wallenquist@vertel.se>\n"
"Language-Team: <>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-08-25 03:51+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:41+0000\n"
"PO-Revision-Date: 2010-08-29 07:46+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-08-25 03:51+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:54+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-12-18 08:39+0000\n"
"PO-Revision-Date: 2010-08-24 05:44+0000\n"
"PO-Revision-Date: 2010-08-29 08:07+0000\n"
"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-08-25 03:52+0000\n"
"X-Launchpad-Export-Date: 2010-08-30 03:55+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: base

View File

@ -64,20 +64,30 @@ class ir_translation(osv.osv):
def _auto_init(self, cr, context={}):
super(ir_translation, self)._auto_init(cr, context)
# FIXME: there is a size limit on btree indexed values so we can't index src column with normal btree.
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_translation_ltns',))
if not cr.fetchone():
cr.execute('CREATE INDEX ir_translation_ltns ON ir_translation (lang, type, name, src)')
if cr.fetchone():
#temporarily removed: cr.execute('CREATE INDEX ir_translation_ltns ON ir_translation (name, lang, type, src)')
cr.execute('DROP INDEX ir_translation_ltns')
cr.commit()
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_translation_lts',))
if cr.fetchone():
#temporarily removed: cr.execute('CREATE INDEX ir_translation_lts ON ir_translation (lang, type, src)')
cr.execute('DROP INDEX ir_translation_lts')
cr.commit()
# add separate hash index on src (no size limit on values), as postgres 8.1+ is able to combine separate indexes
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_translation_src_hash_idx',))
if not cr.fetchone():
cr.execute('CREATE INDEX ir_translation_src_hash_idx ON ir_translation using hash (src)')
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_translation_ltn',))
if not cr.fetchone():
cr.execute('CREATE INDEX ir_translation_ltn ON ir_translation (lang, type, name)')
cr.execute('CREATE INDEX ir_translation_ltn ON ir_translation (name, lang, type)')
cr.commit()
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = %s', ('ir_translation_lts',))
if not cr.fetchone():
cr.execute('CREATE INDEX ir_translation_lts ON ir_translation (lang, type, src)')
cr.commit()
@tools.cache(skiparg=3, multi='ids')
def _get_ids(self, cr, uid, name, tt, lang, ids):

View File

@ -153,11 +153,9 @@
<rng:choice>
<rng:ref name="field"/>
<rng:ref name="group"/>
<rng:ref name="label" />
<rng:ref name="separator"/>
<rng:ref name="filter"/>
<rng:ref name="search"/>
<rng:ref name="html"/>
<rng:element name="newline"><rng:empty/></rng:element>
<rng:element name="properties"><rng:empty/></rng:element>
</rng:choice>

View File

@ -108,7 +108,7 @@ class ExportService(object):
def __init__(self, name, audience=''):
ExportService._services[name] = self
self.__name = name
self._logger.info("Exported service registered: %s" % name)
self._logger.debug("Registered an exported service: %s" % name)
def joinGroup(self, name):
ExportService._groups.setdefault(name, {})[self.__name] = self

View File

@ -218,8 +218,6 @@ class browse_record(object):
raise KeyError('Field %s not found in %s'%(name,self))
# create browse records for 'remote' objects
for result_line in field_values:
if len(str(result_line['id']).split('-')) > 1:
result_line['id'] = int(str(result_line['id']).split('-')[0])
new_data = {}
for field_name, field_column in fields_to_fetch:
if field_column._type in ('many2one', 'one2one'):
@ -1832,7 +1830,33 @@ class orm_template(object):
def _check_removed_columns(self, cr, log=False):
raise NotImplementedError()
def _add_missing_default_values(self, cr, uid, values, context=None):
missing_defaults = []
avoid_tables = [] # avoid overriding inherited values when parent is set
for tables, parent_field in self._inherits.items():
if parent_field in values:
avoid_tables.append(tables)
for field in self._columns.keys():
if not field in values:
missing_defaults.append(field)
for field in self._inherit_fields.keys():
if (field not in values) and (self._inherit_fields[field][0] not in avoid_tables):
missing_defaults.append(field)
if len(missing_defaults):
# override defaults with the provided values, never allow the other way around
defaults = self.default_get(cr, uid, missing_defaults, context)
for dv in defaults:
# FIXME: also handle inherited m2m
if dv in self._columns and self._columns[dv]._type == 'many2many' \
and defaults[dv] and isinstance(defaults[dv][0], (int, long)):
defaults[dv] = [(6, 0, defaults[dv])]
defaults.update(values)
values = defaults
return values
class orm_memory(orm_template):
_protected = ['read', 'write', 'create', 'default_get', 'perm_read', 'unlink', 'fields_get', 'fields_view_get', 'search', 'name_get', 'distinct_field_get', 'name_search', 'copy', 'import_data', 'search_count', 'exists']
_inherit_fields = {}
_max_count = 200
@ -1923,12 +1947,9 @@ class orm_memory(orm_template):
self.vaccum(cr, user)
self.next_id += 1
id_new = self.next_id
default = []
for f in self._columns.keys():
if not f in vals:
default.append(f)
if len(default):
vals.update(self.default_get(cr, user, default, context))
vals = self._add_missing_default_values(cr, user, vals, context)
vals2 = {}
upd_todo = []
for field in vals:
@ -2103,7 +2124,7 @@ class orm(orm_template):
if groupby:
if groupby and isinstance(groupby, list):
groupby = groupby[0]
tables, where_clause = self._inherits_join_calc(groupby,tables,where_clause)
tables, where_clause, qfield = self._inherits_join_calc(groupby,tables,where_clause)
if len(where_clause):
where_clause = ' where '+string.join(where_clause, ' and ')
@ -2194,6 +2215,9 @@ class orm(orm_template):
:param tables: list of table._table names enclosed in double quotes as returned
by _where_calc()
:param where_clause: current list of WHERE clause params
:return: (table, where_clause, qualified_field) where ``table`` and ``where_clause`` are the updated
versions of the parameters, and ``qualified_field`` is the qualified name of ``field``
in the form ``table.field``, to be referenced in queries.
"""
current_table = self
while field in current_table._inherit_fields and not field in current_table._columns:
@ -2201,7 +2225,7 @@ class orm(orm_template):
parent_table = self.pool.get(parent_model_name)
self._inherits_join_add(parent_model_name, tables, where_clause)
current_table = parent_table
return (tables, where_clause)
return (tables, where_clause, '"%s".%s' % (current_table._table, field))
def _parent_store_compute(self, cr):
if not self._parent_store:
@ -2468,15 +2492,24 @@ class orm(orm_template):
elif not f.required and f_pg_notnull == 1:
cr.execute('ALTER TABLE "%s" ALTER COLUMN "%s" DROP NOT NULL' % (self._table, k))
cr.commit()
# Verify index
indexname = '%s_%s_index' % (self._table, k)
cr.execute("SELECT indexname FROM pg_indexes WHERE indexname = %s and tablename = %s", (indexname, self._table))
res2 = cr.dictfetchall()
if not res2 and f.select:
cr.execute('CREATE INDEX "%s_%s_index" ON "%s" ("%s")' % (self._table, k, self._table, k))
cr.commit()
if f._type == 'text':
# FIXME: for fields.text columns we should try creating GIN indexes instead (seems most suitable for an ERP context)
logger.notifyChannel('orm', netsvc.LOG_WARNING, "Adding (b-tree) index for text column '%s' in table '%s'."\
"This is probably useless (does not work for fulltext search) and prevents INSERTs of long texts because there is a length limit for indexable btree values!\n"\
"Use a search view instead if you simply want to make the field searchable." % (k, f._type, self._table))
if res2 and not f.select:
cr.execute('DROP INDEX "%s_%s_index"' % (self._table, k))
cr.commit()
logger.notifyChannel('orm', netsvc.LOG_WARNING, "Dropping index for column '%s' of type '%s' in table '%s' as it is not required anymore" % (k, f._type, self._table))
if isinstance(f, fields.many2one):
ref = self.pool.get(f._obj)._table
if ref != 'ir_actions':
@ -3375,28 +3408,7 @@ class orm(orm_template):
context = {}
self.pool.get('ir.model.access').check(cr, user, self._name, 'create', context=context)
default = []
avoid_table = []
for (t, c) in self._inherits.items():
if c in vals:
avoid_table.append(t)
for f in self._columns.keys(): # + self._inherit_fields.keys():
if not f in vals:
default.append(f)
for f in self._inherit_fields.keys():
if (not f in vals) and (self._inherit_fields[f][0] not in avoid_table):
default.append(f)
if len(default):
default_values = self.default_get(cr, user, default, context)
for dv in default_values:
if dv in self._columns and self._columns[dv]._type == 'many2many':
if default_values[dv] and isinstance(default_values[dv][0], (int, long)):
default_values[dv] = [(6, 0, default_values[dv])]
vals.update(default_values)
vals = self._add_missing_default_values(cr, user, vals, context)
tocreate = {}
for v in self._inherits:
@ -3824,11 +3836,8 @@ class orm(orm_template):
elif (o in self._inherit_fields):
parent_obj = self.pool.get(self._inherit_fields[o][0])
if getattr(parent_obj._columns[o], '_classic_read'):
# Allowing inherits'ed field for server side sorting
inherited_tables, inherit_join = self._inherits_join_calc(o, tables, where_clause)
if inherited_tables:
inherited_sort_table = inherited_tables[0]
order_by = inherited_sort_table + '.' + order
# Allowing inherits'ed field for server side sorting, if they can be sorted by the dbms
inherited_tables, inherit_join, order_by = self._inherits_join_calc(o, tables, where_clause)
limit_str = limit and ' limit %d' % limit or ''
offset_str = offset and ' offset %d' % offset or ''

View File

@ -214,7 +214,8 @@ class FloatObject(decimal.Decimal, PdfObject):
class NumberObject(int, PdfObject):
def __init__(self, value):
int.__init__(self, value)
int.__init__(self)
self = value
def writeToStream(self, stream, encryption_key):
stream.write(repr(self))
@ -404,7 +405,8 @@ class NameObject(str, PdfObject):
delimiterCharacters = "(", ")", "<", ">", "[", "]", "{", "}", "/", "%"
def __init__(self, data):
str.__init__(self, data)
str.__init__(self)
self = data
def writeToStream(self, stream, encryption_key):
stream.write(self)

View File

@ -50,7 +50,6 @@ import utils
import warnings
from generic import *
from utils import readNonWhitespace, readUntilWhitespace, ConvertFunctionsToVirtualList
from sets import ImmutableSet
##
# This class supports writing PDF files out, given pages produced by another
@ -987,8 +986,8 @@ class PageObject(DictionaryObject):
# Combine /ProcSet sets.
newResources[NameObject("/ProcSet")] = ArrayObject(
ImmutableSet(originalResources.get("/ProcSet", ArrayObject()).getObject()).union(
ImmutableSet(page2Resources.get("/ProcSet", ArrayObject()).getObject())
frozenset(originalResources.get("/ProcSet", ArrayObject()).getObject()).union(
frozenset(page2Resources.get("/ProcSet", ArrayObject()).getObject())
)
)