20120211

[html] und [pdf] respektieren Grid-Einstellungen

Wow, das ging schöner als ich gedacht hatte: [html] und [pdf] respektieren jetzt die Grid-Einstellungen: Kolonnenreihenfolge, -breiten und -sichtbarkeit.

Die Kolonnenbreiten werden “so gut wie möglich” respektiert:

  • Im [html]-Ausdruck nimmt die Tabelle immer die ganze Bildschirmbreite ein und der Browser interpretiert die Breitenangaben unter Umständen, aber insgesamt kriegt er es einigermaßen sinnvoll hin.
  • Im [pdf]-Ausdruck sind momentan leider alle Kolonnen immer gleich breit. https://answers.launchpad.net/appy/+question/187455

Endspurt vor dem Release 1.3.9

Under Python 2.6.6 (not Python 2.7.1), the [pdf] button to print a table produced an empty document showing only header and footer, but no table body. Rendering to .odt instead of .pdf revealed the following traceback:

Error while evaluating the expression "xhtml(table_body)" defined in the "from" part of a statement.
File "<string>", line 1, in <module>
File "/var/snapshots/appy/appy/pod/renderer.py", line 244, in renderXhtml
stylesMapping, ns).run()
File "/var/snapshots/appy/appy/pod/xhtml2odt.py", line 497, in run
self.xhtmlParser.parse(self.xhtmlString)
File "/var/snapshots/appy/appy/shared/xml_parser.py", line 193, in parse
self.parser.parse(inputSource)
File "/usr/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/usr/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/usr/lib/python2.6/xml/sax/expatreader.py", line 211, in feed
self._err_handler.fatalError(exc)
File "/usr/lib/python2.6/xml/sax/handler.py", line 38, in fatalError
raise exception
<class 'xml.sax._exceptions.SAXParseException'>: <unknown>:1:1: not well-formed (invalid token)

It seems that the 2.6 expatreader doesn’t like Unicode strings. Replacing the line:

body = self.table2xhtml(ar).tostring()

by:

body = self.table2xhtml(ar).tostring().encode('utf-8')

solved the problem.

Updated German translations.

Added lino.apps.pcsw.migrate.migrate_from_1_3_8().

Das Feld ganztags funktionierte noch nicht. Außerdem machte er beim Speichern eines automatisch generierten Auswertungstermins ein paar unnütze save’s.

Auch das mangelnde Feedback bei längeren Aktionen ist jetzt behoben: er muss beim Ausführen einer row action (natürlich) auch die loadMask aktivieren.

Der folgende Punkt ist jetzt auch endlich behoben:

  1. The CalendarPanel when starting, calls all Events. Should call only those of current month/week/day.

Brian Moeskau hatte mir schon vor zwei Wochen auf meine Frage geantwortet, aber jetzt erst hatte ich das gesehen.

lino.utils.auth.RemoteUserMiddleware now raises an exception (instead of just logging an error) when the remote username doesn’t exist in Lino’s database.

A person can have 2 coaches. lino.apps.pcsw.models.Person.update_reminders() must decide for which of them to generate reminders. The rule here is “coach2 or coach1”: if there are 2 coaches, then coach2 is responsible and gets the reminders. lino.apps.pcsw.settigs.Lino.get_reminder_generators_by_user() also works according to this rule.

/releases/1.3.9