44 lines
1.8 KiB
Python
Executable File
44 lines
1.8 KiB
Python
Executable File
# -*- coding: utf-8 -*-
|
|
import base64
|
|
|
|
from odoo import models, fields, api, _
|
|
import logging
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class StripeCheckoutSession(models.Model):
|
|
_name = 'portal.stripe.checkout.session'
|
|
name = fields.Char()
|
|
user_id = fields.Many2one('res.users', 'Client User')
|
|
session_id = fields.Char()
|
|
session_completed = fields.Boolean(default=False)
|
|
completion_payload = fields.Text()
|
|
|
|
def post_session_completion_tasks(self, session=None):
|
|
if session is None:
|
|
session = {}
|
|
_logger.error('session is None, Exiting')
|
|
|
|
session_object = session.get('data', {'object': False}).get('object')
|
|
if session_object:
|
|
session_id = session_object.get('id')
|
|
client_reference_id = session_object.get('client_reference_id')
|
|
if session_id and client_reference_id:
|
|
db_session = self.sudo().search([('session_id', '=', session_id), ('session_completed', '=', False),
|
|
('user_id', '=', int(client_reference_id))], limit=1)
|
|
if db_session: # <<<----------
|
|
db_session.sudo().write({'completion_payload': str(session), 'session_completed': True})
|
|
stripe_sub_id = session_object.get('subscription')
|
|
if stripe_sub_id:
|
|
self.env['sale.subscription'].sudo().create_from_stripe_api(user_id=client_reference_id,
|
|
stripe_sub_id=stripe_sub_id)
|
|
else:
|
|
_logger.error('Unable to find stripe checkout session on db')
|
|
else:
|
|
_logger.error('Session id is not found, Exiting')
|
|
else:
|
|
_logger.error('session object not found, Exiting')
|
|
|
|
|