20131025 (Friday, 25 October 2013)

Was jetzt noch fehlte bei den Reservierungen (d.h. Kursen und Buchungen) ist ein transparenteres Handhaben der Aktion “Termine generieren”: wann soll Lino automatisch die Termine aktualisieren?

  • Entwurf (“Anfrage”) : editierbar. Keine Termine generieren.

  • Option (“vorgemerkt”) : Vermieter sagt zu, dass dieser Interessent informiert wird bevor Ruam an einen Dritten vermietet wird.

  • Registriert (“Festbuchung”) : Mieter hat definitiv zugesagt. Buchung gilt als fakturierbar

  • Storniert : Veranstaltung hat nicht stattgefunden, Buchung soll aber nicht gelöscht werden (z.B. weil sie auch fakturiert war)

Some more optimizations and bugfixes for the framework:

  • Adapted lino.core.model.Model.after_ui_save() (and form2obj_and_save who calls it) to the new situation of storing the response in the lino.core.requests.BaseRequest (ar) : no more need to pass and return a dict of keywords (kw) used to store that response.

  • Discovered and fixed the following bug:

    @dd.when_prepared('partners.Person','partners.Organisation')
    def add_merge_action(model):
        model.define_action(merge_row=dd.MergeAction(model))
    

    This code accidentally used partners insterad of contacts. And Lino did not complain! Why? Because when_prepared until now used is_installed_model_spec and silently ignored model specifications with app_labels that are not installed. Oh no, that’s too much automation. I marked is_installed_model_spec as deprecated. Now the above code (correctly) raises an Exception “Oops, there are pending injects: partners.Person (…)”

  • lino.mixins.Registrable : the “Register” and “Unregister” actions now have icons.

  • Since 20130820 we have the trick for disabling inherited actions by redefining on my subclass a class attribute of same name with value None. This trick worked on Actors, now it also works on Models.

  • New settings calendar_end_hour and calendar_start_hour.

  • Until now it is still theoretically possible to define different workflow_state_field for different actors of a same model.