2 commits - po/POTFILES.skip po/pykolab.pot wallace/module_invitationpolicy.py

Thomas Brüderli bruederli at kolabsys.com
Tue Feb 24 16:30:28 CET 2015


 po/POTFILES.skip                   |   33 -
 po/pykolab.pot                     |  798 +++++++++++++++++++++----------------
 wallace/module_invitationpolicy.py |    2 
 3 files changed, 456 insertions(+), 377 deletions(-)

New commits:
commit b9618a6bf02292132198a5bea6b46dac1863b3ca
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Mon Feb 23 21:02:43 2015 -0500

    Reset vars on exception

diff --git a/wallace/module_invitationpolicy.py b/wallace/module_invitationpolicy.py
index 9f720c8..17d1168 100644
--- a/wallace/module_invitationpolicy.py
+++ b/wallace/module_invitationpolicy.py
@@ -833,6 +833,8 @@ def find_existing_object(uid, type, recurrence_id, user_rec, lock=False):
 
             except Exception, e:
                 log.error(_("Failed to parse %s from message %s/%s: %s") % (type, folder, num, traceback.format_exc()))
+                event = None
+                master = None
                 continue
 
             if event and event.uid == uid:


commit 41b3c2efe840f824371ee77f561b3844f2146d8d
Author: Thomas Bruederli <bruederli at kolabsys.com>
Date:   Mon Feb 23 21:02:18 2015 -0500

    Update .pot source files

diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index 394df28..d6982c7 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,34 +1 @@
-._conf.py
-pykolab/auth/.___init__.py
-pykolab/auth/ldap/._auth_cache.py
-pykolab/auth/ldap/.___init__.py
-pykolab/._base.py
-pykolab/cli/._cmd_add_alias.py
-pykolab/cli/._cmd_list_messages.py
-pykolab/conf/._defaults.py
-pykolab/conf/.___init__.py
 pykolab/constants.py
-pykolab/imap/._cyrus.py
-pykolab/imap/.___init__.py
-pykolab/.___init__.py
-pykolab/itip/.___init__.py
-pykolab/._translate.py
-pykolab/._utils.py
-pykolab/xml/._event.py
-pykolab/xml/._todo.py
-pykolab/xml/._utils.py
-tests/functional/._resource_func.py
-tests/functional/._synchronize.py
-tests/functional/test_wallace/._test_005_resource_invitation.py
-tests/functional/test_wallace/._test_007_invitationpolicy.py
-tests/unit/._test-003-event.py
-tests/unit/._test-004-icalendar.py
-tests/unit/._test-011-itip.py
-tests/unit/._test-011-wallace_resources.py
-tests/unit/._test-012-wallace_invitationpolicy.py
-._test-wallace.py
-wallace/.___init__.py
-wallace/._module_invitationpolicy.py
-wallace/._module_resources.py
-wallace/._modules.py
-._wallace.py
diff --git a/po/pykolab.pot b/po/pykolab.pot
index 6bd2681..98005bf 100644
--- a/po/pykolab.pot
+++ b/po/pykolab.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-01-14 01:36+0100\n"
+"POT-Creation-Date: 2015-02-23 21:01-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -368,7 +368,7 @@ msgstr ""
 msgid "Could not connect to LDAP, is it running?"
 msgstr ""
 
-#: ../kolabd/__init__.py:233 ../pykolab/auth/ldap/__init__.py:2242
+#: ../kolabd/__init__.py:233 ../pykolab/auth/ldap/__init__.py:2261
 #: ../pykolab/cli/cmd_sync.py:67
 msgid "Listing domains..."
 msgstr ""
@@ -510,254 +510,254 @@ msgid ""
 "ldap search: (%r, %r, filterstr='(objectclass=*)', attrlist=[ 'dn' ] + %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:481
+#: ../pykolab/auth/ldap/__init__.py:500
 #, python-format
 msgid "Finding recipient with filter %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:557
+#: ../pykolab/auth/ldap/__init__.py:576
 #, python-format
 msgid "Finding resource with filter %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:588
+#: ../pykolab/auth/ldap/__init__.py:607
 #, python-format
 msgid "Using timestamp %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:625
+#: ../pykolab/auth/ldap/__init__.py:644
 #, python-format
 msgid "Not applying recipient policy for %s "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:635
+#: ../pykolab/auth/ldap/__init__.py:654
 #, python-format
 msgid "Applying recipient policy to %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:652
+#: ../pykolab/auth/ldap/__init__.py:671
 #, python-format
 msgid "Using mail attributes: %r, with primary %r and "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:663
+#: ../pykolab/auth/ldap/__init__.py:682
 #, python-format
 msgid "key %r not in entry"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:665
+#: ../pykolab/auth/ldap/__init__.py:684
 #, python-format
 msgid "key %r is the prim. mail attr."
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:667
+#: ../pykolab/auth/ldap/__init__.py:686
 msgid "prim. mail pol. is not empty"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:670
+#: ../pykolab/auth/ldap/__init__.py:689
 #, python-format
 msgid "key %r is the sec. mail attr."
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:672
+#: ../pykolab/auth/ldap/__init__.py:691
 msgid "sec. mail pol. is not empty"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:676 ../pykolab/auth/ldap/__init__.py:690
+#: ../pykolab/auth/ldap/__init__.py:695 ../pykolab/auth/ldap/__init__.py:709
 #, python-format
 msgid "Attributes %r are not yet available for entry %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:729
+#: ../pykolab/auth/ldap/__init__.py:748
 #, python-format
 msgid "No results for mail address %s found"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:740
+#: ../pykolab/auth/ldap/__init__.py:759
 #, python-format
 msgid "1 result for address %s found, verifying"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:750
+#: ../pykolab/auth/ldap/__init__.py:769
 #, python-format
 msgid "Too bad, primary email address %s "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:761 ../pykolab/auth/ldap/__init__.py:850
+#: ../pykolab/auth/ldap/__init__.py:780 ../pykolab/auth/ldap/__init__.py:869
 msgid "Address assigned to us"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:816
+#: ../pykolab/auth/ldap/__init__.py:835
 #, python-format
 msgid "No results for address %s found"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:827
+#: ../pykolab/auth/ldap/__init__.py:846
 #, python-format
 msgid "1 result for address %s found, "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:838
+#: ../pykolab/auth/ldap/__init__.py:857
 msgid "Too bad, secondary email "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:865
+#: ../pykolab/auth/ldap/__init__.py:884
 msgid "Recipient policy composed the following set of secondary "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:876
+#: ../pykolab/auth/ldap/__init__.py:895
 #, python-format
 msgid "Secondary mail addresses that we want is not None: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:887
+#: ../pykolab/auth/ldap/__init__.py:906
 msgid "Avoiding the duplication of the primary mail "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:898
+#: ../pykolab/auth/ldap/__init__.py:917
 #, python-format
 msgid "Entry is getting secondary mail addresses: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:906
+#: ../pykolab/auth/ldap/__init__.py:925
 msgid "Entry did not have any secondary mail "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:923 ../pykolab/auth/ldap/__init__.py:929
