[CalendarServer-changes] [8888] CalendarServer/trunk/calendarserver/tools/dbinspect.py

source_changes at macosforge.org source_changes at macosforge.org
Fri Mar 16 05:37:19 PDT 2012


Revision: 8888
          http://trac.macosforge.org/projects/calendarserver/changeset/8888
Author:   cdaboo at apple.com
Date:     2012-03-16 05:37:19 -0700 (Fri, 16 Mar 2012)
Log Message:
-----------
New command to lookup calendar data from an HTTP path.

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

Modified: CalendarServer/trunk/calendarserver/tools/dbinspect.py
===================================================================
--- CalendarServer/trunk/calendarserver/tools/dbinspect.py	2012-03-16 10:02:06 UTC (rev 8887)
+++ CalendarServer/trunk/calendarserver/tools/dbinspect.py	2012-03-16 12:37:19 UTC (rev 8888)
@@ -576,6 +576,67 @@
         returnValue(tuple(rows))
 
 
+class EventsByPath(Cmd):
+    
+    _name = "Get Event Data by HTTP Path"
+    
+    @inlineCallbacks
+    def doIt(self, txn):
+        
+        
+        path = raw_input("Path: ")
+        pathbits = path.split("/")
+        if len(pathbits) != 6:
+            print "Not a valid calendar object resource path"
+            returnValue(None)
+        homeName = pathbits[3]
+        calendarName = pathbits[4]
+        resourceName = pathbits[5]
+        rows = yield self.getData(txn, homeName, calendarName, resourceName)
+        if rows:
+            for owner, calendar, resource_id, resource, created, modified, data in rows:
+                shortname = UserNameFromUID(txn, owner)
+                table = tables.Table()
+                table.addRow(("User Name:", shortname,))
+                table.addRow(("Calendar:", calendar,))
+                table.addRow(("Resource Name:", resource))
+                table.addRow(("Resource ID:", resource_id))
+                table.addRow(("Created", created))
+                table.addRow(("Modified", modified))
+                print "\n"
+                table.printTable()
+                print data
+        else:
+            print "Could not find icalendar data"
+
+    @inlineCallbacks
+    def getData(self, txn, homeName, calendarName, resourceName):
+        ch = schema.CALENDAR_HOME
+        cb = schema.CALENDAR_BIND
+        co = schema.CALENDAR_OBJECT
+        rows = (yield Select(
+            [
+                ch.OWNER_UID,
+                cb.CALENDAR_RESOURCE_NAME,
+                co.RESOURCE_ID,
+                co.RESOURCE_NAME,
+                co.CREATED,
+                co.MODIFIED,
+                co.ICALENDAR_TEXT,
+            ],
+            From=ch.join(
+                cb, type="inner", on=(ch.RESOURCE_ID == cb.CALENDAR_HOME_RESOURCE_ID).And(
+                    cb.BIND_MODE == _BIND_MODE_OWN)).join(
+                co, type="inner", on=(cb.CALENDAR_RESOURCE_ID == co.CALENDAR_RESOURCE_ID)),
+            Where=(
+                (ch.OWNER_UID == Parameter("HOME")).And(
+                 cb.CALENDAR_RESOURCE_NAME == Parameter("CALENDAR")).And(
+                 co.RESOURCE_NAME == Parameter("RESOURCE"))
+                ),
+        ).on(txn, **{"HOME": homeName, "CALENDAR": calendarName, "RESOURCE": resourceName}))
+        returnValue(tuple(rows))
+
+
 class EventsByContent(Cmd):
     
     _name = "Get Event Data by Searching its Text Data"
@@ -811,6 +872,7 @@
         self.registerCommand(EventsByName)
         self.registerCommand(EventsByOwner)
         self.registerCommand(EventsByOwnerCalendar)
+        self.registerCommand(EventsByPath)
         self.registerCommand(EventsByContent)
         self.registerCommand(EventsInTimerange)
         self.doDBInspect()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120316/17ed2580/attachment.html>


More information about the calendarserver-changes mailing list