| Index: third_party/twisted_8_1/twisted/web/woven/tapestry.py
|
| diff --git a/third_party/twisted_8_1/twisted/web/woven/tapestry.py b/third_party/twisted_8_1/twisted/web/woven/tapestry.py
|
| deleted file mode 100644
|
| index 11b6042cadf866fd30c0bc098ebda81eecba2e6f..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/web/woven/tapestry.py
|
| +++ /dev/null
|
| @@ -1,170 +0,0 @@
|
| -
|
| -"""
|
| -Woven object collections.
|
| -
|
| -THIS MODULE IS HIGHLY EXPERIMENTAL AND MAY BE DEPRECATED SOON.
|
| -"""
|
| -
|
| -from __future__ import nested_scopes
|
| -
|
| -__version__ = "$Revision: 1.13 $"[11:-2]
|
| -
|
| -
|
| -import warnings
|
| -warnings.warn("The tapestry module is deprecated. Use page instead.", DeprecationWarning, 1)
|
| -
|
| -# System Imports
|
| -import sys
|
| -import os
|
| -
|
| -# Twisted Imports
|
| -
|
| -from twisted.internet.defer import Deferred
|
| -
|
| -from twisted.web.resource import Resource, IResource
|
| -from twisted.web.static import redirectTo, addSlash, File, Data
|
| -from twisted.web.server import NOT_DONE_YET
|
| -from twisted.web import util
|
| -
|
| -from twisted.python.reflect import qual
|
| -
|
| -# Sibling Imports
|
| -from twisted.web.woven.view import View
|
| -
|
| -_ChildJuggler = util.DeferredResource
|
| -
|
| -class ModelLoader(Resource):
|
| - """Resource for loading models. (see loadModel)
|
| - """
|
| - def __init__(self, parent, templateFile=None):
|
| - Resource.__init__(self)
|
| - self.parent = parent
|
| - self.templateFile = templateFile
|
| -
|
| - def modelClass(self, other):
|
| - return other
|
| -
|
| - def getChild(self, path, request):
|
| - d = self.loadModel(path, request)
|
| - templateFile = (self.templateFile or self.__class__.__name__+'.html')
|
| - d.addCallback(
|
| - lambda result: self.parent.makeView(self.modelClass(result),
|
| - templateFile, 1))
|
| - return util.DeferredResource(d)
|
| -
|
| - def loadModelNow(self, path, request):
|
| - """Override this rather than loadModel if your model-loading is
|
| - synchronous.
|
| - """
|
| - raise NotImplementedError("%s.loadModelNow" % (reflect.qual(self.__class__)))
|
| -
|
| - def loadModel(self, path, request):
|
| - """Load a model, for the given path and request.
|
| -
|
| - @rtype: L{Deferred}
|
| - """
|
| - from twisted.internet.defer import execute
|
| - return execute(self.loadModelNow, path, request)
|
| -
|
| -
|
| -from twisted.web import microdom
|
| -from twisted.web import domhelpers
|
| -
|
| -class TapestryView(View):
|
| - tapestry = None
|
| - parentCount = 0
|
| - def lookupTemplate(self, request):
|
| - fullFile = os.path.join(self.templateDirectory, self.templateFile)
|
| - document = microdom.parse(open(fullFile))
|
| - if self.tapestry:
|
| - return self.tapestry.templateMutate(document, self.parentCount)
|
| - return document
|
| -
|
| -class Tapestry(Resource):
|
| - """
|
| - I am a top-level aggregation of Woven objects: a full `site' or
|
| - `application'.
|
| - """
|
| - viewFactory = TapestryView
|
| - def __init__(self, templateDirectory, viewFactory=None, metaTemplate=None):
|
| - """
|
| - Create a tapestry with a specified template directory.
|
| - """
|
| - Resource.__init__(self)
|
| - self.templateDirectory = templateDirectory
|
| - if viewFactory is not None:
|
| - self.viewFactory = viewFactory
|
| - if metaTemplate:
|
| - self.metaTemplate = microdom.parse(open(
|
| - os.path.join(templateDirectory, metaTemplate)))
|
| - else:
|
| - self.metaTemplate = None
|
| -
|
| - def templateMutate(self, document, parentCount=0):
|
| - if self.metaTemplate:
|
| - newDoc = self.metaTemplate.cloneNode(1)
|
| - if parentCount:
|
| - dotdot = parentCount * '../'
|
| - for ddname in 'href', 'src', 'action':
|
| - for node in domhelpers.findElementsWithAttribute(newDoc, ddname):
|
| - node.setAttribute(ddname, dotdot + node.getAttribute(ddname))
|
| - ttl = domhelpers.findNodesNamed(newDoc, "title")[0]
|
| - ttl2 = domhelpers.findNodesNamed(document, "title")[0]
|
| - ttl.childNodes[:] = []
|
| - for n in ttl2.childNodes:
|
| - ttl.appendChild(n)
|
| - body = domhelpers.findElementsWithAttribute(newDoc, "class", "__BODY__")[0]
|
| - body2 = domhelpers.findNodesNamed(document, "body")[0]
|
| - ndx = body.parentNode.childNodes.index(body)
|
| - body.parentNode.childNodes[ndx:ndx+1] = body2.childNodes
|
| - for n in body2.childNodes:
|
| - n.parentNode = body.parentNode
|
| - f = open("garbage.html", "wb")
|
| - f.write(newDoc.toprettyxml())
|
| - return newDoc
|
| - return document
|
| -
|
| - def makeView(self, model, name, parentCount=0):
|
| - v = self.viewFactory(model, name)
|
| - v.parentCount = parentCount
|
| - v.templateDirectory = self.templateDirectory
|
| - v.tapestry = self
|
| - v.importViewLibrary(self)
|
| - return v
|
| -
|
| - def getSubview(self, request, node, model, viewName):
|
| - mod = sys.modules[self.__class__.__module__]
|
| - # print "I'm getting a subview", mod, viewName
|
| -
|
| - # try just the name
|
| - vm = getattr(mod, viewName, None)
|
| - if vm:
|
| - return vm(model)
|
| -
|
| - # try the name + a V
|
| - vn2 = "V"+viewName.capitalize()
|
| - vm = getattr(mod, vn2, None)
|
| - if vm:
|
| - return vm(model)
|
| -
|
| - vm = getattr(self, 'wvfactory_'+viewName, None)
|
| - if vm:
|
| - return vm(request, node, model)
|
| -
|
| - def render(self, request):
|
| - return redirectTo(addSlash(request), request)
|
| -
|
| - def getChild(self, path, request):
|
| - if path == '': path = 'index'
|
| - path = path.replace(".","_")
|
| - cm = getattr(self, "wchild_"+path, None)
|
| - if cm:
|
| - p = cm(request)
|
| - if isinstance(p, Deferred):
|
| - return util.DeferredResource(p)
|
| - adapter = IResource(p, None)
|
| - if adapter is not None:
|
| - return adapter
|
| - # maybe we want direct support for ModelLoader?
|
| - # cl = getattr(self, "wload_"+path, None) #???
|
| - return Resource.getChild(self, path, request)
|
|
|