1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
from odoo import models, fields, api
import logging
from datetime import datetime
_logger = logging.getLogger(__name__)
class XManufactures(models.Model):
_inherit = "x_manufactures"
last_update_solr = fields.Datetime(string='Last Update Solr')
def update_last_update_solr(self):
self.last_update_solr = datetime.utcnow()
def solr(self):
return self.env['apache.solr'].connect('brands')
def _create_solr_queue(self, function_name):
for rec in self:
self.env['apache.solr.queue'].create_unique({
'res_model': self._name,
'res_id': rec.id,
'function_name': function_name
})
@api.constrains('x_name', 'x_logo_manufacture', 'sequence', 'x_negara_asal', 'x_manufacture_level', 'x_short_desc', 'x_produk_aksesoris_sparepart','category_ids')
def _create_solr_queue_sync_brands(self):
self._create_solr_queue('_sync_brands_to_solr')
def action_sync_to_solr(self):
manufacture_ids = self.env.context.get('active_ids', [])
manufactures = self.search([('id', 'in', manufacture_ids)])
manufactures._create_solr_queue('_sync_brands_to_solr')
def _sync_brands_to_solr(self):
solr_model = self.env['apache.solr']
for brands in self:
document = {}
document.update({
'id': brands.id,
'display_name_s': brands.display_name,
'name_s': brands.x_name.lower(),
'sequence_i': brands.sequence or '',
'negara_asal_s': brands.x_negara_asal or '',
'short_desc_s': brands.x_short_desc or '',
'level_s': brands.x_manufacture_level or '',
'image_s': self.env['ir.attachment'].api_image('x_manufactures', 'x_logo_manufacture', brands.id),
'produk_aksesoris_sparepart_s': brands.x_produk_aksesoris_sparepart or '',
'category_ids': [x.id for x in brands.category_ids],
'banner_ids': [x.id for x in brands.x_manufactures_banners],
})
self.solr().add([document])
brands.update_last_update_solr()
self.solr().commit()
# def _sync_delete_solr(self):
# for rec in self:
# self.solr().delete(rec.id)
# self.solr().optimize()
# self.solr().commit()
def unlink(self):
res = super(XManufactures, self).unlink()
for rec in self:
self.solr().delete(rec.id)
self.solr().optimize()
self.solr().commit()
return res
|