Wednesday, April 10, 2019¶
https://travis-ci.org/lino-framework/book/jobs/518204474 has 2 failures in eevat and bevats specs, it says that output differs from expected, but i did not find any difference.
Lino Presto advancing¶
I continued working for #2776.
DONE:
I started a new document Eine Besichtigungstour.
The
lino_xl.lib.orders.Order.room
field is no longer nullable.When adding the workers of an order as guests of a calendar entry, Lino no longer sorts them by name. This behaviour came from
lino_xl.lib.courses
where it is useful, but the workers of an order should remain in their natural order.Where to define a default guest_role? per team? per cal.EventType? Intuitive answer: per team. One team can provide several event types, but the guest_role is rather constant.
Orders.insert_layout : add team, remove user.
Changed default_build_method in Prsto from appypdf to weasy2pdf
TODO:
When inserting an order via insert in OrdersByProject, the user must select a journal. Lino should suggest a default journal here. But how to configure this? And will they use a single orders journal? Or one journal per team? Or one journal per secretary?
NB: the “rooms” plugin should be renamed to “bookings” because it does not define a Room model. The Room model is defined in cal, and Presto just labels it “Team”
Print an order
Adapt the invoice template for Presto.
Today’s Lino bug¶
Invoice items generated from a calendar entry were printing their quantity with a big number decimal positions. Here is a case to show the problem (it passed before the bugfix):
>>> from lino.utils.quantities import Duration
>>> qty = Duration("0:15")
>>> print(qty)
0:15
>>> print(1 * qty)
0.2500000000000000000000000000
The problem is definitively in lino.utils.quantities
and has to do with
my recent work there. With normal decimals it does not happen:
>>> from decimal import Decimal
>>> print(1 * Decimal("0.25"))
0.25
It was because in lino.utils.quantities
we were saying:
def __rmul__(self, other, **kwargs):
other = convert_from(other, **kwargs)
return Decimal.__rmul__(self, other, **kwargs)
It seems that this must be:
def __rmul__(self, other, **kwargs):
other = convert_from(other, **kwargs)
return self.__class__(Decimal.__rmul__(self, other, **kwargs))
But don’t ask me why… It has to do with the fact that for percentages it is a
difference whether you say “rate * 5” or “5 * rate”. So for percentage we have
__rmul__()
different from __mul__()
.