+#: ../pykolab/auth/ldap/__init__.py:942 ../pykolab/auth/ldap/__init__.py:948
 #, python-format
 msgid "secondary_mail_addresses: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:924 ../pykolab/auth/ldap/__init__.py:930
+#: ../pykolab/auth/ldap/__init__.py:943 ../pykolab/auth/ldap/__init__.py:949
 #, python-format
 msgid "entry[%s]: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:941
+#: ../pykolab/auth/ldap/__init__.py:960
 #, python-format
 msgid "Entry modifications list: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:969
+#: ../pykolab/auth/ldap/__init__.py:988
 #, python-format
 msgid "Setting entry attribute %r to %r for %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1005
+#: ../pykolab/auth/ldap/__init__.py:1024
 #, python-format
 msgid ""
 "Could not update dn %r:\n"
 "%r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1031
+#: ../pykolab/auth/ldap/__init__.py:1050
 #, python-format
 msgid "Using filter %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1046
+#: ../pykolab/auth/ldap/__init__.py:1065
 #, python-format
 msgid "Synchronization is searching against base DN: %s"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1095
+#: ../pykolab/auth/ldap/__init__.py:1114
 #, python-format
 msgid "About to consider the user quota for %r (used: %r, "
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1166
+#: ../pykolab/auth/ldap/__init__.py:1185
 msgid "Invalid DN, username and/or password."
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1291 ../pykolab/auth/ldap/__init__.py:1308
-#: ../pykolab/auth/ldap/__init__.py:1682 ../pykolab/auth/ldap/__init__.py:1699
+#: ../pykolab/auth/ldap/__init__.py:1310 ../pykolab/auth/ldap/__init__.py:1327
+#: ../pykolab/auth/ldap/__init__.py:1701 ../pykolab/auth/ldap/__init__.py:1718
 #, python-format
 msgid "Found a subject %r with access %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1410
+#: ../pykolab/auth/ldap/__init__.py:1429
 #, python-format
 msgid "Entry %s attribute value: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1418
+#: ../pykolab/auth/ldap/__init__.py:1437
 #, python-format
 msgid "imap.user_mailbox_server(%r) result: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1481 ../pykolab/auth/ldap/__init__.py:2809
+#: ../pykolab/auth/ldap/__init__.py:1500 ../pykolab/auth/ldap/__init__.py:2828
 #, python-format
 msgid "%s"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:1748 ../pykolab/auth/ldap/__init__.py:1948
+#: ../pykolab/auth/ldap/__init__.py:1767 ../pykolab/auth/ldap/__init__.py:1967
 #, python-format
 msgid "Result from recipient policy: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2003
+#: ../pykolab/auth/ldap/__init__.py:2022
 #, python-format
 msgid "Kolab user %s does not have a result attribute %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2162
+#: ../pykolab/auth/ldap/__init__.py:2181
 #, python-format
 msgid "Finding domain root dn for domain %s"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2269
+#: ../pykolab/auth/ldap/__init__.py:2288
 msgid "Authentication database DOWN"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2353 ../pykolab/auth/ldap/__init__.py:2401
+#: ../pykolab/auth/ldap/__init__.py:2372 ../pykolab/auth/ldap/__init__.py:2420
 #, python-format
 msgid "Entry type: %s"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2490
+#: ../pykolab/auth/ldap/__init__.py:2509
 msgid "LDAP Search Result Data Entry:"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2506
+#: ../pykolab/auth/ldap/__init__.py:2525
 msgid "Entry Change Notification attributes:"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2511
+#: ../pykolab/auth/ldap/__init__.py:2530
 #, python-format
 msgid "Change Type: %r (%r)"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2519
+#: ../pykolab/auth/ldap/__init__.py:2538
 #, python-format
 msgid "Previous DN: %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2574
+#: ../pykolab/auth/ldap/__init__.py:2593
 #, python-format
 msgid "Object %s searched no longer exists"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2584
+#: ../pykolab/auth/ldap/__init__.py:2603
 #, python-format
 msgid "%d results..."
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2687
+#: ../pykolab/auth/ldap/__init__.py:2706
 #, python-format
 msgid "Searching with filter %r"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2739
+#: ../pykolab/auth/ldap/__init__.py:2758
 #, python-format
 msgid "Checking for support for %s on %s"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2758
+#: ../pykolab/auth/ldap/__init__.py:2777
 #, python-format
 msgid "Found support for %s"
 msgstr ""
 
-#: ../pykolab/auth/ldap/__init__.py:2803
+#: ../pykolab/auth/ldap/__init__.py:2822
 #, python-format
 msgid "An error occured using %s: %r"
 msgstr ""
@@ -919,7 +919,7 @@ msgstr ""
 #: ../pykolab/cli/cmd_list_mailbox_metadata.py:54
 #: ../pykolab/cli/cmd_set_mailbox_acl.py:54
 #: ../pykolab/cli/cmd_set_mailbox_metadata.py:66
-#: ../pykolab/cli/cmd_set_quota.py:46 ../tests/unit/test-015-translate.py:12
+#: ../pykolab/cli/cmd_set_quota.py:48 ../tests/unit/test-015-translate.py:12
 #: ../tests/unit/test-015-translate.py:16
 #: ../tests/unit/test-015-translate.py:18
 #: ../tests/unit/test-015-translate.py:20
@@ -931,7 +931,7 @@ msgstr ""
 #: ../pykolab/cli/cmd_list_mailbox_metadata.py:80
 #: ../pykolab/cli/cmd_set_mailbox_acl.py:67
 #: ../pykolab/cli/cmd_set_mailbox_metadata.py:94
-#: ../pykolab/cli/cmd_set_quota.py:58
+#: ../pykolab/cli/cmd_set_quota.py:60
 #, python-format
 msgid "No such folder %r"
 msgstr ""
@@ -1177,7 +1177,7 @@ msgstr ""
 msgid "Metadata path"
 msgstr ""
 
-#: ../pykolab/cli/cmd_set_quota.py:43 ../pykolab/cli/cmd_set_quota.py:47
+#: ../pykolab/cli/cmd_set_quota.py:45 ../pykolab/cli/cmd_set_quota.py:49
 msgid "New quota"
 msgstr ""
 
@@ -1782,179 +1782,179 @@ msgstr ""
 msgid "%r has no attribute %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:393
+#: ../pykolab/imap/__init__.py:389
 #, python-format
 msgid "Could not set ACL for %s on folder %s: %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:427 ../pykolab/imap/__init__.py:462
+#: ../pykolab/imap/__init__.py:423 ../pykolab/imap/__init__.py:458
 #, python-format
 msgid "Creating new shared folder %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:487 ../pykolab/imap/__init__.py:740
+#: ../pykolab/imap/__init__.py:483 ../pykolab/imap/__init__.py:736
 #, python-format
 msgid "Downcasing mailbox name %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:491
+#: ../pykolab/imap/__init__.py:487
 #, python-format
 msgid "Creating new mailbox for user %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:506 ../pykolab/imap/__init__.py:613
+#: ../pykolab/imap/__init__.py:502 ../pykolab/imap/__init__.py:609
 msgid "Waiting for the Cyrus IMAP Murder to settle..."
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:559
+#: ../pykolab/imap/__init__.py:555
 #, python-format
 msgid "Creating additional folders for user %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:587
