===================================
20131008 (Tuesday, 08 October 2013)
===================================


- Trying to printing an invoice caused an :ref:`ise`.
  This is subtle. See 
  :meth:`lino.modlib.accounting.models.Journal.get_templates_group`.

- :ref:`faggio` now overrides the verbose names for "Teacher" and "Pupil" 
  to "Instructor" and "Participant" respectively.

- The weekday checkboxes of a RecurrenceSet are now disabled when 
  Recurrency is not "per_weekday".

- Pupil.__unicode__ now shows the pupil_type
  (and Teacher.__unicode__ now shows the teacher_type)
  
- :ref:`faggio` has now :setting:`project_model` set to None.
  :mod:`lino.modlib.courses` now injects a field "course" to 
  cal.Event, this is required for EventsByTeacher.
  

- :mod:`lino.modlib.notes` and :mod:`lino.modlib.outbox` now manage 
  with the situation when :setting:`project_model` is None
  
- :class:`lino.mixins.duplicable.Duplicate` was callable from InsertRow.


The following was a subtle one:
we had noticed that Lino missed to fill in some fields (especially the 
"Room") of the automatically generated events of a course.
The explananation is an interesting example 
for our yet-to-write documentation about :lino:`/dev/apps`.

I had been solving this (in :mod:`lino.modlib.courses.models`) 
using plain Django signals as follows::

    @dd.receiver(dd.pre_save, sender=cal.Event,dispatch_uid="setup_event_from_course")
    def setup_event_from_course(sender=None,instance=None,**kw):
        ...
        if settings.SITE.loading_from_dump: return
        event = instance
        if event.is_user_modified(): return
        if event.is_fixed_state(): return
        if not isinstance(event.owner,Course): return
        course = event.owner
        event.project = course
        event.room = course.room

This turned out as a pifall. The above receiver was never called.
I guess it was because `cal.Event` here is an abstract model when 
this app is being used in :ref:`faggio`. But anyway, to avoid such side 
effects I moved this into a new method
:meth:`before_auto_event_save <lino.modlib.courses.models.Course.before_auto_event_save>`
on :class:`Course <lino.modlib.courses.models.Course>`.