[CalendarServer-changes] [9269] CalendarServer/branches/users/glyph/uuid-normalize/txdav/base/ datastore/util.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu May 24 13:32:47 PDT 2012
Revision: 9269
http://trac.macosforge.org/projects/calendarserver/changeset/9269
Author: glyph at apple.com
Date: 2012-05-24 13:32:47 -0700 (Thu, 24 May 2012)
Log Message:
-----------
function to normalize UUIDs (or not)
Modified Paths:
--------------
CalendarServer/branches/users/glyph/uuid-normalize/txdav/base/datastore/util.py
Modified: CalendarServer/branches/users/glyph/uuid-normalize/txdav/base/datastore/util.py
===================================================================
--- CalendarServer/branches/users/glyph/uuid-normalize/txdav/base/datastore/util.py 2012-05-24 17:53:31 UTC (rev 9268)
+++ CalendarServer/branches/users/glyph/uuid-normalize/txdav/base/datastore/util.py 2012-05-24 20:32:47 UTC (rev 9269)
@@ -19,6 +19,10 @@
Common utility functions for a datastores.
"""
+from uuid import UUID
+
+from twisted.python import log
+
from twistedcaldav.memcacher import Memcacher
_unset = object()
@@ -90,3 +94,51 @@
def keyForHomeChildMetaData(self, resourceID):
return "homeChildMetaData:%s" % (resourceID)
+
+
+def normalizeUUIDOrNot(somestr):
+ """
+ Take a string which may be:
+
+ - the hex format of a UUID
+
+ - a urn:uuid: URI containing a UUID
+
+ - some other random thing
+
+ and return, respectively:
+
+ - the hex format of a UUID converted to upper case
+
+ - a urn:uuid: URI with an upper-cased UUID (but not an upper-cased
+ scheme and namespace)
+
+ - some other random thing, unmodified
+
+ @type somestr: L{str}
+
+ @return: L{str}
+ """
+ uuu = "urn:uuid:"
+ isURI = somestr.startswith(uuu)
+ if isURI:
+ normstr = somestr[len(uuu):]
+ else:
+ normstr = somestr
+ try:
+ uu = UUID(normstr)
+ except ValueError:
+ if isURI:
+ log.msg(format="normalizing urn:uuid: without UUID: %(uid)r",
+ uid=somestr)
+ # not a UUID, whatever
+ return somestr
+ else:
+ normalForm = str(uu).upper()
+ if isURI:
+ return uuu + normalForm
+ else:
+ return normalForm
+
+
+
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20120524/54a4f0a7/attachment-0001.html>
More information about the calendarserver-changes
mailing list