new case_insensitive_etypes resource on the cubicweb registry stable
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Mon, 06 Jul 2009 10:56:43 +0200
branchstable
changeset 2273 daf6e178659f
parent 2272 f27a3a75be0d
child 2274 885873dc4361
new case_insensitive_etypes resource on the cubicweb registry
cwvreg.py
web/views/urlpublishing.py
--- a/cwvreg.py	Mon Jul 06 10:56:13 2009 +0200
+++ b/cwvreg.py	Mon Jul 06 10:56:43 2009 +0200
@@ -76,6 +76,11 @@
         clear_cache(self, 'rqlhelper')
         # now we can load application's web objects
         self.register_objects(self.config.vregistry_path())
+        # map lowered entity type names to their actual name
+        self.case_insensitive_etypes = {}
+        for etype in self.schema.entities():
+            etype = str(etype)
+            self.case_insensitive_etypes[etype.lower()] = etype
 
     def update_schema(self, schema):
         """update .schema attribute on registered objects, necessary for some
--- a/web/views/urlpublishing.py	Mon Jul 06 10:56:13 2009 +0200
+++ b/web/views/urlpublishing.py	Mon Jul 06 10:56:43 2009 +0200
@@ -144,18 +144,12 @@
         <etype>[[/<attribute name>]/<attribute value>]*
     """
     priority = 2
-    def __init__(self, urlpublisher):
-        super(RestPathEvaluator, self).__init__(urlpublisher)
-        self.etype_map = {}
-        for etype in self.schema.entities():
-            etype = str(etype)
-            self.etype_map[etype.lower()] = etype
 
     def evaluate_path(self, req, parts):
         if not (0 < len(parts) < 4):
             raise PathDontMatch()
         try:
-            etype = self.etype_map[parts.pop(0).lower()]
+            etype = self.vreg.case_insensitive_etypes[parts.pop(0).lower()]
         except KeyError:
             raise PathDontMatch()
         cls = self.vreg.etype_class(etype)