Tuesday, August 1, 2017¶
Here is another problem (#1991) which happened on the Lino Tera production server:
Traceback (most recent call last):
File "/env/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/env/local/lib/python2.7/site-packages/django/db/models/query.py", line 380, in get
return self.dispatch(request, *args, **kwargs)
File "/env/local/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/repositories/lino/lino/modlib/extjs/views.py", line 577, in get
for row in ar.sliced_data_iterator]
File "/repositories/lino/lino/core/store.py", line 1122, in row2list
v = fld.full_value_from_object(row, ar)
File "/repositories/lino/lino/core/store.py", line 374, in full_value_from_object
return self.vf.value_from_object(obj, ar)
File "/repositories/lino/lino/core/fields.py", line 497, in value_from_object
return m(obj, ar)
File "/repositories/xl/lino_xl/lib/excerpts/mixins.py", line 168, in printed
ex = self.printed_by
File "/env/local/lib/python2.7/site-packages/django/db/models/fields/related_descriptors.py", line 184, in __get__
rel_obj = self.get_object(instance)
File "/env/local/lib/python2.7/site-packages/django/db/models/fields/related_descriptors.py", line 159, in get_object
return qs.get(self.field.get_reverse_related_filter(instance))
File "/env/local/lib/python2.7/site-packages/django/db/models/query.py", line 380, in get
self.model._meta.object_name
DoesNotExist: Excerpt matching query does not exist.
[Tue Aug 01 00:03:29.791879 2017] [authz_core:debug] [pid 3114:tid 140152080881408] mod_authz_core.c(809): [client 127.0.0.1:51489] AH01626: authorization result of <RequireAny>: granted, referer: http://lino-spz:8080/
I fixed it locally with a pm run
script:
from lino.api.shell import *
qs = sales.VatProductInvoice.objects.filter(printed_by_id__isnull=False)
for o in qs:
o.printed_by = None
o.save()
The problem is probably reproducible as follows:
print a sales invoices (so that its printed_by field is non-empty)
make a database snapshot
comment out the line with excerpts_excerpt.py
restore the snapshot
try to view your invoice using the web interface
Do we need a command for repairing broken foreign keys (as we have a
lino.modlib.gfks.BrokenGFKs
table)? I’d say no because I
consider this situation rather a case of database corruption.
Note that printed_by (defined by
lino_xl.lib.excerpts.Certifiable
) is a nullable FK, so we
don’t need to be “careful” when testing whether it is None or not. The
following code was too careful:
if self.printed_by_id is None:
return ''
ex = self.printed_by
if ex is None:
return ''
This code is enough:
ex = self.printed_by
if ex is None:
return ''
if ex is None:
return ''
Both variants of above code caused a DoesNotExist error in the corrupt database, so there is no need to be careful.
Make Service report usable¶
#1993 (Make Service report usable) was because
ServiceReport
gave
:useless results on ref:jane. I did two changes in
:lino_xl.lib.tickets
and lino_noi.lib.clocking
in order
:to get it work.
Here is a use case for when to define a local workflows_module
on a production site.
ReportingTypes
from lino_noi.lib.noi.workflows import * from lino.api import rt, _ ReportingTypes = rt.models.clocking.ReportingTypes ReportingTypes.clear() add = ReportingTypes.add_item add(‘10’, _(“Time”), ‘regular’)
#ReportingTypes.free.remove() #ReportingTypes.extra.remove() #ReportingTypes.regular.text = _(“Time”)
Note that this required a third little change to support redefining
clocking.ReportingTypes in workflows_module
: the plugin’s
default_reporting_type
setting must be
resolved in post_site_startup
, not already in
pre_site_startup
.
I then did a release because there was hope that the folllowing issue would get fixed with the newest version of ExtJS 6 front end:
my issue is that when I try to change language for an excerpt from english to german then it doesn’t accept it.
first issue is that i need to click the refresh button after loading that page because after loading the page, the excerpt Type combobox is empty
when i click the refresh action, Lino asks me whether I want to save my changes (though that’s nonsense because I didn’t do any changes)
it works when i just say No (to not save) but then I still cannot change the language from English to German
Some adventure during the release:
make_snapshot.sh
failed because it was killed due to low memory. After a reboot of the server it worked. The reboot took much time.git pull reported three unpushed local commits in Lino. We guess that they were inadvertently there, and it seems that they didn’t actually cause any code change.
After the release it turned out that this did not fix the problem. So the customers got their service reports in English this month.