The line in question comes *before* SQLFORM.grid is called (which is where 
the delete happens), so the delete hasn't yet happened at that point.

A couple other points:

   - You should really keep your code in the controller and limit your view 
   file to display logic.
   - You can have the database calculate the sum of a numeric field for you 
   rather than iterating over records in Python. 
   See 
http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#sum,-avg,-min,-max-and-len.

Anthony

On Saturday, January 25, 2014 7:17:44 AM UTC-5, horridohobbyist wrote:
>
> Okay, I know the problem now. After a delete is performed, the line 
> indicated by the comment below still thinks that the record is there, even 
> though the record is verifiably absent when I check in Database 
> Administration! It almost looks like a caching problem. I tried a 
> db.commit() before the comment line, but it made no difference.
>
> {{
> import locale
> locale.setlocale(locale.LC_ALL,'en_CA.utf8')
>
> total = 0
> # the following line does not recognize the deletion
> rows = db(db.cart.buyer_id==auth.user_id).select()
> for row in rows:
> total += row.subtotal
> pass
> }}
>
> {{=SQLFORM.grid((db.cart.buyer_id==auth.user_id),
> maxtextlength=1000,
> paginate=10,
> searchable=False,
> details=False,
> editable=True,
> deletable=True,
> create=False,
> csv=False)
> }}
>
> <div style="text-align:right;font-size:large">Total: 
> {{='C'+locale.currency(total,grouping=True)}}</div>
>
>
>
>
> On Saturday, 25 January 2014 05:59:06 UTC-5, horridohobbyist wrote:
>>
>> Never  mind my last message. I'm still not sure it's being called. I need 
>> to investigate further.
>>
>> On Saturday, 25 January 2014 05:47:35 UTC-5, horridohobbyist wrote:
>>>
>>> Oh, it's called BEFORE the delete! That's why I was getting unexpected 
>>> results.
>>>
>>> I need to perform an action AFTER the delete. Is there a workaround?
>>>
>>> Thanks.
>>>
>>> On Saturday, 25 January 2014 01:00:25 UTC-5, Anthony wrote:
>>>>
>>>> Does the record actually get deleted from the database? If so, ondelete 
>>>> should be getting called right before the delete. You may need to show 
>>>> some 
>>>> code and explain what you're seeing and what you expect. Also, note that 
>>>> the ondelete code in .grid has changed in more recent versions, but should 
>>>> have worked in 2.4.2.
>>>>
>>>> Anthony
>>>>
>>>> On Friday, January 24, 2014 8:22:17 PM UTC-5, horridohobbyist wrote:
>>>>>
>>>>> I'm using Version 2.4.2.
>>>>>
>>>>> I'm finding that the ondelete function is never called when I delete a 
>>>>> record in SQLFORM.grid. Is this a bug, or am I doing something wrong? The 
>>>>> onupdate function does get called when I update a record.
>>>>>
>>>>> 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/groups/opt_out.

Reply via email to