summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/solr/x_banner_banner.py
blob: aa6e0c2a8c976f9c7d4642636547c4d3c8a9a969 (plain)
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
from odoo import models, fields, api
import logging
from datetime import datetime

_logger = logging.getLogger(__name__)

class XBannerBanner(models.Model):
    _inherit = "x_banner.banner"
    
    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('banners')

    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_url_banner', 'background_color', 'x_banner_image', 'x_banner_category', 'x_relasi_manufacture', 'x_sequence_banner', 'x_status_banner', 'sequence', 'group_by_week', 'headline_banner_s', 'description_banner_s', 'x_keyword_banner')
    def _create_solr_queue_sync_brands(self):
        self._create_solr_queue('_sync_banners_to_solr')

    def action_sync_to_solr(self):
        banner_ids = self.env.context.get('active_ids', [])
        banners = self.search([('id', 'in', banner_ids)])
        banners._create_solr_queue('_sync_banners_to_solr')

    def _sync_banners_to_solr(self):
        solr_model = self.env['apache.solr']

        for banners in self:
            document = {}
            document.update({
                'id': banners.id,
                'display_name_s': banners.display_name,
                'name_s': banners.x_name,
                'sequence_i': banners.sequence or '',
                'url_s': banners.x_url_banner or '',
                'background_color_s': banners.background_color or '',
                'image_s': self.env['ir.attachment'].api_image('x_banner.banner', 'x_banner_image', banners.id),
                'status_s': banners.x_status_banner or '',
                'category_id_i': banners.x_banner_category.id or '',
                'manufacture_id_i': banners.x_relasi_manufacture.id or '',
                'group_by_week': banners.group_by_week or '',
                'headline_banner_s': banners.x_headline_banner or '',
                'description_banner_s': banners.x_description_banner or '',
                'keyword_banner_s': banners.x_keyword_banner or '',
            })
            self.solr().add([document])
            banners.update_last_update_solr()

        self.solr().commit()

    def unlink(self):
        res = super(XBannerBanner, self).unlink()
        for rec in self:
            self.solr().delete(rec.id)
        self.solr().optimize()
        self.solr().commit()
        return res