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.