[CalendarServer-changes] [1252] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Feb 23 13:31:20 PST 2007
Revision: 1252
http://trac.macosforge.org/projects/calendarserver/changeset/1252
Author: cdaboo at apple.com
Date: 2007-02-23 13:31:19 -0800 (Fri, 23 Feb 2007)
Log Message:
-----------
Split api for query into "simple" and "compound" versions that take simple string objects as arguments, rather than complex
nested dicts. Now the compound expression has to be genereted in Python and passed in. A new dsquery python module has been
created to aid creation of compound exprssion strings.
Fix lookup of locations so that it looks for /Resources record types with a specific resource type value.
Modified Paths:
--------------
CalendarServer/trunk/run
CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
Modified: CalendarServer/trunk/run
===================================================================
--- CalendarServer/trunk/run 2007-02-23 21:21:24 UTC (rev 1251)
+++ CalendarServer/trunk/run 2007-02-23 21:31:19 UTC (rev 1252)
@@ -417,7 +417,7 @@
if ! py_have_module opendirectory; then
opendirectory="${top}/PyOpenDirectory";
- svn_get "PyOpenDirectory" "${opendirectory}" "${svn_uri_base}/PyOpenDirectory/trunk" 1213;
+ svn_get "PyOpenDirectory" "${opendirectory}" "${svn_uri_base}/PyOpenDirectory/trunk" 1251;
py_build "PyOpenDirectory" "${opendirectory}" false;
py_install "PyOpenDirectory" "${opendirectory}";
Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2007-02-23 21:21:24 UTC (rev 1251)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py 2007-02-23 21:31:19 UTC (rev 1252)
@@ -29,6 +29,7 @@
import opendirectory
import dsattributes
+import dsquery
from twisted.python import log
from twisted.internet.threads import deferToThread
@@ -123,12 +124,12 @@
dsattributes.kDS1AttrXMLPlist,
]
- records = opendirectory.queryRecordsWithAttributes(
+ records = opendirectory.queryRecordsWithAttribute(
self.directory,
- { dsattributes.kDS1AttrXMLPlist: vhostname },
+ dsattributes.kDS1AttrXMLPlist,
+ vhostname,
dsattributes.eDSContains,
True, # case insentive for hostnames
- False,
dsattributes.kDSStdRecordTypeComputers,
attrs
)
@@ -304,35 +305,61 @@
dsattributes.kDSNAttrServicesLocator,
]
+ query = None
if recordType == DirectoryService.recordType_users:
listRecordType = dsattributes.kDSStdRecordTypeUsers
+
elif recordType == DirectoryService.recordType_groups:
listRecordType = dsattributes.kDSStdRecordTypeGroups
attrs.append(dsattributes.kDSNAttrGroupMembers)
+
elif recordType == DirectoryService.recordType_locations:
- listRecordType = dsattributes.kDSStdRecordTypeLocations
+ listRecordType = dsattributes.kDSStdRecordTypeResources
+ query = dsquery.match(dsattributes.kDSNAttrResourceType, "1", dsattributes.eDSExact)
+
elif recordType == DirectoryService.recordType_resources:
listRecordType = dsattributes.kDSStdRecordTypeResources
+ query = dsquery.expression(dsquery.expression.OR, (
+ dsquery.match(dsattributes.kDSNAttrResourceType, "0", dsattributes.eDSExact),
+ dsquery.match(dsattributes.kDSNAttrResourceType, "2", dsattributes.eDSExact),
+ dsquery.match(dsattributes.kDSNAttrResourceType, "3", dsattributes.eDSExact),
+ dsquery.match(dsattributes.kDSNAttrResourceType, "4", dsattributes.eDSExact),
+ dsquery.match(dsattributes.kDSNAttrResourceType, "5", dsattributes.eDSExact),
+ ))
+
else:
raise UnknownRecordTypeError("Unknown Open Directory record type: %s"
% (recordType,))
+ if self.requireComputerRecord:
+ cprecord = dsquery.match(dsattributes.kDSNAttrServicesLocator, self.servicetag, dsattributes.eDSStartsWith)
+ if query:
+ query = dsquery.expression(dsquery.expression.AND, (cprecord, query))
+ else:
+ query = cprecord
+
records = {}
try:
- if self.requireComputerRecord:
- query = {
- dsattributes.kDSNAttrServicesLocator: self.servicetag,
- }
- results = opendirectory.queryRecordsWithAttributes(
- self.directory,
- query,
- dsattributes.eDSStartsWith,
- False,
- False,
- listRecordType,
- attrs,
- )
+ if query:
+ if isinstance(query, dsquery.match):
+ results = opendirectory.queryRecordsWithAttribute(
+ self.directory,
+ query.attribute,
+ query.value,
+ query.matchType,
+ False,
+ listRecordType,
+ attrs,
+ )
+ else:
+ results = opendirectory.queryRecordsWithAttributes(
+ self.directory,
+ query.generate(),
+ False,
+ listRecordType,
+ attrs,
+ )
else:
results = opendirectory.listAllRecordsWithAttributes(
self.directory,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070223/c9c49ad7/attachment.html
More information about the calendarserver-changes
mailing list