[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