Revision: 3603 http://trac.macosforge.org/projects/calendarserver/changeset/3603 Author: wsanchez@apple.com Date: 2009-01-20 14:20:07 -0800 (Tue, 20 Jan 2009) Log Message: ----------- Add calendarserver.tools.util module. Modified Paths: -------------- CalendarServer/trunk/calendarserver/tools/export.py Added Paths: ----------- CalendarServer/trunk/calendarserver/tools/util.py Modified: CalendarServer/trunk/calendarserver/tools/export.py =================================================================== --- CalendarServer/trunk/calendarserver/tools/export.py 2009-01-20 22:10:29 UTC (rev 3602) +++ CalendarServer/trunk/calendarserver/tools/export.py 2009-01-20 22:20:07 UTC (rev 3603) @@ -1,7 +1,7 @@ #!/usr/bin/env python ## -# Copyright (c) 2006-2007 Apple Inc. All rights reserved. +# Copyright (c) 2006-2009 Apple Inc. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,13 +36,14 @@ from getopt import getopt, GetoptError from os.path import dirname, abspath -from twisted.python.reflect import namedClass from twistedcaldav.ical import Component as iComponent, Property as iProperty from twistedcaldav.ical import iCalendarProductID from twistedcaldav.resource import isCalendarCollectionResource from twistedcaldav.static import CalDAVFile, CalendarHomeFile -from twistedcaldav.directory.directory import DirectoryService, DirectoryRecord +from twistedcaldav.directory.directory import DirectoryService +from calendarserver.tools.util import loadConfig, getDirectory, dummyDirectoryRecord + class UsageError (StandardError): pass @@ -123,7 +124,7 @@ elif opt in ("-H", "--home"): path = abspath(arg) parent = CalDAVFile(dirname(abspath(path))) - calendarHome = CalendarHomeFile(arg, parent, dummyDirectoryRecord()) + calendarHome = CalendarHomeFile(arg, parent, dummyDirectoryRecord) checkExists(calendarHome) calendarHomes.add(calendarHome) @@ -145,8 +146,8 @@ usage("Too many arguments: %s" % (" ".join(args),)) if records: - config = getConfig(configFileName) - directory = getDirectory(config) + config = loadConfig(configFileName) + directory = getDirectory() for record in records: recordType, shortName = record @@ -171,7 +172,7 @@ tzids = set() for collection in collections: - for name, uid, type in collection.index().search(None): + for name, uid, type in collection.index().indexedSearch(None): child = collection.getChild(name) childData = child.iCalendarText() @@ -214,82 +215,5 @@ except UsageError, e: usage(e) -_dummyDirectoryRecord = None -def dummyDirectoryRecord(): - global _dummyDirectoryRecord - if _dummyDirectoryRecord is None: - class DummyDirectoryService (DirectoryService): - realmName = "" - baseGUID = "51856FD4-5023-4890-94FE-4356C4AAC3E4" - def recordTypes(self): return () - def listRecords(self): return () - def recordWithShortName(self): return None - - _dummyDirectoryRecord = DirectoryRecord( - service = DummyDirectoryService(), - recordType = "dummy", - guid = "8EF0892F-7CB6-4B8E-B294-7C5A5321136A", - shortName = "dummy", - fullName = "Dummy McDummerson", - firstName = "Dummy", - lastName = "McDummerson", - emailAddresses = (), - calendarUserAddresses = (), - autoSchedule = False, - ) - return _dummyDirectoryRecord - -_config = None -def getConfig(configFileName): - global _config - if _config is None: - from twistedcaldav.config import config, defaultConfigFile - - if configFileName is None: - configFileName = defaultConfigFile - - if not os.path.isfile(configFileName): - sys.stderr.write("No config file: %s\n" % (configFileName,)) - sys.exit(1) - - config.loadConfig(configFileName) - - _config = config - - return _config - -_directory = None -def getDirectory(config): - global _directory - if _directory is None: - BaseDirectoryService = namedClass(config.DirectoryService.type) - - class MyDirectoryService (BaseDirectoryService): - def principalCollection(self): - if not hasattr(self, "_principalCollection"): - # - # Instantiating a CalendarHomeProvisioningResource with a directory - # will register it with the directory (still smells like a hack). - # - # We need that in order to locate calendar homes via the directory. - # - from twistedcaldav.static import CalendarHomeProvisioningFile - CalendarHomeProvisioningFile(os.path.join(config.DocumentRoot, "calendars"), self, "/calendars/") - - from twistedcaldav.directory.principal import DirectoryPrincipalProvisioningResource - self._principalCollection = DirectoryPrincipalProvisioningResource("/principals/", self) - - return self._principalCollection - - def calendarHomeForShortName(self, recordType, shortName): - principal = self.principalCollection().principalForShortName(recordType, shortName) - if principal: - return principal.calendarHome() - return None - - _directory = MyDirectoryService(**config.DirectoryService.params) - - return _directory - if __name__ == "__main__": main() Added: CalendarServer/trunk/calendarserver/tools/util.py =================================================================== --- CalendarServer/trunk/calendarserver/tools/util.py (rev 0) +++ CalendarServer/trunk/calendarserver/tools/util.py 2009-01-20 22:20:07 UTC (rev 3603) @@ -0,0 +1,89 @@ +## +# Copyright (c) 2008-2009 Apple Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +## + +__all__ = [ + "loadConfig", + "getDirectory", + "dummyDirectoryRecord", +] + +import sys +import os + +from twisted.python.reflect import namedClass + +from twistedcaldav.config import config, defaultConfigFile +from twistedcaldav.directory.directory import DirectoryService, DirectoryRecord + +def loadConfig(configFileName): + if configFileName is None: + configFileName = defaultConfigFile + + if not os.path.isfile(configFileName): + sys.stderr.write("No config file: %s\n" % (configFileName,)) + sys.exit(1) + + config.loadConfig(configFileName) + + return config + +def getDirectory(): + BaseDirectoryService = namedClass(config.DirectoryService.type) + + class MyDirectoryService (BaseDirectoryService): + def principalCollection(self): + if not hasattr(self, "_principalCollection"): + # + # Instantiating a CalendarHomeProvisioningResource with a directory + # will register it with the directory (still smells like a hack). + # + # We need that in order to locate calendar homes via the directory. + # + from twistedcaldav.static import CalendarHomeProvisioningFile + CalendarHomeProvisioningFile(os.path.join(config.DocumentRoot, "calendars"), self, "/calendars/") + + from twistedcaldav.directory.principal import DirectoryPrincipalProvisioningResource + self._principalCollection = DirectoryPrincipalProvisioningResource("/principals/", self) + + return self._principalCollection + + def calendarHomeForShortName(self, recordType, shortName): + principal = self.principalCollection().principalForShortName(recordType, shortName) + if principal: + return principal.calendarHome() + return None + + return MyDirectoryService(**config.DirectoryService.params) + +class DummyDirectoryService (DirectoryService): + realmName = "" + baseGUID = "51856FD4-5023-4890-94FE-4356C4AAC3E4" + def recordTypes(self): return () + def listRecords(self): return () + def recordWithShortName(self): return None + +dummyDirectoryRecord = DirectoryRecord( + service = DummyDirectoryService(), + recordType = "dummy", + guid = "8EF0892F-7CB6-4B8E-B294-7C5A5321136A", + shortName = "dummy", + fullName = "Dummy McDummerson", + firstName = "Dummy", + lastName = "McDummerson", + emailAddresses = (), + calendarUserAddresses = (), + autoSchedule = False, +)
participants (1)
-
source_changes@macosforge.org