Merge lp:~leonardr/lazr.restful/move-example into lp:lazr.restful

Proposed by Leonard Richardson
Status: Merged
Approved by: Graham Binns
Approved revision: 68
Merged at revision: not available
Proposed branch: lp:~leonardr/lazr.restful/move-example
Merge into: lp:lazr.restful
Diff against target: None lines
To merge this branch: bzr merge lp:~leonardr/lazr.restful/move-example
Reviewer Review Type Date Requested Status
Graham Binns (community) Approve
Review via email: mp+10974@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Leonard Richardson (leonardr) wrote :

In the beginning there was one lazr.restful example web service, and it lived in lazr.restful.example. Then I created the WSGI example web service, in lazr.restful.example.wsgi. The problem with this packaging arrangement is it makes the WSGI web service look like part of the basic example service. Actually, they're two completely different services.

I was planning to fix this eventually, and now I have to fix it, because I'm trying to introduce grok into the mix. When you grok a package, it recursively groks all sub-packages. That means that the WSGI service's configuration is interfering with the basic service's configuration. The solution is to move the basic service into lazr.restful.example.base, making it totally separate from lazr.restful.example.wsgi.

All I've done in this branch is move the files and change the external references.

Revision history for this message
Graham Binns (gmb) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/lazr/restful/README.txt'
--- src/lazr/restful/README.txt 2009-08-04 14:17:40 +0000
+++ src/lazr/restful/README.txt 2009-09-01 12:24:18 +0000
@@ -35,11 +35,11 @@
35============================35============================
3636
37To understand all of lazr.restful, you should look at the web service37To understand all of lazr.restful, you should look at the web service
38defined in src/lazr/restful/example/. It defines a simple application38defined in src/lazr/restful/example/base/. It defines a simple
39serving information about cookbooks and recipes. The interfaces39application serving information about cookbooks and recipes. The
40(interfaces.py) are annotated with lazr.restful decorators that say40interfaces (interfaces.py) are annotated with lazr.restful decorators
41which fields and methods to publish from IRecipe, ICookbook, and so41that say which fields and methods to publish from IRecipe, ICookbook,
42on. The implementations of those interfaces are in root.py.42and so on. The implementations of those interfaces are in root.py.
4343
44The machinery of lazr.restful takes the decorators in interfaces.py,44The machinery of lazr.restful takes the decorators in interfaces.py,
45and generates an interface that maps incoming HTTP requests to45and generates an interface that maps incoming HTTP requests to
@@ -48,7 +48,7 @@
48you do have to know a fair amount about Zope).48you do have to know a fair amount about Zope).
4949
50You can test the example web service by running `bin/test`. The50You can test the example web service by running `bin/test`. The
51doctests in src/lazr/restful/example/tests use a fake httplib251doctests in src/lazr/restful/example/base/tests use a fake httplib2
52connection to simulate HTTP requests to the web service. You can watch52connection to simulate HTTP requests to the web service. You can watch
53the tests make GET, PUT, POST, PATCH, and DELETE requests to the web53the tests make GET, PUT, POST, PATCH, and DELETE requests to the web
54service. Start with root.txt.54service. Start with root.txt.
5555
=== modified file 'src/lazr/restful/docs/webservice-marshallers.txt'
--- src/lazr/restful/docs/webservice-marshallers.txt 2009-08-11 18:36:20 +0000
+++ src/lazr/restful/docs/webservice-marshallers.txt 2009-09-01 12:07:59 +0000
@@ -10,7 +10,7 @@
1010
11 >>> from lazr.restful.testing.webservice import WebServiceTestPublication11 >>> from lazr.restful.testing.webservice import WebServiceTestPublication
12 >>> from lazr.restful.simple import Request12 >>> from lazr.restful.simple import Request
13 >>> from lazr.restful.example.root import (13 >>> from lazr.restful.example.base.root import (
14 ... CookbookServiceRootResource)14 ... CookbookServiceRootResource)
15 >>> request = Request("", {'HTTP_HOST': 'cookbooks.dev'})15 >>> request = Request("", {'HTTP_HOST': 'cookbooks.dev'})
16 >>> application = CookbookServiceRootResource()16 >>> application = CookbookServiceRootResource()
@@ -469,7 +469,7 @@
469And the unmarshall() method returns a link that will serve the file.469And the unmarshall() method returns a link that will serve the file.
470470
471 >>> from lazr.restful import EntryResource471 >>> from lazr.restful import EntryResource
472 >>> from lazr.restful.example.interfaces import ICookbookSet472 >>> from lazr.restful.example.base.interfaces import ICookbookSet
473 >>> from zope.component import getUtility473 >>> from zope.component import getUtility
474 >>> entry_resource = EntryResource(474 >>> entry_resource = EntryResource(
475 ... getUtility(ICookbookSet).get('Everyday Greens'), request)475 ... getUtility(ICookbookSet).get('Everyday Greens'), request)
@@ -604,7 +604,7 @@
604value. A string that doesn't correspond to any enumerated value results604value. A string that doesn't correspond to any enumerated value results
605in a helpful ValueError.605in a helpful ValueError.
606606
607 >>> from lazr.restful.example.interfaces import Cuisine607 >>> from lazr.restful.example.base.interfaces import Cuisine
608 >>> field = Choice(vocabulary=Cuisine)608 >>> field = Choice(vocabulary=Cuisine)
609 >>> marshaller = getMultiAdapter((field, request), IFieldMarshaller)609 >>> marshaller = getMultiAdapter((field, request), IFieldMarshaller)
610 >>> verifyObject(IFieldMarshaller, marshaller)610 >>> verifyObject(IFieldMarshaller, marshaller)
@@ -648,14 +648,14 @@
648An object is marshalled to its URL.648An object is marshalled to its URL.
649649
650 >>> from lazr.restful.fields import Reference650 >>> from lazr.restful.fields import Reference
651 >>> from lazr.restful.example.interfaces import ICookbook651 >>> from lazr.restful.example.base.interfaces import ICookbook
652 >>> reference_field = Reference(schema=ICookbook)652 >>> reference_field = Reference(schema=ICookbook)
653 >>> reference_marshaller = getMultiAdapter(653 >>> reference_marshaller = getMultiAdapter(
654 ... (reference_field, request), IFieldMarshaller)654 ... (reference_field, request), IFieldMarshaller)
655 >>> verifyObject(IFieldMarshaller, reference_marshaller)655 >>> verifyObject(IFieldMarshaller, reference_marshaller)
656 True656 True
657657
658 >>> from lazr.restful.example.root import COOKBOOKS658 >>> from lazr.restful.example.base.root import COOKBOOKS
659 >>> cookbook = COOKBOOKS[0]659 >>> cookbook = COOKBOOKS[0]
660 >>> cookbook_url = reference_marshaller.unmarshall(None, cookbook)660 >>> cookbook_url = reference_marshaller.unmarshall(None, cookbook)
661 >>> print cookbook_url661 >>> print cookbook_url
@@ -679,7 +679,7 @@
679679
680 >>> from zope.schema import List, Tuple, Set680 >>> from zope.schema import List, Tuple, Set
681 >>> list_of_strings_field = List(value_type=Text())681 >>> list_of_strings_field = List(value_type=Text())
682 >>> from lazr.restful.example.interfaces import Cuisine682 >>> from lazr.restful.example.base.interfaces import Cuisine
683 >>> tuple_of_ints_field = Tuple(value_type=Int())683 >>> tuple_of_ints_field = Tuple(value_type=Int())
684 >>> list_of_choices_field = List(684 >>> list_of_choices_field = List(
685 ... value_type=Choice(vocabulary=Cuisine))685 ... value_type=Choice(vocabulary=Cuisine))
@@ -799,7 +799,7 @@
799something like that.)799something like that.)
800800
801 >>> from lazr.restful.fields import CollectionField801 >>> from lazr.restful.fields import CollectionField
802 >>> from lazr.restful.example.interfaces import IRecipe802 >>> from lazr.restful.example.base.interfaces import IRecipe
803 >>> field = CollectionField(803 >>> field = CollectionField(
804 ... __name__='recipes', value_type=Reference(schema=IRecipe))804 ... __name__='recipes', value_type=Reference(schema=IRecipe))
805 >>> marshaller = getMultiAdapter((field, request), IFieldMarshaller)805 >>> marshaller = getMultiAdapter((field, request), IFieldMarshaller)
806806
=== modified file 'src/lazr/restful/docs/webservice.txt'
--- src/lazr/restful/docs/webservice.txt 2009-08-27 15:50:55 +0000
+++ src/lazr/restful/docs/webservice.txt 2009-09-01 12:07:59 +0000
@@ -503,7 +503,7 @@
503 ... <configure xmlns="http://namespaces.zope.org/zope">503 ... <configure xmlns="http://namespaces.zope.org/zope">
504 ... <include package="lazr.restful" file="basic-site.zcml"/>504 ... <include package="lazr.restful" file="basic-site.zcml"/>
505 ... <utility505 ... <utility
506 ... factory="lazr.restful.example.filemanager.FileManager" />506 ... factory="lazr.restful.example.base.filemanager.FileManager" />
507 ... </configure>507 ... </configure>
508 ... """)508 ... """)
509509
@@ -1701,9 +1701,9 @@
1701implementation that serves all files from the /files path.1701implementation that serves all files from the /files path.
17021702
1703 >>> from lazr.restful.interfaces import IByteStorage1703 >>> from lazr.restful.interfaces import IByteStorage
1704 >>> from lazr.restful.example.interfaces import (1704 >>> from lazr.restful.example.base.interfaces import (
1705 ... IFileManagerBackedByteStorage)1705 ... IFileManagerBackedByteStorage)
1706 >>> from lazr.restful.example.root import SimpleByteStorage1706 >>> from lazr.restful.example.base.root import SimpleByteStorage
1707 >>> protect_schema(SimpleByteStorage, IFileManagerBackedByteStorage)1707 >>> protect_schema(SimpleByteStorage, IFileManagerBackedByteStorage)
1708 >>> sm.registerAdapter(SimpleByteStorage, provided=IByteStorage)1708 >>> sm.registerAdapter(SimpleByteStorage, provided=IByteStorage)
17091709
17101710
=== added directory 'src/lazr/restful/example/base'
=== added file 'src/lazr/restful/example/base/__init__.py'
=== renamed file 'src/lazr/restful/example/configure.zcml' => 'src/lazr/restful/example/base/configure.zcml'
--- src/lazr/restful/example/configure.zcml 2009-08-27 15:50:55 +0000
+++ src/lazr/restful/example/base/configure.zcml 2009-09-01 12:07:59 +0000
@@ -2,17 +2,17 @@
2 xmlns="http://namespaces.zope.org/zope"2 xmlns="http://namespaces.zope.org/zope"
3 xmlns:webservice="http://namespaces.canonical.com/webservice">3 xmlns:webservice="http://namespaces.canonical.com/webservice">
44
5 <webservice:register module="lazr.restful.example.interfaces" />5 <webservice:register module="lazr.restful.example.base.interfaces" />
66
7 <class class="lazr.restful.example.root.CookbookSet">7 <class class="lazr.restful.example.base.root.CookbookSet">
8 <allow interface='lazr.restful.example.interfaces.ICookbookSet' />8 <allow interface='lazr.restful.example.base.interfaces.ICookbookSet' />
9 </class>9 </class>
1010
11 <permission id="lazr.restful.example.View" title="Viewing something" />11 <permission id="lazr.restful.example.base.View" title="Viewing something" />
12 <permission id="lazr.restful.example.ViewPrivate"12 <permission id="lazr.restful.example.base.ViewPrivate"
13 title="Viewing private information" />13 title="Viewing private information" />
1414
15 <class class="lazr.restful.example.root.Cookbook">15 <class class="lazr.restful.example.base.root.Cookbook">
16 <require attributes="name copyright_date cover cuisine description16 <require attributes="name copyright_date cover cuisine description
17 recipes find_recipe_for find_recipes last_printing17 recipes find_recipe_for find_recipes last_printing
18 make_more_interesting price replace_cover18 make_more_interesting price replace_cover
@@ -22,77 +22,77 @@
22 permission="zope.Public" />22 permission="zope.Public" />
23 <require attributes="confirmed"23 <require attributes="confirmed"
24 set_attributes="confirmed"24 set_attributes="confirmed"
25 permission="lazr.restful.example.ViewPrivate" />25 permission="lazr.restful.example.base.ViewPrivate" />
26 </class>26 </class>
2727
28 <class class="lazr.restful.example.root.Dish">28 <class class="lazr.restful.example.base.root.Dish">
29 <require interface='lazr.restful.example.interfaces.IDish'29 <require interface='lazr.restful.example.base.interfaces.IDish'
30 set_schema='lazr.restful.example.interfaces.IDish'30 set_schema='lazr.restful.example.base.interfaces.IDish'
31 permission = "zope.Public" />31 permission = "zope.Public" />
32 </class>32 </class>
3333
34 <class class="lazr.restful.example.root.DishSet">34 <class class="lazr.restful.example.base.root.DishSet">
35 <allow interface='lazr.restful.example.interfaces.IDishSet' />35 <allow interface='lazr.restful.example.base.interfaces.IDishSet' />
36 </class>36 </class>
3737
38 <class class="lazr.restful.example.root.Recipe">38 <class class="lazr.restful.example.base.root.Recipe">
39 <require interface='lazr.restful.example.interfaces.IRecipe'39 <require interface='lazr.restful.example.base.interfaces.IRecipe'
40 set_schema='lazr.restful.example.interfaces.IRecipe'40 set_schema='lazr.restful.example.base.interfaces.IRecipe'
41 permission="lazr.restful.example.ViewPrivate" />41 permission="lazr.restful.example.base.ViewPrivate" />
42 </class>42 </class>
4343
44 <class class="lazr.restful.example.root.RecipeSet">44 <class class="lazr.restful.example.base.root.RecipeSet">
45 <allow interface='lazr.restful.example.interfaces.IRecipeSet' />45 <allow interface='lazr.restful.example.base.interfaces.IRecipeSet' />
46 </class>46 </class>
4747
48 <utility48 <utility
49 factory="lazr.restful.example.root.WebServiceConfiguration" />49 factory="lazr.restful.example.base.root.WebServiceConfiguration" />
5050
51 <utility factory="lazr.restful.example.filemanager.FileManager" />51 <utility factory="lazr.restful.example.base.filemanager.FileManager" />
5252
53 <class class="lazr.restful.example.filemanager.FileManager">53 <class class="lazr.restful.example.base.filemanager.FileManager">
54 <allow interface='lazr.restful.example.interfaces.IFileManager' />54 <allow interface='lazr.restful.example.base.interfaces.IFileManager' />
55 </class>55 </class>
5656
57 <class class="lazr.restful.example.filemanager.ManagedFileResource">57 <class class="lazr.restful.example.base.filemanager.ManagedFileResource">
58 <allow interface='lazr.restful.interfaces.IHTTPResource' />58 <allow interface='lazr.restful.interfaces.IHTTPResource' />
59 </class>59 </class>
6060
61 <utility factory="lazr.restful.example.root.CookbookSet"61 <utility factory="lazr.restful.example.base.root.CookbookSet"
62 provides="lazr.restful.example.interfaces.ICookbookSet"/>62 provides="lazr.restful.example.base.interfaces.ICookbookSet"/>
63 <utility factory="lazr.restful.example.root.DishSet"63 <utility factory="lazr.restful.example.base.root.DishSet"
64 provides="lazr.restful.example.interfaces.IDishSet"/>64 provides="lazr.restful.example.base.interfaces.IDishSet"/>
65 <utility factory="lazr.restful.example.root.RecipeSet"65 <utility factory="lazr.restful.example.base.root.RecipeSet"
66 provides="lazr.restful.example.interfaces.IRecipeSet"/>66 provides="lazr.restful.example.base.interfaces.IRecipeSet"/>
6767
68 <utility68 <utility
69 factory="lazr.restful.example.root.FeaturedCookbookLink"69 factory="lazr.restful.example.base.root.FeaturedCookbookLink"
70 provides="lazr.restful.example.interfaces.IFeaturedCookbookLink" />70 provides="lazr.restful.example.base.interfaces.IFeaturedCookbookLink" />
7171
72 <utility72 <utility
73 provides="lazr.restful.interfaces.IServiceRootResource"73 provides="lazr.restful.interfaces.IServiceRootResource"
74 factory="lazr.restful.example.root.CookbookServiceRootResource" />74 factory="lazr.restful.example.base.root.CookbookServiceRootResource" />
7575
76 <adapter factory="lazr.restful.example.root.SimpleByteStorage"76 <adapter factory="lazr.restful.example.base.root.SimpleByteStorage"
77 provides="lazr.restful.interfaces.IByteStorage"/>77 provides="lazr.restful.interfaces.IByteStorage"/>
78 <class class="lazr.restful.example.root.SimpleByteStorage">78 <class class="lazr.restful.example.base.root.SimpleByteStorage">
79 <allow interface='lazr.restful.example.interfaces.IFileManagerBackedByteStorage' />79 <allow interface='lazr.restful.example.base.interfaces.IFileManagerBackedByteStorage' />
80 </class>80 </class>
8181
8282
83 <adapter factory="lazr.restful.example.traversal.TraverseWithGet" />83 <adapter factory="lazr.restful.example.base.traversal.TraverseWithGet" />
84 <adapter84 <adapter
85 factory="lazr.restful.example.traversal.CookbookSetTraverse" />85 factory="lazr.restful.example.base.traversal.CookbookSetTraverse" />
8686
87 <adapter87 <adapter
88 for="lazr.restful.example.root.CookbookWebServiceObject88 for="lazr.restful.example.base.root.CookbookWebServiceObject
89 lazr.restful.interfaces.IWebServiceLayer"89 lazr.restful.interfaces.IWebServiceLayer"
90 provides="zope.traversing.browser.interfaces.IAbsoluteURL"90 provides="zope.traversing.browser.interfaces.IAbsoluteURL"
91 factory="zope.traversing.browser.absoluteurl.AbsoluteURL"91 factory="zope.traversing.browser.absoluteurl.AbsoluteURL"
92 />92 />
9393
94 <adapter94 <adapter
95 for="lazr.restful.example.root.CookbookWebServiceObject95 for="lazr.restful.example.base.root.CookbookWebServiceObject
96 lazr.restful.interfaces.IWebServiceLayer"96 lazr.restful.interfaces.IWebServiceLayer"
97 provides="zope.traversing.browser.interfaces.IAbsoluteURL"97 provides="zope.traversing.browser.interfaces.IAbsoluteURL"
98 factory="zope.traversing.browser.absoluteurl.AbsoluteURL"98 factory="zope.traversing.browser.absoluteurl.AbsoluteURL"
@@ -102,9 +102,9 @@
102 <adapter factory="lazr.restful.simple.RootResourceAbsoluteURL" />102 <adapter factory="lazr.restful.simple.RootResourceAbsoluteURL" />
103103
104 <subscriber104 <subscriber
105 for="lazr.restful.example.interfaces.ICookbook105 for="lazr.restful.example.base.interfaces.ICookbook
106 lazr.lifecycle.interfaces.IObjectModifiedEvent"106 lazr.lifecycle.interfaces.IObjectModifiedEvent"
107 handler="lazr.restful.example.subscribers.update_cookbook_revision_number" />107 handler="lazr.restful.example.base.subscribers.update_cookbook_revision_number" />
108108
109109
110</configure>110</configure>
111111
=== renamed file 'src/lazr/restful/example/filemanager.py' => 'src/lazr/restful/example/base/filemanager.py'
--- src/lazr/restful/example/filemanager.py 2009-04-17 14:40:17 +0000
+++ src/lazr/restful/example/base/filemanager.py 2009-09-01 12:07:59 +0000
@@ -12,7 +12,7 @@
12from zope.interface import implements12from zope.interface import implements
1313
14from lazr.restful import ReadOnlyResource14from lazr.restful import ReadOnlyResource
15from lazr.restful.example.interfaces import IFileManager15from lazr.restful.example.base.interfaces import IFileManager
16from lazr.restful.utils import get_current_browser_request16from lazr.restful.utils import get_current_browser_request
1717
1818
1919
=== renamed file 'src/lazr/restful/example/interfaces.py' => 'src/lazr/restful/example/base/interfaces.py'
=== renamed file 'src/lazr/restful/example/root.py' => 'src/lazr/restful/example/base/root.py'
--- src/lazr/restful/example/root.py 2009-08-27 15:50:55 +0000
+++ src/lazr/restful/example/base/root.py 2009-09-01 12:07:59 +0000
@@ -22,7 +22,7 @@
22from lazr.restful.interfaces import (22from lazr.restful.interfaces import (
23 IByteStorage, IEntry, IServiceRootResource, ITopLevelEntryLink,23 IByteStorage, IEntry, IServiceRootResource, ITopLevelEntryLink,
24 IWebServiceConfiguration)24 IWebServiceConfiguration)
25from lazr.restful.example.interfaces import (25from lazr.restful.example.base.interfaces import (
26 AlreadyNew, Cuisine, ICookbook, ICookbookSet, IDish, IDishSet,26 AlreadyNew, Cuisine, ICookbook, ICookbookSet, IDish, IDishSet,
27 IFileManager, IRecipe, IRecipeSet, IHasGet, NameAlreadyTaken)27 IFileManager, IRecipe, IRecipeSet, IHasGet, NameAlreadyTaken)
28from lazr.restful.simple import make_simple_configuration28from lazr.restful.simple import make_simple_configuration
@@ -369,7 +369,7 @@
369 match_batch_size=50,369 match_batch_size=50,
370 service_version_uri_prefix='1.0',370 service_version_uri_prefix='1.0',
371 use_https=False,371 use_https=False,
372 view_permission='lazr.restful.example.View',372 view_permission='lazr.restful.example.base.View',
373 )373 )
374374
375WebServiceConfiguration = make_simple_configuration(375WebServiceConfiguration = make_simple_configuration(
376376
=== renamed file 'src/lazr/restful/example/security.py' => 'src/lazr/restful/example/base/security.py'
--- src/lazr/restful/example/security.py 2009-03-26 17:25:22 +0000
+++ src/lazr/restful/example/base/security.py 2009-09-01 12:07:59 +0000
@@ -9,7 +9,7 @@
99
10from zope.security.simplepolicies import PermissiveSecurityPolicy10from zope.security.simplepolicies import PermissiveSecurityPolicy
11from zope.security.proxy import removeSecurityProxy11from zope.security.proxy import removeSecurityProxy
12from lazr.restful.example.interfaces import ICookbook, IRecipe12from lazr.restful.example.base.interfaces import ICookbook, IRecipe
1313
1414
15class CookbookWebServiceSecurityPolicy(PermissiveSecurityPolicy):15class CookbookWebServiceSecurityPolicy(PermissiveSecurityPolicy):
@@ -19,12 +19,12 @@
19 """Check against a simple policy.19 """Check against a simple policy.
2020
21 * Private recipes are always hidden.21 * Private recipes are always hidden.
22 * Any fields protected by lazr.restful.example.ViewPrivate are22 * Any fields protected by lazr.restful.example.base.ViewPrivate are
23 hidden.23 hidden.
24 """24 """
25 if IRecipe.providedBy(object):25 if IRecipe.providedBy(object):
26 return not removeSecurityProxy(object).private26 return not removeSecurityProxy(object).private
27 elif permission == "lazr.restful.example.ViewPrivate":27 elif permission == "lazr.restful.example.base.ViewPrivate":
28 return False28 return False
29 else:29 else:
30 return True30 return True
3131
=== renamed file 'src/lazr/restful/example/subscribers.py' => 'src/lazr/restful/example/base/subscribers.py'
--- src/lazr/restful/example/subscribers.py 2009-04-24 15:14:07 +0000
+++ src/lazr/restful/example/base/subscribers.py 2009-09-01 12:07:59 +0000
@@ -5,7 +5,7 @@
5__metaclass__ = type5__metaclass__ = type
6__all__ = ['update_cookbook_revision_number']6__all__ = ['update_cookbook_revision_number']
77
8from lazr.restful.example.interfaces import ICookbook8from lazr.restful.example.base.interfaces import ICookbook
99
10def update_cookbook_revision_number(object, event):10def update_cookbook_revision_number(object, event):
11 """Increment ICookbook.revision_number."""11 """Increment ICookbook.revision_number."""
1212
=== renamed directory 'src/lazr/restful/example/tests' => 'src/lazr/restful/example/base/tests'
=== renamed file 'src/lazr/restful/example/traversal.py' => 'src/lazr/restful/example/base/traversal.py'
--- src/lazr/restful/example/traversal.py 2009-03-27 04:25:34 +0000
+++ src/lazr/restful/example/base/traversal.py 2009-09-01 12:07:59 +0000
@@ -14,7 +14,7 @@
14from zope.publisher.interfaces.browser import IDefaultBrowserLayer14from zope.publisher.interfaces.browser import IDefaultBrowserLayer
15from zope.traversing.browser import absoluteURL15from zope.traversing.browser import absoluteURL
1616
17from lazr.restful.example.interfaces import ICookbookSet, IHasGet17from lazr.restful.example.base.interfaces import ICookbookSet, IHasGet
18from lazr.restful import RedirectResource18from lazr.restful import RedirectResource
1919
2020
2121
=== modified file 'src/lazr/restful/ftesting.zcml'
--- src/lazr/restful/ftesting.zcml 2009-08-04 19:27:13 +0000
+++ src/lazr/restful/ftesting.zcml 2009-09-01 12:07:59 +0000
@@ -4,9 +4,9 @@
4 i18n_domain="lazr">4 i18n_domain="lazr">
55
6 <include package="lazr.restful" file="basic-site.zcml"/>6 <include package="lazr.restful" file="basic-site.zcml"/>
7 <include package="lazr.restful.example" file="configure.zcml" />7 <include package="lazr.restful.example.base" file="configure.zcml" />
8 <securityPolicy8 <securityPolicy
9 component="lazr.restful.example.security.CookbookWebServiceSecurityPolicy"9 component="lazr.restful.example.base.security.CookbookWebServiceSecurityPolicy"
10 />10 />
1111
12</configure>12</configure>

Subscribers

People subscribed via source and target branches