Saturday, September 26, 2015

Deleting polymorphic objects

It took me some hours of sleep to understand #503 (Cannot delete some instances of model ‘Person’ because they are referenced through a protected foreign key: ‘Client.person_ptr’).

The explanation is: in case of MTI, every MTI child model has a pointer to its MTI parent. This pointer is a foreign key with on_delete set to CASCADE. Lino now automatically protects all foreign keys that need it. But the logics for deciding whether protection is needed had a bug which caused Lino to also protect these pointers to the MTI parent. The whole thing is now encapsulated in the kernel’s protect_foreignkeys method. Note that only subclasses of Polymorphic have this automatism.

I wrote a test case lino_welfare.projects.std.tests.test_ddh.

Google the Great

I read an interesting article about the bigness of Google and how they are doing with their 25000 developers to maintain their 2 billion lines of code.

And I am investing most of my time and money to grow Lino into a community. And currently I am only at the first step, which is to evolve from from a one man team of core developers to a two man team.

One might ask: Does it make sense at all?

My answer is: Probably yes. Because whether something “makes sense” is absolutely unrelated to “how many people are doing it”. We know that we don’t know the meaning of Life, the Universe and Everything.

And because I tend to rather observe the inner joy produced by some project. Lino seems to increase my inner joy. Andrew Binstock writes “These days, however, both the consummating surge of joy and the satisfaction of the preliminary work have become very infrequent experiences.” (in Just Let Me Code!, July 22, 2014).

And then, like as a confirmation, I open Hamza’s mail who wrote: “I want to be more involved and take more and more responsibility in Lino work. I really enjoy working with you, Luc.”