================================== 20131018 (Friday, 18 October 2013) ================================== Lino Faggio =========== Continued on yesterday's "To-Do-Liste Sven" (:blogref:`20131017`). - The `cal.Calendar` model is back. I had replaced it by a system of subscriptions where each user could define application-specific filter criteria per Subscription. This resulted in a system where it was possible for an Event to appear in different Calendars. Which would have been nice, but the problem with that idea is that `Ext.ensible.CalendarPanel` isn't designed for it, it wants a list of calendars and each Event pointing to exactly one of them. So I return back to *almost* the old system (and that "almost" is what Lino has learned): `cal.Event` has no direct FK to Calendar, but a `get_calendar` method. And :ref:`welfare` users see one Calendar per `User` while :ref:`faggio` users see one Calendar per `Room`. - Updated the :ref:`welfare` test suite to several recent changes. - New item "Once" in Recurrences. - insert_layout for `courses.Line` - New field courses.Line every_unit (Recurrences) Split up :mod:`lino_xl.lib.cal` into more digestable chunks: :mod:`models_task ` :mod:`models_guest ` :mod:`models_event ` :mod:`models_calendars ` In a first checkin I had tried to turn :mod:`lino_xl.lib.cal` into a package containing the above files. But that would require me to add an explicit `app_label `_ (the feature that app_label "is no longer required for models that are defined in a models package within an app" is only available in the development version). I also did the mistake of naming them ``task``, ``guest``, ``event`` and ``calendar`` in a first go. And didn't notice that a module called `calendar `_ is part of the Python standard library. The funny thing was that this bomb didn't explode in the Lino test suite, only in :ref:`welfare`:: Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/home/luc/hgwork/atelier/atelier/doctest_utf8.py", line 52, in sys.exit(_test()) File "/home/luc/hgwork/atelier/atelier/doctest_utf8.py", line 38, in _test m = __import__(filename[:-3]) File "lino/modlib/cal/utils.py", line 31, in from north.utils import to_locale File "/home/luc/hgwork/north/north/__init__.py", line 16, in from north.site import Site File "/home/luc/hgwork/north/north/site.py", line 10, in from djangosite import Site, DJANGO_DEFAULT_LANGUAGE, assert_django_code File "/home/luc/hgwork/site/djangosite/__init__.py", line 36, in from atelier.utils import AttrDict, ispure File "/home/luc/hgwork/atelier/atelier/utils.py", line 17, in from dateutil import parser as dateparser File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/dateutil/parser.py", line 26, in from . import relativedelta File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/dateutil/relativedelta.py", line 10, in import calendar File "lino/modlib/cal/calendar.py", line 27, in from django.db import models File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/django/db/__init__.py", line 11, in if settings.DATABASES and DEFAULT_DB_ALIAS not in settings.DATABASES: File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__ self._setup(name) File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup self._wrapped = Settings(settings_module) File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/django/conf/__init__.py", line 132, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/home/luc/pythonenvs/py27/local/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module __import__(name) File "lino/__init__.py", line 79, in from .site import Site File "lino/site.py", line 103, in from lino.utils.xmlgen import html as xghtml File "lino/utils/__init__.py", line 60, in from atelier.utils import AttrDict, iif, ispure, assert_pure, confirm ImportError: cannot import name AttrDict An interesting example of a subtle pitfall! Citadel ======= Oops, it seems that citadel caused some trouble to my mailman configuration... :: (demo)luc@vps:~$ sudo aptitude purge citadel-server The following packages will be REMOVED: citadel-server{p} 0 packages upgraded, 0 newly installed, 1 to remove and 40 not upgraded. Need to get 0 B of archives. After unpacking 2,470 kB will be freed. Do you want to continue? [Y/n/?] (Reading database ... 44499 files and directories currently installed.) Removing citadel-server ... .Purging configuration files for citadel-server ... /var/lib/citadel/data not removed, as it may contain your personal data. dpkg: warning: while removing citadel-server, directory '/var/spool/citadel/network' not empty so not removed. dpkg: warning: while removing citadel-server, directory '/var/spool/citadel' not empty so not removed. dpkg: warning: while removing citadel-server, directory '/var/lib/citadel/data' not empty so not removed. dpkg: warning: while removing citadel-server, directory '/var/lib/citadel' not empty so not removed. Processing triggers for man-db ... (demo)luc@vps:~$ sudo rm -R /var/spool/citadel (demo)luc@vps:~$ sudo rm -R /var/lib/citadel (demo)luc@vps:~$ sudo aptitude purge libcitadel2 (demo)luc@vps:~$ sudo tail -f /var/log/mail.log (demo)luc@vps:~$ sudo /etc/init.d/postfix restart Oct 18 14:15:28 vps postfix/local[18004]: EB4F42A2502: to=, orig_to=, relay=local, delay=1319126, delays=1319126/0/0/0.01, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION") Oct 18 14:15:28 vps postfix/qmgr[15874]: EB4F42A2502: removed Oct 18 14:15:29 vps postfix/pickup[15873]: F07572A24F9: uid=33 from= Oct 18 14:15:29 vps postfix/cleanup[18044]: F07572A24F9: message-id=<20131018101528.F07572A24F9@lino-framework.org> Oct 18 14:15:29 vps postfix/qmgr[15874]: F07572A24F9: from=, size=985, nrcpt=1 (queue active) Oct 18 14:15:29 vps postfix/local[18046]: EFBF02A24D2: to=, orig_to=, relay=local, delay=23727, delays=23727/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION") Oct 18 14:15:29 vps postfix/qmgr[15874]: EFBF02A24D2: removed Oct 18 14:15:29 vps postfix/local[18089]: F07572A24F9: to=, orig_to=, relay=local, delay=755726, delays=755726/0/0/0, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION") Oct 18 14:15:29 vps postfix/qmgr[15874]: F07572A24F9: removed Oct 18 14:15:35 vps postfix/local[16188]: 2DBCD2A3BB9: to=, orig_to=, relay=local, delay=649533, delays=649499/0.65/0/33, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION") Oct 18 14:15:35 vps postfix/qmgr[15874]: 2DBCD2A3BB9: removed (demo)luc@vps:~$ sudo /etc/init.d/mailman restart (demo)luc@vps:~$ sudo less /var/log/mailman/vette Oct 17 15:43:31 2013 (5058) kakoor: Discarded posting: From: dtuulik@gmail.com Subject: Re: Kontsertreis Saksamaale 23.-30. sept. 2013 Reason: Palun lhenda adressaatide nimekirja: see on liiga pikk. Oct 17 15:44:18 2013 (5061) kakoor: Discarded posting: From: reet.lend@ksg.edu.ee Subject: =?iso-8859-15?Q?Proov_8.10_ja_laulmine_L=F5ikust=E4nup=FChal_13.10?= Reason: Kiri oli liiga suur; palun lhendage seda nii, et see oleks viksem kui 40 KB. /var/log/mailman/vette (END) Sent a test mail to kakoor:: /var/log/mailman/error shows: Oct 18 14:23:09 2013 (18198) send_digests() failed: [Errno 13] Permission denied : '/var/lib/mailman/archives/private/kakoor/attachments' Oct 18 14:23:10 2013 (18195) Archive file access failure: /var/lib/mailman/archives/private/kakoor.mbox/kakoor.mbox [Errno 13] Permission denied: '/var/lib/mailman/archives/private/kakoor.mbox/kakoor.mbox' Oct 18 14:23:10 2013 (18195) Uncaught runner exception: [Errno 13] Permission denied: '/var/lib/mailman/archives/private/kakoor.mbox/kakoor.mbox' Oct 18 14:23:10 2013 (18195) Traceback (most recent call last): File "/var/lib/mailman/Mailman/Queue/Runner.py", line 120, in _oneloop self._onefile(msg, msgdata) File "/var/lib/mailman/Mailman/Queue/Runner.py", line 191, in _onefile keepqueued = self._dispose(mlist, msg, msgdata) File "/var/lib/mailman/Mailman/Queue/ArchRunner.py", line 73, in _dispose mlist.ArchiveMail(msg) File "/var/lib/mailman/Mailman/Archiver/Archiver.py", line 198, in ArchiveMail self.__archive_to_mbox(msg) File "/var/lib/mailman/Mailman/Archiver/Archiver.py", line 167, in __archive_to_mbox mbox = self.__archive_file(afn) File "/var/lib/mailman/Mailman/Archiver/Archiver.py", line 155, in __archive_file return Mailbox.Mailbox(open(afn, 'a+')) IOError: [Errno 13] Permission denied: '/var/lib/mailman/archives/private/kakoor: root@vps:/var/log/mailman# ls -al /var/lib/mailman/archives/private/kakoor total 12 drwxrwsr-x 2 root www-data 4096 Jul 30 15:14 . drwxrws--- 8 list www-data 4096 Aug 26 15:53 .. -rw-rw-r-- 1 root www-data 503 Jul 30 15:14 index.html $ sudo new_list pppk $ sudo nano /etc/aliases (add aliases as instructed and run) $ sudo newaliases $ sudo nano /etc/postfix/valias.txt $ sudo postmap /etc/postfix/valias.txt