summaryrefslogtreecommitdiff
path: root/docs/tutorials/lxmlgraph/step02/myapp
diff options
context:
space:
mode:
authorPaul Everitt <paul@agendaless.com>2008-07-24 17:14:16 +0000
committerPaul Everitt <paul@agendaless.com>2008-07-24 17:14:16 +0000
commit1a7b14de4bc89ef0fd162ef8e62d01926e42b54e (patch)
tree8d9ccc8187ac29eb80ac310c6f82c17d548cdf54 /docs/tutorials/lxmlgraph/step02/myapp
parentc1a6ef6f751a16b7a352bc3fdad13d4b5b73f212 (diff)
downloadpyramid-1a7b14de4bc89ef0fd162ef8e62d01926e42b54e.tar.gz
pyramid-1a7b14de4bc89ef0fd162ef8e62d01926e42b54e.tar.bz2
pyramid-1a7b14de4bc89ef0fd162ef8e62d01926e42b54e.zip
Add tutorial sections
Diffstat (limited to 'docs/tutorials/lxmlgraph/step02/myapp')
-rw-r--r--docs/tutorials/lxmlgraph/step02/myapp/__init__.py1
-rw-r--r--docs/tutorials/lxmlgraph/step02/myapp/configure.zcml11
-rw-r--r--docs/tutorials/lxmlgraph/step02/myapp/models.py41
-rw-r--r--docs/tutorials/lxmlgraph/step02/myapp/samplemodel.xml5
-rw-r--r--docs/tutorials/lxmlgraph/step02/myapp/views.py8
5 files changed, 66 insertions, 0 deletions
diff --git a/docs/tutorials/lxmlgraph/step02/myapp/__init__.py b/docs/tutorials/lxmlgraph/step02/myapp/__init__.py
new file mode 100644
index 000000000..792d60054
--- /dev/null
+++ b/docs/tutorials/lxmlgraph/step02/myapp/__init__.py
@@ -0,0 +1 @@
+#
diff --git a/docs/tutorials/lxmlgraph/step02/myapp/configure.zcml b/docs/tutorials/lxmlgraph/step02/myapp/configure.zcml
new file mode 100644
index 000000000..540526ec9
--- /dev/null
+++ b/docs/tutorials/lxmlgraph/step02/myapp/configure.zcml
@@ -0,0 +1,11 @@
+<configure xmlns="http://namespaces.zope.org/zope"
+ xmlns:bfg="http://namespaces.repoze.org/bfg">
+
+ <include package="repoze.bfg" />
+
+ <bfg:view
+ for=".models.IMyModel"
+ view=".views.my_hello_view"
+ />
+
+</configure>
diff --git a/docs/tutorials/lxmlgraph/step02/myapp/models.py b/docs/tutorials/lxmlgraph/step02/myapp/models.py
new file mode 100644
index 000000000..3c03de1a9
--- /dev/null
+++ b/docs/tutorials/lxmlgraph/step02/myapp/models.py
@@ -0,0 +1,41 @@
+from zope.interface import implements
+from zope.interface import Attribute
+from zope.interface import Interface
+from lxml import etree
+
+class IMyModel(Interface):
+ __name__ = Attribute('Name of the model instance')
+
+class BfgElement(etree.ElementBase):
+ """Handle access control and getitem behavior"""
+
+ implements(IMyModel)
+
+ @property
+ def __name__(self):
+ return self.xpath("@name")[0]
+
+ def __getitem__(self, child_name):
+ xp = "*[@name='%s']" % child_name
+ matches = self.xpath(xp)
+ if len(matches) == 0:
+ raise KeyError('No child found for %s' % child_name)
+ elif len(matches) > 1:
+ raise KeyError('More than one child for %s' % child_name)
+ else:
+ return matches[0]
+
+def get_root(environ):
+ # Setup the custom parser with our BfgElement behavior
+ parser_lookup = etree.ElementDefaultClassLookup(element=BfgElement)
+ parser = etree.XMLParser()
+ parser.set_element_class_lookup(parser_lookup)
+
+ # Now load the XML file
+ xmlstring = open("myapp/samplemodel.xml").read()
+ root = etree.XML(xmlstring, parser)
+
+ return root
+
+
+
diff --git a/docs/tutorials/lxmlgraph/step02/myapp/samplemodel.xml b/docs/tutorials/lxmlgraph/step02/myapp/samplemodel.xml
new file mode 100644
index 000000000..83678e5e9
--- /dev/null
+++ b/docs/tutorials/lxmlgraph/step02/myapp/samplemodel.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <document name="a"/>
+ <document name="b"/>
+</site>
diff --git a/docs/tutorials/lxmlgraph/step02/myapp/views.py b/docs/tutorials/lxmlgraph/step02/myapp/views.py
new file mode 100644
index 000000000..205b4b163
--- /dev/null
+++ b/docs/tutorials/lxmlgraph/step02/myapp/views.py
@@ -0,0 +1,8 @@
+from webob import Response
+
+def my_hello_view(context, request):
+ response = Response('Hello to %s from %s @ %s' % (
+ context.tag,
+ context.__name__,
+ request.environ['PATH_INFO']))
+ return response