summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-02-07 13:55:39 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-02-07 13:55:39 +0700
commite62b025b68dcba1b079d6e028458d99116f66946 (patch)
tree32a6d9e9b821a5fa9a1530671b3c99b20633c006
parent5408b3a7214704742f350b483f48c34e1c84a525 (diff)
ip lookup and record request
-rw-r--r--indoteknik_api/controllers/__pycache__/controller.cpython-38.pyc.31179870945760
-rw-r--r--indoteknik_api/controllers/controller.py1
-rwxr-xr-xindoteknik_custom/models/user_activity_log.py36
-rwxr-xr-xindoteknik_custom/views/user_activity_log.xml12
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>