Helpers in 0.9.7

30 views
Skip to first unread message

edgarsmolow

unread,
Mar 16, 2009, 5:06:09 PM3/16/09
to pylons-discuss
I recently began development with Pylons 0.9.7. The online docs
suggest using a function called url_for that should be in
myproject.lib.helpers.py. But, the file is essentially empty.

Is helpers.py supposed to come with any functions at all, or are we
supposed to write url_for (and any others mentioned in the docs)?

Thanks.
Edgar

John Dickson

unread,
Mar 16, 2009, 5:14:58 PM3/16/09
to pylons-...@googlegroups.com, edgarsmolow
Hi Edgar

You normally add the imports you want to helpers.py, which then makes them available as "h.some_import".  For example, I use the following line to get the url_for() function:

  from routes import url_for

Cheers ........................ JD

2009/3/17 edgarsmolow <edgar...@gmail.com>



--
   /Angle-parked in a parallel universe.../

edgarsmolow

unread,
Mar 16, 2009, 6:36:59 PM3/16/09
to pylons-discuss
Thanks, John, but that's not my question.
My question is not about how to access functions in the module. My
question is about why the documentation talks about using the url_for
() function, but it is not present in the module. Are we expected to
write it ourselves, or was there a problem in the WAY I set up the
application? For instance, perhaps I missed a step...

Thanks.
Edgar


On Mar 16, 5:14 pm, John Dickson <capts...@gmail.com> wrote:
> Hi Edgar
>
> You normally add the imports you want to helpers.py, which then makes them
> available as "h.some_import". For example, I use the following line to get
> the url_for() function:
>
> from routes import url_for
>
> Cheers ........................ JD
>
> 2009/3/17 edgarsmolow <edgarsmo...@gmail.com>

Wyatt Baldwin

unread,
Mar 16, 2009, 8:15:17 PM3/16/09
to pylons-discuss
Sounds like an error in the docs. In the particular case of
``url_for``, John's suggestion is probably what you want. Other "built
in" helpers can be found in the WebHelpers package. In earlier
versions of Pylons, helpers.py included these imports for you; now,
you import the ones you want.

John Dickson

unread,
Mar 16, 2009, 8:52:44 PM3/16/09
to pylons-...@googlegroups.com, edgarsmolow
Hi Edgar

OK, a minor misunderstanding there...

As far as I know, the helpers module is there for whatever *you* want to be easily available in the UI code for *your* app.  Pylons doesn't (and probably couldn't) provide a standard helpers.py that is right for every application.  This also seems to fit the pattern of the other modules generated in /config and /lib for your application

So, if you want to use a function like routes.url_for() in your UI, the easy way to achieve this is to import it in helpers.py (as I showed below) - then you can access it as h.url_for() in your controllers, templates etc.  It's also common to import things like "webhelpers.html.tags.*" etc., particularly for form handling.

Hope this helps ............................ JD

2009/3/17 edgarsmolow <edgar...@gmail.com>

Jose Galvez

unread,
Mar 16, 2009, 9:31:56 PM3/16/09
to pylons-...@googlegroups.com
I think the docs are a little out of sink with where pylons is at the
moment. Earlier versions of pylons imported a lot of stuff into the
helpers file so they were there by default, which is reflected in the
docs. Now however, your expected to import what you need, being
explicit rather then implicit. Having said that I know the docs are a
little out of since and thats really frustrating with new users. Read
the section on upgrading
http://pylonshq.com/docs/en/0.9.7/upgrading/ its pretty informative.

Jose

Philip Jenvey

unread,
Mar 17, 2009, 1:53:16 AM3/17/09
to pylons-...@googlegroups.com


The official docs here: http://pylonshq.com/docs/en/0.9.7/ don't refer
to url_for anywhere. The articles on the cookbook and also the online
copy of the book may be a little out of sync and still refer to
url_for/h.url_for. url_for still works, but the pylons.url global is
preferred.

--
Philip Jenvey

Edgar Smolow

unread,
Mar 17, 2009, 3:12:58 PM3/17/09
to John Dickson, pylons-...@googlegroups.com
Ok.  Now that I've got that straightened out, on to another problem. I'm using Pylons 0.9.7 with SQLAlchemy 0.5, but running into a problem when testing model functionality.  In particular, there's a Person object which is supposed to be stored in
the persons table.   Here's a test code snippet:

import sqlalchemy as sa
import w2t.model as model
import w2t.model.meta as meta

DB_URL = "mysql://userid:password@localhost/dbname"

engine = sa.create_engine(DB_URL)
model.init_model(engine)
session = meta.Session()
wilma = model.Person('Wilma','Flintstone')
wilma.acct_no = 'SOMEACCOUNTNUMBER'
wilma.gender = 'F'
print 'Wilma:',wilma
session.add(wilma)
meta.Session.commit()

Since neither meta.Session or session have an add method, an
AttributeError exception is raised.  But, I don't know the correct set
of calls to make to create a session.

Thanks.
Edgar


Reply all
Reply to author
Forward
0 new messages