awesome, if I had that like 2 weeks ago use case here: http://semanticsbml.org/semanticSBML/ add multiple models with Add a BioModel then press diff/merge/split a big treetable will appear where in the left you can select elements to be copied to the new model it can be one or many elements, i wrote alot of ugly code like if isinstance(request.vars.element_doc_id,str): do foo... else: for edi in request.vars.element_doc_id: do foo...
thank you :) ps sry i will not start to explain what this application does ... On Aug 21, 2:22 pm, mdipierro <[email protected]> wrote: > I never needed this but I have no opposition to include them. > Could you provide a use case? > What do other people think? > > On Aug 21, 12:27 am, Kevin <[email protected]> wrote: > > > > > Hi, > > > this is a proposed patch to add global functions for accessing values > > from (in particular) request.vars and friends (any dictionary-like > > object will work) in a way that (safely) satisfies the assumption that > > the input vars for a given key are either singletons or lists. > > > The functions are rather simple: > > > Given the request: /a/b/c?x=abc > > getfirst(request.vars, 'x') -> 'abc' > > getlast(request.vars, 'x') -> 'abc' > > getall(request.vars, 'x') -> ['abc'] > > > Given the request: /a/b/c?x=abc&x=def > > getfirst(request.vars, 'x') -> 'abc' > > getlast(request.vars, 'x') -> 'def' > > getall(request.vars, 'x') -> ['abc', 'def'] > > > getall(request.vars, 'y') -> None > > getall(request.vars, 'y') or [] -> [] > > > If there is anything like this already, I certainly will retract my > > suggestion. The potentially controversial parts are that the > > functions are defined in gluon.utils (I couldn't find a more logical > > place to put them, and it makes no difference to me where they end > > up), and they're loaded into the request environment, just like the > > html helpers. > > > Patch can be found at:http://pastebin.com/g6Vs9PrU > > > Background/motivation: > > > This function group is inspired by the behavior of <http:// > > pythonpaste.org/webob/reference.html#query-post-variables> and similar > > functionality that other frameworks provide, and would be particularly > > useful in cases where the client-side code is not managed by something > > like web2py's FORM interface -- as of version 1.83.2, web2py prepares > > a Storage instance such that: > > > /a/b/c?x=5 -> request.vars.x == '5' > > /a/b/c?x=5&x=abc -> request.vars.x == ['5', 'abc'] > > > This could lead to naive code like the following to fail with some > > simple request fakery: > > > if request.vars.search.upper().startswith('FUZZY'): pass # some real > > code here > > > It's possible that this kind of fakery could also lead to many of the > > web2py validators failing in common cases (though I haven't looked > > into that much). > > > However, it is often allowable that the first (or last) value passed > > is authoritative, leading to a more robust system.

