Welcome | Get started | Dive into Lino | Contribute | Topics | Reference | More

Old changes in Lino

Version 1.7.4 (released 2016-07-12)

Bugfix release.

Version 1.7.3 (released 2016-07-12)

This is the first time we release three projects at the same time and using the same version number: The lino package, Lino Extensions Library and Developer Guide.

  • New module lino.sphinxcontrib.help_text_builder (2016-06-20).

  • 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)

  • New site attribute lino.core.site.Site.workflows_module. Lino no longer executes any setup_workflows callable. (2016-06-22)

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)

  • Lino now supports Django's generic relations (GenericRelation). (2016-05-23)

  • Error messages of style NotImplementedError: <dl> inside <text:p> are now being shown correctly in the alert box for the user. (2016-05-23)

  • When duplicating a database object, Lino now calls the on_duplicate method on the master before saving it for a first time. (2016-05-23)

  • New build method lino.modlib.weasyprint.

  • 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)

  • lino.core.site.Site.default_ui is now the full Python name, not just the app_label. (2016-05-06)

  • Added CachedPrintableChecker <lino.modlib.printing.mixins.CachedPrintableChecker> which checks for missing cache files (2016-04-27, 2016-05-04).

  • And quite some other.

Version 1.7.0 (released 2016-04-26)

Important changes which caused a minor version bump:

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)

Version 1.6.17 (released 2015-01-08)

Version 1.6.16 (released 2014-12-22)

A minor release because

  • New module lino.hello.

  • Some classes changed their place while working on #39

  • /dev/install/index is getting better. I am working on it for #40.

Version 1.6.15 (released 2014-12-12)

  • Integrated my north and djangosite projects into Lino. These independent github projects are now obsolete and no longer maintained.

  • 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 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_root is now in lino.apps.extensible.App.media_root.

  • Concrete example in my lino_local.py.

    Before:

    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'
    

    After:

    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)
    

Summary:

Before

After

admin_prefix

plugins.extjs.url_prefix

extjs_base_url

plugins.extjs.media_base_url

extjs_root

plugins.extjs.media_root

  • lino.apps.extjs and lino.apps.plain are now plugins. They are currently being included automatically in lino.lino_site.Site.get_installed_plugins() 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 command fab test_sdist (2013-09-13).

    • New django-admin command pm dump2py.

    • The DavLink applet now works around some permission problems which occured after Oracle JRE 7u21 (2013-09-19).

    • It is now (again) possible to run multiple Lino instances on a same vhost in different subdirectories. See site_prefix.

  • Framework bugfixes include (1) table parameter panel initial size (2)

  • Renamed dd.AuthorRowAction to dd.AuthorAction and merged the now obsolete dd.RowAction into lino.core.actions.Action.

  • html2xhtml is now just a wrapper to pytidylib (which itself is a wrapper to HTML Tidy). See 2013-08-24. IOW, you will probably want to run either:

    $ sudo apt-get install python-tidylib
    

    or:

    $ sudo apt-get install libtidy-dev
    $ pip install pytidylib
    

Version 1.6.11 (released 2013-07-23)

  • Check the new setting is_demo_site which defaults to True.

  • Existing Lino applications must add lino.modlib.system to the list of apps yielded by their lino.ui.Site.get_installed_plugins(). See 2013-07-17 for background.

    Migration instructions:

    If you don't override the lino.ui.Site class, 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_plugins method:

    def get_installed_plugins(self):
        for a in super(Site,self).get_installed_plugins():
            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.migrate for 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)

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.RemoteUserMiddleware no longer is a PermissionDenied but a simple Exception. See 2013-04-09.

  • lino.core.fields.IncompleteDateField now has a default help_text (adapted from birth_date field in lino.mixins.human.Born)

  • 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.