20130201 ======== Converting HTML to ODF text chunks ---------------------------------- Na das war vielleicht mal ein Bug mit unerwartet viel Arbeit: die Tx25 hatten beim Ausdruck immer eine leere Kolonne "Information". Zuerst musste ich mal mein lokales Skript :file:`print_tx25.py` (sh. :lino:`../2012/0704`) reparieren, das einiges an Entwicklung verpasst hatte. Deshalb jetzt die Methode :meth:`run_action_from_console `. Das eigentliche Problem war dann auch nicht ohne: :func:`html2odf `, vertrug es nicht, wenn `value2html` ein fertiges `

...

` zurückgab. In der `Default.odt` standen Datum und Uhrzeit als "fixes" Feld. Dort muss natürlich das Druckdatum stehen. Two scoops of Django -------------------- I'd like to read the book `Two scoops of Django `_, and I'm ready to pay 12€ for it, but I live in Estonia where credit cards aren't used for national payments because we have electronic id cards. Zed Shaw's comment "Ha ha, I learned something in the first chapter. Awesome." was probably the decisive one for me :-) Pre-release rush ---------------- - Found and fixed some more bugs in :mod:`lino.utils.appy_pod`. One visible result is that total lines in .pdf, .odt and .rtf output are now also rendered using bold text. - I renamed the `html2odftext` function to `html2odf` and moved it from :mod:`lino.utils.appy_pod` to a separate module :mod:`lino.utils.html2odf`. - Optimized :func:`lino.ui.extjs3.views.ajax_error` for Django Validation Errors. Users now finally see messages like this: Datumsbereich überschneidet sich mit Art.60§7-Konvention #12 Until now the same message has been like this: [u'Datumsbereich \\xfcberschneidet sich mit Art.60\\xa77-Konvention #12']" The fact that nobody has complained about this during probably more than a year probably shows that Lino users use Lino for **working with it** and not (yet) for **making money by selling it**. - Lino failed with a traceback on showing the detail of a pcsw.Client. Now it displays them without failur (though very funnily because it doesn't yet know how to use tabs). :class:`lino.ui.extjs3.ext_ui.PlainRenderer`, :class:`lino.ui.extjs3.ext_elems.FieldElement.value_from_object`... Continued on :mod:`lino.projects.belref` ---------------------------------------- Upps, ich habe versehentlich ein bisschen an :mod:`lino.projects.belref` weiter gearbeitet, obwohl es zur Zeit eigentlich dringendere Dinge gibt... ... aber mir war eine Idee gekommen, wie ich das mit dem Fachwortschatz in :mod:`lino.modlib.concepts` zu strukturieren gedenke: ein neues Modell :class:`Link ` und neue ChoiceList :class:`LinkTypes `. Aber das ist alles Spielerei und noch lange nicht fertig. Vor allem fehlt ein Suchfeld. Und der Inhalt der Hauptseite ist mir auch noch nicht klar... Lino Cosi braucht eine Währung ------------------------------ Für die Online-Demos habe ich :attr:`site_config_defaults ` auf `dict(default_build_method='appypdf')` gesetzt. Der hard-codierte Standardwert `appyodt` soll bleiben, weil nicht jeder gleich einen LibreOffice-Daemon installieren will. Aber wer's getan hat, kriegt eigentlich lieber PDFs statt ODTs beim Ausdruck. Wenn man in der `Demo-Datenbank `_ eine Verkaufsrechnung ausdruckt, fallen zwei Dinge besonders auf: - insgesamt sollte sich mal jemand mit ein paar Stunden Liebe dransetzen und das Gesamtdesign überarbeiten. Denn momentan ist das eher ein Aua- als ein Aha-Effekt. - Es fehlt jegliche Währungsangabe. Und das stimmt: seit dem Umstieg auf Euros ist das zwar für mich persönlich nicht mehr akut, aber Lino Cosi sollte doch zumindest eine Notion von Grundwährung haben. Da gibt es `python-money `_, ein sauber programmiertes wohlgepflegtes kleines übersichtliches Modul. Schön ist die Implementierung eines MoneyField für Django. Aber für Lino Cosi wäre das Overkill: wir brauchen die Währung nicht mehr pro Dokument ändern zu können. Was mir weniger gefällt: dass die hardcodierte Liste aller Währungen der Welt da nur mit englischen Bezeichnungen steht. Hier ein Auszug:: CURRENCY['KWD'] = Currency(code='KWD', numeric='414', name='Kuwaiti Dinar', countries=['KUWAIT']) CURRENCY['EUR'] = Currency(code='EUR', numeric='978', name='Euro', countries=['ANDORRA', 'AUSTRIA', 'BELGIUM', 'FINLAND', 'FRANCE', 'FRENCH GUIANA', 'FRENCH SOUTHERN TERRITORIES', 'GERMANY', 'GREECE', 'GUADELOUPE', 'IRELAND', 'ITALY', 'LUXEMBOURG', 'MARTINIQUE', 'MAYOTTE', 'MONACO', 'MONTENEGRO', 'NETHERLANDS', 'PORTUGAL', 'R.UNION', 'SAINT PIERRE AND MIQUELON', 'SAN MARINO', 'SLOVENIA', 'SPAIN']) CURRENCY['CHF'] = Currency(code='CHF', numeric='756', name='Swiss Franc', countries=['LIECHTENSTEIN']) Nee, das ist so nicht internationalisierbar. Für Lino Cosi brauche ich erstmal einfach nur eine ChoiceList mit ein paar Währungen, und in der SiteConfig dann ein Feld, wo man die Grundwährung eingibt.