20101012

Detail layouts now stored in *.dtl files

Wow: Layout definitions for Detail panels are now stored in individual text files named app_name.model_name.*dtl. These are the logical equivalent of *.msk files in TIM. They are stored in a config subdir of each Django application (INSTALLED_APPS) and automatically discovered and loaded at server startup. Report.reset_details and Report.add_detail no longer exist; detail layouts are never defined in source code anymore. New function lino.modlib.tools.find_config_files(). Also converted modules lino.modlib.projects, lino.modlib.products, lino.modlib.sales used by igen and lino.demo.

Other changes

  • New Report notes.NotesByType is used in notes.NoteType.dtl

  • Neues Feld notes.NoteType.remark

  • Meldung “Cannot show detail of phantom record.” wenn man auf der Phantom-Zeile Detail klickt.

  • There was a “Maximum recursion limit” when using the following Detail Layout for notes.NoteType:

    main =
        id name
        print_method template
        remark
        notes.NotesByType
    

    Solved by removing the “reorganisation into element groups” in lino.ui.extjs.ext_elems.Panel.

  • Committed Lino revision 1161 and DSBE 166

  • Layout editor now works again, and files are never written to the source directories, always to DATA_DIR/config. New class lino.modlib.tools.ConfigDir.

  • Layout editor has now basic error handling: if the user-submitted description causes some error, the file is not saved and the user get the error message in the console.

  • Wenn ein Detail- oder Insert-Fenster nur einen Tab hat, dann wird dessen Titel (“Detail”) jetzt nicht mehr angezeigt.

  • Quickfilter im Detail von Personen geht wieder. Wenn durch meinen Filter der Record, auf dem ich gerade stand, verschwindet, springt er auf den ersten sichtbaren Record.

  • Felder mit Id-Kartennummer und -Gültigkeit sind jetzt disabled für importierte Partner: dsbe.Person.card_number, dsbe.Person.card_valid_from, dsbe.Person.card_valid_until

  • NoteTypes wurden in dsbe.management.commands.initdb_tim nicht gelöscht (weil ‘notes’ beim reset nicht in der Liste der Anwendungen war) und außerdem wurde ungefähr jede Notizart doppelt angelegt.

  • Performance : In Report.queryset wird jetzt beim ersten Request ein queryset instanziert, das dann für alle späteren Requests als Vorlage dient. Kann sein, dass Django dadurch schneller ist.

Release

Released /releases/2010/1012