Okay...your confused?? lol, so am i so lets first talk semantics. When I
say CustomProduct, Im not talkng about product.models.CustomProduct...quite
literally I mean:
class MyProduct(Product):
my custom fields here
When MyProduct is added to an order we discovered order_sucess was firing
twice. (We spit out an xml representation of the order to the filesystem
for retrieval by an SAP backend, and for each order we were getting two
files). Through various troubleshooting methods and some logging we were
able to verify that order_sucess was getting fired twice.
Chris pointed me to the order_success method of DownloadableProduct and that
same spot of code you mention (line 917 or so). This led me to believe that
if i created a method on MyProduct called order_success, that this method
would be the action that gets called when order_success gets fired.
However, nothin we did would get the code in that method to run.
In would agree that it appears our MyProduct is not being recognized as a
subtype..so we abandoned that idea. This is what our signal code looks
like. (its been placed at the bottom of models.py in oru main app:
def sap_export(sender, **kwargs):
our code here
order_success.connect(sap_export) # register the handler
We've added code to work around our issue in the sap_export method.
It appeared to us that our sap_export method was getting called twice
for each order.
Hope that clears up our issue -- let me know if you want more info.
On Fri, Oct 23, 2009 at 5:06 PM, Bob Waycott <[email protected]> wrote:
> My assumption as to why the signal got called twice was that is was calling
>> it once for the Parent product (Satchmo's model) and once for our Child
>> Product (the inherited Product). My other assumption (and this could be way
>> off) was that had I done it the way Satchmo intends it to be done, that our
>> subtype product would have been found and THAT model's order_success method
>> would have run. (for reference, here is the link to the discussion I had
>> with Chris:
>> http://groups.google.com/group/satchmo-users/browse_thread/thread/6f88be5a09bb6f41/6cd1799fd3c823f4?hl=en&lnk=gst&q=signal+called+twice#6cd1799fd3c823f4
>> )
>
>
>
> Ryan (and Chris):
>
> I think I'm confused here.
>
> Sounds to me like Ryan's custom order_success method wasn't called because
> his CustomProduct wasn't being picked up as a subtype, given what I see in
> the code for the Order.order_success() method (lines 917-925).
>
> Ryan, if your goal was to have your custom order_success() method picked up
> at this point, then wouldn't we want to troubleshoot/define how a
> CustomProduct via model inheritance gets picked up as a subtype via the call
> to `orderitem.product.get_subtype_with_attr('order_success')`?
>
> However, listening to the order_success SIGNAL sent via the Order object is
> a different matter entirely, from how I'm reading the code (and I could very
> well be wrong). An Order is a unique object. It should send the SIGNAL once
> and only once. If it is sending the signal more than once, then there must
> be a bug somewhere that is causing Order.order_success() to be called more
> than once -- as this is the method that sends the Order.order_success
> signal.
>
> From how I read the code, this is the workflow (in pseudocode and/or plain
> English) of Order.order_success():
>
> log "Order Success"
> execute order_success() method for every Product.sub_type that defines an
> order_sucess() method of its own
> send order_success SIGNAL
>
> Given this expected workflow, it has to be a bug if the signal is sent more
> than once.
>
> Now, if the problem is the order_success() method is not called, then it
> seems to me the problem is that your custom product is not being recognized
> as a valid subtype?
>
> >
>
--
http://www.sudovi.com/
http://www.twitter.com/lifewithryan
http://www.thecommontongue.com
http://www.lifewithryan.com/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Satchmo users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/satchmo-users?hl=en
-~----------~----~----~----~------~----~------~--~---