Расширить диапазон лет в odoo

По умолчанию поле со списком fields.date odoo (openerp 8.0) показывает только выбор года в диапазоне +/-10 лет от текущего года. Как мы могли его продлить?


person Minh-Hung Nguyen    schedule 15.05.2015    source источник


Ответы (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.

Я надеюсь, что это должно быть полезно для вас ..! :)

person DASADIYA CHAITANYA    schedule 16.05.2015

Окончательный источник находится в 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.

person ashokdhudla    schedule 26.09.2015
comment
или переопределить метод запуска instance.web.DateTimeWidget звучит интересно. Любые подсказки о том, как это сделать? - person cgs; 06.10.2015
comment
Это может легко решить проблему, но если мне нужно более одного года для другого средства выбора даты, могут возникнуть проблемы. - person Summer Sun; 03.05.2016