From 46cc2c3deb299cc61c14a0675221b811aaf999b8 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Fri, 27 Jan 2023 10:42:46 +0700 Subject: initial commit for midtrans development --- indoteknik_custom/models/midtrans.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 indoteknik_custom/models/midtrans.py (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/midtrans.py b/indoteknik_custom/models/midtrans.py new file mode 100644 index 00000000..9546ff64 --- /dev/null +++ b/indoteknik_custom/models/midtrans.py @@ -0,0 +1,32 @@ +from odoo import fields, models, api +import logging + +_logger = logging.getLogger(__name__) + + +class MidtransNotification(models.Model): + _name = 'midtrans.notification' + + json_raw = fields.Char(string='JSON Raw Text') + sale_order_id = fields.Many2one('sale.order', string='Sales Order') + payment_status = fields.Selection([ + ('pending', 'Pending'), + ('capture', 'Capture'), + ('settlement', 'Settlement'), + ('deny', 'Deny'), + ('cancel', 'Cancel'), + ('expire', 'Expire'), + ('failure', 'Failure'), + ('refund', 'Refund'), + ('chargeback', 'Chargeback'), + ('partial_refund', 'Partial Refund'), + ('partial_chargeback', 'Partial Chargeback'), + ('authorize', 'Authorize'), + ], string='Payment Status', + help='Payment Gateway Status / Midtrans / Web, https://docs.midtrans.com/en/after-payment/status-cycle') + + +class MidtransRecurring(models.Model): + _name = 'midtrans.recurring' + + json_raw = fields.Char(string='JSON Raw Text') \ No newline at end of file -- cgit v1.2.3 From 669b9de298ed3667fc6aaf1e6070604c1799a0a8 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Fri, 27 Jan 2023 10:56:07 +0700 Subject: bug fix unauthorized sale order --- indoteknik_custom/models/__init__.py | 1 + indoteknik_custom/security/ir.model.access.csv | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py index c6fb7d4f..121bd0f4 100755 --- a/indoteknik_custom/models/__init__.py +++ b/indoteknik_custom/models/__init__.py @@ -46,3 +46,4 @@ from . import x_partner_purchase_order from . import x_product_tags from . import website_ads from . import leads_monitoring +from . import midtrans diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index d469aa1e..c755c11a 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -27,4 +27,6 @@ access_website_content,access.website.content,model_website_content,,1,1,1,1 access_invoice_reklas,access.invoice.reklas,model_invoice_reklas,,1,1,1,1 access_custom_mail_marketing,access.custom.mail.marketing,model_custom_mail_marketing,,1,1,1,1 access_website_ads,access.website.ads,model_website_ads,,1,1,1,1 -access_leads_monitoring,access.leads.monitoring,model_leads_monitoring,,1,1,1,1 \ No newline at end of file +access_leads_monitoring,access.leads.monitoring,model_leads_monitoring,,1,1,1,1 +access_midtrans_notification,access.midtrans.notification,model_midtrans_notification,,1,1,1,1 +access_midtrans_recurring,access.midtrans.recurring,model_midtrans_recurring,,1,1,1,1 \ No newline at end of file -- cgit v1.2.3 From daf2b9581e8d1d72a72c7b01e760c4e67407472e Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Fri, 27 Jan 2023 11:05:53 +0700 Subject: add midtrans pay account notification --- indoteknik_custom/models/midtrans.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/midtrans.py b/indoteknik_custom/models/midtrans.py index 9546ff64..76dee447 100644 --- a/indoteknik_custom/models/midtrans.py +++ b/indoteknik_custom/models/midtrans.py @@ -29,4 +29,10 @@ class MidtransNotification(models.Model): class MidtransRecurring(models.Model): _name = 'midtrans.recurring' - json_raw = fields.Char(string='JSON Raw Text') \ No newline at end of file + json_raw = fields.Char(string='JSON Raw Text') + + +class MidtransAccount(models.Model): + _name = 'midtrans.account' + + json_raw = fields.Char(string='JSON Raw Text') -- cgit v1.2.3 From 5ddf58175a447ecf728025c8615262a423f1313a Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Fri, 27 Jan 2023 11:07:25 +0700 Subject: add security for midtrans pay account --- indoteknik_custom/security/ir.model.access.csv | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/security/ir.model.access.csv b/indoteknik_custom/security/ir.model.access.csv index c755c11a..83d9e2ed 100755 --- a/indoteknik_custom/security/ir.model.access.csv +++ b/indoteknik_custom/security/ir.model.access.csv @@ -29,4 +29,5 @@ access_custom_mail_marketing,access.custom.mail.marketing,model_custom_mail_mark access_website_ads,access.website.ads,model_website_ads,,1,1,1,1 access_leads_monitoring,access.leads.monitoring,model_leads_monitoring,,1,1,1,1 access_midtrans_notification,access.midtrans.notification,model_midtrans_notification,,1,1,1,1 -access_midtrans_recurring,access.midtrans.recurring,model_midtrans_recurring,,1,1,1,1 \ No newline at end of file +access_midtrans_recurring,access.midtrans.recurring,model_midtrans_recurring,,1,1,1,1 +access_midtrans_account,access.midtrans.account,model_midtrans_account,,1,1,1,1 \ No newline at end of file -- cgit v1.2.3 From 7af09e5b533f76ea12c8b68185c3b904f2aecec9 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 09:17:44 +0700 Subject: add ip_address in user.activity.log --- indoteknik_custom/models/user_activity_log.py | 1 + indoteknik_custom/views/user_activity_log.xml | 12 +++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 32b389a1..1a1a84fa 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -11,6 +11,7 @@ class UserActivityLog(models.Model): page_title = fields.Char(string="Judul Halaman") url = fields.Char(string="URL") + ip_address = fields.Char('IP Address') res_user_id = fields.Many2one("res.users", string="User") email = fields.Char(string="Email") update_product = fields.Boolean(string="Update Product") diff --git a/indoteknik_custom/views/user_activity_log.xml b/indoteknik_custom/views/user_activity_log.xml index db242505..70a8f0dd 100755 --- a/indoteknik_custom/views/user_activity_log.xml +++ b/indoteknik_custom/views/user_activity_log.xml @@ -9,6 +9,7 @@ + @@ -22,11 +23,12 @@ - - - - - + + + + + + -- cgit v1.2.3 From 6a306691dd4f5c3ea74c1979802217d5f7091247 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 10:07:27 +0700 Subject: add ip address lookup in user activity log --- indoteknik_custom/models/user_activity_log.py | 13 +++++++++++++ indoteknik_custom/views/user_activity_log.xml | 15 ++++++++------- 2 files changed, 21 insertions(+), 7 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 1a1a84fa..90d18068 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -1,6 +1,8 @@ from odoo import models, fields from datetime import datetime, timedelta import logging, re +import requests +import json _logger = logging.getLogger(__name__) @@ -12,11 +14,22 @@ 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") 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: + 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 compile_product(self): logs = self.env['user.activity.log'].search([ ('email', '!=', False), diff --git a/indoteknik_custom/views/user_activity_log.xml b/indoteknik_custom/views/user_activity_log.xml index 70a8f0dd..f3112e27 100755 --- a/indoteknik_custom/views/user_activity_log.xml +++ b/indoteknik_custom/views/user_activity_log.xml @@ -19,16 +19,17 @@ user.activity.log.form user.activity.log -
+ - - - - - - + + + + + + + -- cgit v1.2.3 From f5f6c879b46f19361e43d921a319353144233085 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 10:13:58 +0700 Subject: store ip address lookup in user activity log --- indoteknik_custom/models/user_activity_log.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 90d18068..a7c13993 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -14,7 +14,7 @@ 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', compute="_compute_ip_address_lookup", store=True) res_user_id = fields.Many2one("res.users", string="User") email = fields.Char(string="Email") update_product = fields.Boolean(string="Update Product") @@ -22,7 +22,7 @@ class UserActivityLog(models.Model): def _compute_ip_address_lookup(self): for log in self: - if log.ip_address: + 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'] -- cgit v1.2.3 From 59b5cbc1cab6a736de031cf6232294b19629342e Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 10:22:06 +0700 Subject: fix compute if ip_address_lookup store=true --- indoteknik_custom/models/user_activity_log.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index a7c13993..478ba119 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -1,4 +1,4 @@ -from odoo import models, fields +from odoo import models, fields, api from datetime import datetime, timedelta import logging, re import requests @@ -20,6 +20,7 @@ class UserActivityLog(models.Model): update_product = fields.Boolean(string="Update Product") product_id = fields.Many2one('product.template', string='Product') + @api.depends('ip_address') def _compute_ip_address_lookup(self): for log in self: if log.ip_address and not log.ip_address_lookup: -- cgit v1.2.3 From effec70a2069499a7289d942759db06af113fc9a Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 10:25:13 +0700 Subject: disable create and edit in user activity log --- indoteknik_custom/views/user_activity_log.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/views/user_activity_log.xml b/indoteknik_custom/views/user_activity_log.xml index f3112e27..9964620a 100755 --- a/indoteknik_custom/views/user_activity_log.xml +++ b/indoteknik_custom/views/user_activity_log.xml @@ -4,7 +4,7 @@ user.activity.log.tree user.activity.log - + @@ -19,7 +19,7 @@ user.activity.log.form user.activity.log - + -- cgit v1.2.3 From 5408b3a7214704742f350b483f48c34e1c84a525 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 10:28:45 +0700 Subject: remove store=true in user activity log --- indoteknik_custom/models/user_activity_log.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 478ba119..1bb067ab 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -14,13 +14,12 @@ 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", store=True) + ip_address_lookup = fields.Text('IP Address Lookup', compute="_compute_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') - @api.depends('ip_address') def _compute_ip_address_lookup(self): for log in self: if log.ip_address and not log.ip_address_lookup: -- cgit v1.2.3 From e62b025b68dcba1b079d6e028458d99116f66946 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 13:55:39 +0700 Subject: ip lookup and record request --- indoteknik_custom/models/user_activity_log.py | 36 +++++++++++++++++++-------- indoteknik_custom/views/user_activity_log.xml | 12 ++++++--- 2 files changed, 34 insertions(+), 14 deletions(-) (limited to 'indoteknik_custom') 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 @@ user.activity.log.tree user.activity.log - + + - @@ -27,11 +27,15 @@ - - + + + + + + -- cgit v1.2.3 From 241490ce2cc5b9863ec91f127a8e0ee02ca7c2d6 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 14:07:49 +0700 Subject: increase limit load ip address lookup --- indoteknik_custom/models/user_activity_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index ad226b74..b77be8e9 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -26,7 +26,7 @@ class UserActivityLog(models.Model): ('ip_address', '!=', False), ('ip_address_lookup', '=', False), ] - logs = self.search(domain, limit=45, order='create_date asc') + logs = self.search(domain, limit=100, order='create_date asc') for log in logs: try: ipinfo = requests.get('http://ip-api.com/json/%s' % log.ip_address).json() -- cgit v1.2.3 From be72c0e40c034a4cdc90976ecf081715481fd636 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 14:11:40 +0700 Subject: decrease limit load ip address lookup --- indoteknik_custom/models/user_activity_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index b77be8e9..7a19edc3 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -26,7 +26,7 @@ class UserActivityLog(models.Model): ('ip_address', '!=', False), ('ip_address_lookup', '=', False), ] - logs = self.search(domain, limit=100, order='create_date asc') + logs = self.search(domain, limit=50, order='create_date asc') for log in logs: try: ipinfo = requests.get('http://ip-api.com/json/%s' % log.ip_address).json() -- cgit v1.2.3 From c346206759c34502362e1c5412ad70408eb51085 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 14:14:02 +0700 Subject: increase limit load ip address lookup --- indoteknik_custom/models/user_activity_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 7a19edc3..b77be8e9 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -26,7 +26,7 @@ class UserActivityLog(models.Model): ('ip_address', '!=', False), ('ip_address_lookup', '=', False), ] - logs = self.search(domain, limit=50, order='create_date asc') + logs = self.search(domain, limit=100, order='create_date asc') for log in logs: try: ipinfo = requests.get('http://ip-api.com/json/%s' % log.ip_address).json() -- cgit v1.2.3 From 2339c6c6a38fdbb8cee512ae61131d01a1a9c917 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 14:17:16 +0700 Subject: delete ip lookup status --- indoteknik_custom/models/user_activity_log.py | 1 + 1 file changed, 1 insertion(+) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index b77be8e9..699c9f3b 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -30,6 +30,7 @@ class UserActivityLog(models.Model): 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 = '' -- cgit v1.2.3 From ce2f02d9c7b739490787fed76e5a7a6a55f44066 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 14:37:16 +0700 Subject: fix dont add record if from localhost ip --- indoteknik_custom/models/user_activity_log.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 699c9f3b..743abf60 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -38,10 +38,11 @@ class UserActivityLog(models.Model): def record_activity(self): try: httprequest = request.httprequest + ip_address = httprequest.remote_addr if httprequest.remote_addr != '127.0.0.1' else '' 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 + 'ip_address': ip_address }]) return True except: -- cgit v1.2.3 From 0388c78c3bbe0f5a6325fee7bb7b2e6a7d436a5f Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 14:39:34 +0700 Subject: fix dont add record if from localhost ip --- indoteknik_custom/models/user_activity_log.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 743abf60..879d5402 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -38,12 +38,12 @@ class UserActivityLog(models.Model): def record_activity(self): try: httprequest = request.httprequest - ip_address = httprequest.remote_addr if httprequest.remote_addr != '127.0.0.1' else '' - 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': ip_address - }]) + 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 -- cgit v1.2.3 From 7478616937cff56ccb994138831f90eae904e724 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 16:54:09 +0700 Subject: user activity log detail --- indoteknik_custom/models/user_activity_log.py | 34 +++++++++++++++++++++++++++ indoteknik_custom/views/user_activity_log.xml | 10 ++++++++ 2 files changed, 44 insertions(+) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 879d5402..9d9694af 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -16,11 +16,44 @@ class UserActivityLog(models.Model): 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&hl=id&z=15&output=embed' % (ip_location_lat, ip_location_lon) + if ip_location_lat and ip_location_lon: + self.ip_location_map = "" + + 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), @@ -34,6 +67,7 @@ class UserActivityLog(models.Model): 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: diff --git a/indoteknik_custom/views/user_activity_log.xml b/indoteknik_custom/views/user_activity_log.xml index b0082c3b..b8792ee8 100755 --- a/indoteknik_custom/views/user_activity_log.xml +++ b/indoteknik_custom/views/user_activity_log.xml @@ -32,9 +32,19 @@ + + + + + + + + + + -- cgit v1.2.3 From 5bdb2c10b3955d7bec4aa4b88d16bdf34f2f825a Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 7 Feb 2023 16:55:40 +0700 Subject: user activity log detail --- indoteknik_custom/views/user_activity_log.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/views/user_activity_log.xml b/indoteknik_custom/views/user_activity_log.xml index b8792ee8..91c14b4d 100755 --- a/indoteknik_custom/views/user_activity_log.xml +++ b/indoteknik_custom/views/user_activity_log.xml @@ -8,6 +8,7 @@ + -- cgit v1.2.3 From 2418642c82c8cdb531c3a1e80b8ec7b990d05300 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Thu, 9 Feb 2023 08:26:08 +0700 Subject: fix due date after dunning run --- indoteknik_custom/models/dunning_run.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/dunning_run.py b/indoteknik_custom/models/dunning_run.py index ed5d7bb5..ee0669ca 100644 --- a/indoteknik_custom/models/dunning_run.py +++ b/indoteknik_custom/models/dunning_run.py @@ -1,5 +1,6 @@ from odoo import models, api, fields from odoo.exceptions import AccessError, UserError, ValidationError +from datetime import timedelta import logging _logger = logging.getLogger(__name__) @@ -30,10 +31,24 @@ class DunningRun(models.Model): invoice = line.invoice_id if not invoice.date_kirim_tukar_faktur: invoice.date_kirim_tukar_faktur = self.date_kirim_tukar_faktur + tukar_date = self.date_kirim_tukar_faktur + term = invoice.invoice_payment_term_id + add_days = 0 + for line in term.line_ids: + add_days += line.days + due_date = tukar_date + timedelta(days=add_days) + invoice.invoice_date_due = due_date if not invoice.resi_tukar_faktur: invoice.resi_tukar_faktur = self.resi_tukar_faktur if not invoice.date_terima_tukar_faktur: invoice.date_terima_tukar_faktur = self.date_terima_tukar_faktur + tukar_date = self.date_terima_tukar_faktur + term = invoice.invoice_payment_term_id + add_days = 0 + for line in term.line_ids: + add_days += line.days + due_date = tukar_date + timedelta(days=add_days) + invoice.invoice_date_due = due_date if not invoice.shipper_faktur_id: invoice.shipper_faktur_id = self.shipper_faktur_id -- cgit v1.2.3 From 3f5f262fb49f3d30f98de8e5fdfe6e6e15e904da Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Thu, 9 Feb 2023 11:03:19 +0700 Subject: comment unecessary code --- indoteknik_custom/models/account_move.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/account_move.py b/indoteknik_custom/models/account_move.py index 54e51dcf..78fa2ddf 100644 --- a/indoteknik_custom/models/account_move.py +++ b/indoteknik_custom/models/account_move.py @@ -21,8 +21,8 @@ class AccountMove(models.Model): def action_post(self): res = super(AccountMove, self).action_post() - if not self.env.user.is_accounting: - raise UserError('Hanya Accounting yang bisa Posting') + # if not self.env.user.is_accounting: + # raise UserError('Hanya Accounting yang bisa Posting') return res @api.onchange('date_kirim_tukar_faktur') -- cgit v1.2.3 From 6db1ecd687f0e09ba448fbee3b0d9a397b307567 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 9 Feb 2023 16:25:29 +0700 Subject: change limit ip address lookup --- indoteknik_custom/models/user_activity_log.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/user_activity_log.py b/indoteknik_custom/models/user_activity_log.py index 9d9694af..ef801ca5 100755 --- a/indoteknik_custom/models/user_activity_log.py +++ b/indoteknik_custom/models/user_activity_log.py @@ -59,7 +59,7 @@ class UserActivityLog(models.Model): ('ip_address', '!=', False), ('ip_address_lookup', '=', False), ] - logs = self.search(domain, limit=100, order='create_date asc') + 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() -- cgit v1.2.3 From b0de64ae769148a009d0a08a957c5c35dee174a9 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Fri, 10 Feb 2023 10:35:55 +0700 Subject: add notification in dunning run --- indoteknik_custom/models/dunning_run.py | 3 +++ indoteknik_custom/views/dunning_run.xml | 1 + 2 files changed, 4 insertions(+) (limited to 'indoteknik_custom') diff --git a/indoteknik_custom/models/dunning_run.py b/indoteknik_custom/models/dunning_run.py index ee0669ca..98689550 100644 --- a/indoteknik_custom/models/dunning_run.py +++ b/indoteknik_custom/models/dunning_run.py @@ -23,6 +23,7 @@ class DunningRun(models.Model): date_terima_tukar_faktur = fields.Date(string='Terima Faktur') shipper_faktur_id = fields.Many2one('delivery.carrier', string='Shipper Faktur') is_validated = fields.Boolean(string='Validated') + notification = fields.Char(string='Notification') def copy_date_faktur(self): if not self.is_validated: @@ -51,12 +52,14 @@ class DunningRun(models.Model): invoice.invoice_date_due = due_date if not invoice.shipper_faktur_id: invoice.shipper_faktur_id = self.shipper_faktur_id + self.notification = 'Berhasil copy tanggal terima faktur ke setiap invoice %s' % self.date_terima_tukar_faktur def validate_dunning(self): if not self.dunning_line: raise UserError('Dunning Line masih kosong, generate dulu') else: self.is_validated = True + self.notification = 'Jangan lupa klik Copy Date jika sudah ada tanggal kirim / tanggal terima faktur' def generate_dunning_line(self): if self.is_validated: diff --git a/indoteknik_custom/views/dunning_run.xml b/indoteknik_custom/views/dunning_run.xml index 6343a79b..cae9cc32 100644 --- a/indoteknik_custom/views/dunning_run.xml +++ b/indoteknik_custom/views/dunning_run.xml @@ -63,6 +63,7 @@ + -- cgit v1.2.3