from odoo import models, fields class EncoachNotification(models.Model): _name = 'encoach.notification' _description = 'Notification' _order = 'create_date desc' user_id = fields.Many2one('res.users', required=True, ondelete='cascade', index=True) title = fields.Char(required=True) message = fields.Text() type = fields.Selection([ ('info', 'Info'), ('warning', 'Warning'), ('success', 'Success'), ('error', 'Error'), ], default='info') is_read = fields.Boolean(default=False) read_at = fields.Datetime() reference_model = fields.Char() reference_id = fields.Integer() class EncoachNotificationRule(models.Model): _name = 'encoach.notification.rule' _description = 'Notification Rule' name = fields.Char(required=True) event_type = fields.Char(required=True) template = fields.Text() is_active = fields.Boolean(default=True) recipients = fields.Selection([ ('all', 'All Users'), ('students', 'Students Only'), ('teachers', 'Teachers Only'), ('admins', 'Admins Only'), ], default='all') channels = fields.Char(help='Comma-separated: email,push,in_app') class EncoachNotificationPreference(models.Model): _name = 'encoach.notification.preference' _description = 'Notification Preference' _rec_name = 'user_id' user_id = fields.Many2one('res.users', required=True, ondelete='cascade', index=True) email_enabled = fields.Boolean(default=True) push_enabled = fields.Boolean(default=True) in_app_enabled = fields.Boolean(default=True) digest_frequency = fields.Selection([ ('realtime', 'Real-time'), ('daily', 'Daily'), ('weekly', 'Weekly'), ], default='realtime')