Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More
Voga¶
Side note: Code snippets (lines starting with >>>
) in this document get
tested as part of our development workflow. The following
initialization snippet tells you which demo project is being used in
this document.
>>> from lino import startup
>>> startup('lino_book.projects.voga2.settings')
>>> from lino.api.doctest import *
>>> from django.utils.translation import get_language
>>> print([lng.name for lng in settings.SITE.languages])
['en', 'de', 'fr']
A web request¶
The following snippet reproduces a one-day bug on calendar events
whose time fields are empty. Fixed 2013-06-04 in
lino_xl.lib.cal.utils.when_text()
.
>>> print(get_language())
en
>>> client = Client()
>>> d = settings.SITE.demo_date().replace(month=12,day=25)
>>> d = d.strftime(settings.SITE.date_format_strftime)
>>> print(d)
25.12.2015
>>> url = '/api/cal/MyEntries?start=0&limit=16&fmt=json&pv=%s&pv=%s&pv=&pv=&pv=&pv=&pv=&pv=&pv=' % (d,d)
>>> client.force_login(rt.login('robin').user)
>>> res = client.get(url, REMOTE_USER='robin')
>>> print(res.status_code)
200
>>> result = json.loads(res.content.decode())
>>> print(list(sorted(result.keys())))
['count', 'html_text', 'no_data_text', 'param_values', 'rows', 'success', 'title']
Printable documents¶
We take a sales invoice, clear the cache, ask Lino to print it and check whether we get the expected response.
>>> ses = rt.login("robin")
>>> translation.activate('en')
>>> obj = trading.VatProductInvoice.objects.get(journal__ref="SLS", number=11, accounting_period__year__ref='2014')
>>> obj.clear_cache()
>>> obj.printed_by is None
True
>>> obj.clear_cache()
>>> rv = ses.run(obj.do_print)
appy.pod render .../lino_xl/lib/trading/config/trading/VatProductInvoice/Default.odt -> .../media/cache/appypdf/trading.VatProductInvoice-135.pdf
>>> print(rv['success'])
True
>>> print(rv['open_url'])
/media/cache/appypdf/trading.VatProductInvoice-135.pdf
>>> print(rv['message'])
Your printable document (<a href="/media/cache/appypdf/trading.VatProductInvoice-135.pdf">trading.VatProductInvoice-135.pdf</a>) should now open in a new browser window. If it doesn't, please ask your system administrator.
Note that we must clear the print cache because leaving the excerpt there would break a test case in Database structure in Lino Voga.
>>> obj.clear_cache()
Same for a calendar Event. This is mainly to see whether the templates directory has been inherited. Note that the first few dozen events have no user and would currently fail to print.
>>> obj = cal.Event.objects.get(pk=100)
>>> obj.clear_cache()
>>> rv = ses.run(obj.do_print)
appy.pod render .../lino_xl/lib/cal/config/cal/Event/Default.odt -> .../media/cache/appypdf/cal.Event-100.pdf
>>> print(rv['success'])
True
>>> print(rv['message'])
Your printable document (<a href="/media/cache/appypdf/cal.Event-100.pdf">cal.Event-100.pdf</a>) should now open in a new browser window. If it doesn't, please ask your system administrator.
Note that this test should fail if you run the test suite without a LibreOffice server running.
>>> show_change_watchers()
================== ============================== ================
model master_key ignored_fields
------------------ ------------------------------ ----------------
contacts.Partner None
contacts.Company contacts.Company.partner_ptr
contacts.Person contacts.Person.partner_ptr
courses.Teacher contacts.Person.partner_ptr
courses.Pupil contacts.Person.partner_ptr
================== ============================== ================