+#: ../pykolab/imap/__init__.py:583
 #, python-format
 msgid "Waiting for the Cyrus murder to settle... %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:602
+#: ../pykolab/imap/__init__.py:598
 #, python-format
 msgid "Correcting additional folder name from %r to %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:618
+#: ../pykolab/imap/__init__.py:614
 #, python-format
 msgid "Mailbox already exists: %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:658
+#: ../pykolab/imap/__init__.py:654
 msgid "Subscribing user to the additional folders"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:672
+#: ../pykolab/imap/__init__.py:668
 msgid "Using the following tests for folder subscriptions:"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:674
+#: ../pykolab/imap/__init__.py:670
 #, python-format
 msgid "    %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:677
+#: ../pykolab/imap/__init__.py:673
 #, python-format
 msgid "Folder %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:689
+#: ../pykolab/imap/__init__.py:685
 #, python-format
 msgid "Subscribing %s to folder %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:693
+#: ../pykolab/imap/__init__.py:689
 #, python-format
 msgid "Subscribing %s to folder %s failed: %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:723
+#: ../pykolab/imap/__init__.py:719
 #, python-format
 msgid "Could not rename %s to reside on partition %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:756
+#: ../pykolab/imap/__init__.py:752
 #, python-format
 msgid "INBOX folder to rename (%s) does not exist"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:759 ../pykolab/imap/__init__.py:835
+#: ../pykolab/imap/__init__.py:755 ../pykolab/imap/__init__.py:831
 #, python-format
 msgid "Renaming INBOX from %s to %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:763
+#: ../pykolab/imap/__init__.py:759
 #, python-format
 msgid "Could not rename INBOX folder %s to %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:765 ../pykolab/imap/__init__.py:839
+#: ../pykolab/imap/__init__.py:761 ../pykolab/imap/__init__.py:835
 #, python-format
 msgid "Moving INBOX folder %s won't succeed as target folder %s already exists"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:769
+#: ../pykolab/imap/__init__.py:765
 #, python-format
 msgid "Server for mailbox %r is %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:777
+#: ../pykolab/imap/__init__.py:773
 #, python-format
 msgid "Looking for folder '%s', we found folders: %r"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:800
+#: ../pykolab/imap/__init__.py:796
 #, python-format
 msgid "Setting ACL rights %s for subject %s on folder "
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:811
+#: ../pykolab/imap/__init__.py:807
 #, python-format
 msgid "Removing ACL rights %s for subject %s on folder "
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:832
+#: ../pykolab/imap/__init__.py:828
 #, python-format
 msgid "Found old INBOX folder %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:841
+#: ../pykolab/imap/__init__.py:837
 #, python-format
 msgid "Did not find old folder user/%s to rename"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:843
+#: ../pykolab/imap/__init__.py:839
 msgid "Value for user is not a dictionary"
 msgstr ""
 
 #. TODO: Go in fact correct the quota.
-#: ../pykolab/imap/__init__.py:911
+#: ../pykolab/imap/__init__.py:907
 #, python-format
 msgid "Cannot get current IMAP quota for folder %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:924
+#: ../pykolab/imap/__init__.py:920
 #, python-format
 msgid "Quota for %s currently is %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:930
+#: ../pykolab/imap/__init__.py:926
 #, python-format
 msgid "Adjusting authentication database quota for folder %s to %d"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:935
+#: ../pykolab/imap/__init__.py:931
 #, python-format
 msgid "Correcting quota for %s to %s (currently %s)"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:1012
+#: ../pykolab/imap/__init__.py:1008
 #, python-format
 msgid "Checking folder: %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:1017
+#: ../pykolab/imap/__init__.py:1013
 #, python-format
 msgid "Folder has no corresponding user (1): %s"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:1020
+#: ../pykolab/imap/__init__.py:1016
 #, python-format
 msgid "Folder has no corresponding user (2): %s"
 msgstr ""
 
 #. We got user identifier only
-#: ../pykolab/imap/__init__.py:1035
+#: ../pykolab/imap/__init__.py:1031
 msgid "Please don't give us just a user identifier"
 msgstr ""
 
-#: ../pykolab/imap/__init__.py:1038
+#: ../pykolab/imap/__init__.py:1034
 #, python-format
 msgid "Deleting folder %s"
 msgstr ""
@@ -1963,52 +1963,52 @@ msgstr ""
 msgid "Returning thread local configuration"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:45
+#: ../pykolab/itip/__init__.py:46
 #, python-format
 msgid "Method %r not really interesting for us."
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:51
+#: ../pykolab/itip/__init__.py:52
 #, python-format
 msgid "Raw iTip payload (%r): %r"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:61
+#: ../pykolab/itip/__init__.py:62
 msgid "Could not read iTip from message."
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:69
+#: ../pykolab/itip/__init__.py:70
 #, python-format
 msgid "Duplicate iTip object: %s"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:93
+#: ../pykolab/itip/__init__.py:95
 msgid "iTip event without a start"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:138
+#: ../pykolab/itip/__init__.py:140
 msgid "Message is not an iTip message (non-multipart message)"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:221
+#: ../pykolab/itip/__init__.py:245
 #, python-format
 msgid "Send iTip reply %s for %s %r"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:237
+#: ../pykolab/itip/__init__.py:261
 #, python-format
 msgid "Failed to compose iTip reply message: %r: %s"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:248 ../pykolab/itip/__init__.py:292
-#: ../wallace/module_invitationpolicy.py:1082
-#: ../wallace/module_invitationpolicy.py:1144
-#: ../wallace/module_resources.py:1247
+#: ../pykolab/itip/__init__.py:272 ../pykolab/itip/__init__.py:316
+#: ../wallace/module_invitationpolicy.py:1172
+#: ../wallace/module_invitationpolicy.py:1234
+#: ../wallace/module_resources.py:1339
 #, python-format
 msgid "SMTP sendmail error: %r"
 msgstr ""
 
-#: ../pykolab/itip/__init__.py:280
+#: ../pykolab/itip/__init__.py:304
 #, python-format
 msgid "Failed to compose iTip request message: %r"
 msgstr ""
@@ -2153,7 +2153,7 @@ msgid "user_delete: %r"
 msgstr ""
 
 #: ../pykolab/plugins/roundcubedb/__init__.py:55
-#: ../pykolab/setup/setup_roundcube.py:167
+#: ../pykolab/setup/setup_roundcube.py:168
 msgid "Roundcube installation path not found."
 msgstr ""
 
@@ -2198,8 +2198,8 @@ msgid "Could not start the cyrus-imapd and kolab-saslauthd services."
 msgstr ""
 
 #: ../pykolab/setup/setup_imap.py:173 ../pykolab/setup/setup_kolabd.py:90
-#: ../pykolab/setup/setup_ldap.py:426 ../pykolab/setup/setup_mta.py:465
-#: ../pykolab/setup/setup_mysql.py:58 ../pykolab/setup/setup_roundcube.py:244
+#: ../pykolab/setup/setup_ldap.py:426 ../pykolab/setup/setup_mta.py:472
+#: ../pykolab/setup/setup_mysql.py:63 ../pykolab/setup/setup_roundcube.py:245
 #: ../pykolab/setup/setup_syncroton.py:105
 msgid "Could not configure to start on boot, the "
 msgstr ""
