[Twisted-web] TypedInterface implementation returned in a render_ method

Justin Johnson twisted-web@twistedmatrix.com
Mon, 15 Dec 2003 13:32:46 -0600


This is a multi-part message in MIME format.

--_----------=_1071516766319720
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="ISO-8859-1"

Attached is a TAP that demonstrates my problem.

Expand ClearCase > VOB > mkvob and then submit the form and see the
error.


On Mon, 15 Dec 2003 09:22:09 -0600, "Justin Johnson"
<justinjohnson@fastmail.fm> said:
> I have the following render_main method which returns the current tag,
> but specifies an implementation of a TypedInterface as 'data', and
> freeform.configure as a child node.
> 
>     def render_main(self, context, data):
>         if "mkvob" in self.selected_menu_items:
>             return context.tag(data=forms.MkvobForm())[
>             freeform.configure ]
>         else:
>             return Base.render_main(self, context, data)
> 
> 
> The TypedInterface is defined as follows:
> 
> 
> class IMkvobForm(formless.TypedInterface):
>     def do_mkvob(self,
>                  request=formless.Request(),
>                  tag=typed.VobTags(),
>                  site=typed.Sites(),
>                  other_sites=typed.Sites()):
>         """Make a VOB
> 
>         Make a ClearCase VOB.
>         """
>     do_mkvob = formless.autocallable(do_mkvob)
> 
> class MkvobForm(object):
>     __implements__ = IMkvobForm,
> 
>     def do_mkvob(self, request, tag, site, other_sites):
>         vobs = tag.split(",")
>         other_sites = other_sites.split(",")
>         print "DEBUG: locals() = " + str(locals())
>         Redirect("/")
> 
> 
> Eventually this will do something useful.  This code succeeds in
> displaying the form when I select the mkvob menu item.  However, when I
> click submit, I get the following error before the Type coerce methods
> are called.
> 
> 
> 2003/12/15 09:16 Central Standard Time [HTTPChannel,1,127.0.0.1]
> Traceback (most
>  recent call last):
>           File "C:\Python23\Lib\site-packages\twisted\protocols\http.py",
>           line 1
> 000, in rawDataReceived
>             self.allContentReceived()
>           File "C:\Python23\Lib\site-packages\twisted\protocols\http.py",
>           line 9
> 91, in allContentReceived
>             req.requestReceived(command, path, version)
>           File "C:\Python23\Lib\site-packages\twisted\protocols\http.py",
>           line 5
> 49, in requestReceived
>             self.process()
>           File "C:\svn\Quotient\nevow\appserver.py", line 99, in process
>             return server.Request.process(self)
>         --- <exception caught here> ---
>           File "C:\Python23\Lib\site-packages\twisted\web\server.py",
>           line 158,
> in process
>             resrc = self.site.getResourceFor(self)
>           File "C:\svn\Quotient\nevow\appserver.py", line 125, in
>           getResourceFor
> 
>             res = gener.getResourceForRequest(request)
>           File "C:\svn\Quotient\nevow\appserver.py", line 50, in
>           getResourceForR
> equest
>             return self.postForm(request, res, configurable, ctx,
>             bindingName, r
> equest.args)
>           File "C:\svn\Quotient\nevow\appserver.py", line 53, in postForm
>             return configurable.postForm(ctx, bindingName, args)
>           File "C:\svn\Quotient\nevow\freeform.py", line 731, in postForm
>             binding = configurable.getBinding(ctx, seg)
>           File "C:\svn\Quotient\nevow\freeform.py", line 796, in
>           getBinding
>             raise ImproperInputError, self.original
>         nevow.freeform.ImproperInputError: An unconfigurable object
>         (None)
> 
> 
> 
> Does anyone know what I'm doing wrong here?
> Thanks.
> -Justin
> 
> _______________________________________________
> Twisted-web mailing list
> Twisted-web@twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

--_----------=_1071516766319720
Content-Disposition: attachment; filename="menus_and_configurables.tac"
Content-Transfer-Encoding: base64
Content-Type: application/unknown; name="menus_and_configurables.tac"

