20120901

Lino-Welfare migrate:

  • Personen mit is_deprecated werden jetzt immer zu normalen Menschen, nie zu Klienten. Denn die NISS-Dubletten in den bestehenden Daten sind wahrscheinlich ausnahmslos solche Fälle.

Continued on lino.apps.presto

Added new format URL_FORMAT_PLAIN. Not finished. But the proof of concept is promising. This is currently hidden behind the [html] button which now calls URL_FORMAT_PLAIN instead of URL_FORMAT_PRINTER. Note that URL_FORMAT_PRINTER is still being used when slave_grid_format is ‘html’.

  • Added fields birth_date and age to the Persons detail.

  • Discovered a bug which had pass undiscovered until now: The total_inc field of lino.modlib.vat.models.VatDocument caused an “Ajax communication failed” error when the user tried to save an Invoice:

    TRACEBACK:
      File "l:\snapshots\django\django\core\handlers\base.py", line 111, in get_response
        response = callback(request, *callback_args, **callback_kwargs)
      File "l:\snapshots\django\django\views\generic\base.py", line 58, in view
        return self.dispatch(request, *args, **kwargs)
      File "l:\snapshots\django\django\views\generic\base.py", line 79, in dispatch
        return handler(request, *args, **kwargs)
      File "t:\hgwork\lino\lino\ui\extjs3\views.py", line 780, in put
        return form2obj_and_save(ar,data,elem,False,False) # force_update=True)
      File "t:\hgwork\lino\lino\ui\extjs3\views.py", line 273, in form2obj_and_save
        rh.store.form2obj(ar,data,elem,is_new)
      File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 1073, in form2obj
        if f.form2obj(ar.request,instance,form_values,is_new):
      File "t:\hgwork\lino\lino\ui\extjs3\ext_store.py", line 198, in form2obj
        return self.set_value_in_object(request,instance,v)
      File "t:\hgwork\lino\lino\core\fields.py", line 255, in set_value_in_object
        raise NotImplementedError
    

    This field is declared as a virtual PriceField:

    @dd.virtualfield(dd.PriceField(_("Total incl. VAT")))
    def total_incl(self,ar=None):
        if self.total_excl is None:
            return None
        return self.total_excl + self.total_vat
    

    Explanation: the field of a VirtStoreField was editable. lino.core.fields.VirtualField now does return_type.editable = False.

  • Another aspect of the previous problem was that the total_inc field, though it is readonly, didn’t not have the x-item-disabled class, as does the id field of the same form:

    <input type="text" size="20" autocomplete="off" id="ext-comp-1155" name="id"
    class="x-form-text x-form-field x-form-num-field x-item-disabled"
    style="width: 28px; " disabled="">
    ...
    <input type="text" size="20" autocomplete="off" id="ext-comp-1239" name="total_incl"
    class="x-form-text x-form-field x-form-num-field" readonly=""
    style="width: 221px; ">
    

    Seems that there is a bug in ExtJS (3.3.1): doesn’t set the x-item-disabled class when ‘disabled’ is in the original config. Only when dynamically setting it afterwards.

    Workaround: virtual fields are now also being added to the dictionary returned by DisabledFieldsStoreField.

  • (Added some songs to lino.modlib.vocbook.fr4et)