Wednesday, June 10, 2015

The novat branch is still not ready for getting merged to master.

The following snippet shows a strange phenomen whose explanation took me a whole day:

from __future__ import print_function


class DummyField(object):

    def __get__(self, instance, owner):
        if instance is None:
            return self
        return None


class Layout(object):
    pass


class DefaultPartnerDetail(Layout):
    main = "a"
    a = DummyField()


class PartnerDetailMixin(Layout):
    if False:
        b = DummyField()
    else:
        b = DummyField()


class MyPartnerDetail(DefaultPartnerDetail, PartnerDetailMixin):
    main = "a b"


dtl = MyPartnerDetail()
for k in dtl.main.split():
    print(k, getattr(dtl, k, "undefined"))

The vatless.PartnerDetailMixin is designed to work also in applications which do not have lino.modlib.vatless installed. So the ledger panel (the only thing defined by this mixin) must be a dummy panel in that case. I used a DummyField for this, but forgot that the “value” of a DummyField is always None.

Remember: When you want to define a dummy data element on a layout, don’t use DummyField but DummyPanel.

A new contributor

Sandeep did his first code contribution: he fixed a bug which caused initdb to fail on a fresh Lino development installation because it tried to delete the SQLite database file default.db even though no such file existed. This contribution is not visible in the repository since he described it in an email to me (and it was just one line of code). But I am glad to welcome the third code contributor to Lino!

merge novat to master

The novat branch in Lino and Lino Welfare finally passes the test suite. It is time to merge it into master.

Verify that your working directory is clean:

$ git status
On branch novat
nothing to commit, working directory clean

Switch to master:

$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

Merge novat into master:

$ git merge novat
Updating dcb644c..0d689c5
Fast-forward
 AUTHORS.txt                                                |   4 +
 docs/.static/myalabaster.css                               |  24 +++
 ...
 49 files changed, 2174 insertions(+), 1309 deletions(-)
 create mode 100644 docs/.static/myalabaster.css
 delete mode 100644 lino/modlib/ledger/fixtures/demo.py
 rename lino/modlib/ledger/fixtures/{mini.py => minimal_ledger.py} (98%)
 create mode 100644 lino/modlib/ledger/fixtures/welfare_demo.py
  ...

Delete the novat branch since it is no longer needed:

$ git branch -d novat
Deleted branch novat (was 0d689c5).

Push these manipulations to the public repo:

$ git push

Upgrade on demos.lino-framework.org

I upgraded the demo applications on The Lino framework.

Fixed two bugs:

  • lino.core.requests.BaseRequest.get_printable_context() now adds ar and E.

  • lino.modlib.tickets.Ticket.full_clean() now fills project only if it is not empty.