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.
|
|
# -*- coding: utf-8 -*- 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 [] # retrieve all the messages that match with a specific SQL query 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(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')
|