20120723 ======== Zukunft von Lino (Nachtrag) --------------------------- Um noch mal auf die :lino:`Zukunft von Lino <0708>` zurück zu kommen: Otto hat mir vor einigen Tagen klargemacht, dass die GPL keineswegs verhindert, kommerzielle Lino-Anwendungen zu schreiben. Das macht die Sache natürlich um einiges einfacher. Eine VoG "Lino für alle" wird es voraussichtlich nicht geben, weil das nicht nötig ist. Um die Findung oder Gründung einer Organisation für den Vertrieb von "Lino für ÖSHZ" kümmert sich hauptsächlich das ÖSHZ Eupen selber. Nicht ohne meine Mithilfe, aber ich bin für dieses Projekt eher Berater. Irgendwann wird es voraussichtlich auch eine internationale "Lino Software Foundation" geben, ähnlich wie es das auch für `Python `_ und `Django `_ gibt. Ein konkretes Bedürfnis dafür wird aber erst kommen, wenn es mindestens zwei Firmen oder sonstige Organisationen gibt, die die Entwicklung des Frameworks beeinflussen wollen. Bis dahin kann man ruhig sagen, dass das Framework von Rumma & Ko als meinem Arbeitgeber getragen und kontrolliert wird. How to respond to anonymous visitors ------------------------------------ #. Using ExtJS We can respond to anonymous visitors using the ExtJS interface. The anonymous UI is the same as for authenticated users, but -of course- anonymous visitors will hopefully not have the same access permissions than authenticated users. The application defines a read-only user profile for anonymous visitors and sets :attr:`lino.Lino.anonymous_user_type` accordingly. Today there were changes to better support this method: - :mod:`lino.utils.auth`: removed class `NoUserMiddleware`. Lino applications always use the same middleware :class:`lino.utils.auth.RemoteUserMiddleware` which now installs an :class:`AnonymousUser ` when the REMOTE_USER is empty (i.e. Apache configured to have a public part being handled by our Lino application). - :func:`lino.core.perms.make_permission_handler` : new requirement `auth=True`. This is used for `cal.CalendarPanel` and all `MyXxx` tables. #. Using Django templates It is true that classical web applications have a "designed" public part and a link to a "manage" or "admin" interface which requires authentication. So another possibility is to simply write Django views and templates. TODO: write an example (the poll tutorial) to demonstrate this way. Choosing this way means that you (or somebody else) needs to "do the designer work" of fiddling with templates, html and css. There may be good reasons to do so: - need for a shiny look of the public part - The ExtJS interface is rather overkill and not optimal for a read-only interface. For anonymous visitors it should be rather surprising to directly get into an ExtJS application. #. Using GROPH Another possibile direction is what I try to implement in the new :mod:`lino.ui.groph` module. GROPH stands for Generated Read-Only Plain Html. Solved some other general to-do's: - :class:`lino.core.actions.StateAction` now also works if :attr:`lino.core.modelstools.workflow_state_field` is something else than "state". - The `vote` buttons in :mod:`lino.tutorials.t1` now finally work! Action buttons worked only in a GridPanel or a FormPanel, not in a HtmlBox. - Converted :mod:`lino.ui.extjs3.ext_ui` to use Django's class-based views. New module :mod:`lino.ui.extjs3.views`.