from odoo import fields, models class IfcDocumentRevision(models.Model): _name = 'grt.ifc.document.revision' _description = 'IFC Document Revision' _order = 'revision_number desc, id desc' project_id = fields.Many2one( 'grt.ifc.project', string='IFC Document', required=True, ondelete='cascade', index=True, ) revision_number = fields.Integer(string='Revision', required=True, default=1, index=True) revision_label = fields.Char(string='Revision Label', compute='_compute_revision_label', store=True) revision_date = fields.Datetime(string='Revision Date', default=fields.Datetime.now, required=True) revised_by_id = fields.Many2one( 'res.users', string='Revised By', default=lambda self: self.env.user, required=True, index=True, ) revision_note = fields.Text(string='Revision Notes') file_data = fields.Binary(string='IFC File Snapshot', attachment=True) file_name = fields.Char(string='File Name') is_current = fields.Boolean(string='Current Revision', default=False, index=True) def _compute_revision_label(self): for record in self: record.revision_label = 'R%02d' % (record.revision_number or 0)