@@ -2500,7 +2500,11 @@ msgstr ""
 msgid "Setting access control to %s"
 msgstr ""
 
-#: ../pykolab/setup/setup_ldap.py:679
+#: ../pykolab/setup/setup_ldap.py:674
+msgid "directory server admin service not available"
+msgstr ""
+
+#: ../pykolab/setup/setup_ldap.py:682
 msgid "Could not start and configure to start on boot, the "
 msgstr ""
 
@@ -2517,15 +2521,15 @@ msgstr ""
 msgid "Could not write out Postfix configuration file /etc/postfix/master.cf"
 msgstr ""
 
-#: ../pykolab/setup/setup_mta.py:399
+#: ../pykolab/setup/setup_mta.py:406
 msgid "Could not write out Amavis configuration file amavisd.conf"
 msgstr ""
 
-#: ../pykolab/setup/setup_mta.py:407
+#: ../pykolab/setup/setup_mta.py:414
 msgid "Not writing out any configuration for Amavis."
 msgstr ""
 
-#: ../pykolab/setup/setup_mta.py:447
+#: ../pykolab/setup/setup_mta.py:454
 msgid "Could not start the postfix, clamav and amavisd services services."
 msgstr ""
 
@@ -2533,15 +2537,15 @@ msgstr ""
 msgid "Setup MySQL."
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:49
+#: ../pykolab/setup/setup_mysql.py:54
 msgid "Could not start the MySQL database service."
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:71
+#: ../pykolab/setup/setup_mysql.py:76
 msgid "What MySQL server are we setting up?"
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:75
+#: ../pykolab/setup/setup_mysql.py:80
 msgid ""
 "\n"
 "                        Please supply the root password for MySQL, so we can "
@@ -2551,13 +2555,13 @@ msgid ""
 "                    "
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:82 ../pykolab/setup/setup_mysql.py:99
-#: ../pykolab/setup/setup_roundcube.py:190
+#: ../pykolab/setup/setup_mysql.py:87 ../pykolab/setup/setup_mysql.py:104
+#: ../pykolab/setup/setup_roundcube.py:191
 #: ../pykolab/setup/setup_syncroton.py:66
 msgid "MySQL root password"
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:88
+#: ../pykolab/setup/setup_mysql.py:93
 msgid ""
 "\n"
 "                        Please supply a root password for MySQL. This "
@@ -2572,7 +2576,7 @@ msgid ""
 "                    "
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:143
+#: ../pykolab/setup/setup_mysql.py:148
 msgid ""
 "\n"
 "                        Please supply a password for the MySQL user "
@@ -2583,11 +2587,11 @@ msgid ""
 "                    "
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:151
+#: ../pykolab/setup/setup_mysql.py:156
 msgid "MySQL kolab password"
 msgstr ""
 
-#: ../pykolab/setup/setup_mysql.py:170
+#: ../pykolab/setup/setup_mysql.py:175
 msgid "Could not find the MySQL Kolab schema file"
 msgstr ""
 
@@ -2658,7 +2662,7 @@ msgstr ""
 msgid "Successfully compiled template %r, writing out to %r"
 msgstr ""
 
-#: ../pykolab/setup/setup_roundcube.py:235
+#: ../pykolab/setup/setup_roundcube.py:236
 #: ../pykolab/setup/setup_syncroton.py:96
 msgid "Could not start the webserver server service."
 msgstr ""
@@ -2826,229 +2830,245 @@ msgstr ""
 msgid "Invalid role %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:163 ../pykolab/xml/event.py:802
-#: ../pykolab/xml/event.py:845
-msgid "Event start needs datetime.date or datetime.datetime instance"
+#: ../pykolab/xml/event.py:179
+#, python-format
+msgid "Exdate needs datetime.date or datetime.datetime instance, got %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:308
+#: ../pykolab/xml/event.py:375
 #, python-format
 msgid "No attendee with email or name %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:316
+#: ../pykolab/xml/event.py:383
 #, python-format
 msgid "Invalid argument value attendee %r, must be basestring or Attendee"
 msgstr ""
 
-#: ../pykolab/xml/event.py:328
+#: ../pykolab/xml/event.py:395
 #, python-format
 msgid "No attendee with email %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:334
+#: ../pykolab/xml/event.py:401
 #, python-format
 msgid "No attendee with name %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:384 ../pykolab/xml/utils.py:157
+#: ../pykolab/xml/event.py:451 ../pykolab/xml/utils.py:162
 msgid "%Y-%m-%d"
 msgstr ""
 
-#: ../pykolab/xml/event.py:386 ../pykolab/xml/utils.py:158
+#: ../pykolab/xml/event.py:453 ../pykolab/xml/utils.py:163
 msgid "%H:%M (%Z)"
 msgstr ""
 
-#: ../pykolab/xml/event.py:510
+#: ../pykolab/xml/event.py:580
 msgid "Invalid participant status"
 msgstr ""
 
-#: ../pykolab/xml/event.py:636
+#: ../pykolab/xml/event.py:771
 #, python-format
 msgid "Invalid classification %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:667
-msgid "Event end needs datetime.date or datetime.datetime instance"
+#: ../pykolab/xml/event.py:802
+#, python-format
+msgid "Event end needs datetime.date or datetime.datetime instance, got %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:677
+#: ../pykolab/xml/event.py:812
 #, python-format
 msgid "Invalid custom property name %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:855
+#: ../pykolab/xml/event.py:947
+#, python-format
+msgid ""
+"Event last-modified needs datetime.date or datetime.datetime instance, got %r"
+msgstr ""
+
+#: ../pykolab/xml/event.py:990
+#, python-format
+msgid "Event start needs datetime.date or datetime.datetime instance, got %r"
+msgstr ""
+
+#: ../pykolab/xml/event.py:1000
 #, python-format
 msgid "Invalid status set: %r"
 msgstr ""
 
-#: ../pykolab/xml/event.py:1094
+#: ../pykolab/xml/event.py:1023
+msgid "Event recurrence-id needs datetime.datetime instance"
+msgstr ""
+
+#: ../pykolab/xml/event.py:1260
 msgid "No sender specified"
 msgstr ""
 
-#: ../pykolab/xml/event.py:1103
+#: ../pykolab/xml/event.py:1269
 #, python-format
 msgid "Invitation for %s was %s"
 msgstr ""
 
-#: ../pykolab/xml/event.py:1108
+#: ../pykolab/xml/event.py:1274
 msgid "This is an automated response to one of your event requests."
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:38
+#: ../pykolab/xml/recurrence_rule.py:40
 #, python-format
 msgid "Every %d year(s)"
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:39
+#: ../pykolab/xml/recurrence_rule.py:41
 #, python-format
 msgid "Every %d month(s)"
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:40
+#: ../pykolab/xml/recurrence_rule.py:42
 #, python-format
 msgid "Every %d week(s)"
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:41
+#: ../pykolab/xml/recurrence_rule.py:43
 #, python-format
 msgid "Every %d day(s)"
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:42
+#: ../pykolab/xml/recurrence_rule.py:44
 #, python-format
 msgid "Every %d hours"
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:43
+#: ../pykolab/xml/recurrence_rule.py:45
 #, python-format
 msgid "Every %d minutes"
 msgstr ""
 
