[CalendarServer-changes] [10292] CalendarServer/branches/users/gaya/sharedgroups/txdav

source_changes at macosforge.org source_changes at macosforge.org
Mon Jan 7 17:55:10 PST 2013


Revision: 10292
          http://trac.calendarserver.org//changeset/10292
Author:   gaya at apple.com
Date:     2013-01-07 17:55:10 -0800 (Mon, 07 Jan 2013)
Log Message:
-----------
Add GROUP_ADDRESSBOOK_BIND table, temporarily add ADDRESSBOOK table back, like trunk; will later combine with ADDRESSBOOK_HOME.  Group sharing is broken in this commit.

Modified Paths:
--------------
    CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CardDAV/sharing-addressbooks.xml
    CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py
    CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/test/test_sql.py
    CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_schema/current.sql
    CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_tables.py
    CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/test/util.py
    CalendarServer/branches/users/gaya/sharedgroups/txdav/common/icommondatastore.py

Modified: CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CardDAV/sharing-addressbooks.xml
===================================================================
--- CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CardDAV/sharing-addressbooks.xml	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalDAVTester/branches/users/gaya/sharedgroupstester/scripts/tests/CardDAV/sharing-addressbooks.xml	2013-01-08 01:55:10 UTC (rev 10292)
@@ -297,7 +297,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='13' ignore='no'>
+		<test name='13' ignore='yes'>
 			<description>Sharee sees group with shared address book members</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>GET</method>
@@ -315,7 +315,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='14' ignore='no'>
+		<test name='14' ignore='yes'>
 			<description>Sharee cannot delete special group</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>DELETE</method>
@@ -745,7 +745,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='12.1' ignore='no'>
+		<test name='12.1' ignore='yes'>
 			<description>Sharee sees group with shared address book members</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>GET</method>
@@ -763,7 +763,7 @@
 				</verify>
 			</request>
 		</test>
-		<test name='12.2' ignore='no'>
+		<test name='12.2' ignore='yes'>
 			<description>Sharee cannot delete special group</description>
 			<request user="$userid2:" pswd="$pswd2:" print-response='no'>
 				<method>DELETE</method>
@@ -853,7 +853,7 @@
 		</test>
 	</test-suite>
 
-	<test-suite name='Share group' ignore='no'>
+	<test-suite name='Share group' ignore='yes'>
 		<test name='1' ignore='no'>
 			<description>Sharee create 2 persons and a group</description>
 			<request print-response='no'>

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/sql.py	2013-01-08 01:55:10 UTC (rev 10292)
@@ -179,8 +179,8 @@
     # structured tables.  (new, preferred)
     _homeSchema = schema.ADDRESSBOOK_HOME
     _bindSchema = schema.ADDRESSBOOK_BIND
-    _homeChildSchema = schema.ADDRESSBOOK_OBJECT
-    _homeChildMetaDataSchema = schema.ADDRESSBOOK_OBJECT
+    _homeChildSchema = schema.ADDRESSBOOK
+    _homeChildMetaDataSchema = schema.ADDRESSBOOK_METADATA
     _revisionsSchema = schema.ADDRESSBOOK_OBJECT_REVISIONS
     _objectSchema = schema.ADDRESSBOOK_OBJECT
 
@@ -245,7 +245,7 @@
         """
         return super(AddressBook, self).unshare(EADDRESSBOOKTYPE)
 
-
+    '''
     @classmethod
     @inlineCallbacks
     def _createChild(cls, home, name):  #@NoSelf
@@ -282,8 +282,8 @@
                 ))[0]
 
         returnValue((resourceID, created, modified))
+    '''
 
-
     @classmethod
     def _memberIDsWithGroupIDsQuery(cls, groupIDs): #@NoSelf
         """
@@ -313,7 +313,7 @@
 
         returnValue(tuple(objectIDs))
 
