I like option 3) but I think having __call__ and __getattr__ is much
"magic" to a new web2py user I think. It can cause confusion and must
be well documented.

On 5/23/09, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> other options that will leave the current syntax unchanged
>
> 1) request.args.one, request.args.two, ... request.args.last
>
> 2) request.args.first, request.args.second, ... request.args.last
>
> 3) request.args(0), request.args(1), ... request.args(-1)
>
> 4) request.args.get(0,None), request.args.get(1,None), ...
> request.args.get(-1,None)
>
> all default to None
>
>
> On May 23, 4:34 pm, carlo <syseng...@gmail.com> wrote:
>> I am definitely with AchipA this time: no need to change request.args
>>
>> carlo
>>
>> On 23 Mag, 21:32, AchipA <attila.cs...@gmail.com> wrote:
>>
>> > Hang on, not sure if we're talking about the same thing. Style, as in
>> > preference of 'if' over 'try' is okay to discuss (although I think
>> > *forcing* people to use 'if' is wrong). This proposed change, however,
>> > inherently BREAKS backward compatibility, as seen from my example, for
>> > anybody using the EAFP approach (myself included). That was my first
>> > concern. Are we okay with this breakage ?
>>
>> > On May 23, 6:34 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>>
>> > > request.args is a special list anyway because it could be made
>> > > readonly and because its elements can only be non-empty strings. This
>> > > is why I have difficuly seeing how this will create conflicts.
>>
>> > > I like the fact it would allow to do
>>
>> > >    record = db.table[request.args[0]] or redirect(...)
>>
>> > > when you expect a valid record_id in request.args[0]. It is much
>> > > shorter than
>>
>> > >    record = db.table[request.args[0] if request.args else None] or
>> > > redirect(...)
>>
>> > > which would not work on python 2.4.
>>
>> > > List only breaks checking for existence using try/except but using
>> > > try/
>> > > except to determine whether args[i] is a valid argument is not a good
>> > > programming style in my opinion (although I am as guilty of using it
>> > > as anybody else).
>>
>> > > Let's wait for more comments anyway.
>>
>> > > Massimo
>>
>> > > On May 23, 11:15 am, AchipA <attila.cs...@gmail.com> wrote:
>>
>> > > > Env and vars are somewhat different, being dicts. The Proper (TM)
>> > > > way
>> > > > for those would be target = request.vars.get('myoptionalvar', None).
>> > > > The reason this is the Proper (TM) way is that you *have* to know
>> > > > when
>> > > > you're handling undefined data (is that a None ? Or a '' ? Maybe 0
>> > > > ?)
>> > > > You can't just throw in a None in a middle of a controller and hope
>> > > > it
>> > > > works out (often trading an IndexError for an even harder to debug
>> > > > 'unsupported operand type for None'. That would be the PHP way. Easy
>> > > > on beginners - yes, effect on code quality - terrible. But let's
>> > > > wait
>> > > > on further comments.
>>
>> > > > On May 23, 5:42 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>>
>> > > > > yes but we do this already for request.vars and request.env
>>
>> > > > > anyway, I am not sure about myself about this. Let's here a few
>> > > > > comments about this can I can revert it.
>>
>> > > > > Massimo
>>
>> > > > > On May 23, 10:29 am, Alexey Nezhdanov <snak...@gmail.com> wrote:
>>
>> > > > > > On Saturday 23 May 2009 18:42:58 AchipA wrote:> Tt does break
>> > > > > > existing properly written python code (and is very non-
>> > > > > > > pythonesque).
>>
>> > > > > > +1 except for harshness. Masking exceptions is a BAD THING (TM)
>>
>> > > > > > > Think:
>>
>> > > > > > > try: target = request.args[0]
>> > > > > > > except:
>> > > > > > >    response.flash = 'No target specified'
>> > > > > > >    return
>>
>> > > > > > > do_something(target)
>> > > > > > > If this is an issue for people, I think they should improve
>> > > > > > > their
>> > > > > > > python skills (learn exceptions, for arg in request.args
>> > > > > > > constructs),
>> > > > > > > and not fight the language by framework-specific workarounds.
>> > > > > > > They
>> > > > > > > will benefit from it much more on the long run (as they are
>> > > > > > > bound to
>> > > > > > > have the same IndexError or KeyError problem anyway, just
>> > > > > > > someplace
>> > > > > > > else). My 0.02c.
>>
>> > > > > > --
>> > > > > > Sincerely yours
>> > > > > > Alexey Nezhdanov
>>
>>
> >
>


-- 
 Álvaro Justen
 Peta5 - Telecomunicações e Software Livre
 21 3021-6001 / 9898-0141
 http://www.peta5.com.br/

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@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
-~----------~----~----~----~------~----~------~--~---

Reply via email to