Upgrade to 2.9.5 web2py 2.3 is very old... Consider using 2.7 for python...
http://stackoverflow.com/questions/1747817/python-create-a-dictionary-with-list-comprehension You can adapt Richard On Fri, May 2, 2014 at 3:44 PM, LoveWeb2py <[email protected]> wrote: > Okay... I think I see the issue. My web2py is running Python 2.6 and my > Interpreter is 2.7. dictionary comprehension changed between those > versions. I'm going to try and construct a dict comprehension for 2.6 and > try it again. > > > On Friday, May 2, 2014 3:40:53 PM UTC-4, LoveWeb2py wrote: >> >> Okay quick update: >> >> I loaded a row into python to test the comprehension. >> row = db(db.table.id>0).select().first() >> >> {f: row[f] for f in db.table.fields} prints out the list fine and its >> exactly how I"d like to prepopulate my field on the transition form. Thank >> you for getting me this far. >> >> However when I try to type vars={f: row[f] for f in db.table.fields})))] >> I get invalid syntax and the ^ points to the for in the dict comprehension. >> When I use regular python it works fine. Any thoughts? >> >> On Friday, May 2, 2014 3:16:24 PM UTC-4, LoveWeb2py wrote: >>> >>> I just realized I might be running into problems because I'm using 2.3. >>> I haven't upgraded because the new web2py threw my css off. It looks like >>> you're referencing the virtual fields? >>> >>> http://web2py.com/books/default/chapter/29/06/the- >>> database-abstraction-layer#Old-style-virtual-fields >>> >>> If you think I should upgrade i'll make the change, but if I could stick >>> with 2.3 I would prefer to do so >>> >>> On Friday, May 2, 2014 3:10:15 PM UTC-4, LoveWeb2py wrote: >>>> >>>> for this part: {f: row[f] for f in db.table.fields} >>>> >>>> what do I put for fields... could I just leave it as fields? >>>> >>>> >>>> >>>> On Friday, May 2, 2014 11:16:09 AM UTC-4, Richard wrote: >>>>> >>>>> Yes, so you want to pas by a transitionnal form with the data preset >>>>> base on the copied record values, where you can make the change you want >>>>> before submit the form. So if you have a grid where you can select the >>>>> record to copy with the icon you want that link to the transitionnal form, >>>>> you just have to pass the value of the record to the form throught out URL >>>>> vars... You can iter like that : >>>>> >>>>> SQLFORM.grid(..., links=[dict(header='', body=lambda row: >>>>> A(I(_class='icon some_icon'), _href=URL('transitionnal_form', >>>>> vars={f: row[f] for f in db.table.fields}))))],) >>>>> >>>>> This part : >>>>> {f: row[f] for f in db.table.fields} >>>>> >>>>> Is a dict comprehension... >>>>> >>>>> Then in transitionnal form controller you do something like that : >>>>> >>>>> def transition_form(): >>>>> for f, v in request.vars: >>>>> db.table[f].default = v >>>>> form = SQLFORM(db.table, ...) >>>>> ... >>>>> >>>>> >>>>> Richard >>>>> >>>>> >>>>> On Fri, May 2, 2014 at 10:18 AM, LoveWeb2py <[email protected]>wrote: >>>>> >>>>>> Basically... right now I have a magnifying glass, the pencil, and a >>>>>> trash can for my records. I want to add a plus next to each one of my >>>>>> records and when I click on the plus it copies that records values into a >>>>>> new record and creates a new ID. >>>>>> >>>>>> I can then modify some of the values in the record or keep it the >>>>>> same if I choose. Does that make sense? >>>>>> >>>>>> >>>>>> On Friday, May 2, 2014 9:57:23 AM UTC-4, LoveWeb2py wrote: >>>>>>> >>>>>>> This is very helpful, Richard. I have about 20 fields so I think I >>>>>>> would have to iterate through the fields and insert the request.vars to >>>>>>> the >>>>>>> database. >>>>>>> >>>>>>> Ahhh after looking at your code it looks like that could would write >>>>>>> a record from one table to another. In this case I just want to copy a >>>>>>> record from the same table and insert the record as a new ID. >>>>>>> >>>>>>> I think the answer will be a combination of your and Oli's approach. >>>>>>> >>>>>>> >>>>>>> On Friday, May 2, 2014 9:39:46 AM UTC-4, Richard wrote: >>>>>>>> >>>>>>>> What do you mean? >>>>>>>> >>>>>>>> You can redirect (A('Link', _href=URL(controler, function, >>>>>>>> vars=dict(pass_your_record_vars_here=record_vars1, ...))) to a >>>>>>>> function that do what I wrote above... Just pass record value throught >>>>>>>> vars >>>>>>>> then request.vars.field1 request.vars.field2 and assign .default= >>>>>>>> request.vars.field1 >>>>>>>> >>>>>>>> Richard >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, May 2, 2014 at 9:33 AM, LoveWeb2py <[email protected]>wrote: >>>>>>>> >>>>>>>>> Richard, >>>>>>>>> >>>>>>>>> How do I assign this to a button though? >>>>>>>>> >>>>>>>>> >>>>>>>>> On Friday, May 2, 2014 9:30:21 AM UTC-4, Richard wrote: >>>>>>>>> >>>>>>>>>> keepvalues >>>>>>>>>> >>>>>>>>>> or >>>>>>>>>> >>>>>>>>>> row = db(...).select(db.table.record).first() >>>>>>>>>> >>>>>>>>>> db.other_table.field1.default = row.field >>>>>>>>>> >>>>>>>>>> form = SQLFORM(db.table, ...) >>>>>>>>>> >>>>>>>>>> Richard >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Fri, May 2, 2014 at 9:07 AM, Oli <[email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> I hope this help. >>>>>>>>>>> >>>>>>>>>>> def copy_and_edit(): >>>>>>>>>>> """ >>>>>>>>>>> copy_and_edit >>>>>>>>>>> """ >>>>>>>>>>> record = db.t_disciplin(request.args[0]) >>>>>>>>>>> >>>>>>>>>>> vals = {} >>>>>>>>>>> for k,v in record.items(): >>>>>>>>>>> if k in db.t_disciplin.fields: >>>>>>>>>>> if k == 'f_title': >>>>>>>>>>> v = v + "_copy" >>>>>>>>>>> recname = str(v) # Needed to redirect the page >>>>>>>>>>> to the right record >>>>>>>>>>> if k != 'id': >>>>>>>>>>> vals[k] = v >>>>>>>>>>> >>>>>>>>>>> db.t_disziplin.insert(**vals) >>>>>>>>>>> >>>>>>>>>>> rec = db(db.t_disziplin.f_title == recname).select().first() >>>>>>>>>>> rec_id = rec.id >>>>>>>>>>> >>>>>>>>>>> # redirect for edit the new record >>>>>>>>>>> redirect(URL(r=request, f='konstanten/t_disciplin/edit >>>>>>>>>>> /t_disciplin',args=str(rec_id))) >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Am Freitag, 2. Mai 2014 14:29:26 UTC+2 schrieb LoveWeb2py: >>>>>>>>>>> >>>>>>>>>>>> Hello, >>>>>>>>>>>> >>>>>>>>>>>> There are many times when I just want to copy the values of one >>>>>>>>>>>> record in my sqlform and create a new record, but modify the >>>>>>>>>>>> content and >>>>>>>>>>>> save it. Is there an easy way to do this with web2py or would I >>>>>>>>>>>> have to >>>>>>>>>>>> write the code? >>>>>>>>>>>> >>>>>>>>>>>> Many thanks >>>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> 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 [email protected]. >>>>>>>>>>> >>>>>>>>>>> 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 [email protected]. >>>>>>>>> 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 [email protected]. >>>>>> 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 [email protected]. > 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 [email protected]. For more options, visit https://groups.google.com/d/optout.

