noi1r -- noi1e with React front end

>>> from lino import startup
>>> startup('lino_book.projects.noi1r.settings')
>>> from lino.api.doctest import *
>>> ses = rt.login('robin')
>>> dd.plugins.ledger.sales_method
'direct'
>>> vt = dd.plugins.invoicing.get_voucher_type()
>>> print(vt)
Sales invoice (sales.InvoicesByJournal)
>>> print(vt.get_journals())
<QuerySet [Journal #1 ('Sales invoices (SLS)')]>

Overview

The lino_book.projects.noi1r demo project (TODO)

Here is the output of walk_menu_items for this site.

>>> walk_menu_items('robin', severe=False)
... 

Dependencies

This project needs a bit more Python packages installed than usual. They should have been installed automatically into your developer environment. In case of doubt you can also run install command manually:

>>> from django.core.management import call_command
>>> call_command('install', list=True)
... 
appy
atelier
bleach
channels
channels_redis
daphne
djangorestframework
google-api-python-client
google-auth
google-auth-httplib2
google-auth-oauthlib
imagesize
num2words
odfpy
python-lorem
pywebpush
social-auth-app-django

Don't read me

The following snippets are just for testing.

>>> url = "/api/comments/CommentsByRFC"
>>> res = test_client.get(url)
... 
Invalid master type None: /api/comments/CommentsByRFC
Traceback (most recent call last):
...
django.core.exceptions.BadRequest: Invalid master type None
>>> fld = rt.models.users.User._meta.get_field('calendar_sync_token')
>>> fld
<lino.core.fields.CharField: calendar_sync_token>

The help text of lino.modlib.users.User.calendar_sync_token is not trivial to get because it is defined by the lino_xl.lib.google plugin.

>>> print(fld.help_text)
The next sync token for the user's calendar synchronization.