Средство выбора даты 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))