clinic/netforce_clinic/models/period_line.py

50 lines
1.4 KiB
Python

from datetime import datetime
from netforce.model import Model, fields
class PeriodLine(Model):
_name="clinic.period.line"
_string="Period Line"
def _get_total(self,ids,context={}):
res={}
fmt='%Y-%m-%d'
for obj in self.browse(ids):
start=datetime.strptime(obj.date_start,fmt)
stop=datetime.strptime(obj.date_stop,fmt)
days=(stop-start).days
res[obj.id]=days
return res
def _get_name(self,ids,context={}):
res={}
for obj in self.browse(ids):
res[obj.id]='%s - %s'%(obj.date_start, obj.date_stop)
return res
_fields={
'name': fields.Char("Name",function="_get_name",store=True),
"period_id": fields.Many2One("clinic.period", "Period"),
'date_start': fields.Date("Date Start"),
'date_stop': fields.Date("Date Stop"),
'day_total': fields.Integer("Duration (Day)",function="_get_total"),
'state': fields.Selection([['draft','Draft'],['done','Done']],"State"),
'close': fields.Boolean("Close"),
}
_defaults={
'state': 'draft',
'close': False,
}
def create(self,vals,**kw):
id=super().create(vals,**kw)
self.function_store([id])
return id
def write(self,ids,vals,**kw):
super().write(ids,vals,**kw)
self.function_store(ids)
PeriodLine.register()