fix: deny invalid 'date' in context

This commit is contained in:
Frederik Jaeckel 2023-02-14 10:16:03 +01:00
parent 610532f6a5
commit dbc570bdbf

24
book.py
View file

@ -11,6 +11,7 @@ from trytond.transaction import Transaction
from trytond.pool import Pool
from trytond.report import Report
from decimal import Decimal
from datetime import date
from sql.aggregate import Sum
from sql.conditionals import Case, Coalesce
from sql.functions import CurrentDate
@ -274,6 +275,14 @@ class Book(tree(separator='/'), Workflow, ModelSQL, ModelView):
context = Transaction().context
query_date = context.get('date', IrDate.today())
# deny invalid date in context
if isinstance(query_date, str):
try :
dt1 = date.fromisoformat(query_date)
except :
query_date = IrDate.today()
query = tab_book.join(tab_line,
condition=tab_book.id==tab_line.cashbook,
).select(
@ -336,14 +345,27 @@ class Book(tree(separator='/'), Workflow, ModelSQL, ModelView):
Book2 = pool.get('cashbook.book')
Currency = pool.get('currency.currency')
Company = pool.get('company.company')
IrDate = pool.get('ir.date')
tab_book = Book2.__table__()
tab_comp = Company.__table__()
(tab_line, tab2) = cls.get_balance_of_cashbook_sql()
cursor = Transaction().connection.cursor()
context = Transaction().context
result = {x:{y.id: Decimal('0.0') for y in cashbooks} for x in names}
# deny invalid date in context
query_date = context.get('date', IrDate.today())
if isinstance(query_date, str):
try :
dt1 = date.fromisoformat(query_date)
except :
query_date = IrDate.today()
# query balances of cashbooks and sub-cashbooks
with Transaction().set_context({
'date': query_date,
}):
(tab_line, tab2) = cls.get_balance_of_cashbook_sql()
tab_subids = sub_ids_hierarchical('cashbook.book')
query = tab_book.join(tab_subids,
condition=tab_book.id==tab_subids.parent,