Tuesday, February 23, 2016¶
I am still in the final sprint for Lino Voga.
The first release with splitted Lino¶
git pull I still had some messages of style
rm: remove write-protected regular file
'./lino_xl.lib.courses/models.pyc'? which I now hopefully fixed by
$ sudo chown -R admin:admin ~/repositories
As expected, restoring the snapshot failed with a traceback:
$ python manage.py run snapshot/restore.py ... Traceback (most recent call last): ... File "cal_room.py", line 4, in <module> loader.save(create_cal_room(1,[u'Eupen (Spiegelsaal)', u'Eupen (salle miro\xeet\xe9e)'],101,None,None,6,2)) File "snapshot/restore.py", line 437, in create_cal_room ... TypeError: 'tariff_id' is an invalid keyword argument for this function
This was because I did not write a migrator for yesterday’s database
changes. I didn’t do this because it is easier to just edit the
restore.py file. That file contains:
def create_cal_room(id, name, company_id, contact_person_id, contact_role_id, tariff_id, calendar_id): kw = dict() kw.update(id=id) if name is not None: kw.update(bv2kw('name',name)) kw.update(company_id=company_id) kw.update(contact_person_id=contact_person_id) kw.update(contact_role_id=contact_role_id) kw.update(tariff_id=tariff_id) kw.update(calendar_id=calendar_id) return cal_Room(**kw)
I just needed to change the line with tariff_id into:
And similar for create_courses_line and create_courses_course.
En passant I found a workaround for #788. The problem was caused by the following virtual column:
@dd.virtualfield(dd.HtmlBox(_("Participant"))) def pupil_info(cls, self, ar): elems = [ar.obj2html(self.pupil, self.pupil.get_full_name(nominative=True))] elems += [', '] elems += join_elems( list(self.pupil.address_location_lines()), sep=', ') return E.div(*elems)
The real guilty is
lino.utils.html2odf who does not know how to
convert this to valid ODF, but we can avoid our problem by changing
the last line into:
Inheriting quick search fields¶
I changed the kernel’s (
lino.core.kernel) behaviour about how
quick_search_fields should be
inherited. Until now they were never inherited, even not from an
abstract base class. Now they are always inherited. If you want to
not inherit them from a parent using standard MRO, then you must set
that field explictly to None.
Manually settable simulated date¶
Until now we had
lino.core.site.Site.the_demo_date which is
useful when generating demo data.
Now we also have
lino.modlib.system.models.SiteConfig.simulate_today which is
useful e.g. when Alexa needs to generate invoices à postériori.