ZnJvbSB0d2lzdGVkLndlYi53b3ZlbiBpbXBvcnQgZ3VhcmQKZnJvbSB0d2lz
dGVkLmFwcGxpY2F0aW9uIGltcG9ydCBzZXJ2aWNlLCBpbnRlcm5ldApmcm9t
IHR3aXN0ZWQuY3JlZCBpbXBvcnQgcG9ydGFsLCBjaGVja2Vycwpmcm9tIHR3
aXN0ZWQud2ViIGltcG9ydCByZXNvdXJjZSwgc2VydmVyLCB1dGlsCmZyb20g
dHdpc3RlZC5jcmVkLnBvcnRhbCBpbXBvcnQgUG9ydGFsCmZyb20gdHdpc3Rl
ZC5jcmVkLmNoZWNrZXJzIGltcG9ydCBBbGxvd0Fub255bW91c0FjY2Vzcywg
SW5NZW1vcnlVc2VybmFtZVBhc3N3b3JkRGF0YWJhc2VEb250VXNlCmZyb20g
dHdpc3RlZC53ZWIud292ZW4uZ3VhcmQgaW1wb3J0IFVzZXJuYW1lUGFzc3dv
cmRXcmFwcGVyLCBTZXNzaW9uV3JhcHBlcgpmcm9tIHR3aXN0ZWQuY3JlZC5j
cmVkZW50aWFscyBpbXBvcnQgSUFub255bW91cwpmcm9tIHR3aXN0ZWQud2Vi
LnV0aWwgaW1wb3J0IFJlZGlyZWN0CgoKZnJvbSBuZXZvdyBpbXBvcnQgcmVu
ZGVyZXIsIHRhZ3MsIGFwcHNlcnZlcgpmcm9tIG5ldm93LnRhZ3MgaW1wb3J0
ICoKCmZyb20gbmV2b3cgaW1wb3J0IGZvcm1sZXNzLCBmcmVlZm9ybQpmcm9t
IHR3aXN0ZWQud2ViLnV0aWwgaW1wb3J0IFJlZGlyZWN0CgpjbGFzcyBJTWt2
b2JGb3JtKGZvcm1sZXNzLlR5cGVkSW50ZXJmYWNlKToKICAgIGRlZiBkb19t
a3ZvYihzZWxmLAogICAgICAgICAgICAgICAgIHJlcXVlc3Q9Zm9ybWxlc3Mu
UmVxdWVzdCgpLAogICAgICAgICAgICAgICAgIHRhZz1mb3JtbGVzcy5TdHJp
bmcoKSwKICAgICAgICAgICAgICAgICBzaXRlPWZvcm1sZXNzLlN0cmluZygp
LAogICAgICAgICAgICAgICAgIG90aGVyX3NpdGVzPWZvcm1sZXNzLlN0cmlu
ZygpKToKICAgICAgICAiIiJNYWtlIGEgVk9CCgogICAgICAgIE1ha2UgYSBD
bGVhckNhc2UgVk9CLgogICAgICAgICIiIgogICAgZG9fbWt2b2IgPSBmb3Jt
bGVzcy5hdXRvY2FsbGFibGUoZG9fbWt2b2IpCgpjbGFzcyBNa3ZvYkZvcm0o
b2JqZWN0KToKICAgIF9faW1wbGVtZW50c19fID0gSU1rdm9iRm9ybSwKCiAg
ICBkZWYgZG9fbWt2b2Ioc2VsZiwgcmVxdWVzdCwgdGFnLCBzaXRlLCBvdGhl
cl9zaXRlcyk6CiAgICAgICAgIiIiTWFrZSBhIFZPQgoKICAgICAgICBNYWtl
IGEgQ2xlYXJDYXNlIFZPQi4KICAgICAgICAiIiIKICAgICAgICB2b2JzID0g
dGFnLnNwbGl0KCIsIikKICAgICAgICBncm91cCA9IHInVUhDQURBQUFcY2N2
b2JhZCcKICAgICAgICBvdGhlcl9zaXRlcyA9IG90aGVyX3NpdGVzLnNwbGl0
KCIsIikKICAgICAgICBwcmludCAiREVCVUc6IGxvY2FscygpID0gIiArIHN0
cihsb2NhbHMoKSkKICAgICAgICBSZWRpcmVjdCgiLyIpCgoKCmNsYXNzIE15
UmVuZGVyZXIocmVuZGVyZXIuUmVuZGVyZXIpOgogICAgIiIiVGhlIHJlbmRl
cmVyIGZvciBsb2dnZWQgaW4gdXNlcnMKICAgICIiIgoKICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKICAgICAgICBzZWxmLnNlbGVjdGVkX21lbnVfaXRlbXMg
PSBbXQogICAgICAgIHJlbmRlcmVyLlJlbmRlcmVyLl9faW5pdF9fKHNlbGYp
CgogICAgZG9jdW1lbnQgPSB0YWdzLmh0bWxbCiAgICAgICAgdGFncy5oZWFk
W3RhZ3MudGl0bGVbIk15IFJlbmRlcmVyIl1dLAogICAgICAgIHRhZ3MuYm9k
eVsKICAgICAgICAgICAgdGFncy51bChkYXRhPXRhZ3MuZGlyZWN0aXZlKCJt
ZW51X2l0ZW1zIiksIHJlbmRlcmVyPXRhZ3MuZGlyZWN0aXZlKCJtZW51Iikp
LAogICAgICAgICAgICB0YWdzLmRpdihyZW5kZXJlcj10YWdzLmRpcmVjdGl2
ZSgibWFpbiIpKSwKICAgICAgICBdCiAgICBdCgogICAgZGVmIGRhdGFfbWVu
dV9pdGVtcyhzZWxmLCBjb250ZXh0LCBkYXRhKToKICAgICAgICByZXR1cm4g
W05vbmUsIHsKICAgICAgICAgICAgIkNsZWFyQ2FzZSI6IFt7IlZPQiI6IFsi
bWt2b2IiLCJybXZvYiJdfSwgeyJWaWV3IjogWyJybXZpZXciXX0sIHsiVXNl
ciI6IFsiYWRkdXNlciIsImRlbHVzZXIiXX1dLAogICAgICAgICAgICAiQ2xl
YXJRdWVzdCI6IFt7IkRCIjogWyJhZGRkYiIsImRlbGRiIl19LCB7IlVzZXIi
OiBbImFkZHVzZXIiLCJkZWx1c2VyIl19XSwKICAgICAgICB9XQoKICAgIGRl
ZiByZW5kZXJfbWVudShzZWxmLCBjb250ZXh0LCBkYXRhKToKICAgICAgICAi
IiJSZW5kZXIgYSBkaWN0aW9uYXJ5IG9mIHN0cmluZyBrZXlzIGFuZCBsaXN0
IG9mIHN0cmluZy9kaWN0IHZhbHVlcy4iIiIKCiAgICAgICAgIyBVdGlsaXR5
IGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCB0aGUgYW5jaG9yIGhyZWYKICAgICAg
ICBkZWYgYW5jaG9yUGF0aChwYXJlbnQsIGVudHJ5KToKICAgICAgICAgICAg
aWYgcGFyZW50OgogICAgICAgICAgICAgICAgcmV0dXJuICIvZG8vJXMiICUg
Ii8iLmpvaW4oW3BhcmVudCwgZW50cnldKQogICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgcmV0dXJuICIvZG8vJXMiICUgZW50cnkKCiAgICAg
ICAgbWVudSA9IGNvbnRleHQudGFnICMgVGhlIHRhZyB3ZSB3aWxsIHJldHVy
bgogICAgICAgIHBhcmVudCA9IGRhdGFbMF0gIyBUaGUgY3VycmVudCBzZWxl
Y3RlZCBtZW51IGl0ZW0gcGF0aCAoZWcuIC9kby9pdGVtMS9pdGVtMikKCiAg
ICAgICAgIyBGb3IgZXZlcnkgZWxlbWVudCBpbiB0aGUgbWVudQogICAgICAg
IGZvciBrLCB2IGluIGRhdGFbMV0uaXRlbXMoKToKICAgICAgICAgICAgIyBJ
ZiBpdCBpcyBhIHNlbGVjdGVkIG1lbnUgaXRlbSwgYWRkIGEgbGlzdCBpdGVt
IHdpdGggb3VyIGtleSBhcyB0aGUgbGFiZWwKICAgICAgICAgICAgIyBhbmQg
ZXhwYW5kIGl0cyBjaGlsZHJlbiwgdG8gZXhwYW5kIHRoZSBtZW51LgogICAg
ICAgICAgICBpZiBrIGluIHNlbGYuc2VsZWN0ZWRfbWVudV9pdGVtczoKICAg
ICAgICAgICAgICAgICMgVXNlIHRoZSBhcHByb3ByaWF0ZSBDU1MgY2xhc3Mg
ZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IGl0J3Mgc2VsZWN0ZWQKICAg
ICAgICAgICAgICAgIG1lbnUuY2hpbGRyZW4uYXBwZW5kKGxpWyBhKF9jbGFz
cz0ibWVudS1zZWxlY3RlZCIsIGhyZWY9YW5jaG9yUGF0aChwYXJlbnQsIGsp
KVsgayBdIF0pCgogICAgICAgICAgICAgICAgIyBBZGQgYW4gdWwgdGFnIHRv
IHRoaXMgbWVudSBmb3IgdGhlIHN1Ym1lbnUKICAgICAgICAgICAgICAgIHN1
Ym1lbnUgPSB1bCgpCiAgICAgICAgICAgICAgICBtZW51LmNoaWxkcmVuLmFw
cGVuZChzdWJtZW51KQoKICAgICAgICAgICAgICAgICMgQXMgd2UgYWRkIHRo
ZSBjaGlsZCBtZW51IGVudHJpZXMsIHByZXBlbmQgdGhlIHBhcmVudCBwYXRo
IHRvIG91ciBocmVmcwogICAgICAgICAgICAgICAgbmV3X3BhcmVudCA9IHBh
cmVudAogICAgICAgICAgICAgICAgaWYgbmV3X3BhcmVudDoKICAgICAgICAg
ICAgICAgICAgICBuZXdfcGFyZW50ICs9ICIvIiArIGsKICAgICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgbmV3X3BhcmVudCA9IGsK
CiAgICAgICAgICAgICAgICAjIEZvciBldmVyeSBlbGVtZW50IG9mIHRoZSB2
YWx1ZSBsaXN0CiAgICAgICAgICAgICAgICBmb3IgaSBpbiB2OgogICAgICAg
ICAgICAgICAgICAgICMgaWYgaXQncyBhIGRpY3QsIGNhdXNlIHJlbmRlcl9t
ZW51IHRvIGJlIGNhbGxlZCBvbiBpdCwgYW5kIHRoZSBvdXRwdXQgcGxhY2Vk
IGluIHRoZSBzdWJtZW51IHRhZwogICAgICAgICAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoaSwgZGljdCk6CiAgICAgICAgICAgICAgICAgICAgICAgIHN1
Ym1lbnUuY2hpbGRyZW4uYXBwZW5kKGxpKGRhdGE9W25ld19wYXJlbnQsaV0s
IHJlbmRlcmVyPXNlbGYucmVuZGVyX21lbnUpKQogICAgICAgICAgICAgICAg
ICAgICMgaWYgaXQncyBhIHN0cmluZywganVzdCBhZGQgYSBsaXN0IGl0ZW0g
d2l0aCB0aGUgc3RyaW5nIHRvIHRoZSBtZW51CiAgICAgICAgICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2UgdGhlIGFw
cHJvcHJpYXRlIENTUyBjbGFzcwogICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpIGluIHNlbGYuc2VsZWN0ZWRfbWVudV9pdGVtczoKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1Ym1lbnUuY2hpbGRyZW4uYXBwZW5kKGxpWyBh
KF9jbGFzcz0ibWVudS1zZWxlY3RlZCIsIGhyZWY9YW5jaG9yUGF0aChuZXdf
cGFyZW50LGkpKVsgaSBdIF0pCiAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtZW51LmNoaWxk
cmVuLmFwcGVuZChsaVsgYShocmVmPWFuY2hvclBhdGgobmV3X3BhcmVudCxp
KSlbIGkgXSBdKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
IyBUaGlzIGl0ZW0gd2Fzbid0IHNlbGVjdGVkLiAgSnVzdCBhZGQgYSBsaXN0
IGl0ZW0sIGJ1dCBkb24ndCBleHBhbmQgaXRzIGNoaWxkcmVuCiAgICAgICAg
ICAgICAgICBtZW51LmNoaWxkcmVuLmFwcGVuZChsaVsgYShocmVmPWFuY2hv
clBhdGgocGFyZW50LGspKVsgayBdIF0pCiAgICAgICAgcmV0dXJuIG1lbnUK
CiAgICBkZWYgcmVuZGVyX21haW4oc2VsZiwgY29udGV4dCwgZGF0YSk6CiAg
ICAgICAgaWYgIm1rdm9iIiBpbiBzZWxmLnNlbGVjdGVkX21lbnVfaXRlbXM6
CiAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRhZyhkYXRhPU1rdm9iRm9y
bSgpKVsgZnJlZWZvcm0uY29uZmlndXJlIF0KICAgICAgICByZXR1cm4gIiIK
CiAgICBkZWYgY2hpbGRfZG8oc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIiIi
UmVkaXJlY3QgdG8gdGhlIGFwcHJvcHJpYXRlIGFjdGlvbiBoYW5kbGVyCiAg
ICAgICAgIiIiCiAgICAgICAgc2VsZi5zZWxlY3RlZF9tZW51X2l0ZW1zID0g
cmVxdWVzdC5wYXRoLnNwbGl0KCIvIilbMjpdCiAgICAgICAgcmV0dXJuIFJl
ZGlyZWN0KCIvIikKCgoKYXBwbGljYXRpb24gPSBzZXJ2aWNlLkFwcGxpY2F0
aW9uKCJtZW51c19hbmRfY29uZmlndXJhYmxlcyIpCmludGVybmV0LlRDUFNl
cnZlcigKICAgIDgwODAsCiAgICBhcHBzZXJ2ZXIuTmV2b3dTaXRlKHJlc291
cmNlPU15UmVuZGVyZXIoKSkKKS5zZXRTZXJ2aWNlUGFyZW50KGFwcGxpY2F0
aW9uKQo=

--_----------=_1071516766319720--