diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-01-15 15:08:01 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-01-15 15:08:01 +0100 |
| commit | 4f2f29953468e4de8aedf73461b0f76dbe1eeca8 (patch) | |
| tree | 3fe8629a74b23b281d392c82500c29a4d77630d5 | |
| parent | dec9f7c4cec68863c2d4fa82235e3fd2b6def4d5 (diff) | |
| parent | 3374ac805f13ea99c7275c19f2830863382a2960 (diff) | |
[MERGE] forward port branch saas-15 up to 3374ac805f1
| -rw-r--r-- | addons/purchase/models/res_partner.py | 31 | ||||
| -rw-r--r-- | addons/website_slides/views/website_slides_embed.xml | 2 | ||||
| -rw-r--r-- | doc/cla/corporate/merchise.md | 1 | ||||
| -rw-r--r-- | odoo/models.py | 6 |
4 files changed, 32 insertions, 8 deletions
diff --git a/addons/purchase/models/res_partner.py b/addons/purchase/models/res_partner.py index 8983a4b07b3..df138af9655 100644 --- a/addons/purchase/models/res_partner.py +++ b/addons/purchase/models/res_partner.py @@ -11,11 +11,32 @@ class res_partner(models.Model): @api.multi def _purchase_invoice_count(self): - PurchaseOrder = self.env['purchase.order'] - Invoice = self.env['account.invoice'] - for partner in self: - partner.purchase_order_count = PurchaseOrder.search_count([('partner_id', 'child_of', partner.id)]) - partner.supplier_invoice_count = Invoice.search_count([('partner_id', 'child_of', partner.id), ('type', '=', 'in_invoice')]) + # retrieve all children partners and prefetch 'parent_id' on them + all_partners = self.search([('id', 'child_of', self.ids)]) + all_partners.read(['parent_id']) + + purchase_order_groups = self.env['purchase.order'].read_group( + domain=[('partner_id', 'in', all_partners.ids)], + fields=['partner_id'], groupby=['partner_id'] + ) + for group in purchase_order_groups: + partner = self.browse(group['partner_id'][0]) + while partner: + if partner in self: + partner.purchase_order_count += group['partner_id_count'] + partner = partner.parent_id + + supplier_invoice_groups = self.env['account.invoice'].read_group( + domain=[('partner_id', 'in', all_partners.ids), + ('type', '=', 'in_invoice')], + fields=['partner_id'], groupby=['partner_id'] + ) + for group in supplier_invoice_groups: + partner = self.browse(group['partner_id'][0]) + while partner: + if partner in self: + partner.supplier_invoice_count += group['partner_id_count'] + partner = partner.parent_id @api.model def _commercial_fields(self): diff --git a/addons/website_slides/views/website_slides_embed.xml b/addons/website_slides/views/website_slides_embed.xml index 72614803325..c7010c22e60 100644 --- a/addons/website_slides/views/website_slides_embed.xml +++ b/addons/website_slides/views/website_slides_embed.xml @@ -133,7 +133,7 @@ <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 text-center"></div> </div> <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2 pull-right text-right"> - <a t-if="slide.download_security and not is_embedded" target="_top" t-attf-href="/slides/slide/#{slug(slide)}/download" title="Download" id="download"> + <a t-if="slide.download_security != 'none' and not is_embedded" target="_top" t-attf-href="/slides/slide/#{slug(slide)}/download" title="Download" id="download"> <i class="fa fa-download fa-2x"></i> </a> <span id="fullscreen" title="View fullscreen"> diff --git a/doc/cla/corporate/merchise.md b/doc/cla/corporate/merchise.md index e4cbd3c3f95..64d5b277ccd 100644 --- a/doc/cla/corporate/merchise.md +++ b/doc/cla/corporate/merchise.md @@ -21,3 +21,4 @@ Medardo Rodríguez med@merchise.org https://github.com/med-merchise Abel Firvida firvida@merchise.org Abel Firvida abel@merchise.org Mónica Díaz Pena monicadp@merchise.org https://github.com/mdpena +Larisa González larisa@merchise.org diff --git a/odoo/models.py b/odoo/models.py index ac5d344b58b..2af09079344 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -2592,14 +2592,16 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): # retrieve results from records; this takes values from the cache and # computes remaining fields + self = self.with_prefetch(self._prefetch.copy()) data = {record: {'id': record.id} for record in self} missing = set() use_name_get = (load == '_classic_read') for name in (stored + inherited + computed): convert = self._fields[name].convert_to_read - # read every field with prefetching limited to self; this avoids + # restrict the prefetching of self's model to self; this avoids # computing fields on a larger recordset than self - for record in self.with_prefetch(): + self._prefetch[self._name] = set(self._ids) + for record in self: try: data[record][name] = convert(record[name], record, use_name_get) except MissingError: |
