Monday, July 4, 2016¶
About time zones¶
During this weekend I worked on #807. The only problem was
that pm dump2py
serialized the values of DateTimeField as
follows:
if isinstance(field, models.DateTimeField):
d = value
return 'dt(%d,%d,%d,%d,%d,%d)' % (
d.year, d.month, d.day, d.hour, d.minute, d.second)
And at the beginning of the file wrote:
from datetime import datetime as dt
Now it just writes a different definition at the beginning:
from datetime import datetime
from django.utils.timezone import make_aware
def dt(*args):
return make_aware(datetime(*args))
This should work in all “normal” circumstances.
But what will it do when e.g. we make a dump, then change
USE_TZ
and/or TIME_ZONE
, then re-read the dump?
In these cases it is possible that we need to manually change that
definition of the dt()
function in our restore.py
file.
After reading the Django docs about Time zones
it seems to me that the best configuration for our own Lino Noi
production site is to set USE_TZ
to True
and TIME_ZONE
to ‘UTC’.
But the latter is 'Europe/Tallinn'
right now.
Testing dumps¶
Ticket #807 looks trivial, but this is an area where dragons
live. And because I want to avoid any risk, I wrote a new tested spec
The dumps demo project which uses a new project
lino_book.projects.dumps
.
To write this tested doc in a more or less reasonable style, I
invented the new testing utility atelier.sheller
.
A beneficial side effect: the restore.py
generated by
pm dump2py
, until now, did no argument parsing, and it was not
possible to run it in batch mode, i.e. to prevent it from asking a
user confirmation before flushing the database. For above test case I
needed it to have a command-line argument –noinput. This is one
reason why I never wrote any tests about it so far. Now I added this
option.
Which revealed that we have yet another problem: the pm run
command, after conversion to argparse (#967), did not
accept to call scripts with optional arguments. It took me some time
to find out that I just need to specify nagrs=argparse.REMAINDER
)
The lino_extjs6
demo database¶
I merged Hamza’s work on #920 into the lino_extjs6
master.
I adapted the demo database for lino_extjs6
,
lino_extjs6.projects.mysite
, to demonstrate more clearly how
easy it is to switch to another user interface: it no longer redefines
its own get_installed_plugins()
but just inherits from an existing
application. I chose Lino Noi because this is our first milestone. I
added lino_noi
to the install_requires of lino_extjs6
.
I noted that lino_noi.projects.team.settings.fixtures.demo
failed on applications which did not have languages de
and fr
in their language
setting.
This is not elegant. A fixture should work with any combination of
language
. I adapted the fixture
to work also in this case. Note that only the users Rolf and
Romain are language-dependent because they are created by
lino.modlib.users.fixtures.demo_users
.
A little API optimization as a side effect: I added
lino.core.site.Site.get_language_info
to lino.api.dd
.
Hamza, here’s a little exercise for you: please explain with your words why the Lino Noi test suite now has failures, and adapt the tests where appropriate.
Optimizations in Lino Welfare¶
#799 (Panneaux - Mise à l’emploi articles 60§7 et 61/Activation)
Quand on est dans le dossier d’un bénéficiaire,
peux-tu ajouter la visibilité d’office des colonnes pour:
Panneau “Mises à l’emploi art60§7”: “Date de fin”
Panneau “Mise à l’emploi article 61 et activations” : “Date de Fin” - “Activa” - “Tutorat” - “Région wallonne” - “SINE” - “PTP”
Ajouter un champ “Remarque” en texte libre (comme tu l’as fait pour l’art60§7) quand on crée une mise à l’emploi Art.61.
Le calcul automatique de la date de fin est erroné. Tu peux supprimer ce calcul automatique.
Modified
lino_welfare.modlib.jobs.models.ContractsByClient
Modified
lino_welfare.modlib.art61.models.ContractsByClient
Lino failed to print descriptions of invoice items¶
Alexa reported #1020. The problem was that
lino_xl.lib.trading.models.ItemsByInvoicePrint.description_print
failed when the restified description contained only a single paragraph.
And I am still fiddling with the whitespace problem there.