[CalendarServer-changes] [5142] CalendarServer/trunk/calendarserver
source_changes at macosforge.org
source_changes at macosforge.org
Tue Feb 16 22:36:56 PST 2010
Revision: 5142
http://trac.macosforge.org/projects/calendarserver/changeset/5142
Author: glyph at apple.com
Date: 2010-02-16 22:36:55 -0800 (Tue, 16 Feb 2010)
Log Message:
-----------
Move carddavd resource-creation logic from tap plugin to new getRootResource function.
Modified Paths:
--------------
CalendarServer/trunk/calendarserver/tap/carddav.py
CalendarServer/trunk/calendarserver/util.py
Modified: CalendarServer/trunk/calendarserver/tap/carddav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/carddav.py 2010-02-17 06:36:04 UTC (rev 5141)
+++ CalendarServer/trunk/calendarserver/tap/carddav.py 2010-02-17 06:36:55 UTC (rev 5142)
@@ -18,21 +18,12 @@
"CardDAVServiceMaker",
]
-import errno
-import os
-
from zope.interface import implements
-from twisted.python.filepath import FilePath
from twisted.plugin import IPlugin
-from twisted.internet.reactor import callLater
from twisted.application.service import IServiceMaker
-from twistedcaldav.directory.principal import DirectoryPrincipalProvisioningResource
-
-from twistedcaldav.config import config
from twistedcaldav.stdconfig import DEFAULT_CARDDAV_CONFIG_FILE
-from twistedcaldav.static import AddressBookHomeProvisioningFile, DirectoryBackedAddressBookFile
from twext.log import Logger
log = Logger()
@@ -44,20 +35,8 @@
except ImportError:
NegotiateCredentialFactory = None
-from calendarserver.provision.root import RootResource as _ParentRootResource
-
-class RootResource (_ParentRootResource):
- """
- A special root resource that contains support checking SACLs
- as well as adding responseFilters.
- """
-
- saclService = "addressbook"
-
-
-
class CardDAVOptions(CalDAVOptions):
"""
The same as L{CalDAVOptions}, but with a different default config file.
@@ -75,53 +54,3 @@
tapname = "carddav"
description = "Darwin Contacts Server"
options = CardDAVOptions
-
- #
- # Default resource classes
- #
- rootResourceClass = RootResource
- principalResourceClass = DirectoryPrincipalProvisioningResource
- addressBookResourceClass = AddressBookHomeProvisioningFile
- directoryBackedAddressBookResourceClass = DirectoryBackedAddressBookFile
-
- def makeService_Slave(self, options):
- result = super(CardDAVServiceMaker, self).makeService_Slave(options)
-
- directory = self.directory
- principalCollection = self.principalCollection
-
- if config.EnableCardDAV:
- log.info("Setting up address book collection: %r" % (self.addressBookResourceClass,))
-
- addressBookCollection = self.addressBookResourceClass(
- os.path.join(config.DocumentRoot, "addressbooks"),
- directory, "/addressbooks/"
- )
-
- directoryPath = os.path.join(config.DocumentRoot, "directory")
- doBacking = config.DirectoryAddressBook and config.EnableSearchAddressBook
- if doBacking:
- log.info("Setting up directory address book: %r" % (self.directoryBackedAddressBookResourceClass,))
-
- directoryBackedAddressBookCollection = self.directoryBackedAddressBookResourceClass(
- directoryPath,
- principalCollections=(principalCollection,)
- )
- # do this after process is owned by carddav user, not root
- callLater(1.0, directoryBackedAddressBookCollection.provisionDirectory)
- else:
- # remove /directory from previous runs that may have created it
- try:
- FilePath(directoryPath).remove()
- self.log_info("Deleted: %s" % directoryPath)
- except (OSError, IOError), e:
- if e.errno != errno.ENOENT:
- self.log_error("Could not delete: %s : %r" % (directoryPath, e,))
- root = self.root
-
- root.putChild('addressbooks', addressBookCollection)
- if doBacking:
- root.putChild('directory', directoryBackedAddressBookCollection)
- return result
-
- makeService_Single = makeService_Slave
Modified: CalendarServer/trunk/calendarserver/util.py
===================================================================
--- CalendarServer/trunk/calendarserver/util.py 2010-02-17 06:36:04 UTC (rev 5141)
+++ CalendarServer/trunk/calendarserver/util.py 2010-02-17 06:36:55 UTC (rev 5142)
@@ -19,6 +19,7 @@
"getRootResource",
]
+import errno
import os
from time import sleep
@@ -28,6 +29,7 @@
from twisted.web2.dav import auth
from twisted.web2.auth.basic import BasicCredentialFactory
from twisted.web2.static import File as FileResource
+from twisted.python.filepath import FilePath
from twext.log import Logger
@@ -46,6 +48,7 @@
from twistedcaldav.static import CalendarHomeProvisioningFile
from twistedcaldav.static import IScheduleInboxFile
from twistedcaldav.static import TimezoneServiceFile
+from twistedcaldav.static import AddressBookHomeProvisioningFile, DirectoryBackedAddressBookFile
from twistedcaldav.timezones import TimezoneCache
try:
@@ -82,6 +85,8 @@
timezoneServiceResourceClass = TimezoneServiceFile
webCalendarResourceClass = WebCalendarResource
webAdminResourceClass = WebAdminResource
+ addressBookResourceClass = AddressBookHomeProvisioningFile
+ directoryBackedAddressBookResourceClass = DirectoryBackedAddressBookFile
#
# Setup the Directory
@@ -283,6 +288,43 @@
principalCollections=(principalCollection,),
)
+ if config.EnableCardDAV:
+ root.saclService = "addressbook" # XXX this needs to be dealt with
+ # differently if caldav and carddav
+ # are going to be in the same process
+ log.info("Setting up address book collection: %r" % (addressBookResourceClass,))
+
+ addressBookCollection = addressBookResourceClass(
+ os.path.join(config.DocumentRoot, "addressbooks"),
+ directory, "/addressbooks/"
+ )
+
+ directoryPath = os.path.join(config.DocumentRoot, "directory")
+ doBacking = config.DirectoryAddressBook and config.EnableSearchAddressBook
+ if doBacking:
+ log.info("Setting up directory address book: %r" % (directoryBackedAddressBookResourceClass,))
+
+ directoryBackedAddressBookCollection = directoryBackedAddressBookResourceClass(
+ directoryPath,
+ principalCollections=(principalCollection,)
+ )
+ # do this after process is owned by carddav user, not root. XXX
+ # this should be fixed to execute at a different stage of service
+ # startup entirely.
+ reactor.callLater(1.0, directoryBackedAddressBookCollection.provisionDirectory)
+ else:
+ # remove /directory from previous runs that may have created it
+ try:
+ FilePath(directoryPath).remove()
+ log.info("Deleted: %s" % directoryPath)
+ except (OSError, IOError), e:
+ if e.errno != errno.ENOENT:
+ log.error("Could not delete: %s : %r" % (directoryPath, e,))
+
+ root.putChild('addressbooks', addressBookCollection)
+ if doBacking:
+ root.putChild('directory', directoryBackedAddressBookCollection)
+
root.putChild("principals", principalCollection)
root.putChild("calendars", calendarCollection)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100216/2f79346c/attachment-0001.html>
More information about the calendarserver-changes
mailing list