Ok, I think I solve my issues... I had many issues :
First has you said the compute field were not receive all it needs. I solve
this one like this :
form.process().accepted:
for r in session.rows:
row = db[request.args(0)](r.id)
row.update_record(review='TRUE', other_field1=row.other_field1,
etc.)
But there were still a little issue in the way : reveiw='TRUE'
Since in my compute function I was checking for review is True, it was not
working since 'TRUE' was not translated into True because the record wasn't
inserted yet, so I guess my compute function was receiving the raw input.
Damn it!
:)
So now :
row.update_record(review=True, other_field1=row.other_field1, etc.)
Works fine...
Thanks for help.
Richard
On Tue, Jun 25, 2013 at 9:58 AM, Richard Vézina <[email protected]
> wrote:
> I will try to pack a little app...
>
> Richard
>
>
> On Fri, Jun 21, 2013 at 4:40 PM, Massimo Di Pierro <
> [email protected]> wrote:
>
>> It should. Can you provide a concrete example?
>>
>>
>> On Friday, 21 June 2013 10:31:45 UTC-5, Richard wrote:
>>
>>> Further code review lead me to the conclusion that the issue is not
>>> because compute don't get all it needs to compute... I mean I get the row
>>> and since it is a update every field are available in the row and I still
>>> need to redefine the compute field...
>>>
>>> Should computed field computes on db.table(id).update_record(**key=value,
>>> key=value, ...)?
>>>
>>> Thanks
>>>
>>> Richard
>>>
>>>
>>> On Thu, Jun 20, 2013 at 5:09 PM, Richard Vézina
>>> <[email protected]>wrote:
>>>
>>>> Ok, yes, it may not have some field that are to None... I had issue
>>>> with that that I have patch my compute function for. I should be the
>>>> same...
>>>>
>>>> Thank you Massimo to point me this out.
>>>>
>>>> Richard
>>>>
>>>>
>>>> On Thu, Jun 20, 2013 at 5:02 PM, Massimo Di Pierro <
>>>> [email protected]> wrote:
>>>>
>>>>> I think the problem is that your form does not contain enough info for
>>>>> the computed field. You correctly pull them from DB (in row) and pass to
>>>>> the compute function.
>>>>>
>>>>>
>>>>> On Thursday, 20 June 2013 12:13:16 UTC-5, Richard wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I don't understand why I have to redefine my compute field function...
>>>>>>
>>>>>> I have a compute field like this one :
>>>>>>
>>>>>> # model
>>>>>> db.define_table('mytable',
>>>>>> Field('f1', 'string'),
>>>>>> Field('review', 'boolean'),
>>>>>> Field('record_review_status', compute=lambda record:
>>>>>> return_computed(record, request.args(0)))
>>>>>>
>>>>>> # contoller
>>>>>> def fun():
>>>>>> form = SQLFORM.factory(Field(...))
>>>>>> session.rows = db(db[request.args(0)].review == False).select()
>>>>>> table = SQLTABLE(session.rows...)
>>>>>> form.process().accepted:
>>>>>> for r in session.rows:
>>>>>> row = db[request.args(0)](r.id)
>>>>>> row.update_record(review='**TRUE**')
>>>>>> db.commit()
>>>>>> row = db[request.args(0)](r.id)
>>>>>> *row.record_review_status = return_record_review_status(row,
>>>>>> request.args(0)) # here I need to redefine my record_review_status
>>>>>> compute
>>>>>> field or it not get computed*
>>>>>> row.update_record()
>>>>>> db.commit()
>>>>>> ...
>>>>>>
>>>>>> Note : It is pseudo code, so it may seems dumb or not working, I just
>>>>>> try to make an example of what going on in my app...
>>>>>>
>>>>>> In the book it is said that if we try to update record without
>>>>>> passing, web2py tries to compute compute field base on orther field
>>>>>> value...
>>>>>>
>>>>>> http://web2py.com/books/**defaul**t/chapter/29/06?search=**compute**
>>>>>> #Computed-fields<http://web2py.com/books/default/chapter/29/06?search=compute#Computed-fields>
>>>>>>
>>>>>> By the way, this part of the book is not pretty clear... For instance
>>>>>> do I have to leave update() of update_record() blank in order to get my
>>>>>> compute field to be computed.
>>>>>>
>>>>>> Also, it is not exactly clear to me why my compute field not get
>>>>>> compute on row.update_record(review='**TRUE**')... What I understand
>>>>>> is that I need to explicitly update my compute field, but the way to do
>>>>>> it
>>>>>> seems to passing not paramaters to update() or update_record().
>>>>>>
>>>>>> In my case, it seems that my compute function can't get the 'TRUE'
>>>>>> for review only once the update(review='TRUE') is committed... I try to
>>>>>> remove the line in bold, because it already in my model, but it is not
>>>>>> working, my compute field never get updated it status.
>>>>>>
>>>>>> Thanks to clarify this to me.
>>>>>>
>>>>>> Richard
>>>>>>
>>>>> --
>>>>>
>>>>> ---
>>>>> 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/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>>>> .
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>> --
>>
>> ---
>> 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/groups/opt_out.
>>
>>
>>
>
>
--
---
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/groups/opt_out.