Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More

2018

December

Fixed #2710 in lino.modlib.extjs Checking date change. When lino.modlib.system.SiteConfig.next_partner_id was inadvertently set to the id of an existing Company, creating a Person caused Lino to overwrite the data of the company instead of noticing the problem.

(20181226) Removed the pisa build method for printable documents. Lino Così now uses lino_xl.lib.weasyprint as the default build method. You will get an error at the data migration if there are objects (e.g. calendar entries) pointing to this print method. In that you can probably simply deactivate the following line in create_cal_event():

kw.update(build_method=build_method)

Released Lino Così 18.12.1

(20181225) Installing Lino Così with the pip command now works with Python3 as described in Install your Lino developer environment.

Fixed #2715 in lino_xl.lib.contacts.

(20181226) Removed the pisa build method for printable documents. Lino Così now uses lino_xl.lib.weasyprint as the default build method.

Released Lino Così 18.12.1

(20181225) Installing Lino Così with the pip command now works with Python3 as described in Install your Lino developer environment.

(20181224) fixed #2773 in lino_xl.lib.beid : when calling eidreader while no id card was inserted into the reader sometimes caused a server error message instead of just telling the user that there was no card.

(20181222) lino_xl.lib.topics : Interest now has allow_cascaded_delete set to ["partner"]. IOW the interests of a partner should not prevent a user from deleting the partner. If the user decides to delete a partner and some existing Interest refers to the partner, it should be deleted automatically.

(20181221) lino_xl.lib.beid : New error message Invalid urlhandler_prefix {} (must end with '://') when urlhandler_prefix does not end with "://".

2018-12-18

Released Lino version 18.12.5.

Lino was not yet installable using pip under Python 3. Now it is (hopefully).

A new command-line option --quick has been added to restore.py. The idea was that calling Model.full_clean() on every restored database row might make things very slow. This was used to try #2755 on the field. First tests on real data indicate that it doesn’t give very much.

Released XL version 18.12.5

The lino_xl.lib.xl.Priorities choicelist was moved from lino_xl.lib.tickets to lino_xl.lib.xl so that it can be used by any plugin of the XL. The cal.Priority model and its FK in cal.Event have been removed. Added a choicelist field lino_xl.lib.cal.Component.priority pointing to Priorities. Priorities can’t be configured using the web interface any more, this is now done using a local choicelists module.

Applications using lino_xl.lib.cal must do a database migration:

