34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
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)
|