summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/user_activity_log.py
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2024-02-29 14:21:05 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2024-02-29 14:21:05 +0700
commit0b5b43646b92298dddcdb7eec1a590d90cadd1e8 (patch)
tree2b34e0e79bc2612183831a35f96fb7550d17f99b /indoteknik_custom/models/user_activity_log.py
parentee48a727e2617d8e094847dfb5bf9d5279db165a (diff)
Update feature user activity log with utm source
Diffstat (limited to 'indoteknik_custom/models/user_activity_log.py')
-rwxr-xr-xindoteknik_custom/models/user_activity_log.py188
1 files changed, 0 insertions, 188 deletions
diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py
deleted file mode 100755
index 9630e3ab..00000000
--- a/indoteknik_custom/models/user_activity_log.py
+++ /dev/null
@@ -1,188 +0,0 @@
-from odoo import models, fields, api
-from odoo.http import request
-from datetime import datetime, timedelta
-import logging, re
-import requests
-import json
-
-_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")
- ip_address = fields.Char('IP Address')
- ip_address_lookup = fields.Text('IP Address Lookup')
- ip_location_city = fields.Text('IP Location City')
- ip_location_country = fields.Text('IP Location Country')
- ip_location_country_code = fields.Text('IP Location Country Code')
- ip_location_map = fields.Html('Embedded Map', compute='_compute_ip_location_map', sanitize=False)
- 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 _parse_json(self, json_string, key):
- result = ''
- if json_string:
- json_object = json.loads(json_string)
- if key in json_object:
- result = json_object[key]
- return result
-
- def _compute_ip_location_map(self):
- self.ip_location_map = ""
- ip_location_lat = self._parse_json(self.ip_address_lookup, 'lat')
- ip_location_lon = self._parse_json(self.ip_address_lookup, 'lon')
- url = 'https://maps.google.com/maps?q=%s,%s&amp;hl=id&amp;z=15&amp;output=embed' % (ip_location_lat, ip_location_lon)
- if ip_location_lat and ip_location_lon:
- self.ip_location_map = "<iframe width='100%' height='500' frameborder='1' scrolling='no' src='"+ url +"'></iframe>"
-
- def _parse_ip_location(self):
- domain = [
- ('ip_address_lookup', '!=', False),
- ('ip_location_city', '=', False),
- ('ip_location_country', '=', False),
- ('ip_location_country_code', '=', False),
- ]
- logs = self.search(domain, limit=200, order='create_date asc')
- for log in logs:
- log.ip_location_city = self._parse_json(log.ip_address_lookup, 'city')
- log.ip_location_country = self._parse_json(log.ip_address_lookup, 'country')
- log.ip_location_country_code = self._parse_json(log.ip_address_lookup, 'countryCode')
-
- def _load_ip_address_lookup(self):
- domain = [
- ('ip_address', '!=', False),
- ('ip_address_lookup', '=', False),
- ]
- logs = self.search(domain, limit=45, order='create_date asc')
- for log in logs:
- try:
- ipinfo = requests.get('http://ip-api.com/json/%s' % log.ip_address).json()
- del ipinfo['status']
- log.ip_address_lookup = json.dumps(ipinfo, indent=4, sort_keys=True)
- except:
- log.ip_address_lookup = ''
- self._parse_ip_location()
-
- def record_activity(self):
- try:
- httprequest = request.httprequest
- if httprequest.remote_addr != '127.0.0.1':
- self.env['user.activity.log'].sudo().create([{
- 'page_title': request.env['ir.config_parameter'].get_param('web.base.url'),
- 'url': httprequest.base_url,
- 'ip_address': httprequest.remote_addr
- }])
- return True
- except:
- return False
-
- 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)
-
- delta_time = delta_time.strftime('%Y-%m-%d %H:%M:%S')
-
- activity_logs = self.env['user.activity.log'].search([
- ('url', 'ilike', 'https://indoteknik.com%/shop/product/%'),
- ('create_date', '>', delta_time),
- ('url', 'not ilike', 'shopping'),
- ], limit=2000, order='create_date DESC')
-
- 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', '=', int(product_id))
- ], limit=1)
- if template:
- template.search_rank_weekly += 1
- template.solr_flag = 2
-
- def update_rank_search(self):
- activity_logs = self.env['user.activity.log'].search([
- ('url', 'ilike', '%/shop/product/%'),
- ('update_product', '!=', True),
- ], limit=1000, order='create_date DESC')
-
- 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', '=', int(product_id))
- ], limit=1)
- if template:
- template.search_rank += 1
- activity_log.update_product = True
-
-
-