| Index: third_party/twisted_8_1/twisted/web/woven/utils.py
|
| diff --git a/third_party/twisted_8_1/twisted/web/woven/utils.py b/third_party/twisted_8_1/twisted/web/woven/utils.py
|
| deleted file mode 100644
|
| index 472ac5126663cbf859ce8f28d818ab3026c2fb75..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/web/woven/utils.py
|
| +++ /dev/null
|
| @@ -1,198 +0,0 @@
|
| -from __future__ import nested_scopes
|
| -
|
| -from types import ClassType
|
| -
|
| -from twisted.web import server
|
| -from twisted.web import util as webutil
|
| -from twisted.web.woven import interfaces
|
| -from twisted.python import failure, log, components
|
| -from zope.interface import implements
|
| -
|
| -def renderFailure(fail, request):
|
| - if not fail:
|
| - fail = failure.Failure()
|
| - log.err(fail)
|
| - request.write(webutil.formatFailure(fail))
|
| - #request.finish()
|
| -
|
| -
|
| -def doSendPage(self, d, request):
|
| - page = str(d.toprettyxml())
|
| - request.setHeader('content-length', str(len(page)))
|
| - request.write(page)
|
| - request.finish()
|
| - return page
|
| -
|
| -
|
| -class Script:
|
| - type="javascript1.2"
|
| - def __init__(self, script):
|
| - self.script = script
|
| -
|
| -
|
| -class WovenLivePage:
|
| - implements(interfaces.IWovenLivePage)
|
| -
|
| - currentPage = None
|
| - def __init__(self, session):
|
| - self.session = session
|
| - self.output = None
|
| - self.input = None
|
| - self.cached = []
|
| - self.inputCache = []
|
| -
|
| - def getCurrentPage(self):
|
| - """Return the current page object contained in this session.
|
| - """
|
| - return self.currentPage
|
| -
|
| - def setCurrentPage(self, page):
|
| - """Set the current page object contained in this session.
|
| - """
|
| - self.currentPage = page
|
| -
|
| - def write(self, text):
|
| - """Write "text" to the live page's persistent output conduit.
|
| - If there is no conduit connected yet, save the text and write it
|
| - as soon as the output conduit is connected.
|
| - """
|
| - if self.output is None:
|
| - self.cached.append(text)
|
| - print "CACHING", `self.cached`
|
| - else:
|
| - if isinstance(text, Script):
|
| - if hasattr(self.output, 'writeScript'):
|
| - self.output.writeScript(text.script)
|
| - return
|
| - text = '<script language="%s">%s</script>\r\n' % (text.type, text.script)
|
| - print "WRITING", text
|
| - if text[-1] != '\n':
|
| - text += '\n'
|
| - self.output.write(text)
|
| -
|
| - def sendScript(self, js):
|
| - self.write(Script(js))
|
| - if self.output is not None and not getattr(self.output, 'keepalive', None):
|
| - print "## woot, teh connection was open"
|
| - ## Close the connection; the javascript will have to open it again to get the next event.
|
| - self.output.finish()
|
| - self.output = None
|
| -
|
| - def hookupOutputConduit(self, request):
|
| - """Hook up the given request as the output conduit for this
|
| - session.
|
| - """
|
| - print "TOOT! WE HOOKED UP OUTPUT!", `self.cached`
|
| - self.output = request
|
| - for text in self.cached:
|
| - self.write(text)
|
| - if self.cached:
|
| - self.cached = []
|
| - if not getattr(self.output, 'keepalive', None):
|
| - ## Close the connection; the javascript will have to open it again to get the next event.
|
| - request.finish()
|
| - self.output = None
|
| -
|
| - def unhookOutputConduit(self):
|
| - self.output = None
|
| -
|
| - def hookupInputConduit(self, obj):
|
| - """Hook up the given object as the input conduit for this
|
| - session.
|
| - """
|
| - print "HOOKING UP", self.inputCache
|
| - self.input = obj
|
| - for text in self.inputCache:
|
| - self.pushThroughInputConduit(text)
|
| - self.inputCache = []
|
| - print "DONE HOOKING", self.inputCache
|
| -
|
| - def pushThroughInputConduit(self, inp):
|
| - """Push some text through the input conduit.
|
| - """
|
| - print "PUSHING INPUT", inp
|
| - if self.input is None:
|
| - self.inputCache.append(inp)
|
| - else:
|
| - self.input(inp)
|
| -
|
| -class Stack:
|
| - def __init__(self, stack=None):
|
| - if stack is None:
|
| - self.stack = []
|
| - else:
|
| - self.stack = stack
|
| -
|
| - def push(self, item):
|
| - self.stack.insert(0, item)
|
| -
|
| - def pop(self):
|
| - if self.stack:
|
| - return self.stack.pop(0)
|
| -
|
| - def peek(self):
|
| - for x in self.stack:
|
| - if x is not None:
|
| - return x
|
| -
|
| - def poke(self, item):
|
| - self.stack[0] = item
|
| -
|
| - def clone(self):
|
| - return Stack(self.stack[:])
|
| -
|
| - def __len__(self):
|
| - return len(self.stack)
|
| -
|
| - def __getitem__(self, item):
|
| - return self.stack[item]
|
| -
|
| -
|
| -class GetFunction:
|
| - def __init__(self, namespace):
|
| - self.namespace = namespace
|
| -
|
| - def __call__(self, request, node, model, viewName):
|
| - """Get a name from my namespace.
|
| - """
|
| - from twisted.web.woven import widgets
|
| - if viewName == "None":
|
| - return widgets.DefaultWidget(model)
|
| -
|
| - vc = getattr(self.namespace, viewName, None)
|
| - # don't call modules and random crap in the namespace, only widgets
|
| - if vc and isinstance(vc, (type, ClassType)) and issubclass(vc, widgets.Widget):
|
| - return vc(model)
|
| -
|
| -
|
| -def createGetFunction(namespace):
|
| - return GetFunction(namespace)
|
| -
|
| -
|
| -class SetId:
|
| - def __init__(self, theId):
|
| - self.theId = theId
|
| -
|
| - def __call__(self, request, wid, data):
|
| - id = wid.attributes.get('id', None)
|
| - if not id:
|
| - wid.setAttribute('id', self.theId)
|
| - else:
|
| - top = wid
|
| - while getattr(top, 'parent', None) is not None:
|
| - top = top.parent
|
| - if top.subviews.has_key(self.theId):
|
| - del top.subviews[self.theId]
|
| - top.subviews[id] = wid
|
| - if wid.parent.subviews.has_key(self.theId):
|
| - del wid.parent.subviews[self.theId]
|
| - wid.parent.subviews[id] = wid
|
| -
|
| -
|
| -def createSetIdFunction(theId):
|
| - return SetId(theId)
|
| -
|
| -
|
| -
|
| -components.registerAdapter(WovenLivePage, server.Session, interfaces.IWovenLivePage)
|
| -
|
|
|