20100120

Issue 84 (Extend window_config) habe ich begonnen, weil wir beim Speichern der Fensterpositionen momentan eine Serie von kleinen Bugs haben:
  • Speichern der Fensterposition klappt schinbar nicht auf dem oeshz
  • Kolonnenbreite und -reihenfolge werden nicht gespeichert;

Es lohnt sich aber nicht, diese jetzt zu bearbeiten, weil das System mit der einen Pickle-Datei ja früher oder später komplett ersetzt wird. Das ist es, was ich mit Issue 84 meine:

  • One file per Report (or per View)
  • Use a central repository settings.CONFIG_DIRS (or config subdir in each application)
  • Server saves only to “local” directory

Neues Issue 86 (Grid does 2 useless data requests) ist eine Nebenwirkung von Issue 70 (Dynamic number of rows per page). Stört die Benutzer nicht allzu sehr, aber muss natürlich weg.

Issue 83 (New models City (and maybe Street) in contacts) ist fertig. City ist natürlich nicht in lino.modlib.contacts, sondern in lino.modlib.countries. load_tim.py holt jetzt die Städte ebenfalls. Straßen als eigene Tabelle lass ich in der Tat für später mal.

Zugleich habe ich auch ein bisschen für Issue 87 vorbereitet.

Jetzt stechen natürlich Issue 80 (ForeignKey fields in Detail window display value instead of display_field) und Issue 49 (ForeignKey choices that depends on recipient) wieder ins Auge: Auswahl einer Stadt sollte pro Land erfolgen (momentan werden alle Städte der Welt angezeigt).


Tagesplan: Ich fange an mit 49 und 80.

Wie ein Auswahlfilter definiiert wird, ist mir schon klar. Zum Beispiel wie er für lino.modlib.properties.models.PropValue schon definiert (aber nicht benutzt) wird:

def prop_choices_filter(self,recipient):
    return dict(only_for__in=(recipient.owner_type,None))

lino.modlib.contacts.models.Contact kriegt jetzt auch schon mal so einen Auswahlfilter:

def city_choices_filter(self,recipient):
    return dict(country__in=(recipient.country,))

Aber wie mach ich das Dingen nutzbar? Prinzipiell muss die ComboBox ihrem Store mitteilen, wer der “Empfänger” der Auswahlliste ist. Es reicht ja der pk des Empfängers. Dann kann die choices_view() schauen, ob das Modell eine Methode FOO_choices_filter hat. Zuerst mal die [http://www.extjs.com/deploy/dev/docs/?class=Ext.form.ComboBox Doku zu ComboBox] lesen.

ComboBox benutzt momentan gar nicht /choices/, sondern list. Jeder ReportHandle hat momentan nur einen extjs.Store, und der hat eine feste URL, und die ist immer dieselbe. Das muss ich ändern. Und das wird nicht leicht.

Zwischendurch: permalink geht jetzt wieder. Ich speichere den Namen im Window-Objekt in einem Attribut _permalink. Permalink ist zugegebenermaßen sehr gefrickelt und müsste mal revidiert werden (Neues Issue 88 notiert), aber beim Testen erspart es mir viele Mausklicks.

Und noch ne Spielerei zwischendurch: Neue Felder street, street_no und street_box, in contacts.Contact sowie neue Funktion street2kw() in lino.modlib.contacts.utils, die von load_tim.py benutzt wird.