-#: ../pykolab/xml/recurrence_rule.py:44
+#: ../pykolab/xml/recurrence_rule.py:46
 #, python-format
 msgid "Every %d seconds"
 msgstr ""
 
-#: ../pykolab/xml/todo.py:110
+#: ../pykolab/xml/todo.py:158
 msgid "Todo due needs datetime.date or datetime.datetime instance"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:126
+#: ../pykolab/xml/utils.py:131
 msgid "Name"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:127
+#: ../pykolab/xml/utils.py:132
 msgid "Summary"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:128
+#: ../pykolab/xml/utils.py:133
 msgid "Location"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:129
+#: ../pykolab/xml/utils.py:134
 msgid "Description"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:130
+#: ../pykolab/xml/utils.py:135
 msgid "URL"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:131
+#: ../pykolab/xml/utils.py:136
 msgid "Status"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:132
+#: ../pykolab/xml/utils.py:137
 msgid "Priority"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:133
+#: ../pykolab/xml/utils.py:138
 msgid "Attendee"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:134
+#: ../pykolab/xml/utils.py:139
 msgid "Start"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:135
+#: ../pykolab/xml/utils.py:140
 msgid "End"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:136
+#: ../pykolab/xml/utils.py:141
 msgid "Due"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:137
+#: ../pykolab/xml/utils.py:142
 msgid "Repeat"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:138
+#: ../pykolab/xml/utils.py:143
 msgid "Repeat Exception"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:139
+#: ../pykolab/xml/utils.py:144
 msgid "Organizer"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:140
+#: ../pykolab/xml/utils.py:145
 msgid "Attachment"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:141
+#: ../pykolab/xml/utils.py:146
 msgid "Alarm"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:142
+#: ../pykolab/xml/utils.py:147
 msgid "Classification"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:143
+#: ../pykolab/xml/utils.py:148
 msgid "Progress"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:188
+#: ../pykolab/xml/utils.py:193
 #, python-format
 msgid "for %d times"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:190
+#: ../pykolab/xml/utils.py:195
 #, python-format
 msgid "until %s"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:195
+#: ../pykolab/xml/utils.py:200
 msgid "Display message"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:196
+#: ../pykolab/xml/utils.py:201
 msgid "Send email"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:197
+#: ../pykolab/xml/utils.py:202
 msgid "Play sound"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:203
+#: ../pykolab/xml/utils.py:208
 #, python-format
 msgid "%s after"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:203
+#: ../pykolab/xml/utils.py:208
 #, python-format
 msgid "%s before"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:212
+#: ../pykolab/xml/utils.py:217
 #, python-format
 msgid "%d day(s)"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:218
+#: ../pykolab/xml/utils.py:223
 #, python-format
 msgid "%d hour(s)"
 msgstr ""
 
-#: ../pykolab/xml/utils.py:220
+#: ../pykolab/xml/utils.py:225
 #, python-format
 msgid "%d minute(s)"
 msgstr ""
@@ -3075,20 +3095,19 @@ msgstr ""
 msgid "Maximum tries exceeded, exiting"
 msgstr ""
 
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:195
-#: ../wallace/module_resources.py:1151
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:197
+#: ../wallace/module_resources.py:1243
 #, python-format
 msgid "Reservation Request for %(summary)s was %(status)s"
 msgstr ""
 
 #. check notification message sent to resource owner (jane)
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:619
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:635
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:666
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:704
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:760
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:773
-#: ../wallace/module_resources.py:1235
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:657
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:673
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:732
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:788
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:801
+#: ../wallace/module_resources.py:1327
 #, python-format
 msgid "Booking for %s has been %s"
 msgstr ""
@@ -3097,18 +3116,20 @@ msgstr ""
 #. check first confirmation message sent to resource owner (jane)
 #. check second confirmation message sent to resource owner (jane)
 #. check confirmation message sent to resource owner (jane)
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:656
 #: ../tests/functional/test_wallace/test_005_resource_invitation.py:694
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:732
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:749
-#: ../tests/functional/test_wallace/test_005_resource_invitation.py:803
-#: ../wallace/module_resources.py:1333
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:722
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:760
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:777
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:831
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:948
+#: ../tests/functional/test_wallace/test_005_resource_invitation.py:964
+#: ../wallace/module_resources.py:1425
 #, python-format
 msgid "Booking request for %s requires confirmation"
 msgstr ""
 
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:240
-#: ../wallace/module_invitationpolicy.py:448
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:241
+#: ../wallace/module_invitationpolicy.py:462
 #, python-format
 msgid "\"%(summary)s\" has been %(status)s"
 msgstr ""
@@ -3118,31 +3139,31 @@ msgstr ""
 #. this triggers an additional notification
 #. this should also trigger an update notification
 #. this should trigger an update notification
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:802
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:808
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:821
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:839
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:942
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:947
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:1008
-#: ../wallace/module_invitationpolicy.py:1071
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:897
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:903
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:916
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:934
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:1037
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:1042
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:1318
+#: ../wallace/module_invitationpolicy.py:1160
 #, python-format
 msgid "\"%s\" has been updated"
 msgstr ""
 
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:813
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:825
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:908
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:920
 msgid "PENDING"
 msgstr ""
 
 #. this should trigger a notification message
-#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:1028
-#: ../wallace/module_invitationpolicy.py:1133
+#: ../tests/functional/test_wallace/test_007_invitationpolicy.py:1338
+#: ../wallace/module_invitationpolicy.py:1223
 #, python-format
 msgid "\"%s\" has been cancelled"
 msgstr ""
 
-#: ../tests/unit/test-011-itip.py:465
+#: ../tests/unit/test-011-itip.py:490
 #, python-format
 msgid "Invitation for %(summary)s was %(status)s"
 msgstr ""
@@ -3197,32 +3218,36 @@ msgstr ""
 msgid "Could not write pid file %s"
 msgstr ""
 
-#: ../wallace/module_footer.py:60 ../wallace/module_gpgencrypt.py:60
-#: ../wallace/module_invitationpolicy.py:210 ../wallace/module_optout.py:61
-#: ../wallace/module_resources.py:126
+#: ../wallace/module_footer.py:55 ../wallace/module_gpgencrypt.py:60
+#: ../wallace/module_invitationpolicy.py:218 ../wallace/module_optout.py:61
+#: ../wallace/module_resources.py:127
 #, python-format
 msgid "Issuing callback after processing to stage %s"
 msgstr ""
 
-#: ../wallace/module_footer.py:61 ../wallace/module_gpgencrypt.py:61
-#: ../wallace/module_invitationpolicy.py:212 ../wallace/module_optout.py:62
-#: ../wallace/module_resources.py:132
+#: ../wallace/module_footer.py:56 ../wallace/module_gpgencrypt.py:61
+#: ../wallace/module_invitationpolicy.py:220 ../wallace/module_optout.py:62
+#: ../wallace/module_resources.py:133
 #, python-format
 msgid "Testing cb_action_%s()"
 msgstr ""
 
