diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-02-07 13:55:39 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-02-07 13:55:39 +0700 |
| commit | e62b025b68dcba1b079d6e028458d99116f66946 (patch) | |
| tree | 32a6d9e9b821a5fa9a1530671b3c99b20633c006 | |
| parent | 5408b3a7214704742f350b483f48c34e1c84a525 (diff) | |
ip lookup and record request
4 files changed, 35 insertions, 14 deletions
diff --git a/indoteknik_api/controllers/__pycache__/controller.cpython-38.pyc.3117987094576 b/indoteknik_api/controllers/__pycache__/controller.cpython-38.pyc.3117987094576 new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/indoteknik_api/controllers/__pycache__/controller.cpython-38.pyc.3117987094576 diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py index c90d3ff1..ffa4e24b 100644 --- a/indoteknik_api/controllers/controller.py +++ b/indoteknik_api/controllers/controller.py @@ -86,6 +86,7 @@ class Controller(http.Controller): return time def response(self, data=[], code=200, description='OK'): + request.env['user.activity.log'].record_activity() response = { 'status': { 'code': code, diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 1bb067ab..ad226b74 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -1,4 +1,5 @@ from odoo import models, fields, api +from odoo.http import request from datetime import datetime, timedelta import logging, re import requests @@ -14,21 +15,36 @@ class UserActivityLog(models.Model): 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', compute="_compute_ip_address_lookup") + ip_address_lookup = fields.Text('IP Address Lookup') 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 _compute_ip_address_lookup(self): - for log in self: - if log.ip_address and not log.ip_address_lookup: - try: - ipinfo = requests.get('https://ipinfo.io/%s/json' % log.ip_address).json() - del ipinfo['readme'] - log.ip_address_lookup = json.dumps(ipinfo, indent=4, sort_keys=True) - except: - log.ip_address_lookup = '' + 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() + log.ip_address_lookup = json.dumps(ipinfo, indent=4, sort_keys=True) + except: + log.ip_address_lookup = '' + + def record_activity(self): + try: + httprequest = request.httprequest + 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([ diff --git a/indoteknik_custom/views/user_activity_log.xml b/indoteknik_custom/views/user_activity_log.xml index 9964620a..b0082c3b 100755 --- a/indoteknik_custom/views/user_activity_log.xml +++ b/indoteknik_custom/views/user_activity_log.xml @@ -4,12 +4,12 @@ <field name="name">user.activity.log.tree</field> <field name="model">user.activity.log</field> <field name="arch" type="xml"> - <tree default_order="create_date desc" create="0"> + <tree default_order="create_date desc" create="0" export_xlsx="0"> <field name="create_date"/> <field name="page_title"/> + <field name="ip_address"/> <field name="url" widget="url"/> <field name="res_user_id"/> - <field name="ip_address"/> <field name="email"/> </tree> </field> @@ -27,11 +27,15 @@ <field name="page_title"/> <field name="url" widget="url"/> <field name="res_user_id"/> - <field name="ip_address"/> - <field name="ip_address_lookup"/> <field name="email"/> + <field name="ip_address"/> </group> </group> + <notebook> + <page string="IP Address Lookup"> + <field name="ip_address_lookup"/> + </page> + </notebook> </sheet> </form> </field> |