-
+    '''
     @inlineCallbacks
     def listObjectResources(self):
         if self._objectNames is None:
@@ -332,6 +332,7 @@
     @inlineCallbacks
     def countObjectResources(self):
         returnValue(len((yield self._allAddressBookObjectIDs())))
+    '''
 
 
 class AddressBookObject(CommonObjectResource, AddressBookSharingMixIn):
@@ -340,7 +341,7 @@
 
     _objectTable = ADDRESSBOOK_OBJECT_TABLE
     _objectSchema = schema.ADDRESSBOOK_OBJECT
-    _bindSchema = schema.ADDRESSBOOK_BIND
+    _bindSchema = schema.GROUP_ADDRESSBOOK_BIND
 
 
     def __init__(self, addressbook, name, uid, resourceID=None, metadata=None):
@@ -476,6 +477,8 @@
 
         @return: L{self} if object exists in the DB, else C{None}
         """
+        if isinstance(self._addressbook, AddressBook):
+            returnValue((yield super(AddressBookObject, self).initFromStore()))
 
         objectIDs = yield self._addressbook._allAddressBookObjectIDs()
         if self._name:
@@ -545,6 +548,9 @@
     @classmethod
     @inlineCallbacks
     def _allColumnsWithParent(cls, parent): #@NoSelf
+        if isinstance(parent, AddressBook):
+            returnValue((yield super(AddressBookObject, cls)._allColumnsWithParent(parent)))
+
         objectIDs = yield parent._allAddressBookObjectIDs()
         rows = (yield cls._abObjectColumnsWithResourceIDsQuery(cls._allColumns, objectIDs).on(
             parent._txn, resourceIDs=objectIDs)) if objectIDs else []
@@ -595,7 +601,7 @@
                     break
         else:
             if self._addressbook._resourceID != self._ownerAddressBookResourceID:
-                # update revisions table a shared group's containing address book
+                # update revisions table of shared group's containing address book
                 ownerAddressBook = yield self.ownerAddressBook()
                 yield self._changeAddressBookRevision(ownerAddressBook, inserting)
 
@@ -775,7 +781,7 @@
             groupIDs = [groupIDRow[0] for groupIDRow in groupIDRows]
 
             # add group if of this owner address book
-            groupIDs.append(self._ownerAddressBookResourceID)
+            # groupIDs.append(self._ownerAddressBookResourceID)
 
             # add owner group if there is one
             ownerGroup = yield self.ownerGroup()

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/test/test_sql.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/test/test_sql.py	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/carddav/datastore/test/test_sql.py	2013-01-08 01:55:10 UTC (rev 10292)
@@ -475,7 +475,7 @@
         aboForeignMembers = schema.ABO_FOREIGN_MEMBERS
         aboMembers = schema.ABO_MEMBERS
         memberRows = yield Select([aboMembers.GROUP_ID, aboMembers.MEMBER_ID], From=aboMembers,).on(txn)
-        self.assertEqual(sorted(memberRows), sorted([[adbk._resourceID, personObject._resourceID], [adbk._resourceID, groupObject._resourceID]]))
+        self.assertEqual(memberRows, [])
 
         foreignMemberRows = yield Select([aboForeignMembers.GROUP_ID, aboForeignMembers.MEMBER_ADDRESS], From=aboForeignMembers).on(txn)
         self.assertEqual(foreignMemberRows, [[groupObject._resourceID, "urn:uuid:uid3"]])
@@ -499,9 +499,6 @@
         self.assertEqual(sorted(memberRows), sorted([
                                                      [groupObject._resourceID, subgroupObject._resourceID],
                                                      [subgroupObject._resourceID, personObject._resourceID],
-                                                     [adbk._resourceID, personObject._resourceID],
-                                                     [adbk._resourceID, subgroupObject._resourceID],
-                                                     [adbk._resourceID, groupObject._resourceID],
                                                     ]))
 
         foreignMemberRows = yield Select([aboForeignMembers.GROUP_ID, aboForeignMembers.MEMBER_ADDRESS], From=aboForeignMembers).on(txn)
@@ -510,7 +507,7 @@
 
         yield adbk.removeAddressBookObjectWithName("sg.vcf")
         memberRows = yield Select([aboMembers.GROUP_ID, aboMembers.MEMBER_ID], From=aboMembers,).on(txn)
-        self.assertEqual(sorted(memberRows), sorted([[adbk._resourceID, personObject._resourceID], [adbk._resourceID, groupObject._resourceID]]))
+        self.assertEqual(memberRows, [])
 
         foreignMemberRows = yield Select([aboForeignMembers.GROUP_ID, aboForeignMembers.MEMBER_ADDRESS], From=aboForeignMembers,
                                                  #Where=(aboForeignMembers.GROUP_ID == groupObject._resourceID),

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_schema/current.sql
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_schema/current.sql	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_schema/current.sql	2013-01-08 01:55:10 UTC (rev 10292)
@@ -16,12 +16,14 @@
 -- limitations under the License.
 ----
 
+
 -----------------
 -- Resource ID --
 -----------------
 
 create sequence RESOURCE_ID_SEQ;
 
+
 -------------------------
 -- Cluster Bookkeeping --
 -------------------------
@@ -49,6 +51,7 @@
   DATAVERSION      integer      default 0 not null
 );
 
+
 ----------------------------
 -- Calendar Home Metadata --
 ----------------------------
@@ -60,6 +63,7 @@
   MODIFIED         timestamp    default timezone('UTC', CURRENT_TIMESTAMP)
 );
 
+
 --------------
 -- Calendar --
 --------------
@@ -106,6 +110,7 @@
 create index NOTIFICATION_NOTIFICATION_HOME_RESOURCE_ID on
   NOTIFICATION(NOTIFICATION_HOME_RESOURCE_ID);
 
+
 -------------------
 -- Calendar Bind --
 -------------------
@@ -223,6 +228,7 @@
 insert into CALENDAR_ACCESS_TYPE values (3, 'confidential' );
 insert into CALENDAR_ACCESS_TYPE values (4, 'restricted'   );
 
+
 -----------------
 -- Instance ID --
 -----------------
@@ -335,6 +341,7 @@
   DATAVERSION      integer      default 0 not null
 );
 
+
 -------------------------------
 -- AddressBook Home Metadata --
 -------------------------------
@@ -346,26 +353,69 @@
   MODIFIED         timestamp    default timezone('UTC', CURRENT_TIMESTAMP)
 );
 
+
+-----------------
+-- AddressBook --
+-----------------
+
+create table ADDRESSBOOK (
+  RESOURCE_ID integer   primary key default nextval('RESOURCE_ID_SEQ') -- implicit index
+);
+
+
+--------------------------
+-- AddressBook Metadata --
+--------------------------
+
+create table ADDRESSBOOK_METADATA (
+  RESOURCE_ID integer   primary key references ADDRESSBOOK on delete cascade, -- implicit index
+  CREATED     timestamp default timezone('UTC', CURRENT_TIMESTAMP),
+  MODIFIED    timestamp default timezone('UTC', CURRENT_TIMESTAMP)
+);
+
+
+----------------------
+-- AddressBook Bind --
+----------------------
+
+-- Joins ADDRESSBOOK_HOME and ADDRESSBOOK
+
+create table ADDRESSBOOK_BIND (
+  ADDRESSBOOK_HOME_RESOURCE_ID integer      not null references ADDRESSBOOK_HOME,
+  ADDRESSBOOK_RESOURCE_ID      integer      not null references ADDRESSBOOK on delete cascade,
+  ADDRESSBOOK_RESOURCE_NAME    varchar(255) not null,
+  BIND_MODE                    integer      not null, -- enum CALENDAR_BIND_MODE
+  BIND_STATUS                  integer      not null, -- enum CALENDAR_BIND_STATUS
+  MESSAGE                      text,                  -- FIXME: xml?
+
+  primary key (ADDRESSBOOK_HOME_RESOURCE_ID, ADDRESSBOOK_RESOURCE_ID), -- implicit index
+  unique (ADDRESSBOOK_HOME_RESOURCE_ID, ADDRESSBOOK_RESOURCE_NAME)     -- implicit index
+);
+
+create index ADDRESSBOOK_BIND_RESOURCE_ID on
+  ADDRESSBOOK_BIND(ADDRESSBOOK_RESOURCE_ID);
+
+
 -----------------------------
 -- AddressBook Object --
 -----------------------------
 
-
-  create table ADDRESSBOOK_OBJECT (
-  RESOURCE_ID             integer      primary key default nextval('RESOURCE_ID_SEQ'),	-- implicit index
-  ADDRESSBOOK_RESOURCE_ID integer      references ADDRESSBOOK_OBJECT on delete cascade,	-- ### could add non-null, but ab would reference itself
+create table ADDRESSBOOK_OBJECT (
+  RESOURCE_ID             integer      primary key default nextval('RESOURCE_ID_SEQ'),    -- implicit index
+  ADDRESSBOOK_RESOURCE_ID integer      not null references ADDRESSBOOK on delete cascade,
   RESOURCE_NAME           varchar(255) not null,
   VCARD_TEXT              text         not null,
   VCARD_UID               varchar(255) not null,
+  KIND 			  		  integer      not null, -- enum OBJECT_KIND 
   MD5                     char(32)     not null,
   CREATED                 timestamp    default timezone('UTC', CURRENT_TIMESTAMP),
   MODIFIED                timestamp    default timezone('UTC', CURRENT_TIMESTAMP),
-  KIND 			  		  integer      not null, -- enum OBJECT_KIND 
-  
+
   unique (ADDRESSBOOK_RESOURCE_ID, RESOURCE_NAME), -- implicit index
   unique (ADDRESSBOOK_RESOURCE_ID, VCARD_UID)      -- implicit index
 );
 
+
 -----------------------------
 -- AddressBook Object kind --
 -----------------------------
@@ -380,49 +430,53 @@
 insert into ADDRESSBOOK_OBJECT_KIND values (2, 'resource');
 insert into ADDRESSBOOK_OBJECT_KIND values (3, 'location');
 
+
 ---------------------------------
 -- Address Book Object Members --
 ---------------------------------
 
 create table ABO_MEMBERS (
     GROUP_ID              integer      not null references ADDRESSBOOK_OBJECT on delete cascade,	-- AddressBook Object's (kind=='group') RESOURCE_ID
- 	ADDRESSBOOK_ID		  integer      not null references ADDRESSBOOK_OBJECT on delete cascade,	-- only used on insert and whole address book delete
+ 	ADDRESSBOOK_ID		  integer      not null references ADDRESSBOOK on delete cascade,
     MEMBER_ID             integer      not null references ADDRESSBOOK_OBJECT,						-- member AddressBook Object's RESOURCE_ID
     primary key (GROUP_ID, MEMBER_ID) -- implicit index
 );
 
+
 ------------------------------------------
 -- Address Book Object Foreign Members  --
 ------------------------------------------
 
 create table ABO_FOREIGN_MEMBERS (
     GROUP_ID              integer      not null references ADDRESSBOOK_OBJECT on delete cascade,	-- AddressBook Object's (kind=='group') RESOURCE_ID
- 	ADDRESSBOOK_ID		  integer      not null references ADDRESSBOOK_OBJECT on delete cascade,	-- only used on insert and whole address book delete
+ 	ADDRESSBOOK_ID		  integer      not null references ADDRESSBOOK on delete cascade,
     MEMBER_ADDRESS  	  varchar(255) not null, 													-- member AddressBook Object's 'calendar' address
     primary key (GROUP_ID, MEMBER_ADDRESS) -- implicit index
 );
 
-----------------------
--- AddressBook Bind --
-----------------------
 
+-----------------------------
+-- Group Address Book Bind --
+-----------------------------
+
 -- Joins ADDRESSBOOK_HOME and ADDRESSBOOK_OBJECT (acting as Address Book)
 
-create table ADDRESSBOOK_BIND (	
+create table GROUP_ADDRESSBOOK_BIND (	
   ADDRESSBOOK_HOME_RESOURCE_ID 		integer      not null references ADDRESSBOOK_HOME,
-  ADDRESSBOOK_RESOURCE_ID     		integer      not null references ADDRESSBOOK_OBJECT on delete cascade,
-  ADDRESSBOOK_RESOURCE_NAME    		varchar(255) not null,
-  BIND_MODE                    		integer      not null, 	-- enum CALENDAR_BIND_MODE
-  BIND_STATUS                  		integer      not null, 	-- enum CALENDAR_BIND_STATUS
-  MESSAGE                      		text,        			-- FIXME: xml?
+  GROUP_RESOURCE_ID      			integer      not null references ADDRESSBOOK_OBJECT on delete cascade,
+  GROUP_ADDRESSBOOK_RESOURCE_NAME	varchar(255) not null,
+  BIND_MODE                    		integer      not null, -- enum CALENDAR_BIND_MODE
+  BIND_STATUS                  		integer      not null, -- enum CALENDAR_BIND_STATUS
+  MESSAGE                      		text,                  -- FIXME: xml?
 
-  primary key (ADDRESSBOOK_HOME_RESOURCE_ID, ADDRESSBOOK_RESOURCE_ID), -- implicit index
-  unique (ADDRESSBOOK_HOME_RESOURCE_ID, ADDRESSBOOK_RESOURCE_NAME)     -- implicit index
+  primary key (ADDRESSBOOK_HOME_RESOURCE_ID, GROUP_RESOURCE_ID), -- implicit index
+  unique (ADDRESSBOOK_HOME_RESOURCE_ID, GROUP_ADDRESSBOOK_RESOURCE_NAME)     -- implicit index
 );
 
-create index ADDRESSBOOK_BIND_RESOURCE_ID on
-  ADDRESSBOOK_BIND(ADDRESSBOOK_RESOURCE_ID);
+create index GROUP_ADDRESSBOOK_BIND_RESOURCE_ID on
+  GROUP_ADDRESSBOOK_BIND(GROUP_RESOURCE_ID);
 
+
 ---------------
 -- Revisions --
 ---------------
@@ -447,13 +501,14 @@
 create index CALENDAR_OBJECT_REVISIONS_RESOURCE_ID_REVISION
   on CALENDAR_OBJECT_REVISIONS(CALENDAR_RESOURCE_ID, REVISION);
 
+
 ----------------------------------
 -- AddressBook Object Revisions --
 ----------------------------------
 
 create table ADDRESSBOOK_OBJECT_REVISIONS (
   ADDRESSBOOK_HOME_RESOURCE_ID integer      not null references ADDRESSBOOK_HOME,
-  ADDRESSBOOK_RESOURCE_ID      integer      references ADDRESSBOOK_OBJECT on delete cascade,
+  ADDRESSBOOK_RESOURCE_ID      integer      references ADDRESSBOOK,
   ADDRESSBOOK_NAME             varchar(255) default null,
   RESOURCE_NAME                varchar(255),
   REVISION                     integer      default nextval('REVISION_SEQ') not null,
@@ -469,6 +524,7 @@
 create index ADDRESSBOOK_OBJECT_REVISIONS_RESOURCE_ID_REVISION
   on ADDRESSBOOK_OBJECT_REVISIONS(ADDRESSBOOK_RESOURCE_ID, REVISION);
 
+
 -----------------------------------
 -- Notification Object Revisions --
 -----------------------------------
@@ -485,6 +541,7 @@
 create index NOTIFICATION_OBJECT_REVISIONS_RESOURCE_ID_REVISION
   on NOTIFICATION_OBJECT_REVISIONS(NOTIFICATION_HOME_RESOURCE_ID, REVISION);
 
+
 -------------------------------------------
 -- Apple Push Notification Subscriptions --
 -------------------------------------------

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_tables.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_tables.py	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/sql_tables.py	2013-01-08 01:55:10 UTC (rev 10292)
@@ -63,6 +63,12 @@
     schema.ADDRESSBOOK_BIND.ADDRESSBOOK_RESOURCE_ID
 schema.ADDRESSBOOK_BIND.HOME_RESOURCE_ID = \
     schema.ADDRESSBOOK_BIND.ADDRESSBOOK_HOME_RESOURCE_ID
+schema.GROUP_ADDRESSBOOK_BIND.RESOURCE_NAME = \
+    schema.GROUP_ADDRESSBOOK_BIND.GROUP_ADDRESSBOOK_RESOURCE_NAME
+schema.GROUP_ADDRESSBOOK_BIND.RESOURCE_ID = \
+    schema.GROUP_ADDRESSBOOK_BIND.GROUP_RESOURCE_ID
+schema.GROUP_ADDRESSBOOK_BIND.HOME_RESOURCE_ID = \
+    schema.GROUP_ADDRESSBOOK_BIND.ADDRESSBOOK_HOME_RESOURCE_ID
 schema.CALENDAR_OBJECT_REVISIONS.RESOURCE_ID = \
     schema.CALENDAR_OBJECT_REVISIONS.CALENDAR_RESOURCE_ID
 schema.CALENDAR_OBJECT_REVISIONS.HOME_RESOURCE_ID = \
@@ -193,7 +199,7 @@
 ADDRESSBOOK_HOME_METADATA_TABLE = _S(schema.ADDRESSBOOK_HOME_METADATA)
 NOTIFICATION_HOME_TABLE = _S(schema.NOTIFICATION_HOME)
 CALENDAR_TABLE = _S(schema.CALENDAR)
-ADDRESSBOOK_TABLE = _S(schema.ADDRESSBOOK_OBJECT)
+ADDRESSBOOK_TABLE = _S(schema.ADDRESSBOOK)
 CALENDAR_BIND_TABLE = _S(schema.CALENDAR_BIND)
 ADDRESSBOOK_BIND_TABLE = _S(schema.ADDRESSBOOK_BIND)
 CALENDAR_OBJECT_REVISIONS_TABLE = _S(schema.CALENDAR_OBJECT_REVISIONS)

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/test/util.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/test/util.py	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/common/datastore/test/util.py	2013-01-08 01:55:10 UTC (rev 10292)
@@ -231,7 +231,9 @@
                   'CALENDAR_OBJECT',
                   'CALENDAR_BIND',
                   'ADDRESSBOOK_BIND',
+                  'GROUP_ADDRESSBOOK_BIND',
                   'CALENDAR',
+                  'ADDRESSBOOK',
                   'CALENDAR_HOME',
                   'ADDRESSBOOK_HOME',
                   'NOTIFICATION',

Modified: CalendarServer/branches/users/gaya/sharedgroups/txdav/common/icommondatastore.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedgroups/txdav/common/icommondatastore.py	2013-01-05 02:40:37 UTC (rev 10291)
+++ CalendarServer/branches/users/gaya/sharedgroups/txdav/common/icommondatastore.py	2013-01-08 01:55:10 UTC (rev 10292)
@@ -237,7 +237,7 @@
         @param guid: The GUID of the subscribed principal
         @type guid: C{str}
 
-        @return: tuples of (token, key, timestamp)
+        @return: tuples of (token, key, timestamp, userAgent, ipAddr)
         """
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20130107/20c1fecc/attachment-0001.html>


More information about the calendarserver-changes mailing list