Wednesday, July 23, 2014

shotwell2blog.py

The shotwell2blog.py script now creates a file index.rst with all images listed. That’s an intermediate step towards even more automatism.

Cannot share a pull request to ablog

I tried to share a minor changes to ablog, but am obviously too stupid for using Git…

I cloned the repository using SSH (not HTTPS) because git then knows my user credentials:

$ git clone git@github.com:abakan/ablog.git

Then I edited one source file, ablog/__init__.py at line 339. Here is how the original’s version looks:

with open(feed_path, 'w') as out:
    out.write(feed.to_string())

My minor change is to add a call to encode('utf-8'):

with open(feed_path, 'w') as out:
    out.write(feed.to_string().encode('utf-8'))

This change fixes a bug which happened when ablog tried to generate the atom.xml file for my private blog. Now it gets generated (more or less) correctly: http://luc.saffre-rumma.net/blog/atom.xml

And now I want to share this bug fix by sending a pull request to the project author.

So I tell Git to start a new branch, using git checkout -b <new_branch>:

$ git checkout -b lsaffre-feed_encoding
$ M  ablog/__init__.py
Switched to a new branch 'lsaffre-feed_encoding'

The following confirms that I have now two branches, “master” and my new one, and that my new branch is active:

$ git branch
* lsaffre-feed_encoding
  master

I commit it as due:

$ git commit -m "Added encoding utf-8 to file atom.xml"

And finally I’d like to push my branch to the repository:

$ git push origin lsaffre-feed_encoding
ERROR: Permission to abakan/ablog.git denied to lsaffre.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Maybe the project owner must give me some permission? But I don’t to get write access to the whole project, I just want to share my pull request.

What am I missing? Thanks for any hint.

Using dirhtml builder

I noticed that ablog requires the dirhtml builder. Until now I prefer the default plain html builder because the result then works also when opening the files locally. I agree that for a blog it is more sexy to hide the file extension. But I don’t want to make this choice mandatory. So I added (in atelier.fablib) a new configuration option for your project’s fabfile.py:

env.use_dirhtml = True

Einkommensbescheinigungen weiter

Preparing the next suggestion for attestations in Lino Welfare.

Das folgende beschreibt die Lösung, wie ich sie mir vorstelle.

Eine Hilfebestätigung (HB) ist die Bestätigung, dass ein bestimmter Klient während einer bestimmten Periode (oder zu einem bestimmten Zeitpunkt) eine bestimmte Art von Beihilfe erhielt.

Eine Einkommensbescheinigung ist der Ausdruck einer HB (an excerpts.Excerpt with an aids.Aid instance as owner). Eine einzige HB kann ggf. an mehrere Empfänger in unterschiedlichen Sprachen gehen.

Eine HB ist inhaltlich eine kontextbezogene Zusammenfassung dessen, was in GesDos und TIM steht. Eine HB wird (1) vom Empfang angefragt (Klient, Periode) und (2) durch den zuständigen Sozi ausgefüllt (Hilfeart, Kategorie, Betrag). Dies geschah bisher rein telefonisch (im Stil “Hallo Roger, ich habe hier den Herrn Soundso, … welche Beihilfe hatte der voriges Jahr im Juni?”). In Lino könnte es so gehen:

  • Empfang klickt im Detail des Klienten in der Tabelle “Hilfebestätigungen” auf “Erstellen” und füllt die Periode aus. Die neue HB steht dann in der Tabelle, und sie ist im Status “angefragt”.

  • Empfang ruft beim Sozi an um zu sagen “Schau mal bitte in Lino rein, ich warte hier auf eine Bestätigung.”

  • Sozi macht dann Doppelklick auf der HB, füllt die fehlenden Angaben aus (Hilfeart, Kategorie, Betrag) und klickt auf “bestätigt”.

  • Empfang klickt auf “Ausdrucken” (Auszug erstellen), wählt Empfänger

Die Trennung zwischen HB und ihren Ausdrucken wurde in TIM nicht gemacht, allein schon weil man die Empfänger gar nicht erfasste.

Was die AMKs betrifft, werde ich voraussichtlich eine eigene Tabelle aids.CostRefund (“Rückerstattung”) machen. Aber auch hier das gleiche Prinzip: einerseits die Tatsache, dass da was rückerstattet wird und andererseits der Ausdruck dieser Tatsache.

Wir könnten die Trennung vor dem Benutzer “verstecken”, indem wir eine custom action benutzen, die beide Objekte zugleich erstellt. Im Moment halte ich es aber weiterhin für sinnvoll, die allgemeine Lino-Regel “Zeig dem Benutzer, wie es ist” anzuwenden, also eher nach der richtigen Formulierung und Darstellung am Bildschirm zu suchen.