odoo-saas-kubernetes/portal_stripe_payment/models/models.py

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')