diff --git a/website_sale_signifyd/controllers/main.py b/website_sale_signifyd/controllers/main.py
index 2482f87f..85d9c3be 100644
--- a/website_sale_signifyd/controllers/main.py
+++ b/website_sale_signifyd/controllers/main.py
@@ -1,14 +1,19 @@
from odoo.http import request, route
from odoo.addons.website_sale.controllers.main import WebsiteSale
+import logging
+_logger = logging.getLogger(__name__)
+
class WebsiteSale(WebsiteSale):
@route(['/shop/confirmation'], type='http', auth="public", website=True, sitemap=False)
def payment_confirmation(self, **post):
res = super(WebsiteSale, self).payment_confirmation()
- order_session_id = request.session.session_token
+ # order_session_id = request.session.session_token
checkout_token = request.session.session_token
+ order_session_id = checkout_token # TODO what is the appropriate variable?
+ _logger.warn(str(request.session))
browser_ip_address = request.httprequest.environ['REMOTE_ADDR']
sale_order_id = request.session.get('sale_last_order_id')
if sale_order_id:
@@ -16,6 +21,7 @@ class WebsiteSale(WebsiteSale):
# Post completed order to Signifyd
signifyd = request.env.company.signifyd_connector_id
if signifyd:
- order.sudo().post_signifyd_case(order_session_id, checkout_token, browser_ip_address)
+ # TODO should the signifyd variable be used?
+ order.post_signifyd_case(order_session_id, checkout_token, browser_ip_address)
return res
diff --git a/website_sale_signifyd/controllers/signifyd.py b/website_sale_signifyd/controllers/signifyd.py
index e8ff5bae..30b6fd16 100644
--- a/website_sale_signifyd/controllers/signifyd.py
+++ b/website_sale_signifyd/controllers/signifyd.py
@@ -18,9 +18,11 @@ class SignifydWebhooks(Controller):
if case.guarantee_requested and not case.guarantee_eligible:
# Only alert Signifyd to stop trying if we have at least tried once already
return Response({'response': 'success'}, status=200, mimetype='application/json')
+ # TODO what would the return case be here?
except:
# Signifyd API will try again up to 15 times if a non-2** code is returned
return Response({'response': 'failed'}, status=500, mimetype='application/json')
+ # TODO what would the return case be here?
@route(['/cases/update'], type='json', auth='public', methods=['POST'], csrf=False)
def case_update(self, *args, **post):
@@ -34,3 +36,4 @@ class SignifydWebhooks(Controller):
if case and outcome == 'DECLINED':
for user in request.env.company.signifyd_connector_id.notify_user_ids:
case.sudo().create_notification(user, outcome)
+ # TODO any return result?
diff --git a/website_sale_signifyd/models/company.py b/website_sale_signifyd/models/company.py
index 3507b679..b51a6748 100644
--- a/website_sale_signifyd/models/company.py
+++ b/website_sale_signifyd/models/company.py
@@ -4,4 +4,5 @@ from odoo import fields, models
class ResCompany(models.Model):
_inherit = 'res.company'
+ # TODO move to website
signifyd_connector_id = fields.Many2one('signifyd.connector')
diff --git a/website_sale_signifyd/models/sale_order.py b/website_sale_signifyd/models/sale_order.py
index 02d29538..e5412c11 100644
--- a/website_sale_signifyd/models/sale_order.py
+++ b/website_sale_signifyd/models/sale_order.py
@@ -5,13 +5,13 @@ class SaleOrder(models.Model):
_inherit = 'sale.order'
signifyd_case_id = fields.Many2one('signifyd.case', readonly=1)
- singifyd_score = fields.Float(related='signifyd_case_id.score', readonly=1)
- signifyd_disposition_status = fields.Selection(related='signifyd_case_id.guarantee_disposition', tracking=True)
+ singifyd_score = fields.Float(related='signifyd_case_id.score')
+ signifyd_disposition_status = fields.Selection(related='signifyd_case_id.guarantee_disposition')
def action_view_signifyd_case(self):
self.ensure_one()
- form_id = self.env.ref('gcl_signifyd_connector.signifyd_case_form_view').id
- context = {'create': False, 'delete': False, 'id': self.signifyd_case_id.id}
+ form_id = self.env.ref('website_sale_signifyd.signifyd_case_form_view').id
+ context = {'create': False, 'delete': False}
return {
'type': 'ir.actions.act_window',
'name': 'Signifyd Case',
diff --git a/website_sale_signifyd/models/signifyd.py b/website_sale_signifyd/models/signifyd.py
index 16dce1fa..46ddadec 100644
--- a/website_sale_signifyd/models/signifyd.py
+++ b/website_sale_signifyd/models/signifyd.py
@@ -9,7 +9,7 @@ class SignifydCase(models.Model):
_name = 'signifyd.case'
_description = 'Stores Signifyd case information on orders.'
- order_id = fields.Many2one('sale.order')
+ order_id = fields.Many2one('sale.order', required=True)
partner_id = fields.Many2one('res.partner')
case_id = fields.Char(string='Case ID')
uuid = fields.Char(string='Unique ID')
@@ -57,19 +57,22 @@ class SignifydCase(models.Model):
self.signifyd_url = ''
def write(self, vals):
+ original_disposition = {c: c.guarantee_disposition for c in self}
res = super(SignifydCase, self).write(vals)
disposition = vals.get('guarantee_disposition')
- if disposition:
- self.order_id.message_post(body=_('Signifyd Updated Record to %s' % vals['guarantee_disposition']),
- subtype='gcl_signifyd_connector.disposition_change')
+ for case in self:
+ if case.order_id and original_disposition[case] != disposition:
+ self.order_id.message_post(body=_('Signifyd Updated Record to %s' % vals['guarantee_disposition']),
+ subtype='website_sale_signifyd.disposition_change')
return res
@api.model
def post_case(self, values):
- signifyd = self.env['signifyd.connector']
+ signifyd = self.env['signifyd.connector'] # TODO HOW, this shouldn't be a singleton
headers = signifyd.get_headers()
data = json.dumps(values, indent=4, sort_keys=True, default=str)
+ # TODO this should be in `signifyd.connector`
r = requests.post(
signifyd.API_URL + '/cases',
headers=headers,
@@ -79,6 +82,7 @@ class SignifydCase(models.Model):
@api.model
def get_case(self):
+ # TODO See above....
signifyd = self.env['signifyd.connector']
headers = signifyd.get_headers()
r = requests.get(
@@ -89,6 +93,7 @@ class SignifydCase(models.Model):
@api.model
def request_guarantee(self, *args):
+ # TODO See above....
signifyd = self.env['signifyd.connector']
headers = signifyd.get_headers()
values = json.dumps({"caseId": self.case_id})
diff --git a/website_sale_signifyd/models/stock.py b/website_sale_signifyd/models/stock.py
index 58aab0d6..a2cae1e8 100644
--- a/website_sale_signifyd/models/stock.py
+++ b/website_sale_signifyd/models/stock.py
@@ -9,7 +9,7 @@ class StockPicking(models.Model):
def action_view_signifyd_case(self):
self.ensure_one()
- form_id = self.env.ref('gcl_signifyd_connector.signifyd_case_form_view').id
+ form_id = self.env.ref('website_sale_signifyd.signifyd_case_form_view').id
context = {'create': False, 'delete': False, 'id': self.sale_id.signifyd_case_id.id}
return {
'type': 'ir.actions.act_window',
diff --git a/website_sale_signifyd/tests/__init__.py b/website_sale_signifyd/tests/__init__.py
new file mode 100644
index 00000000..177d87f1
--- /dev/null
+++ b/website_sale_signifyd/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_order_flow
diff --git a/website_sale_signifyd/tests/test_order_flow.py b/website_sale_signifyd/tests/test_order_flow.py
new file mode 100644
index 00000000..e69de29b
diff --git a/website_sale_signifyd/views/signifyd_views.xml b/website_sale_signifyd/views/signifyd_views.xml
index 442cac17..7f445457 100644
--- a/website_sale_signifyd/views/signifyd_views.xml
+++ b/website_sale_signifyd/views/signifyd_views.xml
@@ -67,7 +67,7 @@
Signifyd Case Information
signifyd.case
form
-
+