Yes I struggle with it to make compute works...

I come up with something like this :

after .accepted

for f in db[request.args(0)].fields:
            if f != db[request.args(0)]._id and f !=
db[request.args(0)].record_review_status:
                form.vars[f] = form.vars.get(f,
db[request.args(0)](request.args(1))[f])

record_review_status being my compute field, so I make sure form.vars
contain all the missing values which for differents reason may lack from
SQLFORM and user input... But still not working, so I am confuse...

Richard

On Thu, Mar 5, 2015 at 3:17 PM, Niphlod <niph...@gmail.com> wrote:

> web2py doesn't know if a field has been edited or not. form.vars (for a
> standard web2py form) holds EVERY value, irregardless of the ones touched
> or not by the user...
>
> On Thursday, March 5, 2015 at 4:17:26 PM UTC+1, Richard wrote:
>>
>> Futher check make me confirm which I thought :
>>
>> **{f: v for f, v in form.vars.iteritems()}
>>
>> Prevent my compute to work since it return only the fields modify by the
>> user... I need to understand how web2py really update on form submit and
>> why compute works in this case...
>>
>> Or how can I make sure that every fields get update even if there is not
>> any values change which should be what web2py do...
>>
>> Richard
>>
>> On Wed, Mar 4, 2015 at 5:05 PM, Anthony <abas...@gmail.com> wrote:
>>
>>> The update should calculate the computed field as long as all the values
>>> needed for the calculation are included with the update.
>>>
>>> Anthony
>>>
>>>
>>> On Wednesday, March 4, 2015 at 4:55:01 PM UTC-5, Richard wrote:
>>>>
>>>> Thanks for answering Anthony,
>>>>
>>>> Actually f1 and f2 belongs to the table, I am filtering them because I
>>>> want to treat them separately...
>>>>
>>>> About your question, I am investigating why my compute didn't work...
>>>> My first impression is that it is not include in form.vars so it not get
>>>> hit at all... But I am not sure of that...
>>>>
>>>> Richard
>>>>
>>>> On Wed, Mar 4, 2015 at 4:44 PM, Anthony <abas...@gmail.com> wrote:
>>>>
>>>>> Does form.vars include all the variables needed by the compute
>>>>> function?
>>>>>
>>>>> Also, instead of:
>>>>>
>>>>> **{f: v for f, v in form.vars.iteritems()}
>>>>>
>>>>> you can do:
>>>>>
>>>>> **db[request.args(0)]._filter_fields(form.vars)
>>>>>
>>>>> _filter_fields will filter out the "id" field as well as any form.vars
>>>>> that are not fields in the table.
>>>>>
>>>>> Anthony
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Wednesday, March 4, 2015 at 4:35:37 PM UTC-5, Richard wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I need to do control record update in order to clear some fields
>>>>>> values in case a flag is set to false. But doing the update like this :
>>>>>>
>>>>>>
>>>>>> db(db[request.args(0)].id == request.args(1)).update(**{f: v for f,
>>>>>> v in form.vars.iteritems()})
>>>>>>
>>>>>> prevent a compute field to be trigger and updating properly as well...
>>>>>>
>>>>>> So, to make sure my compute field get it I am doing another update()
>>>>>> like this
>>>>>>
>>>>>>
>>>>>> db(db[request.args(0)].id == request.args(1)).update()
>>>>>>
>>>>>>
>>>>>> Which work in one case by not in the other where I actually clear
>>>>>> some values like this :
>>>>>>
>>>>>>
>>>>>> db(db[request.args(0)].id == request.args(1)).update(f1=None, f2=None
>>>>>> , **{f: v for f, v in form.vars.iteritems() if f not in ('f1', 'f2'
>>>>>> )})
>>>>>>
>>>>>>
>>>>>> Maybe I should do a db.commit() before my second "blank" update()
>>>>>> though it seems to me that it should be a better way and I am concern in
>>>>>> reducing db hit.
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Richard
>>>>>>
>>>>>>  --
>>>>> 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.
>

-- 
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