[CalendarServer-changes] [12935] CalendarServer/branches/users/sagen/move2who-4
source_changes at macosforge.org
source_changes at macosforge.org
Tue Mar 18 10:55:31 PDT 2014
Revision: 12935
http://trac.calendarserver.org//changeset/12935
Author: sagen at apple.com
Date: 2014-03-18 10:55:31 -0700 (Tue, 18 Mar 2014)
Log Message:
-----------
Fix more tests
Modified Paths:
--------------
CalendarServer/branches/users/sagen/move2who-4/calendarserver/accesslog.py
CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/root.py
CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/test/test_root.py
CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/calverify.py
CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/export.py
CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/directory.py
CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/vfs.py
CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/cache.py
CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/calendar.py
CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/util.py
CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/extensions.py
CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/test/util.py
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/accesslog.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/accesslog.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/accesslog.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -155,8 +155,9 @@
format += ' i=%(serverInstance)s'
formatArgs["serverInstance"] = config.LogID if config.LogID else "0"
- format += ' or=%(outstandingRequests)s'
- formatArgs["outstandingRequests"] = request.chanRequest.channel.factory.outstandingRequests
+ if request.chanRequest: # This can be None during tests
+ format += ' or=%(outstandingRequests)s'
+ formatArgs["outstandingRequests"] = request.chanRequest.channel.factory.outstandingRequests
# Tags for time stamps collected along the way - the first one in the list is the initial
# time for request creation - we use that to track the entire request/response time
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/root.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/root.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/root.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -160,7 +160,7 @@
request.checkingSACL = True
for collection in self.principalCollections():
- principal = collection._principalForURI(authzUser.children[0].children[0].data)
+ principal = yield collection._principalForURI(authzUser.children[0].children[0].data)
if principal is None:
response = (yield UnauthorizedResponse.makeResponse(
request.credentialFactories,
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/test/test_root.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/test/test_root.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/provision/test/test_root.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -14,29 +14,22 @@
# limitations under the License.
##
-import os
-from twisted.cred.portal import Portal
from twisted.internet.defer import inlineCallbacks, maybeDeferred, returnValue
+from twext.who.idirectory import RecordType
from txweb2 import http_headers
from txweb2 import responsecode
-from txweb2 import server
-from txweb2.auth import basic
-from txweb2.dav import auth
from txdav.xml import element as davxml
from txweb2.http import HTTPError
from txweb2.iweb import IResponse
-from txweb2.test.test_server import SimpleRequest
-from twistedcaldav.test.util import TestCase
+from twistedcaldav.test.util import StoreTestCase, SimpleStoreRequest
from twistedcaldav.directory.principal import DirectoryPrincipalProvisioningResource
-from twistedcaldav.directory.xmlfile import XMLDirectoryService
-from twistedcaldav.directory.test.test_xmlfile import xmlFile, augmentsFile
from calendarserver.provision.root import RootResource
-from twistedcaldav.directory import augment
+
class FakeCheckSACL(object):
def __init__(self, sacls=None):
self.sacls = sacls or {}
@@ -53,48 +46,16 @@
-class RootTests(TestCase):
+class RootTests(StoreTestCase):
+ @inlineCallbacks
def setUp(self):
- super(RootTests, self).setUp()
+ yield super(RootTests, self).setUp()
- self.docroot = self.mktemp()
- os.mkdir(self.docroot)
-
RootResource.CheckSACL = FakeCheckSACL(sacls={"calendar": ["dreid"]})
- directory = XMLDirectoryService(
- {
- "xmlFile" : xmlFile,
- "augmentService" :
- augment.AugmentXMLDB(xmlFiles=(augmentsFile.path,))
- }
- )
- principals = DirectoryPrincipalProvisioningResource(
- "/principals/",
- directory
- )
- root = RootResource(self.docroot, principalCollections=[principals])
-
- root.putChild("principals",
- principals)
-
- portal = Portal(auth.DavRealm())
- portal.registerChecker(directory)
-
- self.root = auth.AuthenticationWrapper(
- root,
- portal,
- (basic.BasicCredentialFactory("Test realm"),),
- (basic.BasicCredentialFactory("Test realm"),),
- loginInterfaces=(auth.IPrincipal,))
-
- self.site = server.Site(self.root)
-
-
-
class ComplianceTests(RootTests):
"""
Tests to verify CalDAV compliance of the root resource.
@@ -107,8 +68,8 @@
Deferred which will fire with (something adaptable to) an HTTP response
object.
"""
- request = SimpleRequest(self.site, method, ("/".join([""] + segments)))
- rsrc = self.root
+ request = SimpleStoreRequest(self, method, ("/".join([""] + segments)))
+ rsrc = self.actualRoot
while segments:
rsrc, segments = (yield maybeDeferred(
rsrc.locateChild, request, segments
@@ -138,18 +99,12 @@
should return a valid resource
"""
- self.root.resource.useSacls = False
+ self.actualRoot.useSacls = False
- request = SimpleRequest(self.site,
- "GET",
- "/principals/")
+ request = SimpleStoreRequest(self, "GET", "/principals/")
- resrc, _ignore_segments = (yield maybeDeferred(
- self.root.locateChild, request, ["principals"]
- ))
-
resrc, segments = (yield maybeDeferred(
- resrc.locateChild, request, ["principals"]
+ self.actualRoot.locateChild, request, ["principals"]
))
self.failUnless(
@@ -169,26 +124,21 @@
should return a valid resource
"""
- self.root.resource.useSacls = True
+ self.actualRoot.useSacls = True
- request = SimpleRequest(
- self.site,
+ record = yield self.directory.recordWithShortName(
+ RecordType.user,
+ u"dreid"
+ )
+ request = SimpleStoreRequest(
+ self,
"GET",
"/principals/",
- headers=http_headers.Headers({
- "Authorization": [
- "basic",
- "%s" % ("dreid:dierd".encode("base64"),)
- ]
- })
+ authRecord=record
)
- resrc, _ignore_segments = (yield maybeDeferred(
- self.root.locateChild, request, ["principals"]
- ))
-
resrc, segments = (yield maybeDeferred(
- resrc.locateChild, request, ["principals"]
+ self.actualRoot.locateChild, request, ["principals"]
))
self.failUnless(
@@ -218,28 +168,27 @@
should return a 403 forbidden response
"""
- self.root.resource.useSacls = True
+ self.actualRoot.useSacls = True
- request = SimpleRequest(
- self.site,
+ record = yield self.directory.recordWithShortName(
+ RecordType.user,
+ u"wsanchez"
+ )
+
+ request = SimpleStoreRequest(
+ self,
"GET",
"/principals/",
- headers=http_headers.Headers({
- "Authorization": [
- "basic",
- "%s" % ("wsanchez:zehcnasw".encode("base64"),)
- ]
- })
+ authRecord=record
)
- resrc, _ignore_segments = (yield maybeDeferred(
- self.root.locateChild, request, ["principals"]
- ))
-
try:
resrc, _ignore_segments = (yield maybeDeferred(
- resrc.locateChild, request, ["principals"]
+ self.actualRoot.locateChild, request, ["principals"]
))
+ raise AssertionError(
+ "RootResource.locateChild did not return an error"
+ )
except HTTPError, e:
self.assertEquals(e.response.code, 403)
@@ -253,20 +202,16 @@
should return a 401 UnauthorizedResponse
"""
- self.root.resource.useSacls = True
- request = SimpleRequest(
- self.site,
+ self.actualRoot.useSacls = True
+ request = SimpleStoreRequest(
+ self,
"GET",
"/principals/"
)
- resrc, _ignore_segments = (yield maybeDeferred(
- self.root.locateChild, request, ["principals"]
- ))
-
try:
resrc, _ignore_segments = (yield maybeDeferred(
- resrc.locateChild, request, ["principals"]
+ self.actualRoot.locateChild, request, ["principals"]
))
raise AssertionError(
"RootResource.locateChild did not return an error"
@@ -283,24 +228,28 @@
should return a 401 UnauthorizedResponse
"""
- self.root.resource.useSacls = True
+ self.actualRoot.useSacls = True
- request = SimpleRequest(
- self.site,
+ request = SimpleStoreRequest(
+ self,
"GET",
"/principals/",
- headers=http_headers.Headers({
- "Authorization": ["basic", "%s" % (
- "dreid:dreid".encode("base64"),)]}))
+ headers=http_headers.Headers(
+ {
+ "Authorization": [
+ "basic", "%s" % ("dreid:dreid".encode("base64"),)
+ ]
+ }
+ )
+ )
- resrc, _ignore_segments = (yield maybeDeferred(
- self.root.locateChild, request, ["principals"]
- ))
-
try:
resrc, _ignore_segments = (yield maybeDeferred(
- resrc.locateChild, request, ["principals"]
+ self.actualRoot.locateChild, request, ["principals"]
))
+ raise AssertionError(
+ "RootResource.locateChild did not return an error"
+ )
except HTTPError, e:
self.assertEquals(e.response.code, 401)
@@ -313,7 +262,7 @@
self.fail("Incorrect response for DELETE /: %s"
% (response.code,))
- request = SimpleRequest(self.site, "DELETE", "/")
+ request = SimpleStoreRequest(self, "DELETE", "/")
return self.send(request, do_test)
@@ -325,8 +274,8 @@
self.fail("Incorrect response for COPY /: %s"
% (response.code,))
- request = SimpleRequest(
- self.site,
+ request = SimpleStoreRequest(
+ self,
"COPY",
"/",
headers=http_headers.Headers({"Destination": "/copy/"})
@@ -342,8 +291,8 @@
self.fail("Incorrect response for MOVE /: %s"
% (response.code,))
- request = SimpleRequest(
- self.site,
+ request = SimpleStoreRequest(
+ self,
"MOVE",
"/",
headers=http_headers.Headers({"Destination": "/copy/"})
@@ -371,13 +320,14 @@
return response
+ @inlineCallbacks
def setUp(self):
- super(SACLCacheTests, self).setUp()
- self.root.resource.responseCache = SACLCacheTests.StubResponseCacheResource()
+ yield super(SACLCacheTests, self).setUp()
+ self.actualRoot.responseCache = SACLCacheTests.StubResponseCacheResource()
def test_PROPFIND(self):
- self.root.resource.useSacls = True
+ self.actualRoot.useSacls = True
body = """<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:">
@@ -388,15 +338,19 @@
</D:propfind>
"""
- request = SimpleRequest(
- self.site,
+ request = SimpleStoreRequest(
+ self,
"PROPFIND",
"/principals/users/dreid/",
- headers=http_headers.Headers({
- 'Authorization': ['basic', '%s' % ('dreid:dierd'.encode('base64'),)],
+ headers=http_headers.Headers(
+ {
+ 'Authorization': [
+ 'basic', '%s' % ('dreid:dierd'.encode('base64'),)
+ ],
'Content-Type': 'application/xml; charset="utf-8"',
'Depth': '1',
- }),
+ }
+ ),
content=body
)
@@ -404,15 +358,19 @@
if response.code != responsecode.MULTI_STATUS:
self.fail("Incorrect response for PROPFIND /principals/: %s" % (response.code,))
- request = SimpleRequest(
- self.site,
+ request = SimpleStoreRequest(
+ self,
"PROPFIND",
"/principals/users/dreid/",
- headers=http_headers.Headers({
- 'Authorization': ['basic', '%s' % ('dreid:dierd'.encode('base64'),)],
+ headers=http_headers.Headers(
+ {
+ 'Authorization': [
+ 'basic', '%s' % ('dreid:dierd'.encode('base64'),)
+ ],
'Content-Type': 'application/xml; charset="utf-8"',
'Depth': '1',
- }),
+ }
+ ),
content=body
)
@@ -422,7 +380,7 @@
def gotResponse2(response):
if response.code != responsecode.MULTI_STATUS:
self.fail("Incorrect response for PROPFIND /principals/: %s" % (response.code,))
- self.assertEqual(self.root.resource.responseCache.cacheHitCount, 1)
+ self.assertEqual(self.actualRoot.responseCache.cacheHitCount, 1)
d = self.send(request, gotResponse1)
return d
@@ -438,12 +396,9 @@
request.checkedWiki will be set to True
"""
- request = SimpleRequest(self.site, "GET", "/principals/")
+ request = SimpleStoreRequest(self, "GET", "/principals/")
resrc, _ignore_segments = (yield maybeDeferred(
- self.root.locateChild, request, ["principals"]
+ self.actualRoot.locateChild, request, ["principals"]
))
- resrc, _ignore_segments = (yield maybeDeferred(
- resrc.locateChild, request, ["principals"]
- ))
self.assertTrue(request.checkedWiki)
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/calverify.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/calverify.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/calverify.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -973,7 +973,7 @@
elif not record.thisServer():
contents = yield self.countHomeContents(uid)
wrong_server.append((uid, contents,))
- elif not record.enabledForCalendaring:
+ elif not record.hasCalendars:
contents = yield self.countHomeContents(uid)
disabled.append((uid, contents,))
@@ -1542,7 +1542,7 @@
if uuid not in self.validForCalendaringUUIDs:
record = self.directoryService().recordWithGUID(uuid)
- self.validForCalendaringUUIDs[uuid] = record is not None and record.enabledForCalendaring and record.thisServer()
+ self.validForCalendaringUUIDs[uuid] = record is not None and record.hasCalendars and record.thisServer()
return self.validForCalendaringUUIDs[uuid]
@@ -2171,7 +2171,7 @@
record = self.directoryService().recordWithGUID(uuid)
if record is None:
continue
- if not record.thisServer() or not record.enabledForCalendaring:
+ if not record.thisServer() or not record.hasCalendars:
continue
rname = record.fullName
@@ -2482,7 +2482,7 @@
record = self.directoryService().recordWithGUID(uuid)
if record is None:
continue
- if not record.thisServer() or not record.enabledForCalendaring:
+ if not record.thisServer() or not record.hasCalendars:
continue
rname = record.fullName
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/export.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/export.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/export.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -41,7 +41,7 @@
from twisted.python.text import wordWrap
from twisted.python.usage import Options, UsageError
-from twisted.internet.defer import inlineCallbacks, returnValue
+from twisted.internet.defer import inlineCallbacks, returnValue, succeed
from twext.python.log import Logger
from twistedcaldav.ical import Component
@@ -76,6 +76,7 @@
)
)
+
class ExportOptions(Options):
"""
Command-line options for 'calendarserver_export'
@@ -188,7 +189,7 @@
Enumerate all calendars based on the directory record and/or calendars
for this calendar home.
"""
- uid = self.getHomeUID(exportService)
+ uid = yield self.getHomeUID(exportService)
home = yield txn.calendarHomeWithUID(uid, True)
result = []
if self.collections:
@@ -218,7 +219,7 @@
def getHomeUID(self, exportService):
- return self.uid
+ return succeed(self.uid)
@@ -244,13 +245,17 @@
self.shortName = shortName
+ @inlineCallbacks
def getHomeUID(self, exportService):
"""
Retrieve the home UID.
"""
directory = exportService.directoryService()
- record = directory.recordWithShortName(self.recordType, self.shortName)
- return record.uid
+ record = yield directory.recordWithShortName(
+ directory.oldNameToRecordType(self.recordType),
+ self.shortName
+ )
+ returnValue(record.uid)
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/directory.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/directory.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/directory.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -97,8 +97,8 @@
add("Server ID" , record.serverID)
add("Enabled" , record.enabled)
- add("Enabled for Calendar", record.enabledForCalendaring)
- add("Enabled for Contacts", record.enabledForAddressBooks)
+ add("Enabled for Calendar", record.hasCalendars)
+ add("Enabled for Contacts", record.hasContacts)
return succeed(table.toString())
Modified: CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/vfs.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/vfs.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/calendarserver/tools/shell/vfs.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -411,7 +411,7 @@
if (
self.record is not None and
self.service.config.EnableCalDAV and
- self.record.enabledForCalendaring
+ self.record.hasCalendars
):
create = True
else:
Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/cache.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/cache.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/cache.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -69,6 +69,7 @@
"""
+
class DisabledCacheNotifier(object):
def __init__(self, *args, **kwargs):
pass
@@ -164,6 +165,7 @@
raise URINotFoundException(uri)
+ @inlineCallbacks
def _canonicalizeURIForRequest(self, uri, request):
"""
Always use canonicalized forms of the URIs for caching (i.e. __uids__ paths).
@@ -174,21 +176,24 @@
uribits = uri.split("/")
if len(uribits) > 1 and uribits[1] in ("principals", "calendars", "addressbooks"):
if uribits[2] == "__uids__":
- return succeed(uri)
+ returnValue(uri)
else:
recordType = uribits[2]
recordName = uribits[3]
directory = request.site.resource.getDirectory()
- record = directory.recordWithShortName(recordType, recordName)
+ record = yield directory.recordWithShortName(
+ directory.oldNameToRecordType(recordType),
+ recordName
+ )
if record is not None:
uribits[2] = "__uids__"
- uribits[3] = record.uid
- return succeed("/".join(uribits))
+ uribits[3] = record.uid.encode("utf-8")
+ returnValue("/".join(uribits))
# Fall back to the locateResource approach
try:
- return request.locateResource(uri).addCallback(
- lambda resrc: resrc.url()).addErrback(self._uriNotFound, uri)
+ resrc = yield request.locateResource(uri)
+ returnValue(resrc.url())
except AssertionError:
raise URINotFoundException(uri)
@@ -252,7 +257,8 @@
"""
Get the current token for a particular URI.
"""
-
+ if isinstance(uri, unicode):
+ uri = uri.encode("utf-8")
if cachePoolHandle:
result = (yield defaultCachePool(cachePoolHandle).get('cacheToken:%s' % (uri,)))
else:
@@ -436,8 +442,9 @@
cTokens,
)
)
- yield self.getCachePool().set(key, cacheEntry,
- expireTime=config.ResponseCacheTimeout * 60)
+ yield self.getCachePool().set(
+ key, cacheEntry, expireTime=config.ResponseCacheTimeout * 60
+ )
except URINotFoundException, e:
self.log.debug("Could not locate URI: {e!r}", e=e)
Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/calendar.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/calendar.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/calendar.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -192,7 +192,7 @@
if config.EnablePrincipalListings:
children = []
for record in (yield self.directory.listRecords(self.recordType)):
- if record.enabledForCalendaring:
+ if record.hasCalendars:
for shortName in record.shortNames:
children.append(shortName)
returnValue(children)
Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/util.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/util.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/directory/test/util.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -212,9 +212,9 @@
guid = record.guid
addresses = set(value("addresses"))
- if record.enabledForCalendaring:
+ if record.hasCalendars:
addresses.add("urn:uuid:%s" % (record.guid,))
- addresses.add("/principals/__uids__/%s/" % (record.guid,))
+ addresses.add("/principals/__uids__/%s/" % (record.uid,))
addresses.add("/principals/%s/%s/" % (record.recordType, record.shortNames[0],))
if hasattr(record.service, "recordTypePrefix"):
Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/extensions.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/extensions.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/extensions.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -1004,7 +1004,7 @@
applyTo = True
elif child.qname() == (calendarserver_namespace, "search-token"):
- tokens.append(str(child))
+ tokens.append(child.toString())
elif child.qname() == (calendarserver_namespace, "limit"):
try:
Modified: CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/test/util.py
===================================================================
--- CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/test/util.py 2014-03-17 23:43:49 UTC (rev 12934)
+++ CalendarServer/branches/users/sagen/move2who-4/twistedcaldav/test/util.py 2014-03-18 17:55:31 UTC (rev 12935)
@@ -32,8 +32,6 @@
from twistedcaldav.directory.calendar import (
DirectoryCalendarHomeProvisioningResource
)
-from twistedcaldav.directory.principal import (
- DirectoryPrincipalProvisioningResource)
from twistedcaldav.directory.util import transactionFromRequest
from twistedcaldav.memcacheclient import ClientFactory
from twistedcaldav.stdconfig import config
@@ -46,6 +44,7 @@
import txweb2.dav.test.util
from txweb2.http import HTTPError, StatusResponse
import xattr
+from txweb2.server import Site
log = Logger()
@@ -129,14 +128,9 @@
self._sqlCalendarStore.setDirectoryService(self.directory)
self.rootResource = getRootResource(config, self._sqlCalendarStore)
+ self.actualRoot = self.rootResource.resource.resource
+ self.site = Site(self.rootResource)
- self.principalsResource = DirectoryPrincipalProvisioningResource("/principals/", self.directory)
- self.site.resource.putChild("principals", self.principalsResource)
- self.calendarCollection = DirectoryCalendarHomeProvisioningResource(self.directory, "/calendars/", self._sqlCalendarStore)
- self.site.resource.putChild("calendars", self.calendarCollection)
- self.addressbookCollection = DirectoryAddressBookHomeProvisioningResource(self.directory, "/addressbooks/", self._sqlCalendarStore)
- self.site.resource.putChild("addressbooks", self.addressbookCollection)
-
yield self.populate()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140318/79abc3d4/attachment-0001.html>
More information about the calendarserver-changes
mailing list