[CalendarServer-changes] [216] CalendarServer/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Wed Sep 27 17:56:30 PDT 2006
Revision: 216
http://trac.macosforge.org/projects/calendarserver/changeset/216
Author: wsanchez at apple.com
Date: 2006-09-27 17:56:30 -0700 (Wed, 27 Sep 2006)
Log Message:
-----------
Use introspection to find classes, rather than keeping a map of
string->class in repository.py, which brakes if you want to configure
classes not known to repository.py.
Modified Paths:
--------------
CalendarServer/trunk/conf/repository-static.xml
CalendarServer/trunk/conf/repository.xml
CalendarServer/trunk/twistedcaldav/repository.py
Modified: CalendarServer/trunk/conf/repository-static.xml
===================================================================
--- CalendarServer/trunk/conf/repository-static.xml 2006-09-27 22:38:39 UTC (rev 215)
+++ CalendarServer/trunk/conf/repository-static.xml 2006-09-28 00:56:30 UTC (rev 216)
@@ -22,7 +22,7 @@
<docroot>
<collection>
- <pytype>DAVFile</pytype>
+ <pytype>twisted.web2.dav.static.DAVFile</pytype>
<properties>
<acl>
<ace>
@@ -40,7 +40,7 @@
</properties>
<members>
<collection name="principals">
- <pytype>CalDAVFile</pytype>
+ <pytype>twistedcaldav.static.CalDAVFile</pytype>
<properties>
<acl>
<ace>
@@ -52,7 +52,7 @@
</properties>
<members>
<collection name="users" tag="principals">
- <pytype>CalendarUserPrincipalProvisioningResource</pytype>
+ <pytype>twistedcaldav.static.CalendarUserPrincipalProvisioningResource</pytype>
<properties>
<acl>
<ace>
@@ -67,7 +67,7 @@
</members>
</collection>
<collection name="calendars">
- <pytype>CalDAVFile</pytype>
+ <pytype>twistedcaldav.static.CalDAVFile</pytype>
<properties>
<acl>
<ace>
@@ -79,7 +79,7 @@
</properties>
<members>
<collection name="users" tag="calendars">
- <pytype>CalendarHomeProvisioningFile</pytype>
+ <pytype>twistedcaldav.static.CalendarHomeProvisioningFile</pytype>
<properties>
<acl>
<ace>
Modified: CalendarServer/trunk/conf/repository.xml
===================================================================
--- CalendarServer/trunk/conf/repository.xml 2006-09-27 22:38:39 UTC (rev 215)
+++ CalendarServer/trunk/conf/repository.xml 2006-09-28 00:56:30 UTC (rev 216)
@@ -22,7 +22,7 @@
<docroot auto-principal-collection-set="no">
<collection>
- <pytype>DAVFile</pytype>
+ <pytype>twisted.web2.dav.static.DAVFile</pytype>
<properties>
<acl>
<ace>
@@ -47,7 +47,7 @@
auto-provisioning of accounts occurs when the principal collections are
created and we need to have the calendar home path setup by then. -->
<collection name="calendars" tag="calendars">
- <pytype>CalDAVFile</pytype>
+ <pytype>twistedcaldav.static.CalDAVFile</pytype>
<properties>
<acl>
<ace>
@@ -59,7 +59,7 @@
</properties>
<members>
<collection name="users">
- <pytype>CalendarHomeProvisioningFile</pytype>
+ <pytype>twistedcaldav.static.CalendarHomeProvisioningFile</pytype>
<properties>
<acl>
<ace>
@@ -72,7 +72,7 @@
<members/>
</collection>
<collection name="groups">
- <pytype>CalendarHomeProvisioningFile</pytype>
+ <pytype>twistedcaldav.static.CalendarHomeProvisioningFile</pytype>
<properties>
<acl>
<ace>
@@ -85,7 +85,7 @@
<members/>
</collection>
<collection name="resources">
- <pytype>CalendarHomeProvisioningFile</pytype>
+ <pytype>twistedcaldav.static.CalendarHomeProvisioningFile</pytype>
<properties>
<acl>
<ace>
@@ -119,7 +119,7 @@
</members>
</collection>
<collection name="principals" tag="principals">
- <pytype>DirectoryPrincipalProvisioningResource</pytype>
+ <pytype>twistedcaldav.directory.DirectoryPrincipalProvisioningResource</pytype>
<params>
<param>
<key>DirectoryNode</key>
@@ -137,7 +137,7 @@
</properties>
<members>
<collection name="users">
- <pytype>DirectoryUserPrincipalProvisioningResource</pytype>
+ <pytype>twistedcaldav.directory.DirectoryUserPrincipalProvisioningResource</pytype>
<properties>
<acl>
<ace>
@@ -150,7 +150,7 @@
<members/>
</collection>
<collection name="groups">
- <pytype>DirectoryGroupPrincipalProvisioningResource</pytype>
+ <pytype>twistedcaldav.directory.DirectoryGroupPrincipalProvisioningResource</pytype>
<properties>
<acl>
<ace>
@@ -163,7 +163,7 @@
<members/>
</collection>
<collection name="resources">
- <pytype>DirectoryResourcePrincipalProvisioningResource</pytype>
+ <pytype>twistedcaldav.directory.DirectoryResourcePrincipalProvisioningResource</pytype>
<properties>
<acl>
<ace>
Modified: CalendarServer/trunk/twistedcaldav/repository.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/repository.py 2006-09-27 22:38:39 UTC (rev 215)
+++ CalendarServer/trunk/twistedcaldav/repository.py 2006-09-28 00:56:30 UTC (rev 216)
@@ -26,23 +26,17 @@
from twisted.python import log
from twisted.python.filepath import FilePath
+from twisted.python.reflect import namedObject
from twisted.web2.dav import davxml
from twisted.web2.dav.auth import TwistedPasswordProperty
from twisted.web2.dav.element.base import PCDATAElement
from twisted.web2.dav.element.parser import lookupElement
from twisted.web2.dav.resource import TwistedACLInheritable
-from twisted.web2.dav.static import DAVFile
from twisted.web2.dav.util import joinURL
from twistedcaldav import caldavxml
from twistedcaldav import customxml
-from twistedcaldav.directory import DirectoryResourcePrincipalProvisioningResource
-from twistedcaldav.directory import DirectoryGroupPrincipalProvisioningResource
-from twistedcaldav.directory import DirectoryUserPrincipalProvisioningResource
-from twistedcaldav.directory import DirectoryPrincipalProvisioningResource
from twistedcaldav.resource import CalDAVResource
from twistedcaldav.static import CalDAVFile, CalendarHomeFile, CalendarPrincipalFile
-from twistedcaldav.static import CalendarHomeProvisioningFile
-from twistedcaldav.static import CalendarUserPrincipalProvisioningResource
import os
@@ -101,27 +95,6 @@
ELEMENT_AUTORESPOND = "autorespond"
ATTRIBUTE_REPEAT = "repeat"
-classMap = {
- "DAVFile": DAVFile,
- "CalDAVFile": CalDAVFile,
- "CalendarUserPrincipalProvisioningResource": CalendarUserPrincipalProvisioningResource,
- "CalendarPrincipalFile": CalendarPrincipalFile,
- "CalendarHomeProvisioningFile": CalendarHomeProvisioningFile,
- "CalendarHomeFile": CalendarHomeFile,
- "DirectoryPrincipalProvisioningResource": DirectoryPrincipalProvisioningResource,
- "DirectoryUserPrincipalProvisioningResource": DirectoryUserPrincipalProvisioningResource,
- "DirectoryGroupPrincipalProvisioningResource": DirectoryGroupPrincipalProvisioningResource,
- "DirectoryResourcePrincipalProvisioningResource": DirectoryResourcePrincipalProvisioningResource,
-}
-
-urld = [
- "CalendarUserPrincipalProvisioningResource",
- "DirectoryPrincipalProvisioningResource",
- "DirectoryUserPrincipalProvisioningResource",
- "DirectoryGroupPrincipalProvisioningResource",
- "DirectoryResourcePrincipalProvisioningResource",
-]
-
class RepositoryBuilder (object):
"""
Builds a repository hierarchy at a supplied document root file system path,
@@ -239,7 +212,7 @@
"""
def __init__(self):
self.name = None
- self.pytype = "CalDAVFile"
+ self.pytype = "twistedcaldav.static.CalDAVFile" # FIXME: Why not None?
self.params = {}
self.properties = []
self.acl = None
@@ -332,17 +305,19 @@
if not os.path.exists(mypath):
os.mkdir(mypath)
-
- if self.pytype in urld:
- if len(self.params) != 0:
- self.resource = classMap[self.pytype](mypath, myurl, params=self.params)
- else:
- self.resource = classMap[self.pytype](mypath, myurl)
- else:
- if len(self.params) != 0:
- self.resource = classMap[self.pytype](mypath, params=self.params)
- else:
- self.resource = classMap[self.pytype](mypath)
+
+ try:
+ resource_class = namedObject(self.pytype)
+ except (ImportError, AttributeError):
+ log.err("Unable to locate Python class %r" % (self.pytype,))
+ raise
+ kwargs = {}
+ if "url" in resource_class.__init__.func_code.co_varnames:
+ kwargs["url"] = myurl
+ if self.params:
+ kwargs["params"] = self.params
+ self.resource = resource_class(mypath, **kwargs)
+
self.uri = myurl
# Set properties now
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20060927/566606ff/attachment.html
More information about the calendarserver-changes
mailing list