from odoo import http from odoo.http import request VISIBLE_STATES = {'active', 'renewal_due'} class MembershipVerifyController(http.Controller): @http.route(['/membership/verify/'], type='http', auth='public', website=True, sitemap=False) def membership_verify(self, member_id, **kwargs): partner = request.env['res.partner'].sudo().search( [('membership_member_id', '=', member_id)], limit=1 ) values = {'member_id': member_id} if not partner: values['status'] = 'not_found' elif partner.membership_state == 'expired': values.update(status='expired', name=partner.name) elif partner.membership_state in VISIBLE_STATES: values.update(status='valid', name=partner.name, tier=partner.membership_tier_id.name) else: # 'invoiced' or 'none' - not yet an active member; don't leak internal state values['status'] = 'not_found' return request.render('community_membership.membership_verify_page', values)