[CalendarServer-changes] [9330] CalendarServer/branches/users/gaya/sharedabgroups/txdav/carddav/ datastore/sql.py
source_changes at macosforge.org
source_changes at macosforge.org
Mon Jun 4 16:27:43 PDT 2012
Revision: 9330
http://trac.macosforge.org/projects/calendarserver/changeset/9330
Author: gaya at apple.com
Date: 2012-06-04 16:27:42 -0700 (Mon, 04 Jun 2012)
Log Message:
-----------
GroupAddressBook now have multiple group
Modified Paths:
--------------
CalendarServer/branches/users/gaya/sharedabgroups/txdav/carddav/datastore/sql.py
Modified: CalendarServer/branches/users/gaya/sharedabgroups/txdav/carddav/datastore/sql.py
===================================================================
--- CalendarServer/branches/users/gaya/sharedabgroups/txdav/carddav/datastore/sql.py 2012-06-04 23:00:54 UTC (rev 9329)
+++ CalendarServer/branches/users/gaya/sharedabgroups/txdav/carddav/datastore/sql.py 2012-06-04 23:27:42 UTC (rev 9330)
@@ -60,10 +60,6 @@
ADDRESSBOOK_OBJECT_REVISIONS_AND_BIND_TABLE, schema
from txdav.base.propertystore.base import PropertyName
-from twext.internet.decorate import memoizedKey
-from twisted.internet.defer import succeed
-from txdav.common.icommondatastore import HomeChildNameNotAllowedError
-
from txdav.base.propertystore.sql import PropertyStore
from txdav.common.datastore.sql_tables import _BIND_MODE_OWN, \
_BIND_STATUS_ACCEPTED
@@ -75,9 +71,6 @@
from twext.enterprise.dal.syntax import Select
from twext.enterprise.dal.syntax import Update
-from txdav.common.icommondatastore import HomeChildNameNotAllowedError, \
- HomeChildNameAlreadyExistsError, NoSuchHomeChildError, ObjectResourceNameAlreadyExistsError, \
- NoSuchObjectResourceError
from twext.python.clsprop import classproperty
class AddressBookHome(CommonHome):
@@ -427,7 +420,10 @@
print("xxx AddressBook.objectWithName() memberIDRows=%s name=%s" % (groupIDRows, name,))
if groupIDRows:
- child = GroupAddressBook(home, name, resourceID, groupIDRows[0][0])
+ groupIDs = [];
+ for groupIDRow in groupIDRows:
+ groupIDs.extend(groupIDRow)
+ child = GroupAddressBook(home, name, resourceID, groupIDs)
elif didGroupAddressbookQuery:
child = None
else:
@@ -447,7 +443,7 @@
implements(IAddressBook)
- def __init__(self, home, name, resourceID, groupID):
+ def __init__(self, home, name, resourceID, groupIDs):
"""
Initialize an addressbook pointing at a path on disk.
@@ -464,12 +460,12 @@
"""
super(GroupAddressBook, self).__init__(home, name, resourceID, False)
- print("xxx GroupAddressBook.__init__() self=%s, memberIDs=%s" % (self, groupID,))
+ print("xxx GroupAddressBook.__init__() self=%s, memberIDs=%s" % (self, groupIDs,))
self._objectResourceClass = GroupAddressBookObject
print("xxx GroupAddressBook.objectResources() self=%s, self._objectResourceClass=%s" % (self, self._objectResourceClass))
- self._groupID = groupID
+ self._groupIDs = groupIDs
@classproperty
@@ -585,24 +581,35 @@
@inlineCallbacks
def allowedChildResourceIDs(self):
+ """
+ get the allowed resource ids for this group address book
+ TODO:
+ include subgroup member resource ids
+ return read-only/read-write members indication
+ """
+
print("xxx GroupAddressBook.allowedChildResourceIDs() self=%s" % (self,))
- groupMemberIDRows = yield self._memberIDsForGroupIDQuery.on(
- self._txn, groupID=self._groupID)
-
- print("xxx GroupAddressBook.allowedChildResourceIDs(): groupMemberIDRows=%s" % (groupMemberIDRows,))
allowedChildResourceIDs = []
- for groupMemberIDRow in groupMemberIDRows:
- allowedChildResourceIDs += groupMemberIDRow
- print("xxx GroupAddressBook.allowedChildResourceIDs(): allowedChildResourceIDs=%s" % (allowedChildResourceIDs,))
- returnValue(allowedChildResourceIDs)
+ for groupID in tuple(self._groupIDs):
+ groupMemberIDRows = (yield self._memberIDsForGroupIDQuery.on(self._txn, groupID=groupID))
+
+ print("xxx GroupAddressBook.allowedChildResourceIDs(): groupMemberIDRows=%s" % (groupMemberIDRows,))
+ for groupMemberIDRow in groupMemberIDRows:
+ allowedChildResourceIDs += groupMemberIDRow
+ print("xxx GroupAddressBook.allowedChildResourceIDs(): allowedChildResourceIDs=%s" % (allowedChildResourceIDs,))
+ returnValue(set(allowedChildResourceIDs))
@inlineCallbacks
def listObjectResources(self):
+ """
+ AddressBookObject.listObjectResources + filtering
+ """
+
+ print("xxx GroupAddressBook.allowedChildResourceIDs() self=%s" % (self,))
print("xxx GroupAddressBook.listObjectResources() self=%s" % (self,))
if self._objectNames is None:
- # FIXME: this should be one query
rows = yield self._objectResourceNamesAndIDsQuery.on(
self._txn, resourceID=self._resourceID)
print("xxx GroupAddressBook.listObjectResources(): rows=%s" % (rows,))
@@ -632,6 +639,7 @@
pass
rows = yield self._resourceNameForUIDQuery.on(
self._txn, uid=uid, resourceID=self._resourceID)
+
#FIXME: Filter
if rows:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120604/494bc564/attachment-0001.html>
More information about the calendarserver-changes
mailing list