[Zope] z3c.form with Boring [Re: trivial: hello world...]
David Zejda
dvid at atlas.cz
Thu Mar 19 07:24:02 EDT 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Tim, thanks,
I'm playing with a simple product called JWFind, derived from Boring
now. The product sits in the products directory, can be added and
removed using ZMI, it is all OK.
Because I'm willing to use it in Plone, the Zope version is 2.10.6-final.
Now, I'm trying to handle the view of product using form made of
z3c.form. There is a problem. Currently, I'm getting
Traceback (innermost last):
Module ZPublisher.Publish, line 119, in publish
Module ZPublisher.mapply, line 88, in mapply
Module ZPublisher.Publish, line 42, in call_object
Module Products.JWFind.JWFind, line 55, in index_html
Module z3c.form.form, line 189, in __call__
Module z3c.form.form, line 184, in update
Module z3c.form.form, line 134, in update
Module z3c.form.form, line 120, in updateWidgets
Module zope.component._api, line 103, in getMultiAdapter
Module zope.component._api, line 103, in getMultiAdapter
ComponentLookupError: ((<Products.JWFind.Person.Person object at
0xb5003b2c>, <HTTPRequest, URL=http://localhost:8091/pokus/index_html>,
<JWFind at /pokus>), <InterfaceClass z3c.form.interfaces.IWidgets>, u'')
I guess, the error tells, that something implementing ``IWidgets``
cannot be found. But, I have no idea, how to deal with it. Maybe, should
I prepare the specific layer and skin to be able to use z3cforms and If
so, how to do it and especially how to register it properly? Or is there
a problem with the form definition itself? Or should I register
something to zope in addition to registration made in __init__?
The relevant part of product source JWFind.py:
def index_html(self, REQUEST=None):
"""JWFind Form"""
out = Person(self, REQUEST)()
return out.PersonView
The form is in separate file Person.py:
from zope import interface, schema
from z3c.form import form, field, button
from plone.app.z3cform.layout import wrap_form
class IPerson(interface.Interface):
age = schema.Int(
title=u"Age",
required=True)
class Person(form.Form):
fields = field.Fields(IPerson)
ignoreContext = True # don't use context to get widget data
label = u"Please enter your age"
@button.buttonAndHandler(u'Apply')
def handleApply(self, action):
data, errors = self.extractData()
print data['age'] # ... or do stuff
PersonView = wrap_form(Person)
The whole source is attached.
Please, any ideas?
Thanks a lot..
David
Tim Nash napsal(a):
> If you want simple:
> 1. download this product and put it into your products directory.
> http://www.zope.org/Members/gtk/Boring
> 2. Start Zope and go to 127.0.0.1:8080/manage and add the Boring product.
> Click test, there is your url.
> 3. Modify the 'Boring' code and repeat.
>
> -Tim
>
> On Tue, Mar 10, 2009 at 3:06 PM, David Zejda <dvid at atlas.cz> wrote:
>
> Thanks for a tips,
>
> I have looked on the Guide you suggested.
> I think I understand the concepts, but still missing something.
> To make the simplest case,
>
> 1. I started with fresh instance prepared by the paster,
> 2. created this source:
>
> # src/my.py
> class Contact(object):
> "blah blah"
>
> firstName = "aaaa"
>
> c = Contact()
>
> 3. to the sys.path in bin/instance added the "/path/to/src" (which
> contains my.py),
> 4. started instance and checked, that the /path/to/src is on loaded
> sys.path,
> 5. pointed browser to localhost:8091/c/firstName .
>
> Resource c not found, Zope says. Yes, it can't be SO simple, but
> please, what should I do?
>
> Thanks for your patience..
>
> David
>
> Lennart Regebro napsal(a):
>>>> On Sat, Mar 7, 2009 at 23:21, David Zejda <dvid at atlas.cz> wrote:
>>>>> And now, please, what to do now, to have a few python lines somewhere in
>>>>> the egg dir, which the zope would know how to deal with?
>>>> The "egg dir" as you call it is a Python module, and you put Python
>>>> code there. Zope knows how to deal with it, that is not the problem.
>>>> What you need to do is get the Python code to deal with Zope. :)
>>>>
>>>>> And on what url will be the "hello world" available then?
>>>> That is completely up to you. :)
>>>>
>>>>
>>>> The question now, is this Zope 3 or Zope 2?
>>>>
>>>> For Zope 3, you should probably get a book. http://worldcookery.com/
>>>> There was another book to in the beginning of Zope 3, but I don't know
>>>> it has been updated.
>>>> You could also, for Zope 3, opt to use Grok, which is a framework
>>>> built on Zope 3 that makes Zope 3 easier: http://grok.zope.org/
>>>>
>>>> For Zope 2, you can start here:
> http://docs.zope.org/zope2/zdgbook/source/
>>>> Then, you should probably buy the above book too. Zope 3 technologies
>>>> are getting very common in Zope 2.
>>>>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iEYEARECAAYFAknCK1IACgkQ3oCkkciamVGtDACfTe7/Nj9NBsTRPAOBkOowN6lJ
31YAnAlz37ZuBgcNylLDbIyaTQDEw9yn
=uJ4o
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: JWFind.tar.gz
Type: application/gzip
Size: 2483 bytes
Desc: not available
Url : http://mail.zope.org/pipermail/zope/attachments/20090319/edb8be8b/attachment.bin
More information about the Zope
mailing list