Thanks Richard. I will if I have time. I find these small fixes have a way of becoming bigger projects than I expect :)
Ian On Friday, August 14, 2015 at 10:27:53 AM UTC-4, Richard wrote: > > Ian, you may also just write your own widget for list:string that way it > should behave correctly... > > > http://web2py.com/books/default/chapter/29/07/forms-and-validators?search=widget#Widgets > > def my_string_widget(field, value): > return INPUT(_name=field.name, > _id="%s_%s" % (field._tablename, field.name), > _class=field.type, > _value=value, > requires=field.requires) > > Field('comment', 'string', widget=my_string_widget) > > > On Fri, Aug 14, 2015 at 9:50 AM, Ian W. Scott <scot...@gmail.com > <javascript:>> wrote: > >> I agree with Richard that the issue (or my issue at least) has to do with >> the widget, not with the internals of the field type or its validators. >> >> There are, I think, valid use cases in which you want to use a >> list-string field but can't know ahead-of-time what the possible values >> will be. In one of my forms I'm (using SQLFORM.factory) using a list:string >> field to enter a series of word sets that will be used to build a >> subsequent collection of quiz questions automatically. I don't want to have >> to define ahead of time all the word-sets I might choose! But I'm also not >> concerned about duplication because the entered word-sets are just being >> used temporarily for the quiz-question generation. This may seem like an >> edge case, but I've got several forms with similar legitimate uses of >> list:string without a pre-defined set of values. >> >> In fact, the widget I'm having trouble with (text input with links to add >> more inputs below) only appears with list:string fields that *don't* have >> IS_IN_SET or IS_IN_DB. So this kind of use -- entry of and arbitrary number >> of arbitrary strings -- seems to be exactly what the web2py widget was >> designed to handle. >> >> As such, I think this *is* a shortcoming of the widget that should be >> fixed. The widget is being used for its intended purpose, but it's not >> following the "keepvalues" behaviour set for the SQLFORM. I'll submit a >> ticket on github. >> >> Val K's suggestion isn't complete, partly because it's now bypassing the >> SQLFORM's own keepvalues setting entirely. But thanks for the suggestion >> and I'll think more about it. >> >> Ian >> >> On Friday, August 14, 2015 at 9:24:29 AM UTC-4, Richard wrote: >>> >>> You need to use form.vars at first... At the begining your form is >>> emptyl, so you need to get the inputed value from the form not from >>> request.vars... You take them form request.vars for field default but when >>> you redirect you need to pass the form.vars to url... >>> >>> But even then, I am not sure it will works... The problem seems more >>> about the list:string type field which doesn't know how to handel available >>> values except if you use IS_IN_SET()... >>> >>> Richard >>> >>> On Thu, Aug 13, 2015 at 4:53 PM, Val K <valq...@gmail.com> wrote: >>> >>>> Hello! >>>> Looks some terrible, but does what you want! >>>> Just paste in any controller and go to .../list_fld_keep_values_tst >>>> or you can preset list-values by URL('your_controller', ' >>>> list_fld_keep_values_tst', vars=dict(defs=['val_1','val_2','val_3'])) >>>> >>>> def list_fld_keep_values_tst(): >>>> >>>> frm=SQLFORM.factory( Field('fld_lst', 'list:srting', default = >>>> request.vars.defs) ) >>>> if frm.process().accepted: >>>> >>>> #place your code here, before redirect! >>>> >>>> session.flash='Well are you happy now? Let me know in any >>>> case!' >>>> redirect(URL('list_fld_keep_values_tst', vars=dict(defs=request >>>> .vars.fld_lst) )) >>>> elif frm.errors: >>>> #do any >>>> response.flash='there are errors!' >>>> return dict(frm=frm) >>>> >>>> >>>> >>>> >>>> On Wednesday, June 25, 2014 at 6:33:26 PM UTC+3, Ian W. Scott wrote: >>>>> >>>>> I've got a SQLFORM.factory form set to keep values after processing >>>>> with process(keepvalues=True). But it doesn't work on a list:string >>>>> field. >>>>> The (otherwise very nice) widget loses all but the first value when the >>>>> form is submitted (i.e., all but the first text inputs for the field >>>>> disappear). Is there any way to carry those other text inputs and their >>>>> values over? >>>>> >>>>> >>>>> -- >>>> Resources: >>>> - http://web2py.com >>>> - http://web2py.com/book (Documentation) >>>> - http://github.com/web2py/web2py (Source code) >>>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "web2py-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to web2py+un...@googlegroups.com. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> Resources: >> - http://web2py.com >> - http://web2py.com/book (Documentation) >> - http://github.com/web2py/web2py (Source code) >> - https://code.google.com/p/web2py/issues/list (Report Issues) >> --- >> You received this message because you are subscribed to the Google Groups >> "web2py-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to web2py+un...@googlegroups.com <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.