По умолчанию поле со списком fields.date odoo (openerp 8.0) показывает только выбор года в диапазоне +/-10 лет от текущего года. Как мы могли его продлить?
Расширить диапазон лет в odoo
Ответы (2)
Просто следуй этому пути, я просто пытаюсь сделать что-то подобное с моей стороны
from openerp.osv import fields, osv
from openerp import tools
from dateutil.relativedelta import relativedelta
import datetime
class myclass_nextyear(osv.Model):
_name='myclass.nextyear'
def str_to_datetime(strdate):
return datetime.datetime.strptime(strdate, tools.DEFAULT_SERVER_DATE_FORMAT)
def compute_next_year_date(self, strdate):
oneyear = datetime.timedelta(days=365)
curdate = str_to_datetime(strdate)
return datetime.datetime.strftime(curdate + oneyear, tools.DEFAULT_SERVER_DATE_FORMAT)
_columns = {
'start_date': fields.date('Contract Start Date', help='Date when the coverage of the contract begins'),
'expiration_date': fields.date('Contract Expiration Date', help='Date when the coverage of the contract expirates (by default, one year after begin date)'),
}
_defaults = {
'start_date': fields.date.context_today,
'expiration_date': lambda self, cr, uid, ctx: self.compute_next_year_date(fields.date.context_today(self, cr, uid, context=ctx)),
}
Над датой начала указывается текущая дата по умолчанию, а дата истечения срока действия указывается как поле функции из функции compute_next_year_date.
Я надеюсь, что это должно быть полезно для вас ..! :)
Окончательный источник находится в odoo/odoo/addons/web/static/lib/jquery.ui/js/jquery-ui-1.9.1.custom.js
, который устанавливает диапазон лет равным c-10:c+10
, т. е. текущий - 10 лет до текущего + 10 лет. \Вот почему в этом году вы видите годы с 2005 по 2025 год. Я думаю, что экземпляр DatePicker создан в файле odoo/odoo/addons/web/static/src/js/view_form.js
(найдите метод запуска instance.web.DateTimeWidget). Вы можете либо изменить его из этого файла (добавьте yearRange
в setDefaults
на свое усмотрение), либо переопределить метод запуска instance.web.DateTimeWidget.