[CalendarServer-changes] [7593] CalendarServer/trunk/twistedcaldav
source_changes at macosforge.org
source_changes at macosforge.org
Tue Jun 14 13:25:56 PDT 2011
Revision: 7593
http://trac.macosforge.org/projects/calendarserver/changeset/7593
Author: sagen at apple.com
Date: 2011-06-14 13:25:48 -0700 (Tue, 14 Jun 2011)
Log Message:
-----------
Handle wiki calendars with non-ascii names (9592951)
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipaldb.py
CalendarServer/trunk/twistedcaldav/notify.py
Modified: CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2011-06-14 19:14:15 UTC (rev 7592)
+++ CalendarServer/trunk/twistedcaldav/directory/calendaruserproxy.py 2011-06-14 20:25:48 UTC (rev 7593)
@@ -596,12 +596,12 @@
# Cache miss; compute members and update cache
def gotMembersFromDB(dbmembers):
- members = set([row[0] for row in dbmembers])
+ members = set([row[0].encode("utf-8") for row in dbmembers])
d = self._memcacher.setMembers(principalUID, members)
d.addCallback(lambda _: members)
return d
- d = self.query("select MEMBER from GROUPS where GROUPNAME = :1", (principalUID,))
+ d = self.query("select MEMBER from GROUPS where GROUPNAME = :1", (principalUID.decode("utf-8"),))
d.addCallback(gotMembersFromDB)
return d
@@ -621,12 +621,12 @@
# Cache miss; compute memberships and update cache
def gotMembershipsFromDB(dbmemberships):
- memberships = set([row[0] for row in dbmemberships])
+ memberships = set([row[0].encode("utf-8") for row in dbmemberships])
d = self._memcacher.setMemberships(principalUID, memberships)
d.addCallback(lambda _: memberships)
return d
- d = self.query("select GROUPNAME from GROUPS where MEMBER = :1", (principalUID,))
+ d = self.query("select GROUPNAME from GROUPS where MEMBER = :1", (principalUID.decode("utf-8"),))
d.addCallback(gotMembershipsFromDB)
return d
@@ -647,7 +647,7 @@
"""
insert into GROUPS (GROUPNAME, MEMBER)
values (:1, :2)
- """, (principalUID, member,)
+ """, (principalUID.decode("utf-8"), member,)
)
def _add_to_db_one(self, principalUID, memberUID):
@@ -661,7 +661,7 @@
"""
insert into GROUPS (GROUPNAME, MEMBER)
values (:1, :2)
- """, (principalUID, memberUID,)
+ """, (principalUID.decode("utf-8"), memberUID.decode("utf-8"),)
)
def _delete_from_db(self, principalUID):
@@ -670,7 +670,7 @@
@param principalUID: the UID of the group principal to remove.
"""
- return self.execute("delete from GROUPS where GROUPNAME = :1", (principalUID,))
+ return self.execute("delete from GROUPS where GROUPNAME = :1", (principalUID.decode("utf-8"),))
def _delete_from_db_one(self, principalUID, memberUID):
"""
@@ -679,7 +679,7 @@
@param principalUID: the UID of the group principal to remove.
@param memberUID: the UID of the principal that is being removed as a member of this group.
"""
- return self.execute("delete from GROUPS where GROUPNAME = :1 and MEMBER = :2", (principalUID, memberUID,))
+ return self.execute("delete from GROUPS where GROUPNAME = :1 and MEMBER = :2", (principalUID.decode("utf-8"), memberUID.decode("utf-8"),))
def _delete_from_db_member(self, principalUID):
"""
@@ -687,7 +687,7 @@
@param principalUID: the UID of the member principal to remove.
"""
- return self.execute("delete from GROUPS where MEMBER = :1", (principalUID,))
+ return self.execute("delete from GROUPS where MEMBER = :1", (principalUID.decode("utf-8"),))
def _db_version(self):
"""
Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipaldb.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipaldb.py 2011-06-14 19:14:15 UTC (rev 7592)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_proxyprincipaldb.py 2011-06-14 20:25:48 UTC (rev 7593)
@@ -86,6 +86,21 @@
self.assertEqual(membershipsB, set(("A",)))
@inlineCallbacks
+ def test_normalDBNonAscii(self):
+
+ # Get the DB
+ db_path = os.path.abspath(self.mktemp())
+ db = ProxySqliteDB(db_path)
+ principalID = "Test \xe4\xbd\x90\xe8\x97\xa4"
+ yield db.setGroupMembers(principalID, ("B", "C", "D",))
+
+ membersA = yield db.getMembers(principalID)
+ membershipsB = yield db.getMemberships("B")
+
+ self.assertEqual(membersA, set(("B", "C", "D",)))
+ self.assertEqual(membershipsB, set((principalID,)))
+
+ @inlineCallbacks
def test_DBIndexed(self):
# Get the DB
Modified: CalendarServer/trunk/twistedcaldav/notify.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/notify.py 2011-06-14 19:14:15 UTC (rev 7592)
+++ CalendarServer/trunk/twistedcaldav/notify.py 2011-06-14 20:25:48 UTC (rev 7593)
@@ -689,7 +689,7 @@
iq = IQ(self.xmlStream)
pubsubElement = iq.addElement('pubsub', defaultUri=self.pubsubNS)
publishElement = pubsubElement.addElement('publish')
- publishElement['node'] = nodeName
+ publishElement['node'] = nodeName.decode("utf-8")
if self.settings["NodeConfiguration"]["pubsub#deliver_payloads"] == '1':
itemElement = publishElement.addElement('item')
itemElement.addElement('plistfrag', defaultUri='plist-apple')
@@ -742,7 +742,7 @@
iq = IQ(self.xmlStream)
pubsubElement = iq.addElement('pubsub', defaultUri=self.pubsubNS)
child = pubsubElement.addElement('create')
- child['node'] = nodeName
+ child['node'] = nodeName.decode("utf-8")
d = iq.send(to=self.settings['ServiceAddress'])
d.addCallback(self.createNodeSuccess, nodeName, publish)
d.addErrback(self.createNodeFailure, nodeName, publish)
@@ -794,7 +794,7 @@
child = iq.addElement('pubsub',
defaultUri=self.pubsubNS+"#owner")
child = child.addElement('configure')
- child['node'] = nodeName
+ child['node'] = nodeName.decode("utf-8")
d = iq.send(to=self.settings['ServiceAddress'])
d.addCallback(self.requestConfigurationFormSuccess, nodeName,
publish)
@@ -829,7 +829,7 @@
filledPubSub = filledIq.addElement('pubsub',
defaultUri=self.pubsubNS+"#owner")
filledConfigure = filledPubSub.addElement('configure')
- filledConfigure['node'] = nodeName
+ filledConfigure['node'] = nodeName.decode("utf-8")
filledForm = filledConfigure.addElement('x',
defaultUri='jabber:x:data')
filledForm['type'] = 'submit'
@@ -859,7 +859,7 @@
cancelPubSub = cancelIq.addElement('pubsub',
defaultUri=self.pubsubNS+"#owner")
cancelConfig = cancelPubSub.addElement('configure')
- cancelConfig['node'] = nodeName
+ cancelConfig['node'] = nodeName.decode("utf-8")
cancelX = cancelConfig.addElement('x',
defaultUri='jabber:x:data')
cancelX['type'] = 'cancel'
@@ -940,7 +940,7 @@
pubsubElement = iq.addElement('pubsub',
defaultUri=self.pubsubNS+"#owner")
publishElement = pubsubElement.addElement('delete')
- publishElement['node'] = nodeName
+ publishElement['node'] = nodeName.decode("utf-8")
self.sendDebug("Deleting (%s)" % (nodeName,), iq)
d = iq.send(to=self.settings['ServiceAddress'])
d.addCallback(self.deleteNodeSuccess, nodeName)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20110614/6ea3ff21/attachment.html>
More information about the calendarserver-changes
mailing list