The problem is that web2py does not like spaces '%20' in url and replaces them with underscore.
On Apr 4, 7:20 am, annet <annet.verm...@gmail.com> wrote: > After upgrading to web2py version 1.76.5 one of the functions I > defined no longer works. > > I defined a table newsmonth: > > db.define_table('newsmonth', > > db.Field('number',type='integer',length=2,default='',notnull=True), > db.Field('month',length=14,default='',notnull=True,unique=True), > db.Field('publish',type='boolean'), > migrate=False) > > ... which I use to display archived news items per month. Number is > the number of the month e.g April 4. Month is a string, for April it > reads like: April 2010. Publish defaults to false and is set to true > on the 1st of the next month. > > In the view I have a list with links: > > March 2010 > february 2010 > january 2010 > > When the visitor clicks March 2010, the news table is queried: > > def archive(): > > months=db(db.newsmonth.publish==True).select(db.newsmonth.ALL,orderby=~db.newsmonth.id) > news=[] > month=[] > if request.args: > news=db(db.news.publishing_date.month()==request.args[0])\ > .select(db.news.ALL,orderby=~db.news.publishing_date) > month=request.args[1] > if not news: > response.flash='Select an archived month' > else: > response.flash='Select an archived month' > return dict(months=months,news=news,month=month) > > month is set to request.args[1], i.e March 2010, and returned to the > view: > > <div id="twoColLayout"> > <div id="primarycontent"> > .... > <div id="month"> > <h3>Nieuws {{=month.replace('_',' ')}}</h3> > <table> > <thead> > <tr> > <td></td> > </tr> > </thead> > <tbody> > {{for item in news:}} > <tr> > <td> > > <h5>{{=db.news.publishing_date.formatter(item.publishing_date)}}</h5> > </td> > <td> > > {{=A(item.title,_onmouseover="this.style.cursor='pointer';",\ > > _onclick="javascript:newsdetails('%s')"%URL(r=request,f='details',args=[item.id]))}} > </td> > </tr> > {{pass}} > </tbody> > </table> > </div> <!-- month --> > </div> <!-- primarycontent --> > <div id="sidecontent"> > <div class="sidebox"> > <h3>Archived months:</h3> > <table> > <tbody> > {{for month in months:}} > <tr> > <td> > > {{=A(month.month,_href=URL(r=request,args=[month.number,month.month]))}} > </td> > </tr> > {{pass}} > </tbody> > </table> > </div> <!-- sidebox --> > </div> <!-- sidecontent --> > </div> <!-- twoColLayout --> > > When I expose the archive function, the view displays well. The URL > reads like:http://127.0.0.1:8000/init/news/archive > > However, when I click one of the archived months links I get an > invalid request error. > > The link in the view reads like: <a href="init/news/archive/3/March > %202010">March 2010</a> > > ... the URL in the browser reads > like:http://127.0.0.1:8000/init/news/archive/3/March%202010 > > Since the function works without args, I suppose the error has > something to do with the args, the porblem is I can't figure out what. > > Kind regards, > > Annet. -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.