[Twisted-web] Patch: Enable passing the context to freeform autocallable methods
Gavrie Philipson
twisted-web@twistedmatrix.com
Thu, 25 Dec 2003 09:44:23 +0200
This is a multi-part message in MIME format.
--------------050709020209030702010009
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hi,
The attached patch enables passing the context to freeform autocallable
methods.
It is used by defining an autocallable like this:
def doIt(self, context = formless.Context(),
foo = formless.String(label="Prefix")):
pass
-- Gavrie.
--------------050709020209030702010009
Content-Type: text/x-patch;
name="freeform-context.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="freeform-context.patch"
Index: components.wsv
===================================================================
RCS file: /cvs/Quotient/nevow/components.wsv,v
retrieving revision 1.21
diff -u -r1.21 components.wsv
--- components.wsv 23 Dec 2003 06:15:38 -0000 1.21
+++ components.wsv 25 Dec 2003 07:32:46 -0000
@@ -80,6 +80,7 @@
nevow.freeform.ButtonRenderer nevow.formless.Button nevow.freeform.ITypedRenderer
nevow.freeform.ObjectRenderer nevow.formless.Object nevow.freeform.ITypedRenderer
nevow.freeform.RequestRenderer nevow.formless.Request nevow.freeform.ITypedRenderer
+nevow.freeform.ContextRenderer nevow.formless.Context nevow.freeform.ITypedRenderer
nevow.freeform.ListRenderer nevow.formless.List nevow.freeform.ITypedRenderer
nevow.freeform.DictionaryRenderer nevow.formless.Dictionary nevow.freeform.ITypedRenderer
nevow.freeform.FileUploadRenderer nevow.formless.FileUpload nevow.freeform.ITypedRenderer
@@ -97,6 +98,7 @@
nevow.freeform.PasswordValidator nevow.formless.Password nevow.freeform.IInputValidator
nevow.freeform.BooleanValidator nevow.formless.Boolean nevow.freeform.IInputValidator
nevow.freeform.RequestValidator nevow.formless.Request nevow.freeform.IInputValidator
+nevow.freeform.ContextValidator nevow.formless.Context nevow.freeform.IInputValidator
nevow.freeform.ListValidator nevow.formless.List nevow.freeform.IInputValidator
nevow.freeform.UploadValidator nevow.formless.FileUpload nevow.freeform.IInputValidator
Index: formless.py
===================================================================
RCS file: /cvs/Quotient/nevow/formless.py,v
retrieving revision 1.31
diff -u -r1.31 formless.py
--- formless.py 2 Dec 2003 17:54:01 -0000 1.31
+++ formless.py 25 Dec 2003 07:32:48 -0000
@@ -381,6 +381,10 @@
complexType = True ## Don't use the regular form
+class Context(Typed):
+ complexType = True ## Don't use the regular form
+
+
class Button(Typed):
pass
Index: freeform.py
===================================================================
RCS file: /cvs/Quotient/nevow/freeform.py,v
retrieving revision 1.84
diff -u -r1.84 freeform.py
--- freeform.py 23 Dec 2003 19:01:14 -0000 1.84
+++ freeform.py 25 Dec 2003 07:32:50 -0000
@@ -325,6 +334,12 @@
return ''
+class ContextRenderer(components.Adapter):
+ __implements__ = IRendererFactory, ITypedRenderer
+ def __call__(self, context, data):
+ return ''
+
+
## Hoorj javascript
LOCATE_AND_CHANGE_CURRENT_SELECTION_INPUT = xml(\
"var sel = document.getElementById('freeform-action-selection:' + this.name);"\
@@ -1031,6 +1046,14 @@
def validate(self, context, boundTo, data):
return context.locate(iwoven.IRequest)
+
+class ContextValidator(components.Adapter):
+ __implements__ = IInputValidator,
+
+ def validate(self, context, boundTo, data):
+ return context
+
+
class UploadValidator(components.Adapter):
__implements__ = IInputValidator,
def validate(self, context, boundTo, data):
--------------050709020209030702010009--