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.

Reply via email to