20120710

dumpdata and UserProfiles

Because Django’s dumpdata command doesn’t call lino.Lino.startup(), it says:

Traceback (most recent call last):
  File "manage.py", line 19, in <module>
    execute_manager(settings)
  File "/var/snapshots/django/django/core/management/__init__.py", line 442, in execute_manager
    utility.execute()
  File "/var/snapshots/django/django/core/management/__init__.py", line 379, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/var/snapshots/django/django/core/management/base.py", line 191, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/var/snapshots/django/django/core/management/base.py", line 220, in execute
    output = self.handle(*args, **options)
  File "/var/snapshots/django/django/core/management/commands/dumpdata.py", line 110, in handle
    objects.extend(model._default_manager.using(using).all())
  File "/var/snapshots/django/django/db/models/query.py", line 84, in __len__
    self._result_cache.extend(self._iter)
  File "/var/snapshots/django/django/db/models/query.py", line 286, in iterator
    obj = model(*row[index_start:aggregate_start])
  File "/var/snapshots/django/django/db/models/base.py", line 300, in __init__
    setattr(self, field.attname, val)
  File "/var/snapshots/django/django/db/models/fields/subclassing.py", line 34, in __set__
    obj.__dict__[self.field.name] = self.field.to_python(value)
  File "/usr/local/django/test_dsbe/using/lino/lino/utils/choicelists.py", line 450, in to_python
    return self.choicelist.to_python(value)
  File "/usr/local/django/test_dsbe/using/lino/lino/utils/choicelists.py", line 316, in to_python
    raise Exception("Unresolved value %r for %s" % (value,cls))
Exception: Unresolved value u'200' for <class 'lino.core.perms.UserProfiles'>

That’s why Lino now includes an override of that command: lino.management.commands.dumpdata.

Database change in lino.modlib.cal

This is to be considered an experiment:

  • removed cal.EventType (functionally replaced by cal.Calendar)
  • Calender is no longer UserAuthored
  • Calendar Events and Tasks no longer need to have a ‘calender’

Kalender

Eine prinzipielle Entscheidung ist für mich gefallen: die experimentelle Änderung von dieser Nacht bleibt. Es gibt nicht einen Kalender pro Benutzer, sondern einen pro Terminart. Denn auch in der Demo von Ext.ensible benutzen sie die verschiedenen Kalender zum Differenzieren von Terminarten (nicht von Benutzern): http://ext.ensible.com/deploy/dev/examples/calendar/TestApp/test-app.html

Das Verwalten von Gruppenterminen fängt jetzt an:

  • CalendarPanel hat jetzt einen Button “Team View”, der zwischen “Meine Termine” und “Team-Ansicht” umschaltet.
  • Kalenderliste wird momentan für alle Benutzer die gleiche genommen. Braucht man nicht zu abonnieren. Dafür muss man sein “Team” definieren: eine Liste aller anderen Benutzer, deren Termine man in der Team-Ansicht sehen möchte.
  • Die Workflow-Buttons für Gäste eines Termins funktionierten noch nicht.
  • Neue Tabellen:
    • MyInvitations (Meine Einladungen) : alle Einladungen, die ich erhalten habe. Das sind alle Einträge, wo ich als Gast eines Termins vorkomme.
    • MyPendingInvitations (Meine offenen Einladungen) : idem, aber diesmal nur die Einladungen die im Status “zu bestätigen” sind. Hier sollte man normalerweise auf “Bestätigen” klicken, damit der Verantwortliche des Termins
    • MySentInvitations
    • MyPendingSentInvitations

Miscellaneous

  • Setting a column filter on a ForeignKey field didn’t work on all models. Now it uses exactly like the quick search field of a table on that model would work Using lino.core.modeltools.Model.quick_search_fields of the foreign model. Works fine. It’s now also possible to search for a primary key.
  • Offene Kursabfragen war nur für Manager sichtbar.