[CalendarServer-changes] [5651] CalendarServer/trunk/calendarserver/tools/fixcalendardata.py

source_changes at macosforge.org source_changes at macosforge.org
Tue May 25 08:18:37 PDT 2010


Revision: 5651
          http://trac.macosforge.org/projects/calendarserver/changeset/5651
Author:   cdaboo at apple.com
Date:     2010-05-25 08:18:33 -0700 (Tue, 25 May 2010)
Log Message:
-----------
Better bad valarm detection.

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/tools/fixcalendardata.py

Modified: CalendarServer/trunk/calendarserver/tools/fixcalendardata.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/fixcalendardata.py	2010-05-25 14:48:22 UTC (rev 5650)
+++ CalendarServer/trunk/calendarserver/tools/fixcalendardata.py	2010-05-25 15:18:33 UTC (rev 5651)
@@ -25,7 +25,7 @@
 import time
 import xattr
 
-from twext.python.plistlib import readPlist
+from plistlib import readPlist
 
 PLIST_FILE = "/etc/caldavd/caldavd.plist"
 SCAN_FILE = "problems.txt"
@@ -150,8 +150,9 @@
         if testICSData_TZIDs(icsData):
             problems.append("tzids")
             fixTZIDs = True
-        if testICSData_MultipleVALARMS(icsData):
-            problems.append("multi-valarms")
+        valarms = testICSData_MultipleVALARMS(icsData)
+        if valarms != 0:
+            problems.append("multi-valarms-%d" % valarms)
             fixMultiVALARMs = True
         if problems:
             if doFix:
@@ -182,7 +183,31 @@
 
 def testICSData_MultipleVALARMS(icsData):
     
-    return icsData.find("END:VALARM\r\nBEGIN:VALARM") != -1
+    if icsData.count("END:VALARM\r\nBEGIN:VALARM") > 0:
+        
+        # More detailed scan
+        lines = icsData.split("\r\n")
+        badcount = 0
+        inevent = False
+        for line in lines:
+            line = line.upper()
+            if line == "BEGIN:VEVENT":
+                duplicate_count = 0
+                alarm_ids = set()
+                inevent = True
+            elif line == "END:VEVENT":
+                if duplicate_count > badcount:
+                    badcount = duplicate_count
+                inevent = False
+            elif inevent and line.startswith("X-WR-ALARMUID"):
+                new_id = line
+                if new_id in alarm_ids:
+                    duplicate_count += 1
+                else:
+                    alarm_ids.add(new_id)
+        return badcount
+    else:
+        return 0
 
 def fixData(basePath, scanPath):
     
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100525/aee9adc6/attachment.html>


More information about the calendarserver-changes mailing list