def create_cal_event(id, modified, created, start_date, start_time, end_date, e$
    ...
    #kw.update(priority_id=priority_id)
    ...

def main(args):
    ...
    #execfile("cal_priority.py", *args)
    ...

The get_table_summary() of lino_xl.lib.blog.LatestEntries now also returns an etree element (instead of a string with HTML).

2018-12-13

Released Lino 18.12.2

The new lino.modlib.summaries.Summarized mixin didn’t yet update its fields during checkdata. And I had no pangs of conscience to completely review the API at that occasion: Summarizable becomes Summarized, Summary becomes MonthlySlaveSummary, a new attribute delete_them_all to make sure the developer knows what it means.

lino.utils.jsgen.py2js() now has a keyword argument “compact” that defaults to True. Because the default behaviour of py2js returns a massive 1-line response which makes it almost impossible to find where an issue in the json is if there is some problem. In the react renderer im having it using the lino.core.site.Site.is_demo_site value to determine if it wants to have it be compact or not.

Released XL 18.12.3

2018-12-12

Released version 18.12.1.

  • #2745 (Summaries without master) caused some changes in lino.modlib.summaries:

    Added a new type of summary: a lino.modlib.summaries.Summarizable. Models inheriting this have a lightning button to the ticket and makes the summary fields get updated during computesummaries, but unlike it subclasses the objects are not considered temporary data (i.e. not being deleted during computesummaries.

    Actions for updating summaries now have a “∑” as button_text instead of a ‘lightning’ icon.

    First usage example is lino_noi.lib.tickets.Ticket which now shows the total work time (one sum per reporting type) of a ticket.

    The summary panel of SessionsByTicket no longer has a ▶ button for starting a session from ticket. Because the same button exists already in the workflow buttons where it is more intelligent because the ▶ cheanges to ■ when the user has an open session on this ticket.

  • #2744 (How to use locally injected fields in a layout) : new method lino.core.model.Model.get_layout_aliases().

  • Fixed an unreported bug: the checksummary task was maybe not being run daily by linod.

  • A solution for #2746. The virtual field lino.core.model.Model.overview was being used for two different things: (1) in detail layouts to create customizable “overview panels” and (2) in table layouts to create a “clickable description”, functionally equivalent to double clicking on the row.

    The latter use should now be done with the new virtual field lino.core.model.Model.detail_link whose verbose_name is automatically set to the model’s verbose_name. This is done during startup and probably you cannot override this.

    The lino.core.model.Model.overview field no longer has a verbose_name, so application code no longer needs to set it explicitly to None using dd.update_field().

Released XL version 18.12.1

lino_noi.lib.tickets.Ticket now shows the total work time (one sum per reporting type) of a ticket.

The summary panel of SessionsByTicket no longer has a ▶ button for starting a session from ticket. Because the same button exists already in the workflow buttons where it is more intelligent because the ▶ cheanges to ■ when the user has an open session on this ticket.

2018-12-11

Released version 18.12.0

We are still working on #2741 (Have book test pass with PyPI version of lino and lino_xl).

2018-12-10

Released version 18.11.0

The default value for verbose_name_plural of a lino.core.workflows.Workflow is now more intelligent: if the workflow is being used on a single model (which is the case for most workflows), the text is now “{} states” where {} is the model’s verbose name.

lino.modlib.memo.parser.Parser.register_django_model() now says an understandable error message “Duplicate renderer for %s” when an application tries to redefine another renderer on the same model.

lino.modlib.uploads : the summary of AreaUploads now supports being shown in a grid. It shows contant as a single paragraph (instead of an UL and adds an action for opening the salve table in a separate window.

Fixed #2731 in lino_xl.lib.cal: lino_xl.lib.cal.MyTasks no longer hides open tasks that were started in the past. PublishEvent is now allowed for a meeting that lies in the past.

lino_xl.lib.courses: the Explorer menu now shows courses.CourseStates

November 2018

  • #2682 Optionally allow dashboard items with no data to display

  • #2670 Leaving a combobox before its store is loaded

  • #2668 Grid keyboard nav optimizations

  • #2660 Configure the choices of a TimeField

  • #2648 Show toolbar list actions in display_type “html”

  • #2646 Cell cursor jumps to home after inserting a line

  • #2644 Show current state’s button_text in workflow_buttons

  • #2632 Hovering over the column header of a grid doesn’t display the help_text

  • #2497 Comboboxes sometimes show the value instead of the text (#2628 ForeignKey fields are not rendered correctly when detail loads first time)

  • #2623 Inconsistent meaning of Ctrl-S and Enter

  • #2596 Search field is disabled by loadmask

  • #2577 Row-level edit locking

  • #2544 SiteSearch fails when it finds a name containing “&”

2018-10-30

Database changes

  • Subclasses of lino.mixins.refs.Referrable now always have max_length=200.

Internal changes:

  • release tags in 18.8 were missing in the git repo because atelier did not yet push them.

  • New model mixin lino.mixins.refs.StructuredReferrable.

  • New model mixin lino.modlib.users.UserPlan.

  • plain html tables now use class="text-cell" instead of a hard-coded set of attributes align="left".

  • The lino.core.renderer.HtmlRenderer.table2story() method now yields a sequence of elements instead of returning a single one.

  • We have a new method lino.core.requests.BaseRequest.show_story() which is used in the template for the report (accounting/Report/default.weazy.html).

  • in lino.api.doctest, show_sql_queries and show_sql_summary no longer call reset_sql_queries.

  • we continued to improve the documentation

  • lino.api.doctest.show_sql_summary() now supports INSERT INTO and DELETE FROM statements. It now uses sqlparse.

New features visible to end-users:

  • A new implementation of the Accounting Report. sheets.Report replaces the accounting.AccountingReport. It now includes subtotals, analytic accounts balances, balance sheet and income statement. It is no longer a virtual table but a lino.modlib.users.UserPlan.

  • Optimizations in lino_xl.lib.cal OverdueAppointments : the default view no longer includes today, it stops yesterday. Because today’s appointments are shown by lino_xl.lib.cal.MyAppointmentsToday.

2018-08-31

Version 18.8 was the first release for which pip install worked. At least under Python 2.

Released packages: lino, lino_xl, lino_cosi, lino_noi , lino_tera, lino_amici, lino_avanti, lino_welfare, lino_vilma, lino_care.

There were many changes… we just didn’t collect descriptions of them yet.

  • 20180521 Fixed #2393 (Wrong error message when no eid card found)

  • 20180522 Fixed #2395 (Unknown callback -9223363281463807000).