-#: ../wallace/module_footer.py:63 ../wallace/module_gpgencrypt.py:63
-#: ../wallace/module_invitationpolicy.py:214 ../wallace/module_optout.py:64
-#: ../wallace/module_resources.py:135
+#: ../wallace/module_footer.py:58 ../wallace/module_gpgencrypt.py:63
+#: ../wallace/module_invitationpolicy.py:222 ../wallace/module_optout.py:64
+#: ../wallace/module_resources.py:136
 #, python-format
 msgid "Attempting to execute cb_action_%s()"
 msgstr ""
 
-#: ../wallace/module_footer.py:67
+#: ../wallace/module_footer.py:62
 #, python-format
 msgid "Executing module footer for %r, %r"
 msgstr ""
 
+#: ../wallace/module_footer.py:80
+msgid "No contents configured for footer module"
+msgstr ""
+
 #: ../wallace/module_gpgencrypt.py:66
 #, python-format
 msgid "Executing module gpgencrypt for %r, %r"
@@ -3278,259 +3303,290 @@ msgstr ""
 msgid "An error occurred: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:196
+#: ../wallace/module_invitationpolicy.py:204
 #, python-format
 msgid "Invitation policy called for %r, %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:258
+#: ../wallace/module_invitationpolicy.py:266
 #, python-format
 msgid "Failed to parse iTip objects from message: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:262
+#: ../wallace/module_invitationpolicy.py:270
 msgid ""
 "Message is not an iTip message or does not contain any (valid) iTip objects."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:266
+#: ../wallace/module_invitationpolicy.py:274
 #, python-format
 msgid ""
 "iTip objects attached to this message contain the following information: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:278
+#: ../wallace/module_invitationpolicy.py:292
 #, python-format
 msgid "Recipient emails for %s: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:282
+#: ../wallace/module_invitationpolicy.py:296
 #, python-format
 msgid "No itips, no users, pass along %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:285
+#: ../wallace/module_invitationpolicy.py:299
 #, python-format
 msgid "iTips, but no users, pass along %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:306
+#: ../wallace/module_invitationpolicy.py:320
 #, python-format
 msgid "No user attendee matching envelope recipient %s, skip message"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:309
+#: ../wallace/module_invitationpolicy.py:323
 #, python-format
 msgid "Receiving user: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:337
+#: ../wallace/module_invitationpolicy.py:351
 #, python-format
 msgid "Apply invitation policy %r for sender %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:348
+#: ../wallace/module_invitationpolicy.py:362
 #, python-format
 msgid "Ignoring '%s' iTip method"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:352
+#: ../wallace/module_invitationpolicy.py:366
 #, python-format
 msgid "iTip message %r consumed by the invitationpolicy module"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:368
+#: ../wallace/module_invitationpolicy.py:382
 msgid "Pass invitation for manual processing"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:373
+#: ../wallace/module_invitationpolicy.py:387
 #, python-format
 msgid "Receiving Attendee: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:393
+#: ../wallace/module_invitationpolicy.py:407
 #, python-format
 msgid "Existing %s: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:404
+#: ../wallace/module_invitationpolicy.py:418
 #, python-format
 msgid "Precondition for object %r fulfilled: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:422
+#: ../wallace/module_invitationpolicy.py:436
 #, python-format
 msgid ""
 "The iTip request sequence (%r) doesn't match the referred object version (%"
 "r). Ignoring."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:427
+#: ../wallace/module_invitationpolicy.py:441
 #, python-format
 msgid "Auto-updating %s %r on iTip REQUEST (no re-scheduling)"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:482
+#: ../wallace/module_invitationpolicy.py:485
+msgid "Forward invitation for notification"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:500
 msgid "Pass reply for manual processing"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:489
+#: ../wallace/module_invitationpolicy.py:507
 #, python-format
 msgid "Sender Attendee: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:501
+#: ../wallace/module_invitationpolicy.py:519
 #, python-format
 msgid ""
 "The iTip reply sequence (%r) doesn't match the referred object version (%r). "
 "Forwarding to Inbox."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:507
+#: ../wallace/module_invitationpolicy.py:525
 #, python-format
 msgid "Auto-updating %s %r on iTip REPLY"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:532
+#: ../wallace/module_invitationpolicy.py:552
 #, python-format
 msgid "Add delegatee: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:535
+#: ../wallace/module_invitationpolicy.py:555
 #, python-format
 msgid "Update existing delegatee: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:540
+#: ../wallace/module_invitationpolicy.py:562
 #, python-format
 msgid "Update delegator: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:557
-#: ../wallace/module_invitationpolicy.py:589
+#: ../wallace/module_invitationpolicy.py:579
 msgid ""
 "The object referred by this reply was not found in the user's folders. "
 "Forwarding to Inbox."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:570
+#: ../wallace/module_invitationpolicy.py:592
 msgid "Pass cancellation for manual processing"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:618
+#: ../wallace/module_invitationpolicy.py:619
+msgid ""
+"The object referred by this cancel request was not found in the user's "
+"folders. Forwarding to Inbox."
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:648
 #, python-format
 msgid "Checking if email address %r belongs to a local user"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:623
+#: ../wallace/module_invitationpolicy.py:653
 #, python-format
 msgid "User DN: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:625
+#: ../wallace/module_invitationpolicy.py:655
 #, python-format
 msgid "No user record(s) found for %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:681
+#: ../wallace/module_invitationpolicy.py:711
 #, python-format
 msgid "User record doesn't have the mailbox attribute %r set"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:694
+#: ../wallace/module_invitationpolicy.py:724
 #, python-format
 msgid "IMAP proxy authentication failed: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:716
+#: ../wallace/module_invitationpolicy.py:746
 #, python-format
 msgid "List %r folders for user %r: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:732
+#: ../wallace/module_invitationpolicy.py:761
 #, python-format
 msgid "IMAP metadata for %r: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:767
+#: ../wallace/module_invitationpolicy.py:797
 #, python-format
 msgid "Searching folder %r for %s %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:783
+#: ../wallace/module_invitationpolicy.py:807
+#: ../wallace/module_resources.py:675 ../wallace/module_resources.py:736
+#, python-format
+msgid "No UID found in IMAP response: %r"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:825
+#: ../wallace/module_resources.py:750
+#, python-format
+msgid "Recurrence-ID not matching on message %s, skipping: %r != %r"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:835
 #, python-format
 msgid "Failed to parse %s from message %s/%s: %s"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:809
+#: ../wallace/module_invitationpolicy.py:863
 #, python-format
 msgid "Listing events from folder %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:822
-#: ../wallace/module_resources.py:474 ../wallace/module_resources.py:665
-#: ../wallace/module_resources.py:713
+#: ../wallace/module_invitationpolicy.py:876
+#: ../wallace/module_resources.py:482 ../wallace/module_resources.py:683
+#: ../wallace/module_resources.py:757
 #, python-format
 msgid "Failed to parse event from message %s/%s: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:828
+#: ../wallace/module_invitationpolicy.py:882
 #, python-format
 msgid "Existing event %r conflicts with invitation %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:835
-#: ../wallace/module_resources.py:518
+#: ../wallace/module_invitationpolicy.py:889
+#: ../wallace/module_resources.py:526
 #, python-format
 msgid "start: %r, end: %r, total: %r, messages: %d"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:861
