diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2024-02-29 14:21:05 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2024-02-29 14:21:05 +0700 |
| commit | 0b5b43646b92298dddcdb7eec1a590d90cadd1e8 (patch) | |
| tree | 2b34e0e79bc2612183831a35f96fb7550d17f99b /indoteknik_custom/models | |
| parent | ee48a727e2617d8e094847dfb5bf9d5279db165a (diff) | |
Update feature user activity log with utm source
Diffstat (limited to 'indoteknik_custom/models')
| -rwxr-xr-x | indoteknik_custom/models/__init__.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/web_logging/__init__.py | 2 | ||||
| -rw-r--r--[-rwxr-xr-x] | indoteknik_custom/models/web_logging/user_activity_log.py (renamed from indoteknik_custom/models/user_activity_log.py) | 47 | ||||
| -rw-r--r-- | indoteknik_custom/models/web_logging/web_utm_source.py | 17 |
4 files changed, 59 insertions, 9 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index 7c5e46e6..69cbffca 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -33,7 +33,6 @@ from . import stock_picking_return from . import stock_picking_type from . import stock_picking from . import stock_vendor -from . import user_activity_log from . import user_company_request from . import users from . import website_brand_homepage @@ -103,3 +102,4 @@ from . import report_logbook_sj from . import role_permission from . import cust_commision from . import report_stock_forecasted +from . import web_logging
\ No newline at end of file diff --git a/indoteknik_custom/models/web_logging/__init__.py b/indoteknik_custom/models/web_logging/__init__.py new file mode 100644 index 00000000..9c686e54 --- /dev/null +++ b/indoteknik_custom/models/web_logging/__init__.py @@ -0,0 +1,2 @@ +from . import web_utm_source +from . import user_activity_log
\ No newline at end of file diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/web_logging/user_activity_log.py index 9630e3ab..f48e9352 100755..100644 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/web_logging/user_activity_log.py @@ -1,9 +1,12 @@ -from odoo import models, fields, api -from odoo.http import request +import json +import logging +import re from datetime import datetime, timedelta -import logging, re + import requests -import json +from odoo import fields, models, api +from odoo.http import request +from urllib.parse import urlparse, parse_qs _logger = logging.getLogger(__name__) @@ -14,16 +17,44 @@ class UserActivityLog(models.Model): 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') + utm_source_id = fields.Many2one('web.utm.source', string='UTM Source') + 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') + + + # @api.constrains('url') + # def _constrains_url(self): + # for rec in self: + # rec.fill_utm_source() + @api.model + def create(self, vals): + result = super(UserActivityLog, self).create(vals) + result.fill_utm_source() + return result + + def fill_utm_source(self): + for rec in self: + if not rec.url: + rec.utm_source_id = False + continue + + parsed_url = urlparse(rec.url) + params = parse_qs(parsed_url.query) + utm_source_value = params.get('utm_source') + + if not utm_source_value: continue + + utm_source = self.env['web.utm.source'].find_or_create_key(utm_source_value[0]) + rec.utm_source_id = utm_source.id or False def _parse_json(self, json_string, key): result = '' diff --git a/indoteknik_custom/models/web_logging/web_utm_source.py b/indoteknik_custom/models/web_logging/web_utm_source.py new file mode 100644 index 00000000..baeb0e9b --- /dev/null +++ b/indoteknik_custom/models/web_logging/web_utm_source.py @@ -0,0 +1,17 @@ +from odoo import fields, models + + +class UserActivityLog(models.Model): + _name = 'web.utm.source' + + name = fields.Char(string='Name') + key = fields.Char(string='Key', unique=True) + + def find_or_create_key(self, key): + utm_source = self.search([('key', '=', key)], limit=1) + if not utm_source: + utm_source = self.create({ + 'name': key, + 'key': key + }) + return utm_source
\ No newline at end of file |
