from odoo import models, fields from datetime import datetime, timedelta import logging, re _logger = logging.getLogger(__name__) class UserActivityLog(models.Model): _name = 'user.activity.log' _rec_name = 'page_title' page_title = fields.Char(string="Judul Halaman") url = fields.Char(string="URL") res_user_id = fields.Many2one("res.users", string="User") email = fields.Char(string="Email") update_product = fields.Boolean(string="Update Product") product_id = fields.Many2one('product.template', string='Product') def compile_product(self): logs = self.env['user.activity.log'].search([ ('email', '!=', False), ('product_id', '=', False), ('url', 'ilike', 'https://indoteknik.co%/shop/product/%'), ('url', 'not ilike', 'shopping') ], limit=1000, order='create_date desc') for log in logs: _logger.info(log.url) strip_index = i = 0 for c in log.url: if c == '-': strip_index = i i += 1 product_id = log.url[strip_index + 1:len(log.url)] if '#' in product_id: continue if any(ch.isalpha() for ch in product_id): continue product = self.env['product.template'].search([ ('id', '=', product_id) ]) log.product_id = product def clean_activity_log(self): current_time = datetime.now() delta_time = current_time - timedelta(days=180) delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') self.env['user.activity.log'].search([ ('create_date', '<', delta_time), ('email', '=', 'False'), ]).unlink() def reset_rank_search_weekly(self): templates = self.env['product.template'].search([ ('type', '=', 'product'), ('active', '=', True), ('search_rank_weekly', '>', 0), ]) for template in templates: template.search_rank_weekly = 0 template.solr_flag = 2 def update_rank_search_weekly(self): current_time = datetime.now() delta_time = current_time - timedelta(days=7) # current_time = current_time.strftime('%Y-%m-%d %H:%M:%S') delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S') activity_logs = self.env['user.activity.log'].search([ ('url', 'ilike', 'https://indoteknik.co%/shop/product/%'), ('create_date', '>', delta_time), ('url', 'not ilike', 'shopping'), ], limit=1000) for activity_log in activity_logs: _logger.info(activity_log.url) strip_index = i = 0 for c in activity_log.url: if c == '-': strip_index = i i += 1 _logger.info(activity_log.url[strip_index + 1:len(activity_log.url)]) product_id = activity_log.url[strip_index + 1:len(activity_log.url)] if '#' in product_id: continue if any(ch.isalpha() for ch in product_id): continue template = self.env['product.template'].search([ ('id', '=', product_id) ], limit=1) template.search_rank_weekly = int(template.search_rank_weekly) + int(1) template.solr_flag = 2 def update_rank_search(self): activity_logs = self.env['user.activity.log'].search([ ('url', 'ilike', '%/shop/product/%'), ('update_product', '=', False), # ('url', 'not ilike', '%/shop/product/%google-ads-shopping'), # ('id', '=', 211957) ], limit=1000) for activity_log in activity_logs: _logger.info(activity_log.url) strip_index = i = 0 for c in activity_log.url: if c == '-': strip_index = i i += 1 _logger.info(activity_log.url[strip_index+1:len(activity_log.url)]) product_id = activity_log.url[strip_index+1:len(activity_log.url)] if '#' in product_id: continue if any(ch.isalpha() for ch in product_id): continue template = self.env['product.template'].search([ ('id', '=', product_id) ], limit=1) template.search_rank = int(template.search_rank) + int(1) activity_log.update_product = True