Old changes in Lino¶
Version 1.7.3 (released 2016-07-12)¶
When merging database objects (
lino.core.merge), Lino did not care at all about objects related to the MTI parents. For example, when merging two participants, then it redirects their enrolments but not e.g. their invoices, bank statements (i.e. objects pointing to this participant as person or partner). (2016-06-21)
Lino XL 1.0.0 (released 2016-07-05)¶
The first release on PyPI of the Lino Extensions Library which is being used as a clone of the GitHub repository on our production sites since its creation.
Lino 1.7.2 (released 2016-06-19)¶
Error messages of style
NotImplementedError: <dl> inside <text:p>are now being shown correctly in the alert box for the user. (2016-05-23)
New build method
CustomBuildMethod: a new style of build method for printables which have a target file to be generated, but don't use any template. (2016-05-12)
And quite some other.
Version 1.7.0 (released 2016-04-26)¶
Important changes which caused a minor version bump:
Lino no longer requires an old Python version (#36)
Lots of optimizations and bugfixes
usernameof a user is now nullable (can be empty). 2016-04-25.
Version 1.6.19 (released 2015-09-01)¶
Changed Development Status from beta to stable.
Lots of changes, especially the murder bug (2015-08-31)
Version 1.6.18 (released 2015-07-28)¶
Lots of changes. Lino Noi 0.0.1 needs this version.
lino.core.actions.Action.run_from_ui()raises an exception, Lino (until now) nevertheless closed the action form window. Now the window is closed only when the action runs without any exception. 2015-02-26.
No more need to set user_model 2015-01-16.
New way to define modular menus. 2015-01-14.
Version 1.6.17 (released 2015-01-08)¶
Version 1.6.16 (released 2014-12-22)¶
A minor release because
Version 1.6.15 (released 2014-12-12)¶
A "plugin" is an app which defines in her __init__.py a class named "Plugin" which must be a subclass of
dd.Plugin. We could also call them "new-style apps". A Plugin can have additional configuration.
This mechanism is also a (partial) solution for Django ticket #3591 Aymeric Augustin's solution being imported before Django settings.
The apps of a Site are later accessible via settings.SITE.plugins.foo
Some site settings have become plugin settings: The are no longer defined as class attributes of Site, but defined in the App class. For example
extensible_rootis now in
Concrete example in my
def setup_site(self): ... self.bootstrap_root = '/home/luc/snapshots/bootstrap' self.bootstrap_base_url = None self.extensible_root = '/home/luc/snapshots/extensible-1.0.1' self.extensible_base_url = None self.extjs_root = '/home/luc/snapshots/ext-3.3.1'
def setup_site(self): ... self.configure_plugin( 'extensible', calendar_start_hour=9, media_root='/home/luc/snapshots/extensible-1.0.1', media_base_url=None) self.configure_plugin( 'plain', media_root='/home/luc/snapshots/bootstrap', media_base_url=None) self.configure_plugin( 'extjs', media_root='/home/luc/snapshots/ext-3.3.1', media_base_url=None)
lino.apps.plainare now plugins. They are currently being included automatically in
lino.lino_site.Site.get_installed_apps()to avoid more code changes in existing applications.
Moved lino.extjs to lino.apps.extjs
Version 1.6.13 (released 2013-10-07)¶
Some subtle bugfixes and optimizations. Mostly because of Lino Welfare.
Version 1.6.12 (released 2013-09-24)¶
New framework features include
customizable export as .pdf, (2013-09-12).
menu buttons (grouped actions), see 2013-09-13.
New management command
It is now (again) possible to run multiple Lino instances on a same vhost in different subdirectories. See
Framework bugfixes include (1) table parameter panel initial size (2)
Renamed dd.AuthorRowAction to dd.AuthorAction and merged the now obsolete dd.RowAction into
$ sudo apt-get install python-tidylib
$ sudo apt-get install libtidy-dev $ pip install pytidylib
Version 1.6.11 (released 2013-07-23)¶
Check the new setting
is_demo_sitewhich defaults to True.
If you don't override the
lino.ui.Siteclass, then your instantiating code in settings.py is something like:
SITE = Site(globals(),'foo','bar')
Change this to:
SITE = Site(globals(),'lino.modlib.system','foo','bar')
If you do override it, then change your get_installed_apps method:
def get_installed_apps(self): for a in super(Site,self).get_installed_apps(): yield a yield 'lino.modlib.system' ## <<< this line added yield 'lino.modlib.users' # continue with your own modules
Also the models SiteConfig, HelpText and TextFieldTemplate have now the app_label "system" instead of "ui". If you have production data, you'll need to write a data migration to rename these tables. See
lino_welfare.migratefor an example on how to automate this.
Optimization: virtual fields to a foreignkey (e.g. the new bailiff field in welfare.debts.PrintLiabilitiesByBudget) might cause a "unicode object has no attribute '_meta'" traceback.
Version 1.6.6 (released 2013-05-05)¶
lino.utils.html2odfnow converts the text formats <i> and <em> to a style "Emphasis". <b> is no longer converted to "Bold Text" but to "Strong Emphasis".
Readable user message when contract type empty (2013-04-23)
Version 1.6.5 (released 2013-04-22)¶
Exceptions "Using remote authentication, but no user credentials found." and "Unknown or inactive username %r. Please contact your system administrator." raised by
lino.core.auth.RemoteUserMiddlewareno longer is a PermissionDenied but a simple Exception. See 2013-04-09.
The new method
lino.core.model.Model.subclasses_graph()generates a graphviz directive which shows this model and the submodels. the one and only usage example is visible in the Lino-Welfare user manual See 2013-04-01.