Ref about my search on this topic : RANDOM : NO ORDER
Here the funding thread of WTForms FormBase : http://groups.google.com/group/wtforms/browse_frm/thread/c8b5f5d98c41a6d2/6e69c5c4e820fd7b?lnk=gst&q=subform#6e69c5c4e820fd7b <http://groups.google.com/group/wtforms/browse_frm/thread/c8b5f5d98c41a6d2/6e69c5c4e820fd7b?lnk=gst&q=subform#6e69c5c4e820fd7b> Subform seems a long awaiting feature : http://groups.google.com/group/web2py/browse_thread/thread/8d50fd87d0f2e233?pli=1 http://groups.google.com/group/web2py/browse_thread/thread/4cc5d30600c628bb http://web2py.uservoice.com/forums/42577-general/suggestions/525773-create-a-new-form-system-?ref=title Here the funding thread of WTForms FormBase : http://groups.google.com/group/wtforms/browse_frm/thread/c8b5f5d98c41a6d2/6e69c5c4e820fd7b?lnk=gst&q=subform#6e69c5c4e820fd7b Looks like a solution : http://wtforms.simplecodes.com/ Django inline formset : http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets There is also this : http://code.google.com/p/django-dynamic-formset/ That I already post above... That is something like what I did on cocaine for django ;-) Richard On Wed, Feb 2, 2011 at 10:34 PM, Richard Vézina <ml.richard.vez...@gmail.com > wrote: > The app I had attached in the preceding email works, but it broke the > workflow. I can't get the added inputs values in form.vars, so I take them > from request.vars or somewhere else don't remember... > > There is also an other problem with this hack... It not uses de validators > for all the inputs... So as long as there is one filled input the form > submit and the other added inputs will let pass empty value or if you prefer > NULL will be inserted. > > But at least you will be able to add all the field you want no matter how > many field the subform contain... Remove the added field you no more want if > you add to much inputs. > > Submit and the data will be all linked or related to the id of the record > of the "master" table or the base table form. > > The jQuery script has to be edited by hand for each subform (or subtable > you use). If you modify your subtable (add a field) you will have to go > change the jQuery script... I just tried to make a proof of concept and see > what were the limits... So nothing fancy with the code. There is also a > couple of jQuery lines that were not working properly in this version I > think. > > Ha yeah there is an other issue on read or update... There is no way to > make it works with crud.read or crud.update (I did not try anything about > that when I realize I broked the workflow). > > Also, there is no way to make SQLFORM.factory works on update or read (edit > your linked data)... At least there is no easy already available way. You > have to crud.update on subtable and master table independantly to make any > change after the first seizure. > > I did not have time last week to continue to work on that. > > I identified differents alternatives that I did not explored in details yet > : > > 1) There is a "lib" in django for doing exactly that. I don't know django, > but the basic (tutorial 1, 2, 3, 4). > > 2) There is also Pyjamas that could be use into web2py... It seems to me > the most cumbersome alternative, since I have to learn many differents > things. > > 3) WTForms... I also have to learn a lot to figure out if it could work > with web2py or if it has to be stand alone. If it needs work separately I > actualy think to explore if a loosely coupled framework could be more > reliable for my needs (Flask, WTForms, WSGI, jinja...) > > That where I am... > > I appreciate any help to push further the reflexion or build something... > > Richard > > > On Wed, Feb 2, 2011 at 6:45 PM, skwasha <sas...@umich.edu> wrote: > >> I'm curious if you ever got this all figured out? I wanna do something >> similar (allow users to create lists of things of arbitrary list >> length.) I'm new to web2py myself, so if you had something working >> you'd be willing to share it'd be of great interest/help. >> >> thanx >> >> On Jan 24, 11:27 am, Richard Vézina <ml.richard.vez...@gmail.com> >> wrote: >> > Found this : >> > >> > http://code.google.com/p/django-dynamic-formset/ >> > >> > <http://code.google.com/p/django-dynamic-formset/>Richard >> > >> > On Fri, Jan 21, 2011 at 3:34 PM, Richard Vézina < >> ml.richard.vez...@gmail.com >> > >> > >> > >> > > wrote: >> > > Hello, >> > >> > > Here a version 0.00001 pre pre before alpha [?] >> > > (see attachement) >> > >> > > But it works... >> > >> > > There is code in : >> > >> > > layout.html in head : js that I move there to get debug web2py button >> (no >> > > view) >> > > default controller : register_new function and a couple of other >> functions >> > >> > > default/register_new >> > >> > > Add row button add all the rows you want. Fill it up submit... Go >> admin >> > > db.address see that there is a row for each added input for street and >> city. >> > >> > > Didn't test it to much. >> > >> > > I had to use request.vars to get street2, city2, etc. inputs that were >> > > filtered by .accept() >> > >> > > Validators not working for the added inputs... If one input is fill >> for >> > > required field it will pass and null will be entered in db.address for >> empty >> > > input. >> > >> > > Richard >> > >> > > On Wed, Jan 19, 2011 at 10:21 AM, Richard Vézina < >> > > ml.richard.vez...@gmail.com> wrote: >> > >> > >> If you move the script into the layout.html in the head it still >> works... >> > >> You can then remove the view /view/default/register.html_ >> > >> > >> So you get access to admin, request, session, response button to see >> what >> > >> going. You can see that city2 vars is store in session for example. >> > >> > >> Richard >> > >> > >> On Wed, Jan 19, 2011 at 10:17 AM, Richard Vézina < >> > >> ml.richard.vez...@gmail.com> wrote: >> > >> > >>> For now only adding and removing city input. I clone city input >> retag >> > >>> id='city' to id='city2' for the first clone and so on. I change all >> the id >> > >>> attribute of other tag cloned like divs. I had a garbage can icon >> and make >> > >>> it mouseover. That it for now. >> > >> > >>> Since I change the id of input to city2, city3 all those cloned >> input are >> > >>> not consider by the register controller for now. I have to figure >> out how >> > >>> _filter_fields works to modifying it (add regex hope it will work). >> Then I >> > >>> would like the controller to add as many rows in the "subform" or >> table2 >> > >>> (address table) as there is cloned city input fields. >> > >> > >>> If I am not changing the id of input it will not be w3c html >> compliant, >> > >>> but web2py will insert all the added input filled into city field of >> address >> > >>> table like this : >> > >> > >>> |city1|city2|city3|etc| >> > >> > >>> Not bad but not normalized schema and possibly problematic if length >> of >> > >>> city field is fixed or using to much space for nothing. >> > >> > >>> If you feel that you know how to modify register function I will be >> glad >> > >>> for your help. >> > >> > >>> When it read, we could had a new recipe into the book ;-) >> > >> > >>> Richard >> > >> > >>> On Wed, Jan 19, 2011 at 9:48 AM, mart <msenecal...@gmail.com> >> wrote: >> > >> > >>>> Excellent! je prends le train, direction MTL, a tous les quelques >> mois >> > >>>> pour me rendre au bureau (peut-etre un peu moins souvent l'hiver ;) >> ) >> > >> > >>>> SO, I have a question: Once, I use the button to add a field (which >> > >>>> does work well), what should be the expected back-end result? does >> one >> > >>>> of the tables get updated? or should a new table get generated >> based >> > >>>> on input type? How about a Field name? generic one name fits all >> (or >> > >>>> depends on type?) >> > >> > >>>> Mart :) >> > >> > >>>> On Jan 19, 9:12 am, Richard Vézina <ml.richard.vez...@gmail.com> >> > >>>> wrote: >> > >>>> > ;-) Originellement oui... >> > >> > >>>> > I would tell you on the orther thread that I post this one... I >> will >> > >>>> do it >> > >>>> > just for the one that fall on the orther thread so they could >> keep >> > >>>> track... >> > >> > >>>> > I continue today working on this. >> > >> > >>>> > Richard >> > >> > >>>> > On Wed, Jan 19, 2011 at 12:30 AM, mart <msenecal...@gmail.com> >> wrote: >> > >>>> > > Hey, es-tu de Montreal? >> > >> > >>>> > > On Jan 18, 7:08 pm, Richard Vézina < >> ml.richard.vez...@gmail.com> >> > >>>> > > wrote: >> > >>>> > > > I forgot to paste : >> > >> > >>>> > > > def register(): >> > >>>> > > > form=SQLFORM.factory(db.client, db.address, formstyle = >> > >>>> 'divs') #, >> > >>>> > > > table_name='dummy_name') >> > >>>> > > > if form.accepts(request.vars): >> > >>>> > > > id = >> > >>>> db.client.insert(**db.client._filter_fields(form.vars)) >> > >>>> > > > form.vars.client=id >> > >>>> > > > id = >> > >>>> db.address.insert(**db.address._filter_fields(form.vars)) >> > >>>> > > > response.flash='Thanks for filling the form' >> > >>>> > > > return dict(form=form) >> > >> > >>>> > > > What to do for what in red? >> > >> > >>>> > > > I think _filter_fields is the key of the problem... >> > >> > >>>> > > > I didn't have a look to it actually... >> > >> > >>>> > > > Richard >> > >> > >>>> > > > On Tue, Jan 18, 2011 at 7:00 PM, Richard Vézina < >> > >>>> > > ml.richard.vez...@gmail.com >> > >> > >>>> > > > > wrote: >> > >>>> > > > > Hello Massimo, >> > >> > >>>> > > > > I am trying to insert data in 2 tables from one form... I >> would >> > >>>> like to >> > >>>> > > be >> > >>>> > > > > able to insert any number of rows or records in the >> subtable. >> > >> > >>>> > > > > I build this test app (see attach)... All the work I did is >> > >>>> mostly in >> > >>>> > > > > /default/register.html where there is jQuery script that >> allow >> > >>>> adding >> > >>>> > > new >> > >>>> > > > > city input and delete new city input... >> > >> > >>>> > > > > I built it from scratch for Web2py inspired by : >> > >> > >>>> >> http://charlie.griefer.com/blog/index.cfm/2009/9/17/jQuery--Dynamical. >> > >>>> > > .. >> > >> > >>>> > > > > What should I do in register to allow the function to >> insert all >> > >>>> the >> > >>>> > > filled >> > >>>> > > > > city clone field?? >> > >> > >>>> > > > > Next step will be adapted my script that it manage all the >> > >>>> subform >> > >>>> > > columns >> > >>>> > > > > instead of only one. >> > >> > >>>> > > > > Thanks. >> > >> > >>>> > > > > Richard >> > >> > 330.gif >> > < 1KViewDownload > > >