[CalendarServer-changes] [3935] CalendarServer/branches/users/wsanchez/deployment/bin/caldav_warmup

source_changes at macosforge.org source_changes at macosforge.org
Mon Mar 30 22:13:02 PDT 2009


Revision: 3935
          http://trac.macosforge.org/projects/calendarserver/changeset/3935
Author:   wsanchez at apple.com
Date:     2009-03-30 22:13:02 -0700 (Mon, 30 Mar 2009)
Log Message:
-----------
Add MM calendar to F/B set.

Modified Paths:
--------------
    CalendarServer/branches/users/wsanchez/deployment/bin/caldav_warmup

Modified: CalendarServer/branches/users/wsanchez/deployment/bin/caldav_warmup
===================================================================
--- CalendarServer/branches/users/wsanchez/deployment/bin/caldav_warmup	2009-03-31 00:38:29 UTC (rev 3934)
+++ CalendarServer/branches/users/wsanchez/deployment/bin/caldav_warmup	2009-03-31 05:13:02 UTC (rev 3935)
@@ -37,7 +37,9 @@
 
 from twisted.python import log
 from twisted.python.reflect import namedClass
+from twisted.web2.dav import davxml
 
+from twistedcaldav import caldavxml
 from twistedcaldav.resource import isPseudoCalendarCollectionResource
 from twistedcaldav.static import CalDAVFile, CalendarHomeFile
 from twistedcaldav.config import config, defaultConfigFile
@@ -170,14 +172,15 @@
     configFileName = None
     outputFileName = None
 
-    calendarHomes = set()
+    directory = None
+    calendarHomePaths = set()
     records = set()
     allRecords = False
     readCalendarData = True
     readProperties = True
     readIndexes = True
 
-    observer = log.FileLogObserver(open("/ngs/app/icalt/warmup/warmup.log", "a"))
+    observer = log.FileLogObserver(open("/dev/stdout", "a"))
     log.addObserver(observer.emit)
 
     def checkExists(resource):
@@ -205,11 +208,7 @@
             readIndexes = False
 
         elif opt in ("-H", "--home"):
-            path = abspath(arg)
-            parent = CalDAVFile(dirname(abspath(path)))
-            calendarHome = CalendarHomeFile(arg, parent, dummyDirectoryRecord)
-            checkExists(calendarHome)
-            calendarHomes.add(calendarHome)
+            calendarHomePaths.add(arg)
 
         elif opt in ("-r", "--record"):
             try:
@@ -228,10 +227,25 @@
     if args:
         usage("Too many arguments: %s" % (" ".join(args),))
 
-    if records or allRecords:
-        config = loadConfig(configFileName)
+    if records or allRecords or calendarHomePaths:
+        loadConfig(configFileName)
         directory = getDirectory()
 
+        calendarHomes = set()
+
+        for path in calendarHomePaths:
+            path = abspath(path)
+            guid = os.path.basename(path)
+
+            record = directory.recordWithGUID(guid)
+            if record is None:
+                record = dummyDirectoryRecord
+
+            parent = CalDAVFile(dirname(abspath(path)))
+            calendarHome = CalendarHomeFile(arg, parent, record)
+            checkExists(calendarHome)
+            calendarHomes.add(calendarHome)
+
         for record in records:
             recordType, shortName = record
             calendarHome = directory.calendarHomeForShortName(recordType, shortName)
@@ -255,6 +269,7 @@
         log.msg("%.2f%% (%d of %d)" % (100.0 * n/N, n, N))
         processCalendarHome(
             calendarHome,
+            directory = directory,
             readCalendarData = readCalendarData,
             readProperties = readProperties,
             readIndexes = readIndexes,
@@ -262,6 +277,7 @@
 
 def processCalendarHome(
     calendarHome,
+    directory = None,
     readCalendarData = True,
     readProperties = True,
     readIndexes = True
@@ -280,7 +296,41 @@
                 readProperties = readProperties,
                 readIndexes = readIndexes,
             )
+            # OMG NO SRLY FIXME
+            if childName == "meetingmaker":
+                #
+                # Add calendar to F/B set
+                #
+                if calendarHome.record == dummyDirectoryRecord:
+                    print "Unable to edit F/B info for %s" % (calendarHome,)
+                    continue
 
+                calendarURL = "/calendars/__uids__/%s/meetingmaker" % (calendarHome.record.guid,)
+
+                inbox = calendarHome.getChild("inbox")
+
+                if not inbox.hasDeadProperty(caldavxml.CalendarFreeBusySet):
+                    needFB = True
+                    hrefs = []
+                else:
+                    fbProp = inbox.readDeadProperty(caldavxml.CalendarFreeBusySet)
+                    hrefs = list(fbProp.childrenOfType(davxml.HRef))
+
+                    needFB = False
+
+                    for href in hrefs:
+                        print "*"*10, href
+                        if str(href) == calendarURL:
+                            break
+                    else:
+                        needFB = True
+
+                if needFB:
+                    log.msg("Adding Meeting Maker calendar to F/B set for %s" % (calendarHome,))
+                    hrefs.append(davxml.HRef(calendarURL))
+                    fbProp = caldavxml.CalendarFreeBusySet(*hrefs)
+                    inbox.writeDeadProperty(fbProp)
+
 def processCalendar(
     calendarCollection,
     readCalendarData = True,
@@ -299,7 +349,7 @@
             if calendarCollection.fp.basename() != "outbox":
                 raise
 
-    for name in calendarCollection.listChildren()
+    for name in calendarCollection.listChildren():
         child = calendarCollection.getChild(name)
 
         if readCalendarData:
@@ -308,7 +358,7 @@
             readPropertiesForResource(child)
 
 def readPropertiesForResource(resource):
-    log.msg(resource)
+    #log.msg(resource)
     for qname in tuple(resource.deadProperties().list()):
         try:
             property = resource.readDeadProperty(qname)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20090330/f1ba5fd9/attachment-0001.html>


More information about the calendarserver-changes mailing list