20110906 ======== Minor bugfixes -------------- #. Fixed the bug "Switching off an `mti.EnableChild` deletes related objects" (discovered :lino:`0831`). If you now switch off the ´is_courseprovider´ field of a Company, and if that Company (as a CourseProvider) has Courses defined, then you'll get a ValidationError "Cannot delete because it has at least one course". #. :meth:`disabled_fields` of :class:`lino.modlib.jobs.models.Job`: Stelle bearbeiten können wenn noch kein *ausgedruckter* Vertrag vorliegt. Checkin 20110906. General Lino test suite ----------------------- The general Lino test suite (``make test`` in root of Lino's source tree) was broken. Now almost ready again. The biggest problem was that :mod:`lino.test_apps.mti` used `users` but not `contacts`. And users now depends on contacts. New feature: It is now possible to define a userless site by setting :attr:`lino.Lino.user_model` to `None`. One problem renains while installing fixture :mod:`lino.apps.dsbe.fixtures.demo`, "Failed to save independent CourseContent #1 (u'Deutsch'). Abandoned." Checkin 20110906b. New module :mod:`lino.modlib.isip` ---------------------------------- Es gibt jetzt zwei Arten von Verträgen: VSE-Verträge (:class:`lino.modelib.isip.models.Contract`) und Arbeitsverträge (:class:`lino.modelib.jobs.models.Contract`). Dass die bisher in einer einzigen Tabelle waren, war offenbar ein Analysefehler. Beide Modelle haben zwar eine Serie von gemeinsamen Feldern (:class:`lino.modelib.isip.models.ContractBase`), aber eine gemeinsame Historik ist nicht nötig (sondern die Benutzer wollen die beiden lieber klar getrennt haben in zwei Tabellen im Reiter "Verträge" einer Person) Technisches: `lino.modlib.jobs` basiert auf `lino.modlib.isip` und nicht umgekehrt. Deshalb sind die Modelle ExamPolicy und ContractEnding jetzt in `isip`, nicht mehr in `jobs`. Ein Modell `ContractType` gibt es in beiden Modulen. Checkin 20110906c. Data migration -------------- The changes in :mod:`lino.modlib.isip` were again a beautiful challenge of data migration. And Lino passed it bravely! I discovered a new bug in dpy: content types were not correctly handled. Serializer wrote just the id of the ContentType to the dump file. That possibly failed because the contentypes table is populated according to the new database structure and thus the pk's of the models may have changed. This bug had already affected some data: there are 8 Task records whose owner_type was "examination policy" instead of isip.Contract Checkin 20110906d.