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 <atayl...@gmail.com> 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 <atayl...@gmail.com>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 <oliver...@gmx.net> 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 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.
>>>>>>> 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.
>>>> 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.

Reply via email to