+#: ../wallace/module_invitationpolicy.py:915
 #, python-format
 msgid "%r is locked, waiting..."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:928
+#: ../wallace/module_invitationpolicy.py:987
 #, python-format
 msgid "Failed to save %s: no target folder found for user %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:931
+#: ../wallace/module_invitationpolicy.py:998
 #, python-format
 msgid "Save %s %r to user folder %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:944
+#: ../wallace/module_invitationpolicy.py:1011
 #, python-format
 msgid "Failed to save %s to user folder at %r: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:960
+#: ../wallace/module_invitationpolicy.py:1030
+#, python-format
+msgid "Delete %s %r in %r by UID: %r"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:1038
 #, python-format
 msgid "Delete %s %r in %r: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:989
+#: ../wallace/module_invitationpolicy.py:1049
+#, python-format
+msgid "Failed to delete %s from folder %r: %r"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:1075
 #, python-format
 msgid "Compose participation status summary for %s %r to user %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1022
+#: ../wallace/module_invitationpolicy.py:1108
 #, python-format
 msgid ""
 "Waiting for more automated replies (got %d of %d); skipping notification"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1032
+#: ../wallace/module_invitationpolicy.py:1118
 #, python-format
 msgid "Changes submitted by %s have been automatically applied."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1041
+#: ../wallace/module_invitationpolicy.py:1127
 msgid "(removed)"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1047
+#: ../wallace/module_invitationpolicy.py:1133
 #, python-format
 msgid ""
 "\n"
@@ -3540,7 +3596,7 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1055
+#: ../wallace/module_invitationpolicy.py:1141
 #, python-format
 msgid ""
 "\n"
@@ -3550,18 +3606,27 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1064
-#: ../wallace/module_invitationpolicy.py:1126
+#: ../wallace/module_invitationpolicy.py:1151
+msgid "NOTE: This update only refers to this single occurrence!"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:1153
 #: ../wallace/module_invitationpolicy.py:1216
+#: ../wallace/module_invitationpolicy.py:1317
 msgid "*** This is an automated message. Please do not reply. ***"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1099
+#: ../wallace/module_invitationpolicy.py:1170
+#, python-format
+msgid "Sent update notification to %r: %r"
+msgstr ""
+
+#: ../wallace/module_invitationpolicy.py:1189
 #, python-format
 msgid "Send cancellation notification for %s %r to user %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1109
+#: ../wallace/module_invitationpolicy.py:1199
 #, python-format
 msgid ""
 "\n"
@@ -3572,7 +3637,7 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1117
+#: ../wallace/module_invitationpolicy.py:1207
 #, python-format
 msgid ""
 "\n"
@@ -3583,27 +3648,27 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1206
+#: ../wallace/module_invitationpolicy.py:1307
 #, python-format
 msgid "Updated %s's copy of %r: %r"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1209
+#: ../wallace/module_invitationpolicy.py:1310
 #, python-format
 msgid "Attendee %s's copy of %r not found"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1212
+#: ../wallace/module_invitationpolicy.py:1313
 #, python-format
 msgid "Attendee %r not found in LDAP"
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1219
+#: ../wallace/module_invitationpolicy.py:1320
 #, python-format
 msgid "%(name)s has %(status)s your assignment for %(summary)s."
 msgstr ""
 
-#: ../wallace/module_invitationpolicy.py:1221
+#: ../wallace/module_invitationpolicy.py:1322
 #, python-format
 msgid "%(name)s has %(status)s your invitation for %(summary)s."
 msgstr ""
@@ -3629,255 +3694,300 @@ msgstr ""
 msgid "Could not send request to optout_url %s"
 msgstr ""
 
-#: ../wallace/module_resources.py:116
+#: ../wallace/module_resources.py:117
 #, python-format
 msgid "Resource Management called for %r, %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:181
+#: ../wallace/module_resources.py:182
 #, python-format
 msgid "Failed to parse iTip events from message: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:186
+#: ../wallace/module_resources.py:187
 msgid "Message is not an iTip message or does not contain any "
 msgstr ""
 
-#: ../wallace/module_resources.py:194
+#: ../wallace/module_resources.py:195
 msgid "iTip events attached to this message contain the "
 msgstr ""
 
-#: ../wallace/module_resources.py:225
+#: ../wallace/module_resources.py:226
 msgid "Not an iTip message, but sent to resource nonetheless. Reject message"
 msgstr ""
 
-#: ../wallace/module_resources.py:233
+#: ../wallace/module_resources.py:234
 #, python-format
 msgid "No itips, no resources, pass along %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:236
+#: ../wallace/module_resources.py:237
 #, python-format
 msgid "iTips, but no resources, pass along %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:245
+#: ../wallace/module_resources.py:246
 #, python-format
 msgid "No resource attendees matching envelope recipient %s, Reject message"
 msgstr ""
 
-#: ../wallace/module_resources.py:255
+#: ../wallace/module_resources.py:256
 #, python-format
 msgid "Resources: %r; %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:273
+#: ../wallace/module_resources.py:270
+#, python-format
+msgid "iTip REPLY to %r, %r; matches %r"
+msgstr ""
+
+#: ../wallace/module_resources.py:276
 #, python-format
 msgid "Sender Attendee: %r => %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:280
+#: ../wallace/module_resources.py:278
+#, python-format
+msgid "Could not find envelope sender attendee: %r"
+msgstr ""
+
+#: ../wallace/module_resources.py:283
 #, python-format
 msgid ""
 "The iTip reply sequence (%r) doesn't match the referred event version (%r). "
 "Ignoring."
 msgstr ""
 
-#: ../wallace/module_resources.py:305
+#: ../wallace/module_resources.py:302
+#, python-format
+msgid "Invalid response (%r) recieved from resource owner for event %r"
+msgstr ""
+
+#: ../wallace/module_resources.py:306
 #, python-format
 msgid "Event referenced by this REPLY (%r) not found in resource calendar"
 msgstr ""
 
-#: ../wallace/module_resources.py:308
+#: ../wallace/module_resources.py:309
 msgid "No event reference found in this REPLY. Ignoring."
 msgstr ""
 
-#: ../wallace/module_resources.py:317
+#: ../wallace/module_resources.py:318
 #, python-format
 msgid "Receiving Resource: %r; %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:325
+#: ../wallace/module_resources.py:320
+#, python-format
+msgid "Could not find envelope attendee: %r"
+msgstr ""
+
+#: ../wallace/module_resources.py:326
 #, python-format
 msgid "Recipient %r is non-participant, ignoring message"
 msgstr ""
 
-#: ../wallace/module_resources.py:353
+#: ../wallace/module_resources.py:336
+#, python-format
+msgid "Cancellation for entire event %r: deleting"
+msgstr ""
+
+#: ../wallace/module_resources.py:340
+#, python-format
+msgid "Cancellation for a single occurrence %r of %r: updating..."
+msgstr ""
+
+#: ../wallace/module_resources.py:361
 #, python-format
 msgid "Accept invitation for individual resource %r / %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:382
+#: ../wallace/module_resources.py:390
 #, python-format
 msgid "Delegate invitation for resource collection %r to %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:403
