Alaguraj0361 1b6647104e
Some checks failed
CI / Brand-leak check (push) Has been cancelled
CI / flake8 / pylint-odoo / manifest completeness (push) Has been cancelled
CI / Install all modules with --test-enable (push) Has been cancelled
add tncsc_deployment Odoo module with executive dashboard and sidebar
2026-09-29 13:03:05 +05:30

73 lines
2.6 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, fields, models
class EventEvent(models.Model):
_name = 'event.event'
_inherit = ['event.event', 'image.mixin']
registration_status = fields.Selection([
('open', 'Open for Registration'),
('closed', 'Registrations Closed'),
('sold_out', 'Sold Out'),
('ongoing', 'Happening Now'),
], string='Registration Status', compute='_compute_registration_status', compute_sudo=True)
is_registration_open = fields.Boolean(
string='Is Registration Open',
compute='_compute_registration_status',
compute_sudo=True,
)
stage_display_name = fields.Char(
string='Stage Display Name',
compute='_compute_stage_display_name',
compute_sudo=True,
)
@api.depends('stage_id', 'stage_id.name')
def _compute_stage_display_name(self):
for ev in self:
ev_sudo = ev.sudo()
ev.stage_display_name = ev_sudo.stage_id.name if ev_sudo.stage_id else 'Festival'
@api.depends(
'event_registrations_open',
'event_registrations_sold_out',
'is_done',
'is_ongoing',
'stage_id',
'stage_id.name',
'date_end',
'kanban_state',
)
def _compute_registration_status(self):
now = fields.Datetime.now()
for ev in self:
ev_sudo = ev.sudo()
stage_name = (ev_sudo.stage_id.name or '').lower() if ev_sudo.stage_id else ''
is_ended = bool(
ev_sudo.is_done
or stage_name in ['ended', 'done', 'cancelled', 'concluded']
or (ev_sudo.date_end and ev_sudo.date_end < now)
or (ev_sudo.kanban_state == 'cancel')
)
if ev_sudo.kanban_state == 'cancel':
ev.registration_status = 'closed'
ev.is_registration_open = False
elif is_ended:
ev.registration_status = 'closed'
ev.is_registration_open = False
elif ev_sudo.event_registrations_sold_out:
ev.registration_status = 'sold_out'
ev.is_registration_open = False
elif ev_sudo.is_ongoing and not ev_sudo.event_registrations_open:
ev.registration_status = 'ongoing'
ev.is_registration_open = False
elif ev_sudo.event_registrations_open:
ev.registration_status = 'open'
ev.is_registration_open = True
else:
ev.registration_status = 'closed'
ev.is_registration_open = False