You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
34 lines
1.3 KiB
from datetime import datetime
|
|
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT as OE_DFORMAT
|
|
|
|
from openerp import models, fields, api
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
_inherit = 'res.partner'
|
|
|
|
def _search_age(self, operator, value):
|
|
if operator not in ('=', '!=', '<', '<=', '>', '>=', 'in', 'not in'):
|
|
return []
|
|
query = """SELECT id
|
|
FROM "%s"
|
|
WHERE extract(year from age(CURRENT_DATE,
|
|
birthdate_date)) %s %%s""" % \
|
|
(self._table, operator)
|
|
self.env.cr.execute(query, (value,))
|
|
ids = [t[0] for t in self.env.cr.fetchall()]
|
|
return [('id', 'in', ids)]
|
|
|
|
@api.one
|
|
@api.depends('birthdate_date')
|
|
def _compute_age(self):
|
|
if self.birthdate_date:
|
|
dBday = datetime.strptime(str(self.birthdate_date),
|
|
OE_DFORMAT).date()
|
|
dToday = datetime.now().date()
|
|
self.age = dToday.year - dBday.year - ((
|
|
dToday.month, dToday.day) < (dBday.month, dBday.day))
|
|
|
|
age = fields.Integer(string='Age',
|
|
compute='_compute_age',
|
|
search='_search_age')
|