+#: ../wallace/module_resources.py:411
 #, python-format
 msgid "module_resources.heartbeat(%d)"
 msgstr ""
 
-#: ../wallace/module_resources.py:426
+#: ../wallace/module_resources.py:434
 #, python-format
 msgid "Expunge resource calendar for %s (%s) failed: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:450
+#: ../wallace/module_resources.py:458
 #, python-format
 msgid "Expunge events in resource folder %r older than %d days"
 msgstr ""
 
-#: ../wallace/module_resources.py:463
+#: ../wallace/module_resources.py:471
 #, python-format
 msgid "Fetching message ID %r from folder %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:489
+#: ../wallace/module_resources.py:497
 #, python-format
 msgid "Flag event %s from message %s/%s as deleted (age = %d days)"
 msgstr ""
 
-#: ../wallace/module_resources.py:514
+#: ../wallace/module_resources.py:522
 #, python-format
 msgid "Failed to read resource calendar for %r: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:524
+#: ../wallace/module_resources.py:532
 #, python-format
 msgid "Polling for resource %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:527
+#: ../wallace/module_resources.py:535
 #, python-format
 msgid "Resource %r has been popped from the list"
 msgstr ""
 
-#: ../wallace/module_resources.py:531
+#: ../wallace/module_resources.py:539
 msgid "Resource is a collection"
 msgstr ""
 
-#: ../wallace/module_resources.py:542
+#: ../wallace/module_resources.py:550
 #, python-format
 msgid "Removed conflicting resources from %r: (%r) => %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:554
+#: ../wallace/module_resources.py:562
 #, python-format
 msgid "Conflicting events: %r for resource %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:573
+#: ../wallace/module_resources.py:585
 #, python-format
 msgid "Delegate to another resource collection member: %r to %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:635
+#: ../wallace/module_resources.py:647
 #, python-format
 msgid "Checking events in resource folder %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:654
+#: ../wallace/module_resources.py:666
 #, python-format
 msgid "Fetching message UID %r from folder %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:677
+#: ../wallace/module_resources.py:699
 #, python-format
 msgid "Event %r conflicts with event %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:698
+#: ../wallace/module_resources.py:721
 #, python-format
 msgid "Searching %r for event %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:704
+#: ../wallace/module_resources.py:727
 #, python-format
 msgid "Failed to access resource calendar:: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:733
+#: ../wallace/module_resources.py:777
 #, python-format
 msgid "Apply invitation policies %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:752
+#: ../wallace/module_resources.py:796
 #, python-format
 msgid "Adding event to %r: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:806
+#: ../wallace/module_resources.py:880
 #, python-format
 msgid "Failed to save event to resource calendar at %r: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:823
+#: ../wallace/module_resources.py:899
+#, python-format
+msgid "Delete resource calendar object from %r by UID %r"
+msgstr ""
+
+#: ../wallace/module_resources.py:907
 #, python-format
 msgid "Delete resource calendar object %r in %r: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:866
+#: ../wallace/module_resources.py:918
+#, python-format
+msgid "Failed to delete calendar object %r from folder %r: %r"
+msgstr ""
+
+#: ../wallace/module_resources.py:958
 #, python-format
 msgid "Checking if email address %r belongs to a resource (collection)"
 msgstr ""
 
-#: ../wallace/module_resources.py:874 ../wallace/module_resources.py:946
-#: ../wallace/module_resources.py:980
+#: ../wallace/module_resources.py:966 ../wallace/module_resources.py:1038
+#: ../wallace/module_resources.py:1072
 #, python-format
 msgid "Resource record(s): %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:876 ../wallace/module_resources.py:948
-#: ../wallace/module_resources.py:983
+#: ../wallace/module_resources.py:968 ../wallace/module_resources.py:1040
+#: ../wallace/module_resources.py:1075
 #, python-format
 msgid "No resource (collection) records found for %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:880 ../wallace/module_resources.py:952
-#: ../wallace/module_resources.py:987
+#: ../wallace/module_resources.py:972 ../wallace/module_resources.py:1044
+#: ../wallace/module_resources.py:1079
 #, python-format
 msgid "Resource record: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:898
+#: ../wallace/module_resources.py:990
 #, python-format
 msgid "Raw itip_events: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:906
+#: ../wallace/module_resources.py:998
 #, python-format
 msgid "Raw set of attendees: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:914
+#: ../wallace/module_resources.py:1006
 #, python-format
 msgid "Raw set of resources: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:919
+#: ../wallace/module_resources.py:1011
 #, python-format
 msgid "Raw set of organizers: %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:939
+#: ../wallace/module_resources.py:1031
 #, python-format
 msgid "Checking if attendee %r is a resource (collection)"
 msgstr ""
 
-#: ../wallace/module_resources.py:955 ../wallace/module_resources.py:989
+#: ../wallace/module_resources.py:1047 ../wallace/module_resources.py:1081
 msgid "Resource reservation made but no resource records found"
 msgstr ""
 
-#: ../wallace/module_resources.py:974
+#: ../wallace/module_resources.py:1066
 #, python-format
 msgid "Checking if resource %r is a resource (collection)"
 msgstr ""
 
-#: ../wallace/module_resources.py:992
+#: ../wallace/module_resources.py:1084
 msgid "The following resources are being referred to in the "
 msgstr ""
 
-#: ../wallace/module_resources.py:1157
+#: ../wallace/module_resources.py:1211
+#, python-format
+msgid "Check collections %r for kolabinvitationpolicy attributes"
+msgstr ""
+
+#: ../wallace/module_resources.py:1249
 #, python-format
 msgid ""
 "\n"
@@ -3888,7 +3998,7 @@ msgid ""
 "            "
 msgstr ""
 
-#: ../wallace/module_resources.py:1176
+#: ../wallace/module_resources.py:1268
 #, python-format
 msgid ""
 "\n"
@@ -3898,7 +4008,7 @@ msgid ""
 "    "
 msgstr ""
 
-#: ../wallace/module_resources.py:1183
+#: ../wallace/module_resources.py:1275
 #, python-format
 msgid ""
 "\n"
@@ -3907,16 +4017,16 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_resources.py:1218
+#: ../wallace/module_resources.py:1310
 #, python-format
 msgid "Sending booking notification for event %r to %r from %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:1236
+#: ../wallace/module_resources.py:1328
 msgid "failed"
 msgstr ""
 
-#: ../wallace/module_resources.py:1256
+#: ../wallace/module_resources.py:1348
 #, python-format
 msgid ""
 "\n"
@@ -3928,7 +4038,7 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_resources.py:1262
+#: ../wallace/module_resources.py:1354
 #, python-format
 msgid ""
 "\n"
@@ -3942,12 +4052,12 @@ msgid ""
 "        "
 msgstr ""
 
-#: ../wallace/module_resources.py:1306
+#: ../wallace/module_resources.py:1385
 #, python-format
 msgid "Clone invitation for owner confirmation: %r from %r"
 msgstr ""
 
-#: ../wallace/module_resources.py:1312
+#: ../wallace/module_resources.py:1404
 #, python-format
 msgid ""
 "\n"




More information about the commits mailing list