Как отключить дни после текущей даты в odoo datepicker? - PullRequest
1 голос
/ 08 мая 2020

У меня есть представление с полем даты. Пользователь не должен выбирать дату после сегодняшней. Как в Odoo datepicker отключить все дни после текущей даты?

1 Ответ

1 голос
/ 08 мая 2020

Средство выбора даты maxDate используется для установки максимальной выбираемой даты, которая отключит дни после текущей даты.

Я не нашел способа динамически передать текущую дату из XML, поэтому Я переопределил fields_view_get, чтобы изменить атрибут options и установить maxDate на текущую дату.

В следующем примере для параметра maxDate устанавливается значение date_invoice:

class AccountInvoice(models.Model):
    _inherit = 'account.invoice'

    @api.model
    def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
        res = super(AccountInvoice, self).fields_view_get(view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
        if view_type == 'form':
            doc = etree.XML(res['arch'])
            for node in doc.xpath("//field[@name='date_invoice']"):
                node.set('options', "{'datepicker': {'maxDate': '%sT23:59:59'}}" % fields.Date.today().strftime(DEFAULT_SERVER_DATE_FORMAT))
            res['arch'] = etree.tostring(doc)
        return res

Изменить:

Вы можете использовать or внутри выражения XPATH, чтобы указать имя второго поля.

doc.xpath("//field[@name='date_invoice' or @name='date_due']")

Изменить:

Попробуйте указать время в 23:59:59

node.set('options', "{'datepicker': {'maxDate': '%sT23:59:59'}}" % fields.Date.today().strftime(DEFAULT_SERVER_DATE_FORMAT))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...