[CalendarServer-changes] [10841] CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/ datastore/sql.py

source_changes at macosforge.org source_changes at macosforge.org
Mon Mar 4 16:47:31 PST 2013


Revision: 10841
          http://trac.calendarserver.org//changeset/10841
Author:   gaya at apple.com
Date:     2013-03-04 16:47:31 -0800 (Mon, 04 Mar 2013)
Log Message:
-----------
ownerHomeWithResourceID(), ownerHomeFromChildID() renamed ownerHomeWithChildID()

Modified Paths:
--------------
    CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py	2013-03-04 23:32:56 UTC (rev 10840)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py	2013-03-05 00:47:31 UTC (rev 10841)
@@ -794,7 +794,7 @@
             if not result:
                 result = yield cls.objectWithName(home, ownerHome.shareeAddressBookName(), accepted=False)
             assert result
-            
+
         returnValue(result)
 
 
@@ -1168,9 +1168,12 @@
     _objectTable = ADDRESSBOOK_OBJECT_TABLE
     _objectSchema = schema.ADDRESSBOOK_OBJECT
     _bindSchema = schema.GROUP_ADDRESSBOOK_HOME_BIND
-    _homeChildMetaDataSchema = schema.ADDRESSBOOK_OBJECT # used by CommonHomeChild._childrenAndMetadataForHomeID() only
 
+    # used by CommonHomeChild._childrenAndMetadataForHomeID() only
+    #_homeChildSchema = schema.ADDRESSBOOK_OBJECT
+    #_homeChildMetaDataSchema = schema.ADDRESSBOOK_OBJECT
 
+
     def __init__(self, addressbook, name, uid, resourceID=None, metadata=None): #@UnusedVariable
 
         self._kind = None
@@ -1862,7 +1865,36 @@
         """
         return self._bindName
 
+    @classmethod
+    def metadataColumns(cls):
+        """
+        Return a list of column name for retrieval of metadata. This allows
+        different child classes to have their own type specific data, but still make use of the
+        common base logic.
+        """
 
+        # Common behavior is to have created and modified
+
+        return (
+            cls._objectSchema.CREATED,
+            cls._objectSchema.MODIFIED,
+        )
+
+    # same as CommonHomeChild._childrenAndMetadataForHomeID() w/o metadata join
+    @classproperty
+    def _childrenAndMetadataForHomeID(cls): #@NoSelf
+        bind = cls._bindSchema
+        child = cls._objectSchema
+        columns = cls._bindColumns() + cls.metadataColumns()
+        return Select(columns,
+                     From=child.join(
+                         bind, child.RESOURCE_ID == bind.RESOURCE_ID,
+                         'left outer'),
+                     Where=(bind.HOME_RESOURCE_ID == Parameter("homeID")
+                           ).And(bind.BIND_STATUS == _BIND_STATUS_ACCEPTED))
+
+
+
     @inlineCallbacks
     def notifyChanged(self):
         returnValue((yield self._addressbook.notifyChanged()))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130304/f55a5edb/attachment.html>


More information about the calendarserver-changes mailing list